SSH scans et iptables
Depuis un moment maintenant, je retrouve dans mes logs une quantité impressionante de lignes comme celles-ci :
Jun 21 07:24:51 anubis sshd[9377]: Invalid user delta from x.x.x.x Jun 21 07:24:52 anubis sshd[9437]: Invalid user admin from x.x.x.x Jun 21 07:24:54 anubis sshd[21967]: Invalid user test from x.x.x.x
Visiblement un programme tente de trouver un compte sans mot de passe ou avec un mot de passe extrêmement simple. Ce genre de scans peut durer plusieurs heures et je dois avouer que ça m'embête.
Ayant récemment installé un IPCop chez moi, j'ai découvert iptables. J'ai fait quelques recherche sur Internet sans vraiment trouver les bonne lignes de commandes qui empêcherait d'autre machines infectées de venir scanner la mienne. Finalement, en croisant diverses sources dont celle-ci, j'en suis arrivé aux règles suivantes :
/sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 \ -m state --state NEW -m recent --set /sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 \ -m state --state NEW -m recent --update \ --seconds 60 --hitcount 2 -j DROP /sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 \ -m state --state NEW -m recent --update \ --seconds 60 --hitcount 2 -j LOG --log-prefix "SSH Scan "
Étant tout à fait novice dans ce domaine, je ne vais pas m'aventurer dans une description détaillée de ce que font les trois lignes ci-dessus. En voici rapidement la logique et les effets.
Dans mon cas, l'interface eth3 est l'interface reliée à Internet. Ces trois règles s'appliquent à tous les paquets en transit d'une interface réseau à une autre. S'il y a plus de deux nouvelles connections par minute sur le port 22 - port de ssh par défaut - alors nous ne traiterons pas la connection, ce qui revient à dire, veuillez excuser l'approximation, que nous effacerons cette même connection et que la machine distante n'obtiendra plus de réponse pendant une minute. En plus d'effacer la connection, nous loguerons cette connection en la faisant précéder de la mention "SSH Scan ".
J'ai donc ajouté ces règles au fichier /etc/rc.d/rc.firewall.local de l'IPCop, ainsi que trois autre règles permettant d'effacer les trois premières si l'on souhaiter en arrêter le filtrage. Au final, voici le contenu du fichier :
#!/bin/sh
# Used for private firewall rules
# See how we were called.
case "$1" in
start)
## add your 'start' rules here
/sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --set
/sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 2 -j DROP
/sbin/iptables -I FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 2 -j LOG --log-prefix "SSH Scan "
;;
stop)
## add your 'stop' rules here
/sbin/iptables -D FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --set
/sbin/iptables -D FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 2 -j DROP
/sbin/iptables -D FORWARD -p tcp --dport 22 -i eth3 -m state --state NEW -m recent --update \
--seconds 60 --hitcount 2 -j LOG --log-prefix "SSH Scan "
;;
reload)
$0 stop
$0 start
## add your 'reload' rules here
;;
*)
echo "Usage: $0 {start|stop|reload}"
;;
esac
Je ne sais pas si cette façon de faire est la meilleure, mais elle a le mérite de faire ce qu'on lui demande.
Par Pierre | dimanche 25 juin 2006 à 11:54 | comp.net
|
|




Commentaires
Le vendredi 14 juillet 2006 à 14:43, par spud :: #
Le lundi 2 octobre 2006 à 22:30, par mat :: #
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.