Lolokai – Supervision, systèmes, réseaux, base de données…

4

Fail2ban ou comment limiter l’attaque par brute-force/dictionnaire

Loic FONTAINE 23 juin 2011

Présentation

De nos jours, les attaques par brute-force sont monnaies courante au sein d’une infrastructure. Une attaque par brute-force consiste à essayer toutes les combinaisons de mots de passe possible afin de trouver le bon mot de passe à casser. Ce genre d’attaque prend souvent du temps mais reste très efficace :).

Fail2ban

Fail2ban est un script fonctionnant avec iptables et qui permet de bloquer une adresse IP après plusieurs tentatives de connexions infructueuses.

Installation

[[email protected] ~]# wget http://sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2/download
[[email protected] ~]# tar xvf fail2ban-0.8.4.tar.bz2
[[email protected] ~]# cd fail2ban-0.8.4
[[email protected] ~]# python setup.py install

Nous allons le configurer comme un service et le lancer au démarrage du serveur :

[[email protected] ~]# cp files/redhat-initd /etc/init.d/fail2ban
[[email protected] ~]# chkconfig –add fail2ban
[[email protected] ~]# chkconfig fail2ban on
[[email protected] ~]# service fail2ban start

Configuration globale
Le fichier de configuration de fail2ban se trouve ici : /etc/fail2ban/jail.conf. Pour l’éditer :

[[email protected] ~]# vim /etc/fail2ban/jail.conf

Quelques variables se trouvent dans ce fichier :

  • ignoreip : définit les adresses IP qui ne seront jamais bloquées par fail2ban
  • bantime : définit le nombre de secondes durant lequel fail2ban va empecher l’adresse IP incriminée de se connecter
  • maxretry : définit le nombre d’essais maximum avant de bloquer l’adresse IP

Configuration specifique

Nous allons maintenant activer fail2ban pour SSH, trouvez la ligne [ssh-iptables], juste en dessous trouvez enabled = false et remplacez par enabled = true.
Vous pouvez faire de même avec [proftpd-iptables] pour activer fail2ban pour votre serveur proftpd.

Dans ces sections vous trouverez sans doute [email protected] cela définit l’adresse mail qui sera contacté si jamais fail2ban bloque une adresse IP.

Comment fonctionne fail2ban ?

Fail2ban va parser les fichiers de logs de chaque service définit afin de définir quelles adresses IP ont été bloquées. Pour trouver ces adresses dans les fichiers de logs, il va utiliser une failregex définit dans le dossier /etc/fail2ban/filter.d/.

Chaque fichier de conf définit une failregex propre à chaque service. Le fichier de logs à parser est définit dans chaque catégorie de type [ssh-iptables] dans le fichier de configuration /etc/fail2ban/jail.conf, dans la variable : logpath.

Application des changements

Pour appliquer les changements de configuration, vous devez redémarrer le service fail2ban :

[[email protected] ~]# service fail2ban restart

Conclusion

Fail2ban est un script très performant, qui en plus d’être très fiable est très modulable suivant le service que vous utilisez. Nous pouvons souligner son incapacité à gérer les attaques de type ip-spoofing. Cependant, je le conseil à toutes les personnes désireuses de bien sécuriser leurs serveurs.

Et vous amis lecteurs, avez-vous déjà utilisé fail2ban ? Qu’en pensez-vous ? Souhaiteriez-vous l’implémenter ?
Loic FONTAINE

Comments (4)

  1. Je suis revenu de fail2ban en utilisant uniquement iptables:

    Ex:
    -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
    -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 360 –hitcount 8 –rttl –name SSH -j DROP

    Ainsi, au bout de 8 tentatives dans un temps de 6min l’ip est bannie quelques temps, c’est suffisant pour déjouer les bruteforce qui ne s’attardent pas sur ce genre de filtrage.

    Répondre

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!