1. Configurações no sistema hospedeiro
É necessário ter instalado o Docker Engine e Docker Compose.
1.1. Segurança do servidor
1.1.1. Acesso remoto
O primeiro passo é criar uma chave ssh para acessar o servidor.
Vamos utilizar o padrão ed25519, o qual é um padrão de chaves públicas mais recente.
Para criar uma nova chave, no terminal, digite o seguinte:
Nota
Substitua user por seu nome ou identificador único.
A chave será criada no seu diretório home dentro da pasta .ssh.
ssh-keygen -t ed25519 -q -f ~/.ssh/<user>_ed25519
Copie a sua chave para o servidor, para possibilitar fazer login sem a utilização de senhas:
ssh-copy-id -i ~/.ssh/<user>_ed25519 usuário-no-servidor@ip-ou-nome-do-servidor
No servidor, verifique se a chave está configurada corretamente:
cat ~/.ssh/authorized_keys
A chave deve ser a mesma que foi criada com o comando ssh-keygen:
Importante
Nota: apenas copie a chave pública para o servidor, a qual tem a extensão .pub
No seu computador, verifique se a chave corresponde a que está no servidor:
cat ~/.ssh/<user>_ed25519
Teste se está funcionando (não deve solicitar senha ao fazer login):
ssh -i ~/.ssh/<user>_ed25519 usuário-no-servidor@ip-ou-nome-do-servidor
O próximo passo é fazer alteração no serviço do ssh no servidor para que aceite apenas login utilizando chave pública.
Ou seja, apenas quem tiver a sua chave pública no servidor poderá realizar o login no mesmo.
1.1.2. Serviço sshd no servidor
No arquivo /etc/ssh/sshd_config, modifique as seguintes variáveis (ou descomente) para que tenham os seguintes valores:
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
Dessa maneira, será possível acessar com o usuário root mas sem a utilização de senha, apenas com autenticação de chaves.
Considere alterar a porta que o serviço é executado e o número máximo de tentativas permitidas, nas variáveis Port e MaxAuthTries respectivamente:
Port 22003 # Porta aleatória
MaxAuthTries 3 # Número máximo de tentativas
Será necessário reiniciar o serviço para que as modificações tenham efeito.
Em sistemas debian like poderá ser realizado com o comando systemctl reload sshd
1.1.3. Fail2Ban
De maneira a bloquear tentativas de acessos não autorizados ao servidor, ou ataques de negação de serviço, é possível configurar o Fail2Ban para bloquear esses endereços.
1.1.4. Próximo passo
Realizar as configurações necessárias no registro de nomes (DNS).