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".{{
- reseau:edit.gif?nolink&|}}
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 = ^ -.*"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]+ $$$$ : SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed (: [A-Za-z0-9+/]*=0,2)?$
devient :
failregex = (?i): warning: [-._w]+ $$$$ : 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