Je recommanderais certainement d'utiliser quelque chose comme Fail2ban ou DenyHosts pour faire cela. C'est exactement ce pour quoi ils sont faits, et comme le dit Zoredache, je ne vois pas pourquoi vous auriez un problème avec l'utilisation d'un programme tiers.
Ceci étant dit, vous pourrait utiliser le recent
pour IPtables, qui existe dans les versions plus récentes du logiciel. (Je ne sais pas exactement à quel point, mais si vous vous êtes tenu à jour, je pense que vous devriez l'avoir). Il n'est pas aussi facile à configurer ni aussi complet que les programmes tiers, mais c'est une possibilité. Un ensemble de règles comme celles-ci :
iptables -A INPUT -m recent --name nobruteforce --rcheck -j DROP
iptables -A INPUT -m recent <other options> --name nobruteforce --set -j DROP
ajoutera tous les paquets qui correspondent au <other options>
à une liste noire et bloquera tous les autres paquets provenant de la même adresse IP source. Vous devez remplacer <other options>
avec les options IPtables que vous utilisez normalement pour identifier les attaques par force brute ; par exemple, il pourrait s'agir de quelque chose comme
iptables -A INPUT -m recent -p tcp --dport 22 --name nobruteforce --set -j DROP
Toutefois, il convient de noter que tous qui arrive sur le port 22 (et qui n'a pas été soumis à une règle antérieure) déclencherait ce processus. Soyez prudent avec l'option recent
car cela pourrait gravement perturber les choses si vos règles produisaient un faux positif. Si vous devez l'utiliser, pour en limiter les conséquences, je suggérerais d'ajouter une limite de temps et/ou un nombre minimum de coups à la deuxième règle :
iptables -A INPUT -m recent --name nobruteforce --rcheck --seconds 7200 --hitcount 5 -j DROP
Les paquets ne seront bloqués qu'après la réception de 5 paquets de force brute et, au bout de 2 heures (7200 secondes), l'adresse source sera supprimée de la liste noire.
Plus d'informations sur ipt_recent
est disponible à l'adresse suivante http://snowman.net/projects/ipt_recent/