Fail2ban est un outils utile, développé en Python, permettant de bloquer un certain nombre d’attaques contre votre serveur. Fail2ban s’appuie sur vos logs pour bloquer des IPs tentant de passer à travers certaines RegEX interdites, tel que des tentatives de login abusives SSH, FTP, des tentatives de Forced browsing pour votre site web (par exemple, si quelqu’un recherche votre espace admin, “File does not exist” sera inscrit dans vos logs apache et fail2ban pourra bloquer les personnes qui recherchent trop de répertoires non existants).
De part cet article, nous allons voir comment installer Fail2Ban et l’utiliser pour bloquer les tentatives d’attaques par SSH.
Commandes utiles Lastb / SSH
Pour bien vous rendre compte de l’ampleur des attaques par brute force sur le protocol SSH, je vous propose quelques petites commandes utiles :
Top 5 des cinq comptes les plus récemment attaqués :
# lastb | awk ‘{print $1}’ | sort | uniq -c | sort -rn | head -5
Top 5 des cinq comptes les plus attaqués :
# awk ‘gsub(“.*sshd.*Failed password for (invalid user )?”, “”) {print $1}’ /var/log/secure* | sort | uniq -c | sort -rn | head -5
Top 5 des IP lançant le plus d’attaques :
# awk ‘gsub(“.*sshd.*Failed password for (invalid user )?”, “”) {print $3}’ /var/log/secure* | sort | uniq -c | sort -rn | head -5
Maintenant que vous prenez conscience de l’ampleur des attaques qui sont dirigées contre votre serveur, passons maintenant à l’installation de notre sauveur : fail2ban.
Installation & Configuration de Fail2Ban
Tout dabord, on installe le repo RPMFORGE :
# rpm -ivh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
Nous installons ensuite fail2ban :
# yum install fail2ban
Maintenant, passons à la configuration, nous renommons notre fichier jail.conf en jail.local :
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Puis nous allons l’éditer, à savoir que le fichier jail.local est composé de deux sections :
- DEFAULT permet de donner des options globales.
- les sections de configurations pour chaque service (SSH,FTP,TFTP …), nous allons modifier la section “[ssh-iptables]”
# vim /etc/fail2ban/jail.local
// On peut éditer nos valeurs par defaut tel que bantime ou maxretry
// Nous allons nous interesser à [ssh-iptables], en gras, les valeurs à modifier, à noter que si vous utiliser un port différent, il faudra modifier la valeur “port=ssh” :
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=votremail@mail.com, sender=fail2ban@alexnogard.com] logpath = /var/log/secure
maxretry = 3
Démarrez fail2ban et attendez vos premiers mails :) :
# service fail2ban start
Pour aller plus loin
Ceci est une configuration des plus basiques pour fail2ban, si vous voulez aller plus loin, vous pouvez par exemple :
- Exécuter une action lorsqu’un host se fait bannir (un nmap par exemple), à configurer dans /etc/fail2ban/action.d/hostsdeny.conf
- Changer le message par défaut du mail, à configurer dans : /etc/fail2ban/action.d/mail.conf
- Ajouter des RegEx pour être plus fin lors de vos bans, à configurer dans : /etc/fail2ban/filter.d/
Si vous avez aimé cet article, n’hésitez pas à utiliser les boutons qui se trouvent ci-dessous. Les commentaires sont là si vous avez des questions / remarques ;).
One comment
Pingback: Owncloud 9.X : Sécurisez le avec Fail2Ban sur Centos 7.X - Part3 | AlexNogard: Tutos IT