Fail2Ban
fail2ban permet d'analyser les logs en temps réel, d'y trouver des motifs selon des règles REGEX (perl) et d'effectuer des actions comme des appels iptables pour bannir des IPs.
- les fichiers de configurations se trouvent généralement dans
/etc/fail2ban
- le fichier de configuration de l'utilitaire est
fail2ban.conf
- le fichier de configuration générale des jails est
jail.conf
- les fichiers de configurations pour chaque filtres se trouvent dans le dossier
/etc/fail2ban/filter.d/
- les fichiers de configurations pour chaque actions se trouvent dans le dossier
/etc/fail2ban/action.d/
Créer des filtres
- Créer un fichier filtre dans
/etc/fail2ban/filter.d/
- Exemple de filtre :
[Definition] failregex = <HOST> - - \[.*?\] .*"POST (\/en\/cart|\/fr\/panier)
Ce filtre permettra à une règle de s'activer lorsqu'un motif de ce type se trouve dans le fichier de log cible :
79.182.76.109 - - [01/Sep/2017:17:05:42 +0200] "POST /en/cart HTTP/1.1" 403 189 "http://store.calexium.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21"
L'utilisation de <HOST> dans la REGEX d'exemple permet de récupérer l'IP/host, c'est cette "variable" qui permettra à l'action lié à la règle d'effectuer un traitement pour cette adresse.
Appliquer des règles fail2ban
- éditer le fichier
/etc/fail2ban/jail.conf
- ajouter une règle dans le fichier :
[nginx-ps16-bots] # nom de la règle
enabled = true # active ou non
filter = nginx-prestashop-bots # nom du filtre (nom donnée au fichier lors de l'étape précédente)
port = http,https # les ports concernés
logpath = /var/log/nginx/store_calexium_ssl_proxy.access_log # le fichier de log à analyser, accepte le wildcard (*)
findtime = 60 # le temps imparti, en relation avec le maxretry (en secondes)
bantime = 86400 # le temps de bannissement (en secondes)
maxretry = 30 # le nombre d'essais dans la limite "findtime" avant que la règle ne s'applique (en secondes)
action = route # l'action à effectuer, route permet de router l'hôte vers rien du tout, très rapide et compatible partout comme méthode, une liste d'action par défaut peut être trouvés dans le dossier /etc/fail2ban/action.d/
service fail2ban restart
Les REGEX Perl
Le site https://regex101.com/ peut être utile pour la création des filtres et pour débugger les regex, ce site permet entre autre de prévisualiser en temps réel l'action d'une REGEX sur des données.