Pesquisa de site

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.