Procédure
Para proteger o acesso SSH do seu VPS LWS, é recomendável desativar totalmente a autenticação por palavra-passe em favor de uma chave SSH e, em seguida, instalar o fail2ban. Esta configuração protege o seu servidor contra ataques de força bruta e elimina os riscos ligados a palavras-passe intercetadas ou adivinhadas. Neste tutorial, você vai copiar a sua chave SSH pública, ajustar a configuração SSH para neutralizar as definições padrão do cloud-init e, em seguida, instalar e verificar a proteção ativa do fail2ban.
Abra um terminal no seu computador e conecte-se ao servidor usando a palavra-passe root recebida no seu e-mail de entrega. Na primeira ligação, aceite a impressão digital da chave do servidor digitando yes. Uma vez conectado, saia imediatamente da sessão executando exit para voltar à sua máquina local.
ssh root@203.0.113.10
exitA partir do seu computador, use o comando ssh-copy-id para copiar a sua chave pública para o servidor. Introduza a sua palavra-passe root uma última vez quando o terminal o solicitar. Se já tinha adicionado a sua chave SSH durante o comando ou a reinstalação a partir do painel KVM, esta etapa não é necessária.
ssh-copy-id root@203.0.113.10Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
and check to make sure that only the key(s) you wanted were added.Volte a conectar-se ao seu VPS por SSH a partir do seu computador. A ligação deve ser estabelecida instantaneamente sem pedir a palavra-passe root do servidor, confirmando que a sua chave pública foi corretamente instalada.
ssh root@203.0.113.10Liste os ficheiros presentes no diretório /etc/ssh/sshd_config.d/ e exiba o conteúdo de 50-cloud-init.conf. Este ficheiro ativa a autenticação por palavra-passe. Como o servidor SSH mantém a primeira diretiva encontrada ao ler os ficheiros por ordem alfabética, a sua própria configuração deve obrigatoriamente ser lida antes dele.
ls /etc/ssh/sshd_config.d/
cat /etc/ssh/sshd_config.d/50-cloud-init.confPasswordAuthentication yesAbra o editor nano para criar o ficheiro 00-cles-uniquement.conf. O prefixo 00 garante que este ficheiro será processado antes de 50-cloud-init.conf. Escreva nele as diretivas que desativam as palavras-passe e limitam o acesso root às chaves, depois guarde com Ctrl+X, confirme com O (ou Y, dependendo do idioma) e prima Enter.
nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf# Ligação SSH apenas por chave
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordExecute sshd -t para verificar a ausência de erros de sintaxe e depois verifique os valores ativos com sshd -T. Note que permitrootlogin aparece como without-password, o que corresponde a prohibit-password. Se estiver tudo correto, recarregue o serviço SSH para aplicar os novos parâmetros sem interromper a sua sessão.
sshd -t
sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
systemctl reload sshpermitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication noSem fechar a sua sessão ativa, abra uma segunda janela de terminal no seu computador. Tente primeiro uma ligação forçando a recusa das chaves com a opção PubkeyAuthentication=no: o servidor deve recusar o acesso. Em seguida, inicie uma ligação normal: a autenticação por chave é efetuada com sucesso.
ssh -o PubkeyAuthentication=no root@203.0.113.10
ssh root@203.0.113.10root@203.0.113.10: Permission denied (publickey).A partir da sua sessão ligada ao VPS, atualize a lista dos repositórios Debian com apt update e depois instale o pacote fail2ban. Nas versões recentes do Debian, o fail2ban ativa automaticamente a proteção do serviço SSH assim que a instalação termina.
apt update
apt install -y fail2banCertifique-se de que o serviço fail2ban está ativo com systemctl e depois consulte a jail sshd para confirmar que a filtragem funciona e monitoriza as ligações. Pode então desconectar-se com toda a tranquilidade.
systemctl is-active fail2ban
fail2ban-client status sshd
exitactive
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 3
| `- Journal matches: _SYSTEMD_UNIT=ssh.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:O daemon OpenSSH lê os ficheiros da pasta sshd_config.d por ordem alfabética e aplica o primeiro valor que encontra. Ao usar o prefixo 00, as suas diretivas são processadas antes das de 50-cloud-init.conf, o que garante a aplicação da proibição das palavras-passe.
Se perder o seu acesso SSH, entre na sua área de cliente LWS e abra a consola KVM / VNC disponível para o seu VPS. Esta consola simula um ecrã e um teclado físicos ligados ao servidor e permite corrigir os seus ficheiros de configuração sem passar pelo SSH.
Trata-se exatamente do mesmo parâmetro no OpenSSH. prohibit-password é a sintaxe moderna recomendada, mas o comando sshd -T mostra o seu equivalente histórico without-password na lista das diretivas ativas.
Nas distribuições recentes como o Debian 13, o fail2ban configura e inicia automaticamente a jail para o serviço SSH logo após a instalação do pacote. Pode personalizar posteriormente as durações de banimento num ficheiro jail.local, se desejar.
Coloque-a à equipa LWS e à comunidade. A resposta é publicada após moderação.