Fail2ban est un logiciel qui permet de protéger son serveur linux contre les tentatives de BruteForce. Il fonctionne en analysant les logs du système ainsi que les logs de divers services. Si X tentatives d'authentification échouent, Fail2ban bannit l'IP pour une durée déterminée via des règles de pare-feu iptables. Il est possible de définir le nombre de tentatives ratées avant bannissement, ainsi que la durée de ce bannissement. Fail2ban permet de protéger bon nombre de services dont voici quelques exemples : SSH, FTP (vsftp, proftpd, pure-ftpd…), xinetd, http (apache), SMTP (Postfix, dovecot..). Je ne vais pas vous faire ici un tutoriel complet, mon but étant, comme déjà évoqué ici de réimporter le contenu de mon ancien wiki. 🙂
Intallation de Fail2ban
L'application Fail2ban est très connu et il est intégré dans les dépôts des différentes distributions. Son installation passera donc par des commandes classiques d'installation de paquet :
yum install fail2ban
ou
apt-get install fail2ban
Configuration de Fail2ban
La configuration de l'application Fail2ban est définie dans plusieurs fichiers, dont le plus important est sans doute le fichier
/etc/fail2ban/jail.conf
C'est via ce fichier que l'on va paramétrer les services à surveiller et protéger, mais également la durée du bannissement et le nombre de tentatives infructueuses avant de se faire bannir. Il convient donc d'être prudent et de bien réfléchir avant de modifier les règles ! En effet, si par exemple, vous souhaitez protéger l'accès SSH d'une machine distante et que vous mettez un ban définitif suite à deux tentatives échouées, cela peut devenir compliqué si vous rentrez deux mots de passe erronées (ce qui peut arriver, par exemple avec le verrouillage majuscule activé...) 🙂
Bon, je vous rassure, il est possible de spécifier des adresses IP à ignorer, ce qui est pratique si vous avez une adresse IP fixe !
Gestion des adresses IP bannies
Voir les IP bannies
Pour voir les adresses IP bannies par Fail2ban, il convient simplement de lister les règles d'iptables avec la commande suivante :
iptables -L
Il est également possible d'afficher les adresses bloquées pour un service en particulier. Pour cela, il faut préciser le nom du service dans la commande. Voici quelques exemples :
iptables -L fail2ban-ssh
iptables -L fail2ban-pure-ftpd
iptables -L fail2ban-apache
Dé-bannir une adresse IP
Il n'est pas exclu qu'un jour vous vous trompiez de mot de passe à plusieurs reprises et que votre adresse IP soit bannie. Cela peut notamment être le cas si vous avez défini un nombre de tentative très faible (par exemple 2 ou 3). Dans ce cas, il faudra se connecter à la machine depuis une autre adresse IP et supprimer la règle de bannissement. La première étape consiste à identifier l'adresse IP à dé-bannir dans les règles iptables. Pour cela, on utilise les commandes expliquées ci-dessus :
iptables -L fail2ban-ssh
Le résultat obtenu est en réalité un tableau, comme ceci :
target | prot | opt | source | destination |
---|---|---|---|---|
DROP | all | – | 12.248.108.106 | anywhere |
DROP | all | – | 117.21.225.3 | anywhere |
DROP | all | – | 171.232.51.179 | anywhere |
Pour dé-bannir une IP, il faut donc identifier la ligne à supprimer. Par exemple, si l'on souhaite dé-bannir l'adresse 171.232.51.179, il suffit d'entrer la commande suivante dans un terminal :
iptables -D fail2ban-ssh 3
Et voilà ! Vous disposez maintenant des bases pour vous permettre de mettre en place l'outil Fail2ban sur vos machines Linux.
Partager la publication "Protéger son serveur Linux avec Fail2ban"