Table des matières

Fail2ban

Introduction

Fail2ban permet de bannir une ip lorsqu'elle effectue de nombreuses requêtes ratée sur un service (ssh, ftp, apache, …). Fail2ban crée des prisons par service avec différents paramètres (filtre de recherche, log, temps de bannissement, …) et lorsqu'il trouve X requêtes ratées dans le fichier de log, banni l'ip.

Installation

Debian & Co

# aptitude install fail2ban

Configuration

Le dossier qui contient les fichiers de configuration est:

/etc/fail2ban

Descriptif des fichiers/dossiers:

jail.conf: sûrement le fichier principal, il contient la définition de nos prisons.
fail2ban.conf: contient quelques paramètres pour Fail2ban (fichier de log, niveau de log, ...)
filter.d/ : Ensemble des filtres à utiliser dans jail.conf
action.d/ : Ensemble des scripts utiliser pour réaliser les différentes actions

Pour modifier un fichier de configuration, il est tout à fait possible de modifier directement ****.conf, mais il est mieux de créer ****.local dans le même dossier. Ainsi Fail2ban regarde d'abord ****.conf pour sa configuration puis regarde ****.local et applique les différences. Ça permet également de garder un fichier de config propre au cas ou.

SSH

Si ce n'est pas encore fait, on commence par dupliquer le fichier de config puis le modifier:

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local

Se rendre dans la partie [ssh]:

[ssh]   
enabled = true   
port  = ssh,sftp       
filter  = sshd
banaction = iptables-multiport[name=SSH,port=22,protocol=tcp]        
           mail[dest="[[your@mail.com|your@mail.com]]",name="ssh",sender="[[fail2ban@mail.com|fail2ban@mail.com]]"]
# Analyse les 600 dernières secondes (10minutes)
findtime = 600  
# bantime de 25h
bantime =  90000   
# Fichier de log analysé:            
logpath  = /var/log/auth.log
# Maximum d'essais ratés: 3
maxretry = 3

Avec cette configuration, un mail d'avertissement sera envoyé pour dire qu'une ip a été bloquée pour les 25 heures suite à 3 essais ratés dans les 10 dernières minutes. Un mail sera également envoyé à chaque arrêt/démarrage de la prison ssh. On peut aussi mettre un banissement de 60 secondes pour les tests^^ On applique les modifications:

# fail2ban-client reload

Vous devriez recevoir un mail pour vous indiquer que le service fail2ban a redémarré.

Pour voir l'état de la prison ssh:

# fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list:   /var/log/auth.log 
|  |- Currently failed: 0
|  `- Total failed:     0
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0

Logs Fail2ban

Le fichier de log de Fail2ban par défaut (cf fail2ban.conf) est:

/var/log/fail2ban.log

Il est possible de modifier son niveau de verbosité dans le fichier /etc/fail2ban/fail2ban.{conf,local}:

loglevel = 4


Si une IP insiste dans la durée ou sur plusieurs services, il est possible de le bannir plus longtemps d'une manière simple: créer une prison pour Fail2ban. Le fichier de log de Fail2ban sera analysé et des actions seront appliquées en conséquence: http://gardouilleland.free.fr/wordpress/?p=353

Utilisation

Débannir une adresse ip

Pour connaître la liste des adresses ip bannies:

# iptables -L
...
**Chain fail2ban-ssh** </font> (1 reference) 
target     prot opt source   destination 
**DROP   all  --** </font> **XX.YY.WWW.ZZZ** </font> **anywhere** </font> RETURN     all  --  anywhere   anywhere
...

Il y a trois méthodes pour débloquer une adresse ip :

iptables -D **nom_de_la_chaine** </font> **numéro_de_la_ligne** </font> iptables -D **fail2ban-ssh** </font> **1** </font> iptables -D INPUT -s **XX.YY.WWW.ZZZ** </font> -j DROP

Attention: L'ip ne sera pas rebannie si elle se trompe à nouveau X fois. Pour réactiver le bannissement automatique, il faut soit redémarrer la machine, soit redémarrer le service:

# fail2ban-client restart