Não gosto de usar ferramentas de terceiros. Daí eu usei uma combinação de configuração ssh e configurações de firewall. Com a seguinte solução, um atacante pode produzir exatamente 3 logins de falhas em 2 minutos, ou ele será bloqueado por 120 segundos.
1) Adicione a seguinte linha a /etc/ssh/sshd_config
MaxAuthTries 1
Isso permitirá apenas 1 tentativa de login por conexão. Reinicie o servidor ssh.
2) Adicione as seguintes regras de firewall
Crie uma nova cadeia
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
Bloqueie cada endereço IP por 120 segundos, o que estabelece mais de três conexões em 120 segundos. No caso da quarta tentativa de conexão, a solicitação é delegada à corrente SSHATTACK
, que é responsável por registrar o possível ataque ssh e finalmente descarta a solicitação.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
3) Veja as entradas de log de possíveis ataques ssh em /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0