Fail2ban

Fail2ban est un paquet capable de lire et d’analyser des fichiers de logs comme (/var/log/error.log, /var/log/mail.err ,/var/log/auth.log …)
Lors de l’analyse de ces logs, il est capable de bannir pour une durée à déterminer les adresses IP qui auront obtenues un nombre (à paramétrer) d’échecs lors de l’authentification à l’un des daemons installés sur votre serveur

fail2ban crée une nouvelle chaîne au démarrage du service (jail enabled).
Il ajoute une nouvelle règle à la chaîne INPUT qui envoie tout le trafic TCP dirigé vers un port spécifique (selon le jail) à la nouvelle chaîne.
Dans la nouvelle chaîne, une seule règle est insérée et renvoyée à la chaîne INPUT

Exemple:

Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-Apache-w00tw00t tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

Chain fail2ban-Apache-w00tw00t (1 references)
target prot opt source destination
RETURN all — 0.0.0.0/0 0.0.0.0/0

Fail2ban est capable de créer et de mettre à jour les règles du pare-feu (règles IPTables) de la forme suivante :

iptables -I INPUT 1 -s AdresseIpBannie -j DROP

Installer Fail2ban:
apt-get install fail2ban

Pour lancer Fail2ban:
fail2ban-client start

Pour Relancer fail2ban:
fail2ban-client reload

Pour arrêter Fail2ban:
fail2ban-client stop

Pour vérifier si les prisons (jail) sont correctement lancées
fail2ban-client status

Les prisons peuvent être contrôlées avec les mots clés start, stop, status:
fail2ban-client stop ssh

fail2ban-client start ssh

fail2ban-client status ssh

/etc/fail2ban/fail2ban.conf: configuration basique
/etc/fail2ban/jail.conf: configuration du système de monitoring t
/etc/fail2ban/action.d/ action pour bannir les ip
/etc/fail2ban/filter.d/ filters expression réguliére

bantime = 600 où bantime est le temps en secondes pour lequel une adresse IP est bannie
maxretry = 3 où maxrestry est le nombre d’échecs d’authentification
destemail = server@domain.tld où destemail est l’adresse email vers laquelle Fail2ban enverra ses rapports.
action = %(action_XXX)s où XXX est à remplacer par le paramètre mwl pour obtenir de plus amples informations dans les rapports envoyés par Fail2ban
banaction =iptables-multiport iptables firewall

activer un deamon fail2ban

Exemple:

Bloquer l’accès à la page xmlrpc.php (wordpress):

Dans le répertoire /etc/fail2ban/filter.d/

Ajoutez le fichier wordpress-xmlrpc.conf avec les instructions:
[INCLUDES]
before = common.conf

[Definition]
_daemon = wordpress
failregex = ^ .*(GET|POST) .*/xmlrpc.php
ignoreregex =

Modifiez le fichier /etc/fail2ban/jail.conf et ajoutez:

[WordPressXMLRPC]

enabled = true
filter = wordpress-xmlrpc
action = iptables[name=WordPressXMLRPC, port=http, protocol=tcp]
logpath = /var/log/apache2/access.*.log
bantime = 86400
maxretry = 3

Pour vérifier si l’expression régulière est correcte:
fail2ban-regex /var/log/apache2/access.domaine.tld.log /etc/fail2ban/filter.d/wordpress-xmlrpc.conf