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 em http://www.ibliss.com.br/blog/como-mitigar-a-vulnerabilidade-openssh-keyboard-interactive-authentication-brute-force/
Referências
- RFC4256 Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
- OpenSSH keyboard-interactive authentication brute force vulnerability (MaxAuthTries bypass)
- Man page OpenSSH
- How To Configure SSH Key-Based Authentication on a Linux Server
- How To Use Port Knocking to Hide your SSH Daemon from Attackers on Ubuntu
- OSSEC