De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como mitigar a vulnerabilidade OpenSSH keyboard-interactive authentication brute force

Colaboração: Alexandro Silva

Data de Publicação: 22 de julho de 2015

O keyboard-interactive[1] é um método utilizado pelo OpenSSH que permite a autenticação usando vários recursos como o RADIUS, PAM, RSA security token, etc.

Algumas distribuições Linux desabilitam esse recurso por padrão, o mesmo não ocorre no FreeBSD. Em sistemas Linux o keyboard-interactive costuma ser ativado por administradores que desejam utilizar outro método de autenticação como o PAM (Plugin Autentication Module), por exemplo.

A Vulnerabilidade

Uma vulnerabilidade descoberta pelo pesquisador KingCope [2] permite executar ataques de força bruta ao SSH através do bypass do MaxAuthTries [3], opção que limita o número máximo de tentativas de autenticação, cujo valor padrão são 6 tentativas.

O tempo do ataque é limitado pelo parâmetro LoginGraceTime, opção que limita o tempo de desconexão se a autenticação não for bem sucedida, sendo que o valor padrão são de 120 segundos.

Mitigando o ataque

Várias ações podem ser implementadas para mitigar esta e outras vulnerabilidades.

1. Adotar boas práticas de configuração (hardening) do serviço SSH,como:

  • Alterar a porta padrão
  • Desabilitar o login usando o usuário root
  • Usar a autenticação usando chaves SSH[4] ao invés de senha.
  • Reduza o valor do parâmetro LoginGraceTime

2. Filtrar o acesso através do firewall apenas para hosts autorizados, o exemplo abaixo pode ser utilizado no iptables

-A INPUT -s 200.123.123.123/32 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

3. Se não for possível filtrar o acesso estabeleça limites, como exemplificado abaixo para o iptables:

-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --mask 255.255.255.255 --rsource
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH --mask 255.255.255.255 --rsource -j LOGDROP
-A LOGDROP -m limit --limit 5/min --limit-burst 10 -j LOG
-A LOGDROP -j DROP

4. Utilizar o Port Knocking [5]. Método de proteção por obscuridade que permite definir uma sequência específica para a liberação de acesso a uma porta.

5. Utilizar o OSSEC HIDS[6]. Ferramenta de proteção permite identificar diversos ataques, inclusive de força bruta, bloqueando sua origem.

Este artigo foi publicado originalmente por Alexandro Silva no blog IBLISS DIGITAL SECURITY

Referências

  1. RFC4256 Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  2. OpenSSH keyboard-interactive authentication brute force vulnerability (MaxAuthTries bypass)
  3. Man page OpenSSH
  4. How To Configure SSH Key-Based Authentication on a Linux Server
  5. How To Use Port Knocking to Hide your SSH Daemon from Attackers on Ubuntu
  6. OSSEC

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Alexandro Silva