Univers Libre

Limiter le nombre de connexions SSH avec pf

Written on 5 September 2013, 22:19 CEST
Tags: bsd, pf, sysadmin.

Le port SSH doit probablement être parmi les plus testés par les scripts kiddies. Même si le mieux reste de restreindre l'accès par IP et de n'autoriser l'authentification que par clé, ce n'est des fois pas possible. Dans ce cas, on se retrouve avec une avalanche de tentative de connexion et le auth.log qui explose en taille. Ça devient lourd (dans les 2 sens du terme :-) ).

Afin de bannir une IP au bout d'un trop grand nombre de connexions par unité de temps, il existe différents outils qui analysent les logs et ajoutent des règles dynamiquement comme fail2ban, mais je préfère agir directement au niveau pare-feu quand c'est possible. Avec iptables sous Linux, il existe le module limit. Avec Packet Filter, voici comment procéder :

Ensuite, on peut faire expirer les IP présentes dans la table avec un simple cron :

33 3 * * *  /sbin/pfctl -t badguys -T expire 86400 2>&1 |grep -v "0/0 addresses expired."