Outils pour utilisateurs

Outils du site


fail2ban

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édentesRévision précédente
Prochaine révision
Révision précédente
fail2ban [2023/12/04 11:20] – [Le fichier jail.local] adminfail2ban [2024/05/09 12:27] (Version actuelle) – [Le fichier jail.local] admin
Ligne 7: Ligne 7:
  
 C’est le rôle de l’outil Fail2ban : <wrap em>de l’échec (Fail) à (2) un bannissement (Ban)</wrap> C’est le rôle de l’outil Fail2ban : <wrap em>de l’échec (Fail) à (2) un bannissement (Ban)</wrap>
 +
 +===== Préparation =====
 +On doit d'abord installer **//fail2ban//** à partir des dépôts : 
 +<code lscript>apt install fail2ban</code>
 +
 +On doit aussi disposer de l'outil [[iptables|iptables]] qui gèrera les règles de bannissement : 
 +<code lscript>apt install iptables</code>
 +
 +
 +
  
 ===== Les principes ===== ===== Les principes =====
Ligne 48: Ligne 58:
 logpath  = /var/log/apache*/*error.log   ; fichier de journalisation dans lequel on cherche le comportement intrusif logpath  = /var/log/apache*/*error.log   ; fichier de journalisation dans lequel on cherche le comportement intrusif
 maxretry = 3 ; nombre d échecs avant banissement maxretry = 3 ; nombre d échecs avant banissement
-findtime 60 ; délai dans lequel le nombre d échec doit être détecté +findtime 60 ; délai dans lequel le nombre d échec doit être détecté 
-bantime 10m ; durée du bannissement (10 minutes)+bantime 10m ; durée du bannissement (10 minutes
 +banaction = iptables-allports  #bannit l'IP sur tous les ports (il existe d'autres options moins radicales)
 </code> </code>
  
-<WRAP center round tip 100%>+<WRAP center round important 100%>
 A ce stade, le blocage ne sera pas détecté car le filtre //apache-auth// ne saura pas reconnaître l'intrusion (le fonctionnement de l'application est normal, il n'y a pas d'enregistrement d'échec par défaut) A ce stade, le blocage ne sera pas détecté car le filtre //apache-auth// ne saura pas reconnaître l'intrusion (le fonctionnement de l'application est normal, il n'y a pas d'enregistrement d'échec par défaut)
 </WRAP> </WRAP>
Ligne 68: Ligne 79:
 <code lscript>fail2ban-client set apache unbanip <ip_poste>  </code> <code lscript>fail2ban-client set apache unbanip <ip_poste>  </code>
  
-**Cette manipulation montre le principe mais n'est pas automatisée** +<WRAP center round important 100%> 
 +Cette manipulation montre le principe mais n'est pas automatisée 
 +</WRAP> 
  
 ==== Enregistrement de trace dans le journal surveillé par le jail ==== ==== Enregistrement de trace dans le journal surveillé par le jail ====
Ligne 76: Ligne 90:
  
 Par exemple, dans la page //connecter.php// qui vérifie l’identité de connexion, en cas d’erreur, avant le renvoi vers l’index.php, on inscrit l’erreur dans le journal d’activité :  Par exemple, dans la page //connecter.php// qui vérifie l’identité de connexion, en cas d’erreur, avant le renvoi vers l’index.php, on inscrit l’erreur dans le journal d’activité : 
 +<WRAP right round tip 40%>
 +  * error_log enregistre dans le fichier /var/log/apache2/error.log.  
 +  * $_SERVER["REMOTE_ADDR"] fournit l'IP du poste ayant généré l'accès 
 +</WRAP>
 <code php> <code php>
 else { else {
Ligne 89: Ligne 107:
 echec de connexion : root:10.12.0.6, referer: http://172.20.12.102/dplace/  echec de connexion : root:10.12.0.6, referer: http://172.20.12.102/dplace/ 
 echec de connexion : user:10.12.0.6, referer: http://172.20.12.102/dplace/ </code> echec de connexion : user:10.12.0.6, referer: http://172.20.12.102/dplace/ </code>
 +
 +<WRAP center round important 100%>
 +Le **jail** est configuré, les erreurs journalisées, mais le **filtre** ne prend toujours pas en compte l'information
 +</WRAP>
 +
  
 ==== Prise en compte par le filtre ==== ==== Prise en compte par le filtre ====
Ligne 99: Ligne 122:
  
 Editez-le filtre  Editez-le filtre 
-<code lscript>ano /etc/fail2ban/filter.d/apache-auth.conf</code> +<code lscript>nano /etc/fail2ban/filter.d/apache-auth.conf</code> 
-Il faut ajouter <wrap em>l’expression régulière</wrap> qui dit que la ligne recherchée doit commencer (^) par le terme « echec ».+ 
 +Il faut ajouter <wrap em>l’expression régulière</wrap> qui dit que la ligne recherchée doit commencer (^) par le terme « echec » (ajout à la dernière ligne du filtre existant). 
 + 
 +<code lscript>failregex = ^client (?:denied by server configuration|used wrong authentication schem> 
 +            ^user (?!`)<F-USER>(?:\S*|.*?)</F-USER> (?:auth(?:oriz|entic)ation failur> 
 +            ^Authorization of user <F-USER>(?:\S*|.*?)</F-USER> to access .*? failed\b 
 +            ^%(auth_type)suser <F-USER>(?:\S*|.*?)</F-USER>: password mismatch\b 
 +            ^%(auth_type)suser `<F-USER>(?:[^']*|.*?)</F-USER>' in realm `.+' (auth(?> 
 +            ^%(auth_type)sinvalid nonce .* received - length is not\b 
 +            ^%(auth_type)srealm mismatch - got `(?:[^']*|.*?)' but expected\b 
 +            ^%(auth_type)sunknown algorithm `(?:[^']*|.*?)' received\b 
 +            ^invalid qop `(?:[^']*|.*?)' received\b 
 +            ^%(auth_type)sinvalid nonce .*? received - user attempted time travel\b 
 +            ^(?:No h|H)ostname \S+ provided via SNI(?:, but no hostname provided| and> 
 +            ^echec \b 
 +</code>
  
 ==== Journalisation du blocage ==== ==== Journalisation du blocage ====
 Le fichier **/var/log/fail2ban.log** conserve la trace des détections et blocages que l'outil a mis en place.  Le fichier **/var/log/fail2ban.log** conserve la trace des détections et blocages que l'outil a mis en place. 
 <code lscript>nano /var/log/fail2ban.log</code> <code lscript>nano /var/log/fail2ban.log</code>
 +
 +On y repère les horaires précis d'enregistrement de l'échec et l'action de banissement
 +
 +<code log>
 +2023-12-04 11:16:22,916 fail2ban.filter [2327]: INFO [apache] Found 10.12.0.6 - 2023-12-04 11:16:22
 +2023-12-04 11:16:24,832 fail2ban.filter [2327]: INFO [apache] Found 10.12.0.6 - 2023-12-04 11:16:24
 +2023-12-04 11:16:27,536 fail2ban.filter [2327]: INFO [apache] Found 10.12.0.6 - 2023-12-04 11:16:27
 +2023-12-04 11:16:27,725 fail2ban.actions [2327]: NOTICE [apache] Ban 10.12.0.6
 +</code>
  
  
  
fail2ban.1701688825.txt.gz · Dernière modification : 2023/12/04 11:20 de admin