Fail2ban ou comment bloquer les requêtes phpmyAdmin w00tw00t et dos avec mod_evasive
Élément essentiel pour sécuriser son serveur, Fail2ban permet d’éviter des intrusions via force-brute. Il se charge d’analyser les logs des services installés et bannit automatiquement et pour une durée déterminée un hôte via iptables en cas d’échecs de connexion après X tentatives.
Installer Fail2ban:
sudo apt-get install fail2ban
Par défaut, Fail2ban propose déjà plusieurs filtres pré-configurés. On retrouve les filtres dans « /etc/fail2ban/filter.d/ ».
Le fichier de configuration où l’on peut spécifier pour chaque filtre le nombre d’essai avant le bannissement et le temps de bannissement, est: /etc/fail2ban/jail.conf
En plus des filtres existants, on peut ajouter des filtres pour se protéger des requêtes excessives sur phpmyadmin ainsi que bloquer les attaques w00tw00t (fruit d’un logiciel de scanning « DFind » utilisé par des kiddies) et DOS et autres, ici, nous verrons les 3 que je viens de citer.
1 – Fail2ban contre les attaques sur phpmyadmin
Créez un nouveau filtre dans « /etc/fail2ban/filter.d »
sudo nano /etc/fail2ban/filter.d/apache-phpmyadmin.conf
et copiez:
[Definition]
docroot = /var/www
badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2|administrator|d$
failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s)
ignoreregex =
Et enregistrez.
Dans le fichier /etc/fail2ban/jail.conf ajoutez à la fin:
[apache-phpmyadmin]
enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache*/*error.log
maxretry = 3
2 – Fail2ban et protection contre les requêtes w00tw00t
sudo nano /etc/fail2ban/filter.d/apache-w00tw00t.conf
Copiez:
[Definition]
failregex = ^<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*
ignoreregex =
Dans /etc/fail2ban/jail.conf copiez:
[apache-w00tw00t]
enabled = true
port = 80,443
action = %(action_mwl)s
filter = apache-w00tw00t
logpath = /var/log/apache*/*error.log
maxretry = 1
3 – Fail2ban contre les DOS avec mod_evasive (source Linux magazine, hors-série N°66)
Installation mod_evasive
sudo apt-get install libapache2-mod-evasive
Créer un répertoire pour stocker les informations liées aux attaques et préciser les propriétés du répertoire.
sudo mkdir /var/log/apache2/mod_evasive
sudo chown www-data.www-data /var/log/apache2/mod_evasive
Configurer apache
sudo nano /etc/apache2/conf.d/evasive
et collez:
DOSHashTableSize 3097
# pas plus de 5 pages toutes les 2 secondes
DOSPageCount 5
DOSPageInterval 2
# Pas plus de 100 requête par seconde (image, CSS…)
DOSSiteCount 100
DOSSiteInterval 1
# Bloquer le client pendant 10 secondes
DOSBlockingPeriod 10
# Dossier contenantles IP blacklistées
DOSLogDir "/var/log/apache2/mod_evasive"
Puis recharger la configuration
sudo service apache2 reload
Créez le filtre
sudo nano /etc/fail2ban/filter.d/apache-modevasive.conf
copiez:
[Definition]
failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s
ignoreregex =
Dans /etc/fail2ban/jail.conf copiez:
[apache-modevasive]
enabled = true
filter = apache-modevasive
action = iptables-allports[name=apache-modevasive]
logpath = /var/log/apache*/*error.log
bantime = 60
bantime = 3600
maxretry = 10
FIN.
Si vous avez d’autres suggestions ou améliorations, je suis preneur…