Outils pour utilisateurs

Outils du site


8.a_securite_-_installation_et_configuration_de_fail2ban

fail2ban

Principalement destiné à protéger des attaques par bruteforce , fail2ban est un script qui surveille les logs du système à la recherche de tentatives répétées de connexion d'un ip. Si plusieurs tentatives infructueuses sont détectés, fail2ban bloque l'ip qui est l'origine de ces tentatives pendant un temps configurable.

La méthode bruteforce est ainsi fortement ralentie, et il est probable que les scripts à l'origine de la plupart de ces attaques abandonnent les attaques sur votre ip, car peu “rentable”.

Installation

Pour installer fail2ban, rendez-vous dans le modules “Système”, puis “Composants Logiciels” de Webmin. Dans la section “Installer un nouveau composant”, cocher la dernière ligne “Composant d'APT” puis entrez “fail2ban” dans le champ correspondant et cliquez sur “Installer”.

Configuration

La configuration de fail2ban se fait manuellement en éditant directement les fichiers de configuration se trouvant dans /etc/fail2ban.

Dans le gestionnaire de fichiers de Webmin, rendez vous donc dans ce répertoire et éditez le fichier “jail.conf”.

Dans la première partie de ce fichier, il faut définir certaines règles générales :

ignoreip = 127.0.0.1 192.168.0.0/24

  • Ce paramètre indique quelles ips ne pas bannir : 127.0.0.1 permet à l'ordinateur de ne pas se bannir lui même, cette règle est donc indispensable. La plage d'adresse 192.168.0.0/24 décrit le réseau local ( à adapter à votre configuration bien sûr). Vous pouvez ajouter une ou plusieurs ips publiques en les séparant par un espace.

bantime  = 600

  • Ce paramètre correspond à la durée d'un ban en secondes ( 10 minutes par défaut ).

findtime = 600

  • Ce paramètre correspond à la période durant laquelle une ip est surveillée. Si une même ip tente un certain nombre de connexions qui échouent en moins de 10 minutes, elle est considéré comme dangereuse.

maxretry = 3

  • Ce paramètre correspond à la valeur par défaut de nombre maximum de tentatives de

connexion avant d'être bannis.

destemail = ab@bambou.viens.la

  • Adresse à laquelle est envoyé une notification de ban.

La section qui nous intéresse maintenant se trouve en fin de fichier et contient les “jail”. Une jail contient plusieurs informations :

Nom de la prison [ssh]
Activée ? enabled = true
Port surveillé port = ssh
Fichier de filtre filter = sshd
Log à surveiller logpath = /var/log/auth.log
Nombre d'essais autorisés maxretry = 3

Pour activer une prison, il suffit de remplacer la valeur de “enabled” de “false” par “true”.

Voici les prisons qu'il est judicieux d'activer par défaut :

  • [ssh]
  • [pam-generic]
  • [apache]
  • [apache-noscript]
  • [apache-overflows]
  • [proftpd]
  • [postfix]
  • [sasl] (Cf correction de la règle plus bas )

Ajout d'une règle contre les attaques w00t

Dans le fichier “jail.conf”, ajouter la prison suivante ( en fin de fichier ) :

[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
action = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]
logpath = /var/log/apache2/access*.log
maxretry = 1

Dans le dossier /etc/fail2ban/filter.d, créer un fichier “apache-w00tw00t.conf” contenant :

[Definition]

failregex = ^<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*

ignoreregex =

Correction de la règle [sasl]

Par défaut, la règle pour la prison [sasl] ne fonctionne pas. Il faut pour cela faire une correction dans le fichier /etc/fail2ban/jail.conf.

Cherchez la prison sasl, et remplacez :

logpath  = /var/log/mail.log

par :

logpath  = /var/log/mail.warn

Puis, dans le fichier /etc/fail2ban/filter.d/sasl.conf, modifiez la ligne commençant par “failregex =” en supprimant la fin de la ligne après “authentification failed” :

failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed (: [A-Za-z0-9+/]*=0,2)?$

devient :

failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed

Lancement et vérification du statut de fail2ban

Pour lancer fail2ban :

sudo service fail2ban-client start

Pour vérifier le statut de fail2ban :

sudo service fail2ban-client status

doit retourner quelque chose du genre :

Status
|- Number of jail:      10
`- Jail list:           apache-w00tw00t, courierauth, pam-generic, postfix, apache-multiport, proftpd, couriersmtp, ssh, apache, sasl

Pour recharger la configuration de fail2ban après une modification :

sudo service fail2ban-client reload

Surveillance des bans

Pour surveiller les bans et le bon fonctionnement de fail2ban, vous pouvez jeter un oeil au log qui se trouve dans /var/log/fail2ban.log

Chapitre suivant

2013/11/05