Como proteger o acesso SSH de um VPS LWS: apenas chaves e fail2ban

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.

Instalar a sua chave SSH

  1. Conecte-se uma primeira vez por SSH e depois desconecte-se

    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.

    ⌨ No seu computador
    ssh root@203.0.113.10
    exit
  2. Copie a sua chave SSH pública para o VPS

    A 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.

    ⌨ No seu computador
    ssh-copy-id root@203.0.113.10
    Resultado esperado
    Number 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.
  3. Verifique a ligação por chave SSH

    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.

    ⌨ No seu computador
    ssh root@203.0.113.10

Desativar a ligação por palavra-passe

  1. Identifique a armadilha do ficheiro cloud-init

    Liste 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.

    ⌨ No servidor
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Resultado esperado
    PasswordAuthentication yes
  2. Crie o ficheiro de configuração SSH prioritário

    Abra 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.

    ⌨ No servidor
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # Ligação SSH apenas por chave
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Teste a sintaxe e aplique a configuração

    Execute 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.

    ⌨ No servidor
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Resultado esperado
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

Testar o acesso SSH

  1. Valide a recusa da palavra-passe e o acesso por chave

    Sem 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.

    ⌨ No seu computador
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Resultado esperado
    root@203.0.113.10: Permission denied (publickey).

Instalar e verificar o fail2ban

  1. Instale o fail2ban

    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.

    ⌨ No servidor
    apt update
    apt install -y fail2ban
  2. Verifique o estado do fail2ban e feche a sessão

    Certifique-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.

    ⌨ No servidor
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Resultado esperado
    active
    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:

Glossário

SSH (Secure Shell)
Protocolo de comunicação seguro que permite ligar-se e administrar um servidor remoto por linha de comando.
Chave pública
Ficheiro de chave colocado no servidor remoto para verificar a identidade do utilizador sem transmitir uma palavra-passe.
Chave privada
Ficheiro de chave estritamente confidencial guardado no seu computador local, usado para provar a sua identidade ao servidor.
Cloud-init
Ferramenta de automatização utilizada durante a implementação inicial das máquinas virtuais para inicializar a sua rede e os seus acessos.
fail2ban
Software de segurança que monitoriza os registos do sistema e bloqueia temporariamente, ao nível da firewall, os endereços IP suspeitos.
Jail (prisão)
No fail2ban, conjunto que associa um filtro de deteção de tentativas abusivas e uma regra de banimento para um determinado serviço.

Perguntas frequentes

Por que nomear o ficheiro 00-cles-uniquement.conf em vez de modificar o sshd_config?

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.

O que fazer se me encontrar bloqueado fora do meu VPS?

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.

Qual é a diferença entre prohibit-password e without-password?

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.

É necessário configurar o fail2ban após a instalação no Debian?

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.

help.lws.net/a/7926
Este artigo foi útil?

Sim

Não

Lido 1 vezes

Obrigado! Não hesite em colocar questões sobre a nossa documentação se pretender mais informações e ajudar-nos a melhorá-la.

Artigos semelhantes

Uma pergunta sobre este artigo?

Coloque-a à equipa LWS e à comunidade. A resposta é publicada após moderação.

Fazer uma pergunta à equipa do LWS e à sua comunidade

RGPD: Responsável: LWS-Ligne Web Services. Finalidade: moderação e publicação pública da sua pergunta, eventual notificação de uma resposta. Base legal: consentimento (art. 6.º, n.º 1, al. a) RGPD). Conservação dos e-mails: 90 dias após a notificação, 12 meses no máximo sem resposta. Para exercer os seus direitos, consulte a secção RGPD das nossas condições gerais.