Outils pour utilisateurs

Outils du site


linux:fail2ban-apache-antibot

Fail2ban et Apache - Bannir les scans d'url d'administration (antibot)

Information

Testé sur Debian 8

Si on analyse les logs apache, on remarque beaucoup de bots qui scannent les URL potientiellement associées à des outils d'administration.

Faire l'analyse des 404 dans vos logs apache avec un outil comme GoAccess permettra de voir la liste des URL que vous devriez bannir avec fail2ban.

Installer fail2ban

Commencer par installer le package fail2ban

apt install fail2ban

Configuration

Créer le fichier /etc/fail2ban/jail.local avec ce contenu :

[apache-antibot]
enabled = true
filter = apache-antibot
port = http,https
#Fichier ou dossier de logs à surveiller (prends en compte logrotate)
logpath = /home/www-data/logs/apache2/*.log*
# Nombre de match dans les logs avant de bannir
maxretry = 3
# Période max surveillée
findtime = 432000
# Ban de 10 jours
bantime  = 864000
#Décommenter pour envoyer un email en cas de ban
#mta = mail
#destemail = user@email.com
#Ban, mail avec whois et log
#action = %(action_mwl)s
#Ban
action = %(action_)s  

Adapter la ligne logpath à vos fichiers de logs.

Je recommande de passer bantime à 60 (secondes) pour vos tests. maxretry est le nombre de correspondances avant de déclencher le ban. findtime est la période à analyser dans les fichiers de log.

Créer le fichier /etc/fail2ban/filter.d/apache-antibot.conf avec ce contenu :

#Modifier 'badurls' selon votre besoin
[Definition]
badurls = stat|phpmyadmin|myadmin|mysql|phpadmin|sql|msd|mysqldumper|msd1.24.4|msd1.24.4stable|sqlite|sqlitemanager|webdb|soapCaller|manager|setup\.php|shell.\php|pma|status|jmx-console|HNAP1|wp-config\.txt|wp-config\.orig|wp-config\.php\.orig|wp-config\.old|wp-config\.php\.old|wp-config\.bak|wp-config\.php\.bak|wp-config\.php\.save|wp-config\.php_bak

failregex = ^(?i)<HOST> .* "(GET|POST|HEAD) .*(%(badurls)s).* HTTP.*" (403|404) .*$
            ^(?i)<HOST> .* "(GET|POST|HEAD) / HTTP.*" (403|404) .*$

ignoreregex =

Adapter la ligne badurls pour les chemins sur lesquels vous voulez provoquer un ban par iptables.

Activation de votre jail

Activation

fail2ban-client start apache-antibot

Vérification des jails actives

fail2ban-client status

Vous pouvez aussi ajouter une IP aux exceptions (utile pour vos tests)

fail2ban-client set apache-antibot addignoreip <IP>

Pour l'enlever :

fail2ban-client set apache-antibot delignoreip <IP>

Redémarrage de fail2ban au besoin :

service fail2ban restart

En cas de ban intempestif de votre IP, vous pouvez vous débannir :

fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE

Pour voir les ip en ban actuellement :

iptables -L

Rapport dans un fichier

Le script suivant permet de créer un fichier listant les IP bannies et le pays associé.

#!/bin/bash

fail2ban-client status apache-antibot | grep 'IP list' | sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' | grep ip | sed 's/ip//'| sort | uniq > /dev/shm/f2b.txt
fail2ban-client status apache-antibot | grep 'IP list' | sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' | grep ip | sed 's/ip//'| sort | uniq | xargs -n 1 geoiplookup { } | sed -e 's/GeoIP Country Edition: //g' > /dev/shm/f2bgeo.txt
paste /dev/shm/f2b.txt /dev/shm/f2bgeo.txt > /home/www-data/domain.info/f2b-bans.txt

Remarques

Attention si les fichiers de logs analysés sont affectés par logrotate. Ne pas ajouter compress et delay compress. fail2ban ne sais pas lire les fichier compressés par défaut.

Sources

linux/fail2ban-apache-antibot.txt · Dernière modification : 2020/07/24 22:03 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki