Fail2Ban le complément d’iptables
Vous avez mis en place iptable sur votre serveurs, c’est bien, mais vous voyez de nombreuses tentatives de connexion sur vos services. Heureusement jusqu’à ce jour ces tentatives s’avèrent infructueuses, mais cela va t’il durer ? Le logiciel Fail2ban est fait pour cela.
Présentation de Fail2ban
Fail2ban est un logiciel qui va scanner les logs des services que vous souhaitez surveiller. Il va compter, dans ces logs, le nombre de connexions infructueuses tentée par IP sur un interval de temps que vous pouvez définir. Les IPs ayant réalisées plus de tentative que ce que vous autorisez se verront blacklister de votre serveur pendant le temps que vous aurez configuré. Pour blacklister les IPs, Fail2ban n’utilise rien d’autre que netfilter
. Il créé une règle iptables
interdisant toutes nouvelles connexions depuis ces IPs qu’il efface à la fin du temps défini.
Installation
L’installation se fait depuis les paquets Debian via la commande suivante :
# apt-get install fail2ban
Suite à l’installation, pour personnaliser la configuration, vous devez copier le fichier jail.conf
en jail.local
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Paramétrage
L’ensemble du paramétrage se fait dans le fichier /etc/fail2ban/jail.local
.
Pour commencer, vous devez spécifier les paramètres globaux, tels que le temps de bannissement d’un IP, le nombre maximal de tentative accepté et sur combien de temps ces tentatives sont comptées.
bantime = 600 findtime = 600 maxretry = 3
Le paramétrage ci-dessus, bloque les IPs d’un attaquant pendant 10 min s’il a effectuée plus de 3 tentatives de connexion en 10 min.
Si vous voulez être prévenu à chaque fois qu’une IP est bannis, vous devez changer la ligne action = %(action_)s
par la ligne
action = %(action_mwl)s
Il faudra bien sur que votre serveur soit configurer pour envoyer des mails.
Puis vous devez activer et paramétrer chaque service que vous désirez surveiller. Pour chaque service vous pouvez redéfinir l’ensemble des paramètres globaux précédant. Ci-dessous le paramétrage pour le service ssh
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Avec ce paramétrage, j’autorise 6 tentatives sur le service SSH dont les logs se trouvent dans /var/log/auth.log
. La règle iptables devra bloquer le port ssh
(soit le port 22) pour bloquer les IPs essayant de trop nombreuse fois.
Activation
Pour tester, vous pouvez activer fail2ban via la commande suivante
# /etc/init.d/fail2ban start
Une fois votre configuration au point, vous avez la possibilité de mettre fail2ban au démarrage du serveur via update-rc.d
# update-rc.d fail2ban defaults
Si vous désirez connaitre les IPs bannies, il vous suffit de regarder le fichier /var/log/fail2ban.log
.
$ cat /var/log/fail2ban.log 2016-02-28 09:03:46,319 fail2ban.actions[553]: WARNING [ssh] Ban 112.175.39.139 2016-02-28 09:13:47,064 fail2ban.actions[553]: WARNING [ssh] Unban 112.175.39.139 2016-02-29 09:53:06,392 fail2ban.actions[553]: WARNING [ssh] Ban 222.186.21.73 2016-02-29 10:03:07,121 fail2ban.actions[553]: WARNING [ssh] Unban 222.186.21.73 ...
Vous voila avec un serveur un peu plus sécurisé. N’hésitez pas à partager vos trucs et astuces en commentaire.
Plus d’information sur le site officiel de Fail2ban.
Commentaires
G-P
Bonjour,
Je viens vers vous pour avoir un peu d’aide. Sur mon serveur, (debian 8.0) je dispose d’iptables et de fail2ban. J’ai fais un serveur Soldier of fortune 2 et je souhaite savoir si il est possible de protéger les port 20100 et 20200 contre le « ddos ».
je dois pouvoir créer un jail avec les regles qui conviennent pour Soldier of fortune 2, mais je sais pas comment faire.
je vois que ça se passe dans le fichier /etc/fail2ban/filter.d mais comment en créer un spécialement pour Soldier of fortune 2? en gros un regex…
Cordialement.