JusteGeek

Protéger son serveur Linux avec Fail2ban

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é...) 🙂

Extrait du fichier jail.conf de Fail2ban

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

Lorsqu'une tentative d'intrusion est détectée via une successions de tentative de connexions infructueuses, les adresses IP sources sont placées dans des règles de pare-feu iptables afin d'être bannies. Les requêtes d'authentification ne parviendront alors plus au service visé puisqu'elle seront bloquées dès leur arrivée par le pare-feu.
 

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

Aperçu de règles iptables F2B

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.

 

Quitter la version mobile