Voici comment j’utilise fail2ban pour blacklister toutes les ip qui tentent d’aller sur des scripts php hors spip. Cela permet de bloquer l’exploitation d’une attaque même si une faille a été utilisée : des fichiers peuvent avoir été posés, ils restent inexploitable car toute tentative d’accès block automatiquement l’ip.
Pour l’installation et l’utilisation sur votre serveur linux, la documentation est ici :
https://doc.ubuntu-fr.org/fail2ban
Le principe clé de fail2ban est de vérifier qu’une certaine condition est déclenchée par une adresse IP (exemple : trop de tentatives d’accès à ftp), et de bloquer l’adresse IP concernée pendant un certain temps.
Ma « prison » est configurée comme cela :
fichier /etc/fail2ban/jail.d/site-spip.conf :
[site-spip]
enabled = true
filter = site-spip
logpath = /var/log/nginx/access.log
maxretry = 0
findtime = 120
bantime = 86400
action = iptables-allports[name=site-spip]
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 10.12.13.14
Le filtre utilisé est basé sur ce qu’il y a des les logs (donc la requête http) :
fichier /etc/fail2ban/filter.d/nginx-spip.conf :
[Definition]
failregex = ^<HOST> .* "(GET|POST) /(?!(ecrire/)?(index|spip|spip_loader|prive)\.php)[^ ]*\.php
ignoreregex =
Du coup, dès qu’un attaquant va essayer d’accéder à un fichier php hors spip, il est bloqué.
Il ne vous reste plus qu’à regarder avec délectation la prison se remplir sudo fail2ban-client get site-spip banned
Ce n’est pas la protection ultime, mais ça fait 99% du ménage ![]()