grimboite/articles/sys/2016-06-13-fail2ban.md

2.8 KiB

Title Date Slug
Fail2ban 2016-06-13 fail2ban

Dans la catégorie des petits outils top biches, on a fail2ban, qui est un framework de prévention contre les intrusions. Il permet par exemple de détecter un trop grand nombre de tentative de connexion. Fail2Ban est ensuite utilisé pour modifier les règles du pare-feu, pour rejeter par défaut l'adresse IP incriminée.

Par exemple, juste après son installation, on peut trouver ceci parmi les logs:


    2016-06-13 05:23:40,337 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 05:33:41,022 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
    2016-06-13 05:33:47,040 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 05:43:47,717 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
    2016-06-13 05:43:50,732 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 05:53:51,398 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
    2016-06-13 05:53:56,415 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 06:03:57,097 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
    2016-06-13 06:04:01,113 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 06:14:01,807 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148
    2016-06-13 06:14:07,825 fail2ban.actions[4160]: WARNING [ssh] Ban 5.39.218.148
    2016-06-13 06:24:08,516 fail2ban.actions[4160]: WARNING [ssh] Unban 5.39.218.148

On voit clairement qu'il s'agit d'une tentative de connexion malicieuse: toujours la même adresse IP, à des heures pas franchement folichonnes. Ici, Fail2Ban est configuré pour relâcher une IP après une dizaine de minutes.

Pour modifier ce comportement, on va ajouter un mécanisme de jails: ouvrez le fichier /etc/fail2ban/jail.conf. La section [DEFAULT] reprend des paramètres classiques (bantime de 10 minutes, nombre maximal de tentatives à 6, ...). Il est possible de spécifier ces jails, en prenant par exemple la configuration pour SSH:


    [ssh]

    enabled  = true
    port     = ssh
    filter   = sshd
    logpath  = /var/log/auth.log
    maxretry = 3
    bantime = 3600

Et voila! Ban d'1h, nombre max de tentatives: 3. On redémarre ensuite Fail2Ban via /etc/init.d/fail2ban restart.

Deux-trois liens supplémentaires: