Io non amo la forza bruta.

A me la forza bruta di solito non piace. Ancor meno quando qualcuno prova stoltamente a rompere le scatole generando decinaia e decinaia di righe di log del tipo:

Jun 28 17:17:06 sg20 sshd[1484]: Invalid user administrator from 78.110.165.6
Jun 28 17:17:07 sg20 sshd[1496]: Invalid user test from 78.110.165.6
Jun 28 17:17:07 sg20 sshd[1493]: Invalid user lyty from 78.110.165.6
Jun 28 17:17:08 sg20 sshd[1505]: Invalid user test from 78.110.165.6
Jun 28 17:17:08 sg20 sshd[1508]: Invalid user bestar from 78.110.165.6
Jun 28 17:17:08 sg20 sshd[1513]: Invalid user alexandre from 78.110.165.6
Jun 28 17:17:09 sg20 sshd[1520]: Invalid user jim from 78.110.165.6

Siccome la mia pigrizia in tema di reattivitá a queste cose é micidiale ho lasciato correre per lungo tempo. Fino al momento in cui mi sono deciso a compiere poche semplici operazioni:

  • cambiare la porta su cui é in ascolto il demone ssh (eliminando la quasi totalità degli eventi di cui sopra)
  • scrivere due non righe per spiegare a iptables che certe cose non devono ripetersi troppo spesso:
sudo iptables -A INPUT -i eth0 -p tcp --dport 2222 -m state --state NEW -m recent --set --name SSH
sudo iptables -A INPUT -i eth0 -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j DROP

Le due righe in questione dicono che se qualcuno effettua più di 5 tentativi di connessione alla porta 2222 (normalmente sarebbe la 22) nell’arco di 60 secondi deve essere lasciato perdere. Certo potrà ripetere l’operazione dopo un minuto per altre 5 volte ma è un disagio tollerabile… (detto per inciso: qui non si accettano connessioni del signor root da remoto e l’uso delle password è inutile essendo richiesta una chiave…).