Mise en place de l'IDS Fail2Ban

Fail2Ban est un IDS dont l’action principale va être de lire les fichiers de logs de vos services et rechercher des patterns (à l’aide de regexs) qui prouvent qu’une tentative d’attaque est en cours. Pour cela il va regarder si une IP tente de bruteforcer le service SSH (ce qui sera visible puisqu’il y aura beaucoup de tentatives de connexion échouées) ou encore si des exploits sont utilisés. Si c’est le cas plusieurs actions pourront être menées dont la plus courante est la création d’une règle Iptables qui blacklist l’IP source.

Pour installer Fail2Ban rien de plus simple :

apt install fail2ban

Le principal fichier de configuration est le fichier /etc/fail2ban/jail.conf. Dedans vous trouverez les directives permettant de configurer le temps de bannissement ainsi que plusieurs templates de jails.

Une jail, comme son nom l’indique, c’est tout simplement un bloc de directives qui s’appliquent à un service et qui vont définir les conditions d’emprisonnement d’une IP. L’ensemble des jails peuvent être soit configurées dans le fichier /etc/fail2ban/jail.conf soit dans des fichiers individuels dans le répertoire /etc/fail2ban/jail.d/

L’une des premières choses à modifier dans la configuration de notre Fail2Ban c’est la durée du bannissement qui est paramétrée par défaut pour durer 10 minutes. Nous ce qu’on veut c’est que l’IP soit bannie au minimum pendant 1 heure. Pour cela il suffira de modifier cette ligne :

f2b1.png

Si vous faites défiler le fichier vous verrez qu’il contient plusieurs blocs respectant ce format :

[ service ]
directive1 = 
directive2 = 
directiven = 
...

Ces blocs sont nos jails. Par défaut il existe tout un tas de templates non activés dans le fichier /etc/fail2ban/jail.conf. Imaginons que nous voulons protéger notre service SSH contre les tentatives de bruteforce. La configuration de notre jail pourra ressembler à ça :

[sshd]
enabled   = true
port      = ssh
logpath   = /var/log/auth.log
filter    = sshd
max_retry = 5

Une fois le bloc écrit il ne nous restera plus qu’à reload le service Fail2Ban :

systemctl reload fail2ban

On pourra alors vérifier que nos jails sont fonctionnelles à l’aide de cette commande :

fail2ban-client status

f2b2.png

Et tester nos politiques en bruteforcant le ssh par exemple  !

f2b3.png

Pour unban votre IP il suffira d’entrer cette commande:

fail2ban-client set sshd unbanip votre_ip

Pour info, Fail2Ban est installé avec un set de regex prête à l’utilisation mais libre à vous de rajouter vos patterns de détection d’intrusion  !