5 melhores práticas para prevenir ataques de login de força bruta SSH
Servidores que executam SSH geralmente são alvos fáceis para ataques de força bruta. Os hackers estão constantemente criando ferramentas de software e bots inovadores para automatizar ataques de força bruta, o que aumenta ainda mais o risco de intrusão.
Neste guia, exploramos algumas dicas que você pode implementar para proteger seus servidores SSH contra ataques de força bruta em distribuições Linux baseadas em RHEL e derivados do Debian.
Desative a autenticação de senha SSH e ative a autenticação de chave SSH
O método de autenticação padrão para SSH é autenticação de nome de usuário/senha. Mas, como vimos, a autenticação por senha está sujeita a ataques de força bruta. Para garantir a segurança, é recomendável implementar a autenticação SSH baseada em chave, onde a autenticação é possível por pares de chaves SSH públicas e privadas. A chave privada permanece no PC do cliente enquanto a chave pública é copiada para o servidor.
Durante a autenticação da chave SSH, o servidor verifica se o PC cliente possui a chave privada. Se a verificação for bem-sucedida, uma sessão shell será criada ou o comando enviado ao servidor remoto será executado com sucesso. Temos um guia completo sobre como configurar a autenticação baseada em chave SSH.
Mesmo depois de configurar a autenticação baseada em chave, seu servidor ainda estará suscetível a ataques de força bruta pelo simples motivo de que a autenticação por senha ainda está ativa. Isso precisa ser desativado.
Portanto, edite o arquivo de configuração SSH padrão.
sudo vim /etc/ssh/sshd_config
Defina o parâmetro PasswordAuthentication como no
conforme mostrado.
PasswordAuthentication no
Em seguida, salve o arquivo e recarregue o SSH para aplicar as alterações.
sudo systemctl reload ssh
Implementar ferramenta de prevenção de intrusões Fail2ban
Escrito em Python, Fail2ban é uma estrutura de prevenção de intrusões de código aberto que verifica arquivos de log de serviços em busca de falhas de autenticação e proíbe IPs que falham repetidamente nas verificações de autenticação de senha por um período de tempo especificado.
Fail2ban monitora constantemente os arquivos de log do servidor em busca de tentativas de invasão e outras atividades nefastas. Após um número predefinido de falhas de autenticação - na maioria dos casos, 3 tentativas de login malsucedidas - o Fail2ban bloqueia automaticamente o host remoto de acessar o servidor e o anfitrião é mantido em uma 'prisão' por um período de tempo específico.
Ao fazer isso, o Fail2ban reduz significativamente a taxa de tentativas incorretas de autenticação de senha. Confira nosso guia sobre como você pode instalar e configurar o Fail2ban no Linux para proteger seu servidor contra ataques de força bruta.
Limitar o número máximo de tentativas de autenticação SSH
Outra maneira simples de proteger seu servidor contra ataques de força bruta é limitar o número de tentativas de login SSH. Por padrão, está definido como 3, mas se por acaso estiver definido com um valor mais alto, defina-o para no máximo 3 tentativas de conexão.
Por exemplo, para definir o máximo de tentativas de conexão como 3, defina o parâmetro MaxAuthTries como 3 conforme mostrado
MaxAuthTries = 3
Mais uma vez, salve as alterações e recarregue o serviço SSH.
sudo systemctl reload ssh
Implemente TCP Wrappers para limitar o acesso SSH dos clientes
Wrappers TCP é uma biblioteca que fornece uma Lista de Controle de Acesso (ACL) baseada em host que restringe o acesso a serviços TCP por clientes remotos com base em seus Endereços IP
Hosts remotos acessem serviços no sistema. Os wrappers TCP usam os arquivos de configuração /etc/hosts.allow e /etc/hosts.deny (nessa ordem) para determinar se o cliente remoto tem permissão para acessar um determinado serviço ou não.
Normalmente, esses arquivos são comentados e todos os hosts são permitidos através da camada TCP wrappers. As regras para permitir acesso a um determinado serviço são colocadas no arquivo /etc/hosts.allow e têm precedência sobre as regras no arquivo /etc/hosts.deny.
As melhores práticas recomendam bloquear todas as conexões de entrada. Portanto, abra o arquivo /etc/hosts.deny.
sudo vim /etc/hosts.deny
Adicione a seguinte linha.
ALL: ALL
Salve as alterações e saia do arquivo.
Em seguida, acesse o arquivo /etc/hosts.allow.
sudo vim /etc/hosts.allow
Configure os hosts ou domínios que podem se conectar ao servidor via SSH conforme mostrado. Neste exemplo, permitimos que apenas dois hosts remotos se conectem ao servidor (173.82.227.89 e 173.82.255.55) e negamos o resto.
sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY
Salve as alterações e saia do arquivo de configuração.
Para testar, tente conectar-se ao servidor a partir de um host que não esteja entre aqueles aos quais você permitiu acesso. Você deve receber um erro de permissão conforme mostrado.
ssh [email
kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection
Implementar autenticação SSH de dois fatores
A autenticação de dois fatores fornece uma camada de segurança adicional à autenticação por senha, tornando seu servidor mais seguro contra ataques de força bruta. Uma solução de autenticação de dois fatores amplamente utilizada é o aplicativo Google Authenticator e temos um guia bem documentado sobre como você pode configurar a autenticação de dois fatores.
Conclusão
Este foi um resumo de 5 práticas recomendadas que você pode implementar para evitar ataques de login de SSH Brute Force e garantir a segurança do seu servidor. Você também pode ler Como proteger e fortalecer o servidor OpenSSH.