Stefano’s notebook

my technical writings

Bloccare brute force ssh con pf

Per lasciar passare le connessioni ssh, pf dovrebbe avere una regola simile a questa:

pass in quick on $external inet proto tcp from any to any port ssh flags S/SA keep state

per bloccare i bruteforce è sufficiente modificarla in:

table <ssh-bruteforce> persist
block in quick from <ssh-bruteforce>
pass in quick on $external inet proto tcp from any to any port ssh flags S/SA keep state \
  ( max-src-conn-rate 2/10, overload <ssh-bruteforce> flush global)

che, nell’ordine:

  • definisce una tabella per conservare gli ip degli attaccanti
  • blocca tutte le connessioni provenienti da tali ip
  • autorizza le connessioni ssh, ma che siano al massimo 2 tentativi di connessione in 10 secondi, altrimenti registra l’ip nella tabella prima definita, e distrugge tutte le connessioni relative a tale ip

Ci sarà anche da implementare un cron job che ogni tanto dia una ripulita alla tabella <ssh-bruteforce>.