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 09/08/2019, 10:29]
109.190.133.193 [Paramétrage par défaut]
fail2ban [Le 24/03/2023, 10:40] (Version actuelle)
78.196.241.242 [Généralités]
Ligne 2: Ligne 2:
  
 ---- ----
-====== Bannir des IP avec fail2ban ======+====== Bannir des IP avec fail2ban ​- v2020 ======
  
 {{ :​fail2ban_logo.png?​90}} {{ :​fail2ban_logo.png?​90}}
-**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]] 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 ===== ===== Installation =====
  
 [[tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​fail2ban]]** disponible dans les [[:​depots#​universe_et_multiverse|dépôts Universe]]. \\ [[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.
 +
 +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.
  
 ===== Configuration ===== ===== Configuration =====
Ligne 15: Ligne 27:
 ==== Généralités ==== ==== Généralités ====
  
-**Fail2ban ​n'​est ​pas a proprement parler ​un outil de sécurité**. L'​objectif principal est d'​éviter de surcharger les logs du système avec des milliers de tentatives de connexion.+**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.\\ 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. \\ 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.\\ **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.+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.
  
 ==== Paramétrage par défaut ==== ==== Paramétrage par défaut ====
Ligne 25: Ligne 39:
 Les paramètres par défaut sont visibles dans 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 de 600 s (cela représente ​10 minutes ​et c'est beaucoup trop court), il est plus réaliste d'​avoir des durées de bannissement d'une ou plusieurs heures, voir plusieurs jours.\\+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 s, soit 10 minutes, ce qui est beaucoup trop court. Il est plus réaliste d'​avoir des durées de bannissement d'une ou plusieurs heures, voir 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. 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.
Ligne 35: Ligne 49:
 <​code>​[DEFAULT] <​code>​[DEFAULT]
 ignoreip = 127.0.0.1 124.32.5.48 ignoreip = 127.0.0.1 124.32.5.48
-findtime = 3600 +findtime = 10m 
-bantime = 86400+bantime = 24h
 maxretry = 3</​code>​ maxretry = 3</​code>​
  
   * ignoreip ⇒ votre IP (ici 124.32.5.48) en plus de l'​interface de bouclage ;   * ignoreip ⇒ votre IP (ici 124.32.5.48) en plus de l'​interface de bouclage ;
-  * bantime ​86400 secondes (24 heures+  * findtime ​10m (10 minutes), 3600 secondes (une heure
-  * findtime ​3600 secondes ​(une heure)+  * bantime ​24h (24 heuresou 86400 secondes
   * maxretry = 3 (une IP sera bannie après 3 tentatives de connexion avortées).   * maxretry = 3 (une IP sera bannie après 3 tentatives de connexion avortées).
  
Ligne 58: Ligne 72:
 Il indique : Il indique :
   * **port** = les ports à bloquer au moyen des règles [[:​iptables]] ;   * **port** = les ports à bloquer au moyen des règles [[:​iptables]] ;
-  * **logpath** = l'​emplacement des fichiers de log à surveiller ; +  * **logpath** = l'​emplacement des fichiers de log à surveiller ;
   * **backend** = le moteur de surveillance des logs.   * **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. 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.
Ligne 109: Ligne 123:
 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. 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 sshd</​code>​ <​code>​sudo fail2ban-client status sshd</​code>​
-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)+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)
  
 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. 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.
Ligne 128: Ligne 142:
  
 Il est possible de recevoir un courriel après chaque bannissement d'une adresse IP.\\ Il est possible de recevoir un courriel après chaque bannissement d'une adresse IP.\\
-Pour cela vous pouvez définir globalement l'​adresse du destinataire dans la section [DEFAULT] du fichier **/​etc/​fail2ban/​jail.d/​custom.conf** : +Pour cela vous pouvez définir globalement l'​adresse du destinataire dans la section [DEFAULT] du fichier **/​etc/​fail2ban/​jail.d/​custom.conf** :
 <​code>​destemail = adresse@example.com</​code>​ <​code>​destemail = adresse@example.com</​code>​
 Il faut que le système soit correctement configuré pour l'​envoi de courriels, par exemple avec [[ssmtp|ssmtp]]. Il faut que le système soit correctement configuré pour l'​envoi de courriels, par exemple avec [[ssmtp|ssmtp]].
Ligne 147: Ligne 161:
 <​code>​sudo systemctl restart fail2ban</​code>​ <​code>​sudo systemctl restart fail2ban</​code>​
  
-Des informations complémentaires sont disponibles sur le site officiel de Fail2ban : +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]] [[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]]
  
Ligne 168: Ligne 182:
 ==== Tester les filtres ==== ==== Tester les filtres ====
  
-Si vous avez crée vos propres filtres, ​modifier ​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.\\+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.\\
  
-Par exemple pour teste le filtre apache-badbots sur le fichier journal d'​Apache :+Par exemplepour tester ​le filtre apache-badbots sur le fichier journal d'​Apache :
  
 <​code>​fail2ban-regex /​var/​log/​apache2/​access.log /​etc/​fail2ban/​filter.d/​apache-badbots.conf</​code>​ <​code>​fail2ban-regex /​var/​log/​apache2/​access.log /​etc/​fail2ban/​filter.d/​apache-badbots.conf</​code>​
Ligne 191: Ligne 205:
  
 ==== Bannir manuellement une IP sur l'un de vos jails ==== ==== Bannir manuellement une IP sur l'un de vos jails ====
-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 : ​+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 :
 <​code>​fail2ban-client set [nom du jail] banip [IP à bannir]</​code>​ <​code>​fail2ban-client set [nom du jail] banip [IP à bannir]</​code>​
 <note important>​Une fois la commande validée, votre pare-feu, iptables, va empêcher la machine en question de se connecter. ATTENTION, de ne pas mettre votre propre adresse IP, si vous le faites à distance.</​note>​ <note important>​Une fois la commande validée, votre pare-feu, iptables, va empêcher la machine en question de se connecter. ATTENTION, de ne pas mettre votre propre adresse IP, si vous le faites à distance.</​note>​
Ligne 197: Ligne 211:
 ===== Alternatives à fail2ban ===== ===== Alternatives à fail2ban =====
  
-  * [[https://yalis.fr/​git/​yves/​pyruse/|Pyruse]] Pyruse ​est une alternative ​légère ​à fail2ban qui utilise systemd-journal +  * [[https://www.sshguard.net/|SSHGuard]] est une alternative à Fail2ban présent dans les dépôts Ubuntu 
-  * [[https://​github.com/​clearlinux/​tallow|Tallow]] ​Tallow ​est une alternative légère à fail2ban ​qui utilise systemd-journal+  * [[https://​github.com/​clearlinux/​tallow|Tallow]] est une alternative légère à Fail2ban ​qui utilise systemd-journal 
  
 ===== Ressources ===== ===== Ressources =====
Ligne 204: Ligne 219:
   * (en) [[http://​www.fail2ban.org/​wiki/​index.php/​Main_Page|Le site de fail2ban]]   * (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...)
  
  
 --- //​[[:​utilisateurs:​bruno|bruno]] Le 15/03/2018, 10:24// --- //​[[:​utilisateurs:​bruno|bruno]] Le 15/03/2018, 10:24//
 +--- //​[[:​utilisateurs:​Zer00CooL|Zer00CooL]] Le 25/03/2020, 15:45//
  
  • fail2ban.1565339364.txt.gz
  • Dernière modification: Le 09/08/2019, 10:29
  • par 109.190.133.193