Fail2ban analyse les fichiers journaux de divers services ( SSH, FTP, SMTP, Apache, etc., ) et interdit le IP qui fait trop d'échecs de mot de passe. Il met également à jour les règles du pare-feu pour rejeter ces adresses IP.
Fail2ban est un cadre de prévention des intrusions écrit dans le langage de programmation Python.
L'objectif principal de Fail2ban est d'empêcher les attaques de connexion par force brute.
Reportez-vous également à notre article précédent sur Tripwire (système de détection d'intrusion basé sur l'hôte Linux).
Installer Fail2ban
Pour installer fail2ban depuis la source, téléchargez-le depuis sourceforge..
Utilisez apt-get pour installer Fail2ban sur un système basé sur Debian, comme indiqué ci-dessous.
# apt-get install fail2ban
Vous pouvez également installer Fail2ban manuellement en téléchargeant le package deb fail2ban.
# dpkg -i fail2ban_0.8.1-1_all.deb
Comment configurer fail2ban
Tous les fichiers de configuration Fail2ban sont situés dans le répertoire /etc/fail2ban.
/etc/fail2ban/fail2ban.conf
L'objectif principal de ce fichier est de configurer les directives relatives au journal fail2ban.
- Loglevel :définissez le niveau de journalisation de la sortie.
- logtarget :spécifiez le chemin du fichier journal
Les actions prises par le Fail2ban sont consignées dans le fichier /var/log/fail2ban.log. Vous pouvez modifier la verbosité dans le fichier conf en l'une des valeurs suivantes :1 - ERROR, 2 - WARN, 3 - INFO ou 4 - DEBUG.
/etc/fail2ban/jail.conf
Le fichier jail.conf contient la déclaration des configurations du service. Ce fichier de configuration est divisé en différents contextes. Les paramètres PAR DÉFAUT s'appliquent à toutes les sections.
La section DEFAULT suivante de jail.conf indique qu'après cinq tentatives d'accès infructueuses à partir d'une seule adresse IP en 600 secondes ou 10 minutes (findtime), cette adresse sera automatiquement bloquée pendant 600 secondes (bantime).
[DEFAULT] ignoreip = 127.0.0.1 maxretry = 5 findtime = 600 bantime = 600
- ignoreip :il s'agit d'une liste d'adresses IP séparées par des espaces qui ne peuvent pas être bloquées par fail2ban.
- maxretry :nombre maximal de tentatives de connexion infructueuses avant qu'un hôte ne soit bloqué par fail2ban.
- bantime :temps en secondes pendant lequel un hôte est bloqué s'il a été intercepté par fail2ban (600 secondes =10 minutes).
Configuration des services
Par défaut, certains services sont insérés en tant que modèles. Voici un exemple de la section des services ssh.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log action = iptables
- enabled :Activer la vérification fail2ban pour le service ssh
- port :port de service (référencé dans le fichier /etc/services)
- filter :nom du filtre à utiliser par le service pour détecter les correspondances. Ce nom correspond à un nom de fichier dans ‘/etc/fail2ban/filter.d’ ; sans l'extension '.conf'. Par exemple :"filter =sshd" fait référence à "/etc/fail2ban/filter.d/sshd.conf".
- logpath :le fichier journal que fail2ban vérifie pour les tentatives de connexion infructueuses.
- Action :cette option indique à fail2ban quelle action entreprendre une fois qu'un filtre correspond. Ce nom correspond à un nom de fichier dans ‘/etc/fail2ban/action.d/’ sans l’extension ‘.conf’. Par exemple :"action =iptables" fait référence à /etc/fail2ban/action.d/iptables.conf".
Fail2ban surveillera le fichier /var/log/auth.log pour les tentatives d'accès infructueuses, et s'il trouve des tentatives répétées de connexion ssh échouées à partir de la même adresse IP ou hôte, fail2ban arrête les tentatives de connexion ultérieures à partir de cette adresse IP/hôte en le bloquant avec règle de pare-feu iptables fail2ban.
Filtres Fail2ban
Le répertoire /etc/fail2ban/filter.d contient des expressions régulières utilisées pour détecter les tentatives d'effraction, les échecs de mot de passe, etc., pour divers services.
Par exemple :
- sshd.conf – Filtres liés à Fail2ban ssh
- apache-auth.conf – Filtres de service apache Fail2ban
Nous pouvons également ajouter notre propre expression régulière pour trouver une action indésirable.
Actions Fail2ban
Le répertoire /etc/fail2ban/action.d contient différents scripts définissant des actions qui s'exécuteront une fois qu'un filtre correspondra. Un seul filtre est autorisé par service, mais il est possible de spécifier plusieurs actions, sur des lignes distinctes.
Par exemple :
- IPtables.conf – bloquer et débloquer l'adresse IP
- Mail.conf - Envoi de courrier à l'utilisateur configuré
Démarrer/arrêter le service Fail2ban
Après avoir apporté des modifications à la configuration, arrêtez et démarrez le démon Fail2ban comme indiqué ci-dessous.
# /etc/init.d/fail2ban stop # /etc/init.d/fail2ban start