Filtrage des robots web avec Fail2Ban

Filtrage des robots web avec Fail2Ban

Ce filtrage se base sur le fait que les robots à la recherche de votre phpmyadmin ou votre webmail pour tenter d’exploiter des failles font leur recherche en utilisant l’adresse IP plutôt qu’un nom de domaine. Les utilisateurs normaux utilisent toujours le nom de domaine: facile de différencier les deux.

Le fichier host qui va récupérer tous les accès sans nom d’Host et les diriger vers /var/www/empty
on crée un virtual host sans nom de domaine /etc/apache2/sites-avaible/default (tous les autres devront en avoir un obligatoirement)

<VirtualHost *:80>

 DocumentRoot /var/www/empty/

 ServerAdmin xxxxxxxxx@yyyyyyyyyyy.com

 ErrorLog /var/log/apache2/default-error.log
 CustomLog /var/log/apache2/default-access.log combined

 <Files  /var/empty/robots.txt>
 Order Allow,Deny
 Allow from All
 </Files>

</VirtualHost>

Quelques robots d’indexation (dont ceux de google) tente aussi des accès via l’IP, ce genre de robots commence toujours par robot.txt, on leur dit simplement qu’il n’ont rien a faire ici.

dans /var/www/empty/robot.txt

User-agent: *
Disallow: /

Vous pouvez aussi créer in index.html si vous le désirez pour rediriger un utilisateur qui s’est perdu

/var/log/apache2/default-error.log va vite se remplir avec des evenements du genre:

[Sun May 30 13:59:55 2010] [error] [client 91.1.221.208] File does not exist: /var/empty/phpmyadmin
[Sun May 30 13:59:55 2010] [error] [client 91.1.221.208] File does not exist: /var/empty/phpMyAdmin
[Sun May 30 13:59:55 2010] [error] [client 91.1.221.208] File does not exist: /var/empty/php
[Mon May 31 15:42:13 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/roundcubemail
[Mon May 31 15:42:13 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/rc
[Mon May 31 15:42:14 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/webmail
[Mon May 31 15:42:14 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/roundcube
[Mon May 31 15:42:14 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/mail
[Mon May 31 15:42:14 2010] [error] [client 77.111.88.11] File does not exist: /var/empty/README

Ensuite le filtre pour fail2ban /etc/fail2ban/filter.d/apache-nodnsuse.conf:

failregex = [[]client []] File does not exist: /var/www/empty/.*
ignoreregex=

Et on ajoute ce filtre dans la configuration de fail2ban /etc/fail2ban/jail.conf:

[apache_nodnsuse]

enabled = true
port    = http,https
filter  = apache-nodnsuse
logpath = /var/log/apache2/default-error.log
maxretry = 1