Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fail2ban [Le 02/12/2013, 19:05]
Ame Nomade [Configuration] Généralités et Paramétrage par défaut
fail2ban [Le 24/03/2023, 10:40] (Version actuelle)
78.196.241.242 [Généralités]
Ligne 1: Ligne 1:
-{{tag>​serveur sécurité pare-feu}}+{{tag>​serveur sécurité pare-feu }}
  
 ---- ----
-====== Bannir des IP avec fail2ban ======+====== Bannir des IP avec fail2ban ​- v2020 ======
  
 {{ :​fail2ban_logo.png?​90}} {{ :​fail2ban_logo.png?​90}}
-**fail2ban** ​lit les logs de divers ​serveurs ​(SSH, Apache, FTP...) ​à la recherche d'​erreurs d'authentification ​répétées et ajoute ​une règle iptables pour bannir l'​adresse IP de la source.+**fail2ban** ​est une application qui analyse ​les logs de divers ​services ​(SSH, Apache, FTP...) ​ en cherchant des correspondances entre des motifs définis dans ses filtres et les entrées des logs. Lorsqu'une correspondance est trouvée une ou plusieurs actions sont exécutées. Typiquement,​ fail2ban cherche des tentatives ​répétées ​de connexions infructueuses dans les fichiers journaux ​et procède à un bannissement en ajoutant ​une règle ​au pare-feu [[:iptables]] ou [[:​nftables]] ​pour bannir l'​adresse IP de la source. 
 +===== Installation =====
  
 +[[tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​fail2ban]]** disponible dans les [[:​depots#​universe_et_multiverse|dépôts Universe]]. \\
  
 +Il convient ensuite de lancer le service fail2ban
 +<​code>​systemctl start fail2ban</​code>​
  
 +puis d'en créer le démarrage automatique
 +<​code>​systemctl enable fail2ban</​code>​
  
 +Et enfin de contrôler la bonne installation
 +<​code>​systemctl status fail2ban</​code>​
  
 +Si la réponse comporte du rouge et le mot "​failed"​ " sur la ligne commençant par "​Active :", les dernières lignes du message indiquent les raisons de l'​échec et permettent sa correction avant un nouvel essai, à tenter après lecture du reste de cet article.
  
-===== Installation =====+Si la réponse comporte du vert et les mots "​active (running)"​ sur la ligne commençant par "​Active :", le service est installé et actif.
  
-[[tutoriel:​comment_installer_un_paquet|Installez le paquet]] [[apt>​fail2ban]] disponible dans les [[:​depots#​universe_et_multiverse|dépôts Universe]]. \\+===== Configuration ===== 
 +<note important>Il est vivement déconseillé de modifier les fichiers de configuration **/etc/fail2ban/​fail2ban.conf** et **/​etc/​fail2ban/​jail.conf** (notamment car ils peuvent être écrasés par une mise à jour). Ces fichiers contiennent ​les configurations de base qu'on peut **surcharger** au moyen d'un ou plusieurs fichiers enregistrés dans **/​etc/​fail2ban/​jail.d**\\ Le fichier **/​etc/​fail2ban/​jail.conf** ​ doit servir uniquement de référence et de documentation.</​note>​ 
 +==== Généralités ====
  
 +**Fail2ban ne doit pas être considéré comme un outil de sécurisation absolu d'un service**. Ses objectifs sont d'​éviter de surcharger les logs du système avec des milliers de tentatives de connexion et de limiter la portée des attaques répétées provenant d'une même machine.\\
 +Un serveur avec un accès SSH sur le port standard, par exemple, recevra très rapidement des centaines, voire des milliers de tentatives de connexions provenant de différentes machines. Ce sont généralement des attaques par force brute lancées par des robots.\\
 +Fail2ban en analysant les logs permet de bannir les IP au bout d'un certain nombre de tentatives ce qui limitera le remplissage des logs et l'​utilisation de la bande passante. \\
 +Ceci va également rendre les attaques par force brute ou par dictionnaire beaucoup plus longues mais ce n'est pas une sécurité absolue contre ce type d'​attaque.
  
 +**Mais cela n'​améliore en rien la sécurité du service concerné**. Si l'​accès SSH n'est pas suffisamment sécurisé (mot de passe faible par exemple) fail2ban n'​empêchera pas un attaquant d'​arriver à ses fins.\\
 +Autrement dit, utilisez votre temps de travail pour analyser vos configurations et sécuriser vos services plutôt que d'​installer et paramétrer des outils d'​analyse de logs plus ou moins gourmands en ressources système.
  
-Lancer ensuite la commande 
-<​code>​ 
-sudo fail2ban-client -x start 
-</​code>​ 
-===== Configuration ===== 
-<note important>​Dans ce tutoriel, il est souvent mentionné de modifier **/​etc/​fail2ban/​jail.conf**,​ il est en fait préférable de copier ce fichier dans **/​etc/​fail2ban/​jail.__local__**,​ et de modifier dans ce dernier les configurations de base avec les paramètres spécifiques. Ce fichier jail.local sera automatiquement lu lors de l'​initialisation de fail2ban.</​note>​ 
-==== Généralités ==== 
-Le but de fail2ban est d'​empêcher une attaque qui, par force brute, trouve un identifiant/​mot de passe permettant l'​accès à un service. Les postes serveurs ne dormant jamais, ils sont la cible d'​attaques automatiques en provenance de partout. Et sans un tel outil, qui sanctionne les tentatives, plus un serveur est rapide à répondre, plus il est menacé. Le paramétrage par défaut de la sanction est de 10mn, alors faisons un petit calcul : si un attaquant du service SSH fait 5 tentatives toutes les 10mn (il ne se fait sanctionner qu'à 6 erreurs), alors sans jamais se faire bloquer, il pourra effectuer 5×(60/​10)×24×365=262800 tentatives par an, soit plus d'un quart de million. Alors supposons qu'un individu dispose de 10 postes (10 IP) d'où lancer une attaque, il aura effectué au bout d'un an 2.6 millions d'​essais,​ et avec 100 ou 1000 postes, 26 millions ou 260 millions. On voit donc bien que 10 minutes n'est pas une sanction suffisante. 
 ==== Paramétrage par défaut ==== ==== Paramétrage par défaut ====
-Par rapport au blocage par défaut (600s), un blocage de 1h est bien plus réaliste (**3600**s),​ ou même 1 journée (**86400**s),​ ou pourquoi pas 1 semaine (**604800**s). Mais attention que changer le '​bantime'​ n'agit pas sur le '​findtime'​ qu'il faut également ajuster, car sinon le '​findtime'​ par défaut (10mn) est utilisé, ce qui permet à nouveau l'​attaque expliqué au point précédent. L'​inconvénient d'un (très ?) grand '​findtime'​ est qu'il pousse fail2ban à analyser de plus longs fichiers de log, et que ça peut être pénalisant du point de vue des performances,​ alors c'est à vous de voir. La solution est alors de choisir un grand '​findtime'​ et un très grand '​bantime'​ : 3600 et 86400, ou encore 86400 et 604800. 
  
-Mais maintenant que vous avez mis en place une punition importante, il faut bien veiller à ajouter ​en liste blanche vos adresses IPs les plus communescar l'​erreur ​est humainedonc il ne faudrait ​pas vous bloquer vous-même ​de l'​accès ​à votre serveur. La liste 'ignoreip' ​est séparée ​d'espaces, donc si votre IP est 8.8.8.8, éditez ​le fichier **/​etc/​fail2ban/​jail.conf** :+Les paramètres par défaut sont visibles dans le fichier **/​etc/​fail2ban/​jail.conf** 
 + 
 +La durée de bannissement d'une IP est définie par la directive **bantime** avec une valeur ​en secondes. La valeur par défaut est de 600 ssoit 10 minutes, ce qui est beaucoup trop court. Il est plus réaliste d'​avoir des durées de bannissement d'une ou plusieurs heuresvoir plusieurs jours.\\ 
 + 
 +Une autre directive importante est **findtime** qui définit en secondes le temps depuis lequel une anomalie est recherchée dans les logs. Il ne faut pas mettre une valeur trop élevée (1 heure suffit) sans quoi la quantité ​de logs à analyser pourrait devenir très importante et donc avoir un impact sur les performances. 
 + 
 +La directive **ignoreip** permet de définir la liste des IP à ignorer. Il est utile d'y mettre sa propre ​IP afin de ne pas risquer de se faire bannir. 
 + 
 +Il faut créer ​le fichier ​dans **/​etc/​fail2ban/​jail.d/custom.conf** ​(ou un autre nom de votre choix) contenant ​: 
 <​code>​[DEFAULT] <​code>​[DEFAULT]
-ignoreip = 127.0.0.1 ​8.8.8.8 +ignoreip = 127.0.0.1 ​124.32.5.48 
-findtime = 3600 +findtime = 10m 
-bantime = 86400</​code>​ +bantime = 24h 
-==== Modifier la configuration pour l'​adapter à vos besoins ====+maxretry = 3</​code>​
  
-Pour spécifier à **fail2ban** quels services il doit surveilleréditez le fichier ​**/​etc/​fail2ban/​jail.conf**+  ​ignoreip ⇒ votre IP (ici 124.32.5.48) en plus de l'​interface de bouclage ; 
 +  ​findtime = 10m (10 minutes)3600 secondes (une heure) 
 +  ​bantime = 24h (24 heures) ou 86400 secondes 
 +  ​maxretry = 3 (une IP sera bannie après 3 tentatives de connexion avortées).
  
-Dans la partie //jail// vous trouverez des blocs du type : +==== Configurer fail2ban pour les services actifs ==== 
-<​file>​ + 
-[ssh]+Pour spécifier à **fail2ban** quels services il doit surveiller, il faut activer les « jails » (prisons) correspondantes. 
 + 
 +Si vous regardez le fichier **/​etc/​fail2ban/​jail.conf**,​ dans la partie //jail// vous trouverez des blocs du type : 
 +<​file ​- /​etc/​fail2ban/​jail.conf
 +[sshd] 
 + 
 +port    = ssh 
 +logpath = %(sshd_log)s 
 +backend = %(sshd_backend)s 
 +</​file>​ 
 +Il indique : 
 +  * **port** = les ports à bloquer au moyen des règles [[:iptables]] ; 
 +  * **logpath** = l'​emplacement des fichiers de log à surveiller ; 
 +  * **backend** = le moteur de surveillance des logs. 
 +Les valeurs représentées ainsi **%(sshd_logs)s** sont des variables qui sont définies dans d'​autres fichiers de configuration : **paths_common.conf** et **paths_debian.conf** notamment.
  
 +Pour activer la surveillance des connexion SSH, il suffit d'​ajouter dans le fichier /​etc/​fail2ban/​jail.d/​custom.conf :
 +<file - /​etc/​fail2ban/​jail.d/​custom.conf >
 +[sshd]
 enabled = true enabled = true
-port    = ssh,sftp 
-filter ​ = sshd 
-logpath ​ = /​var/​log/​auth.log 
-maxretry = 6 
 </​file>​ </​file>​
  
-Il indique, par ordre, l'activation, les ports à bloquer avec les règles iptables, ​le nom du filtre (expression régulière) associé, le fichier de log à lire, le nombre maximal de tentatives.+Procédez de même pour les autres services.\\ 
 +Il est bien entendu inutile d'activer des prisons pour des services qui ne sont pas utilisés sur le serveur.
  
-Un certain nombre ​de services disposent ​de tels blocs de configurationvous pouvez les activer en passant si besoin false à true.+Si vous avez besoin ​de spécifier un port (par exemple, quand SSH n'est pas en écoute sur un port standard, un fichier ​de log particulier,​ ou un nombre ​de tentatives différent de la valeur par défautprécisez-le :
  
-<note important>​Attention,​ si vous avez changé le port ssh dans la configuration de OpenSSH (comme il est recommandé de le faire pour éviter les robots qui testent le port 22 par defaut), il semblerait qu'il faille le préciser à fail2ban ​! Dans la configuration ci dessus, ajoutez à la ligne "​port",​ votre port SSH, par exemple **port ​=ssh,​sftp,​2276** si votre nouveau ​port ssh est 2276 sans quoi fail2ban ne surveillera que le port 22 !</note>+<file - /etc/fail2ban/​jail.d/​custom.conf > 
 +[sshd] 
 +enabled ​true 
 +port = 2222 
 +logpath = /​var/​log/​auth.log 
 +maxretry = 5 
 +</file>
  
-<note tip>​D'​une manière générale, il est important d'​effectuer des tests pour vérifier le bon fonctionnement de fail2ban ! Voir ci dessous comment ​proceder..</​note>​+<note tip>​D'​une manière générale, il est important d'​effectuer des tests pour vérifier le bon fonctionnement de fail2ban ! Voir ci-dessous comment ​procéder.</​note>​
  
  
 Relancez la configuration avec Relancez la configuration avec
-<​code>​sudo fail2ban-client reload</​code>​+<​code>​sudo ​systemctl restart ​fail2ban</​code>​
  
 Vous pouvez alors vérifier si les prisons ont été correctement lancées avec : Vous pouvez alors vérifier si les prisons ont été correctement lancées avec :
Ligne 65: Ligne 105:
 Status Status
 |- Number of jail:      3 |- Number of jail:      3
-`- Jail list:           ​apache, ​vsftpdssh+`- Jail list:           ​apache, ​proftpdsshd
 </​code>​ </​code>​
  
Ligne 71: Ligne 111:
 Les prisons peuvent être contrôlées séparément avec les mots clés //​start//,//​stop//,//​status//​ Les prisons peuvent être contrôlées séparément avec les mots clés //​start//,//​stop//,//​status//​
 Par exemple : Par exemple :
-<​code>​sudo fail2ban-client stop ssh+<​code>​sudo fail2ban-client stop sshd
 Jail stopped Jail stopped
 </​code>​ </​code>​
  
-Pour plus d'​informations,​ référez-vous aux pages de //man//.+Pour plus d'​informations,​ référez-vous aux pages de //[[:man]]//.
  
-==== Verifier ​le bon fonctionnement de votre configuration Fail2Ban ​ ====+==== Vérifier ​le bon fonctionnement de votre configuration Fail2Ban ​ ====
  
-Pour vérifier le bon fonctionnement de fail2ban ​: essayez ​de vous identifier plusieurs fois en saisissant un mauvais mot de passe. +Pour vérifier le bon fonctionnement de fail2ban ​ vous pouvez essayer ​de vous identifier plusieurs fois en saisissant un mauvais mot de passe. 
-Si Fail2ban fonctionne, vous devriez être interdit d'​accès au serveur au bout d'un certain nombre d'​essais (précisés dans la configuration à la ligne maxretry).+Si Fail2ban fonctionne, vous devriez être interdit d'​accès au serveur au bout d'un certain nombre d'​essais (précisés dans la configuration à la ligne maxretry) ​à condition de ne pas avoir mis votre IP dans la directive **ignoreip**.\\ 
 +Attention ! Pensez à régler la valeur de **bantime** sur un temps assez court si vous faites ce genre d’essais afin de pouvoir vous reconnecter à votre serveur.
  
-Côté serveur vous pouvez également surveiller ce qu'il se passe avec la commande  +Côté serveur vous pouvez également surveiller ce qu'il se passe avec la commande 
-<​code>​sudo fail2ban-client status ​ssh</​code>​ +<​code>​sudo fail2ban-client status ​sshd</​code>​ 
-qui dans ce cas vous retournera le statut de la prison ​'​ssh' ​(avec le nombre de tentative échouée ​et la liste des IP banni)+qui dans ce cas vous retournera le statut de la prison ​« sshd » (avec le nombre de tentatives échouées ​et la liste des IP bannies)
  
-Attention, si votre IP de test apparaît comme banni mais que vous pouvez tout de même vous loguer +Si vous utilisez un service sujet à de nombreuses attaques par force brute, comme sshd sur le port standard 22, vous devriez très rapidement ​voir les premiers bannissements. 
-il se peut que vous ayez un problème de configuration des ports pour fail2ban (voir l'​avertissement dans "​configuration"​ ci-dessus) + 
-  * une variante ​de fail2ban-client statut, qui permet un checklist des ip bannies sur toutes ​les jails  +Vous pouvez aussi examiner les logs de fail2ban ​pour voir les actions effectuées : 
-<​code>​sudo nano checklist_ban +<​code>​tail -/var/log/fail2ban.log</​code>​
-#​!/​bin/​bash +
-#lancer le script en sudo  +
-JAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:\t\t//g' | sed '​s/,//​g'​) +
-for j in $JAILS +
-do +
-echo "$j $(fail2ban-client status $j | grep " Currently banned:"​ | sed '​s/ ​  |- Currently banned:​\t//​g'​)"​ +
-done +
-</​code>​+
  
 ===== Configuration avancée ===== ===== Configuration avancée =====
  
-À chaque service est associé un fichier de configuration dans le dossier **/​etc/​fail2ban/​filter.d**+==== Configurer les actions ====
  
-Une expression régulière définit les lignes du log qui signalent une erreur d'authentification. Il est possible de spécifier via une //regex// des exceptions, //ie// des lignes à ignorerCela peut être utile par exemple pour ne pas bannir les IP provenant de votre réseau local.+Les actions ​ exécutées par fail2ban lorsqu'une correspondance ​est trouvée entre un filtre et une entrée de log sont définies par la directive **action**. Pour plus d'​information consultez la partie **ACTIONS** du fichier **/etc/fail2ban/jail.conf**.\\ 
 +L'​action ​par défaut est un simple bannissement par ajout d'une règle iptables.\\
  
-==== Exemple avec la règle anti-w00tw00t ====+Les actions peuvent être définis globalement dans la section [DEFAULT] ou par « jails » dans leur propre .section
  
-Voici un exemple, pour bannir les désormais célèbres requêtes DFind w00tw00tDans le fichier **/​etc/​fail2ban/​jail.conf** ​on ajoute ​+Il est possible de recevoir ​un courriel après chaque bannissement d'une adresse IP.\\ 
-<file> +Pour cela vous pouvez définir globalement l'​adresse du destinataire dans la section [DEFAULT] du fichier **/​etc/​fail2ban/​jail.d/custom.conf** : 
-[apache-w00tw00t] +<code>destemail ​adresse@example.com</​code>​ 
-enabled ​true +Il faut que le système soit correctement configuré pour l'​envoi de courriels, par exemple avec [[ssmtp|ssmtp]].
-filter = apache-w00tw00t +
-action = iptables[name=Apache-w00tw00t,​port=80,​protocol=tcp] +
-logpath = /​var/​log/​apache*/​*access.log +
-maxretry = 1 +
-</​file>​+
  
-On notera que contrairement aux autres règles, celle-ci s'​attaque au fichier ​de log des accès (///var/log/apache2/​access*.log//).+La valeur par défaut est root@localhost dans la section [DEFAULT] ​de /etc/fail2ban/jail.conf et concerne donc toutes les prisons. Il reste cependant possible de spécifier un //destemail// particulier dans une prison donnée.
  
-Voici le fichier ​de règles ​**/etc/fail2ban/filter.d/​apache-w00tw00t.conf** +Pour voir les messages locaux (si vous avez laissé une adresse e-mail du type @localhost),​ il vous faudra ouvrir un terminal et taper la commande "​mail"​ ou, plus simplement encore, consulter ​le fichier **/var/mail/votrelogin**.
-<​file>​[Definition]+
  
-failregex = ^<​HOST>​ -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:​\).*".*+**Pour activer l'​envoi de courriels**,​ ajoutez la ligne dans la section [DEFAULT] du fichier **/etc/​fail2ban/​jail.d/custom.conf**
  
-ignoreregex ​= +<​code>​action ​%(action_mw)s ​</code>
-</file>+
  
-On teste maintenant si la règle s'​applique bien en faisant ​:+ou (pour envoyer un mail avec le whois ainsi que les logs)
  
-<​code>​fail2ban-regex /​var/​log/​apache2/​access.log /​etc/​fail2ban/​filter.d/​apache-w00tw00t.conf</​code>​+<​code>​action = %(action_mwl)s ​</​code>​
  
-Si vous subissez ce genre d'​attaque,​ on peut voir en sortie de ce programme les adresses des spammeurs. Les règles iptables sont automatiquement crées en conséquence.+Pensez à redémarrer fail2ban pour que cette modification soit prise en compte 
 +<​code>​sudo systemctl restart fail2ban</​code>​
  
-<note important>​Pour qu'il accepte ​de se lancer au démarrage, j'ai dû changer la ligne "​socket = /var/​run/​fail2ban/fail2ban.sock" en "​socket = /var/run/​fail2ban.sock" dans le fichier ​/etc/​fail2ban/​fail2ban.conf</​note>​+Des informations complémentaires sont disponibles sur le site officiel ​de Fail2ban : 
 +[[http://www.fail2ban.org/wiki/index.php/FAQ_french#​J.27utilise_Postfix_sur_mon_syst.C3.A8me_mais_je_n.27ai_pas_de_commande_.22mail.22._Comment_recevoir_les_notifications_par_mail.3F|FAQ Fail2ban]]
  
-==== Alertes e-mail après un bannissement ​====+Il existe de nombreuses autres possibilités de configuration des actions : envoi automatiques de courriels au service « //abuse// » concerné, ​bannissement ​d'​utilisateur,​ envoi des IP et du motif de bannissement à des service externes comme [[https://​www.abuseipdb.com/​|AbuseIPDB]],​ etc.
  
-Il est possible de recevoir un e-mail après chaque bannissement d'une adresse IP en utilisant la syntaxe suivante dans la section [DEFAULT] du fichier **/​etc/​fail2ban/​jail.local** :  +==== Configurer les filtres ====
-<​code>​destemail ​votrelogin@votrelogin-desktop</​code>​ +
-Voire même toute autre adresse mail si le système est correctement configuré pour l'​envoi de mail, par exemple avec [[ssmtp|ssmtp]].+
  
-La valeur par défaut ​est root@localhost ​dans la section [DEFAULT] de /​etc/​fail2ban/​jail.conf et concerne donc toutes les prisons. Il reste cependant possible de spécifier un destemail particulier dans une prison donnée.+À chaque prison ou service ​est associé un fichier de filtrage du même nom dans le dossier **/​etc/​fail2ban/​filter.d**
  
-Pour voir les messages locaux (si vous avez laissé ​une adresse e-mail du type @localhost),​ il vous faudra ouvrir un terminal et taper la commande "​mail" ​ou, plus simplement encore, consulter le fichier ​**/​var/​mail/​votrelogin**.+Ces fichiers contiennent ​une ou plusieurs expressions rationnelles qui servent de motif de recherche pour les lignes correspondantes dans les logs. Les expressions rationnelles sont définies par la directive ​**failregex**.
  
-Si les dates d'​envoi des messages ne correspondent pas à la date réelle, il faut alors ajouter à la fin du fichier ​**/etc/default/fail2ban** : +Exemple dans le fichier /​etc/​fail2ban/​filter.d/​sshd.conf :
-<​code>​LC_ALL=C +
-LANG=C</code>+
  
-Modifier la ligne dans le fichier ​/etc/​fail2ban/​jail.conf+<​code>​failregex = ^%(__prefix_line)s(?:​error:​ PAM: )?​[aA]uthentication (?:​failure|error|failed) for .* from <​HOST>​( via \S+)?​\s*$<​/code>
  
-<​code>​action = %(action_)s </​code>​+Cette expression rationnelle entrera en correspondance avec toutes les lignes du fichier de log contenant des erreurs ou échec authentification.
  
-Vers : (pour envoyer un mail avec le whois)+Vous pouvez ajouter ou modifier des expressions rationnelles dans ces fichiers ​(attention au risque d'​écrasement lors d'une mise à jour). Mais cela exige une bonne maîtrise des expressions rationnelles et de la syntaxe particulière de fail2ban. D'​autre part fail2ban a beaucoup évolué et des configurations personnalisées faîtes sur une version risquent de ne plus fonctionner sur la suivante…
  
-<​code>​action ​%(action_mw)s </​code>​+==== Tester les filtres ====
  
-ou : (pour envoyer ​un mail avec le whois ainsi que les logs)+Si vous avez créé vos propres filtres, modifié des filtres existants, ​ou si vous voulez simplement tester ​un filtre sur un fichier de log particulier,​ l'​outil fail2ban-regex est fait pour vous.\\
  
-<​code>​action = %(action_mwl)s </​code>​+Par exemple, pour tester le filtre apache-badbots sur le fichier journal d'​Apache :
  
-Des informations complémentaires sont disponibles sur le site officiel de Fail2ban :  +<​code>​fail2ban-regex ​/var/log/apache2/access.log /​etc/​fail2ban/​filter.d/​apache-badbots.conf</​code>​
-[[http://www.fail2ban.org/wiki/index.php/​FAQ_french#​J.27utilise_Postfix_sur_mon_syst.C3.A8me_mais_je_n.27ai_pas_de_commande_.22mail.22._Comment_recevoir_les_notifications_par_mail.3F|FAQ Fail2ban]] +
-==== Modification du filtre SASL ==== +
-Pour activer le filtre SASL permettant le bannissement en cas d'​attaque par force brute il faut modifier l'​expression régulière du filtre dans le fichier **/​etc/​fail2ban/​filter.d/​sasl.conf**+
  
-Remplacer la ligne: +===== Gestion du bannissement ===== 
-<​code>​failregex = (?i)warning: [-._\w]+\[<​HOST>​\]:​ SASL (?:​LOGIN|PLAIN|(?:​CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?​$</​code>​ +:-) Il est possible de spécifier une plage d'​adressesPar exemple, x.y.z.0/24 désigne les adresses de x.y.z.0 à x.y.z.255. 
-Par+==== Voir le status des jails ===
-<​code>​failregex = (?i): warning: [-._\w]+\[<​HOST>​\]:​ SASL (?:​LOGIN|PLAIN|(?:​CRAM|DIGEST)-MD5) authentication failed: \w</​code>​ +Pour savoir si votre jail est actifvous devriez le voir affiché, après avoir taper cette commande ​
-On teste maintenant si la règle s'​applique bien en faisant : +<​code>​fail2ban-client status</​code>​ 
-<​code>​fail2ban-regex ​/var/​log/​mail.log /etc/fail2ban/filter.d/sasl.conf<​/code>+//Cette commande affiche tous les jails que fail2ban ​traite.//
  
-=====erreur "​fail2ban.actions.action:​ ERROR  iptables ..." ===== 
  
-Une erreur qui semble toucher les versions inférieures à 0.8.5-2 (fail2ban-client ​--version). +Pour savoir si une de vos jails de votre fail2ban a bannis une ou plusieurs IP, taper cette commande : 
-Si dans votre /var/log/​fail2ban.logvous avez ce genre d'​erreurs "​fail2ban.actions.action:​ ERROR  iptables ..." ​et qu'il manque curieusement des règles fail2ban dans iptables (sudo iptables -L -n -v)veuillez modifier ​le fichier ​/usr/bin/​fail2ban-client+<​code>​fail2ban-client ​status [Nom du jail]</​code>​ 
 +//Cette commande va afficher le nombre de tentative lu dans vos logsle nombre de bannis ​et, le plus intéressant,​ les IPs qui sont bannis temporairement.//
  
->sudo nano /​usr/​bin/​fail2ban-client +==== Dé-bannir une IP de l'un de vos jails ==== 
->et ajouter time.sleep(0.1) ou time.sleep(0.2) +Une de vos adresse IP se retrouve blacklisté suite à une mauvaise manips répété ou un test de sécuritéVous pouvez le retirer de la liste des IP blacklisté de fail2ban avec cette commande ​
-<​code>​ +<​code>​fail2ban-client ​set [nom du jail] unbanip [IP concerné]</​code>​
- def __processCmd(self,​ cmd, showRet ​True): +
- beautifier ​Beautifier() +
- for c in cmd: +
- time.sleep(0.1) +
- beautifier.setInputCmd(c) +
- try: +
- client = CSocket(self.__conf["​socket"​]) +
- ret = client.send(c) +
-</code> +
-  * Vérification +
-<​code>​ +
-sudo fail2ban-client ​reload +
-sudo tail -n 300 /​var/​log/​fail2ban.log +
-</​code>​+
  
-===== Ressources ===== +==== Bannir manuellement une IP sur l'un de vos jails ==== 
-[[http://​www.fail2ban.org/​wiki/​index.php/​Main_Page|Le site de fail2ban]] +Vous voulez tester plus rapidement l'​interdiction d'un accès d'un PC, ou bloquer une personne malveillante. Renseignez son IP dans cette commande : 
-[[http://​forums.ovh.com/showpost.php?​p=269688&​postcount=14|Les règles de cassiopee sur les forums OVH]]+<​code>​fail2ban-client set [nom du jailbanip [IP à bannir]</​code>​ 
 +<note important>​Une fois la commande validée, votre pare-feu, iptables, va empêcher la machine en question de se connecterATTENTION, de ne pas mettre votre propre adresse IP, si vous le faites à distance.</note>
  
-===== Voir aussi =====+===== Alternatives à fail2ban ​===== 
 + 
 +  * [[https://​www.sshguard.net/​|SSHGuard]] est une alternative à Fail2ban présent dans les dépôts Ubuntu 
 +  * [[https://​github.com/​clearlinux/​tallow|Tallow]] est une alternative légère à Fail2ban qui utilise systemd-journal 
 + 
 + 
 +===== Ressources ===== 
 +  * (en) [[https://​github.com/​fail2ban/​fail2ban|fail2ban sur github (depuis 2011) avec un wiki!]] 
 +  * (en) [[http://​www.fail2ban.org/​wiki/​index.php/​Main_Page|Le site de fail2ban]]
  
 +  * (fr) [[https://​wiki.visionduweb.fr/​index.php?​title=Installer_et_utiliser_Fail2ban|Wiki non officiel de fail2ban]] (Commandes fail2ban, Exemples fail2ban, ressources complémentaires...)
  
-  * [[denyhosts]] fonctionne à peu près sur le même principe mais sans utiliser iptables 
  
 +--- //​[[:​utilisateurs:​bruno|bruno]] Le 15/03/2018, 10:24//
 +--- //​[[:​utilisateurs:​Zer00CooL|Zer00CooL]] Le 25/03/2020, 15:45//
  
-===== Liens utiles ===== 
-  *  (fr) [[http://​www.it-connect.fr/​premiers-pas-avec-fail2ban/​| Premiers pas avec Fail2ban sur IT-Connect]] 
  • fail2ban.1386007538.txt.gz
  • Dernière modification: Le 02/12/2013, 19:05
  • par Ame Nomade