Limiter le nombre de connexions SSH par IPTables
https://ipset.netfilter.org/iptables-extensions.man.html#lbBW
http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html#ss3.16
La config ci-dessous est 4 connexions par minute maximum. Cela permet d'éviter les attaques par dictionnaire.
# En UDP, il ne faut pas mettre le -m state --state NEW sinon le pirate peut réutiliser le port source iptables -A INPUT -p tcp -s $SSH_FROM --sport 1024:65535 -d $IP --dport 22 \ -m state --state NEW -m recent --set iptables -A INPUT -p tcp -s $SSH_FROM --sport 1024:65535 -d $IP --dport 22 \ -m state --state NEW -m recent --update --seconds 60 --hitcount 4 \ -j LOG --log-prefix "Packet Filter SSH BRUT FORCE " iptables -A INPUT -p tcp -s $SSH_FROM --sport 1024:65535 -d $IP --dport 22 \ -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP iptables -A INPUT -p tcp -s $SSH_FROM --sport 1024:65535 -d $IP --dport 22 -j ACCEPT
(Ci-après, mettre xt_recent sur les kernels récents)
Par défaut, il y a un suivi de 100 machines.
On peut le changer par :
modprobe ipt_recent ip_list_tot=100
Pour voir l'état (et le nombre de machines) dans la pile
cat /proc/net/xt_recent/DEFAULT (ou cat /proc/net/ipt_recent/DEFAULT)
Pour réinitialiser la pile
echo / > /proc/net/xt_recent/DEFAULT (ou echo clear > /proc/net/ipt_recent/DEFAULT)
Pour supprimer une machine de la pile echo -xx.xx.xx.xx >/proc/net/xt_recent/DEFAULT[ (ou
echo -xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT)
Il est possible d'ajouter un --name SSH afin de nommer la règle. Il faut alors remplacer DEFAULT par SSH dans /proc pour voir les résultats.
