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 [2025/01/16 08:45] – [Exemple de démarche pour du brute force sur SSH] serge.guerinetfail2ban [2025/01/16 09:09] (Version actuelle) – [Fail2Ban] serge.guerinet
Ligne 1: Ligne 1:
-====== Fail2Ban ======+====== Fail2Ban : bannir les intrus ======
  
 Un attaquant peut essayer en <wrap em>« brute force »</wrap> toutes les combinaisons possibles pour trouver le mot de passe d’un compte utilisateur sur un service. Pour le <wrap em>détecter</wrap>, il faut qu'une <wrap em>journalisation</wrap> permette d'identifier un échec de connexion.  Un attaquant peut essayer en <wrap em>« brute force »</wrap> toutes les combinaisons possibles pour trouver le mot de passe d’un compte utilisateur sur un service. Pour le <wrap em>détecter</wrap>, il faut qu'une <wrap em>journalisation</wrap> permette d'identifier un échec de connexion. 
  
-Le serveur Apache ou le code ne permettent pas de détecter cela. +Les services (Apache, SSH, FTP, etc) ou le code ne permettent pas de détecter cela. 
-Il faut rajouter un utilitaire qui permet de détecter les comportements anormaux dans les accès aux services d’une machine : connexion trop fréquentes et en échec, connexions démultipliées dans un temps court, etc. + 
 +Il faut rajouter un utilitaire qui permet de détecter les <wrap em>comportements anormaux</wrap> dans les accès aux services d’une machine :  
 +  * connexion trop fréquentes et en échec,  
 +  * connexions démultipliées dans un temps court,  
 +  * connexions initiées puis abandonnées, 
 +  * connexions envoyant des éléments mal formés 
 +  * etc. 
  
 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>
Ligne 45: Ligne 51:
   * **filter.d** : on y crée ou adapte les fichiers définissant ce qui est recherché dans les journaux pour identifier un type de comportement inadapté   * **filter.d** : on y crée ou adapte les fichiers définissant ce qui est recherché dans les journaux pour identifier un type de comportement inadapté
   * **action.d** : dossier qui décrit les comportements (blocages d'IP, ajout de règles de filtrage, journalisation, etc)   * **action.d** : dossier qui décrit les comportements (blocages d'IP, ajout de règles de filtrage, journalisation, etc)
 +
 +===== Les principales commandes =====
 +Gérer le service Fail2ban
 +<code lscript>systemctl {stop|start|restart|status} fail2ban</code>
 +
 +Connaître l'état d'un jail (sshd, apache, etc) : actif ou non, machines bannies, ...
 +<code lscript>fail2ban-client status <jail></code>
 +Exemple
 +<WRAP center round tip 90%>
 +<code lscript>root@B1-DB12-SecuWeb:~# fail2ban-client status sshd
 +Status for the jail: sshd
 +|- Filter
 +|  |- Currently failed: 0
 +|  |- Total failed:     6
 +|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
 +`- Actions
 +   |- Currently banned: 1
 +   |- Total banned:     2
 +   `- Banned IP list:   10.12.0.38
 + </code>
 +</WRAP>
 +
 +
 +Pour bloquer une IP pour un jail donné (sshd, apache, etc)
 +<code lscript>fail2ban-client set <jail> banip <ip_poste> </code>  
 +
 +Pour débloquer une IP bannie pour un jail donné (sshd, apache, etc)
 +<code lscript>fail2ban-client set <jail> unbanip <ip_poste>  </code>
 +
 +Voir les journaux d'activité
 +<code lscript>{nano|tail} /var/log/fail2ban.log</code>
 +
  
 ===== Exemple de démarche pour du brute force sur SSH ===== ===== Exemple de démarche pour du brute force sur SSH =====
Ligne 79: Ligne 117:
 Une tentative de connexion impossible générera des traces dans le journal, jusqu'au banissement de la machine concernée. Une tentative de connexion impossible générera des traces dans le journal, jusqu'au banissement de la machine concernée.
 <code lscript> <code lscript>
 +distant@machine.sio.bts$ tail /var/log/fail2ban.log
 2025-01-16 08:38:56,246 fail2ban.jail           [11935]: INFO    Jail 'sshd' started 2025-01-16 08:38:56,246 fail2ban.jail           [11935]: INFO    Jail 'sshd' started
 2025-01-16 08:38:56,247 fail2ban.jail           [11935]: INFO    Jail 'apache' started 2025-01-16 08:38:56,247 fail2ban.jail           [11935]: INFO    Jail 'apache' started
Ligne 85: Ligne 124:
 2025-01-16 08:41:16,044 fail2ban.filter         [11935]: INFO    [sshd] Found 10.12.0.38 - 2025-01-16 08:41:15 2025-01-16 08:41:16,044 fail2ban.filter         [11935]: INFO    [sshd] Found 10.12.0.38 - 2025-01-16 08:41:15
 2025-01-16 08:41:16,288 fail2ban.actions        [11935]: NOTICE  [sshd] Ban 10.12.0.38 2025-01-16 08:41:16,288 fail2ban.actions        [11935]: NOTICE  [sshd] Ban 10.12.0.38
 +</code>
 +
 +après le temps prévu du bannissement, la machien est débloquée et l'information est journalisée
 +<code lscript>2025-01-16 08:41:16,288 fail2ban.actions        [11935]: NOTICE  [sshd] Ban 10.12.0.38
 +2025-01-16 08:46:16,414 fail2ban.actions        [11935]: NOTICE  [sshd] Unban 10.12.0.38
 </code> </code>
  
fail2ban.1737017112.txt.gz · Dernière modification : de serge.guerinet