Bloquer les tentatives de connexion SSH avec fail2ban

09.12.2008 0

J’ai décidé d’installer ce matin sur tous mes serveurs et ceux de mes clients le script python fail2ban fourni par portage sur Gentoo (la dernière version stable du développeur est masquée il s’agit de la version net-analyzer/fail2ban-0.8.3)

Ce script analyse vos fichiers de logs et ajoute des règles dans votre firewall applicatif iptables pour bloquer les tentatives d’accès par ssh, apache, les requêtes DNS trop nombreuses, etc…

Voici un exemple de pollution récurrente:
Dec 9 10:03:28 server sshd[27836]: Invalid user ishihara from 121.134.8.168
Dec 9 10:03:30 server sshd[27842]: Invalid user hfujioka from 121.134.8.168
Dec 9 10:03:33 server sshd[27848]: Invalid user minami from 121.134.8.168
Dec 9 10:03:35 server sshd[27856]: Invalid user togashi from 121.134.8.168
Dec 9 10:03:37 server sshd[27865]: Invalid user nshino from 121.134.8.168
Dec 9 10:03:40 server sshd[27870]: Invalid user wataru from 121.134.8.168
Dec 9 10:03:42 server sshd[27875]: Invalid user yhashi from 121.134.8.168
Dec 9 10:03:44 server sshd[27883]: Invalid user gai from 121.134.8.168
Dec 9 10:03:46 server sshd[27888]: Invalid user sudomine from 121.134.8.168
Dec 9 10:03:49 server sshd[27893]: Invalid user tsutomu from 121.134.8.168
Dec 9 10:03:51 server sshd[27898]: Invalid user naoto from 121.134.8.168
Dec 9 10:03:53 server sshd[27903]: Invalid user shimizu from 121.134.8.168
Dec 9 10:03:56 server sshd[27908]: Invalid user yokoyama from 121.134.8.168
Dec 9 10:03:58 server sshd[27913]: Invalid user koki from 121.134.8.168
Dec 9 10:04:00 server sshd[27918]: Invalid user masashi from 121.134.8.168
Dec 9 10:04:02 server sshd[27923]: Invalid user tomonari from 121.134.8.168
Dec 9 10:04:05 server sshd[27933]: Invalid user higashi from 121.134.8.168
Dec 9 10:04:07 server sshd[27938]: Invalid user ryotaro from 121.134.8.168
Dec 9 10:04:09 server sshd[27943]: Invalid user mashima from 121.134.8.168
Dec 9 10:04:12 server sshd[27948]: Invalid user shuu from 121.134.8.168
Dec 9 10:04:14 server sshd[27953]: Invalid user oono from 121.134.8.168
Dec 9 10:04:16 server sshd[27958]: Invalid user oliver from 121.134.8.168
Dec 9 10:04:18 server sshd[27963]: Invalid user toyoc from 121.134.8.168
 

Il faut bien sur avoir au préalable installé iptables et le module dans le kernel qui va bien.

Après la traditionnelle phase de compilation du soft, il suffit de modifier les fichiers de configuration fournis qui par défaut ne font rien, ou du moins pas grand chose.

Commencez par whitelister votre(vos) ip(s) dans le fichier /etc/fail2ban/jail.conf histoire de ne passe retrouver bêtement coincé suite à une mauvaise configuration:

ignoreip = 127.0.0.1 xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy

Réglez ensuite les 3 paramètres qui permettent de définir qu’une tentative de connexion doit être détectée comme malveillante:
# "bantime" is the number of seconds that a host is banned.
bantime = 6000
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3

Puis vous pourrez utiliser les modules de détection déjà fournis, les modifier ou créer les vôtres. Par défaut sous Gentoo, les tentatives d’accès SSH sont loggés dans /var/log/messages, j’ai donc modifile le logpath correspondant:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=olivier@oxeron.com, sender=fail2ban-server@oxeron.com]
logpath = /var/log/messages
maxretry = 3

Et voilà, en 2 heures, environ 50 ips bloquées sur l’ensemble de mes machines.


 Olivier PIERRE, freelance au Luxembourg Analyste développeur PHP/MySQL/jQuery et administrateur système Linux spécialiste Gentoo


Les messages similaires