Le Blog de C-quad

Sécuriser apache avec fail2ban

Si vous hébergez un site web avec apache, il y a de fortes chance qu’en regardant les logs vous tombiez sur ce type de chose.

[Sun Jan 09 09:27:54 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.5-rc1
[Sun Jan 09 09:27:54 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.6-rc1
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.6-rc2
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.6
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.7
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.5.7-pl1
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-alpha
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-alpha2
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-beta1
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-beta2
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-rc1
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-rc2
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0-rc3
[Sun Jan 09 09:27:55 2011] [error] [client 85.17.201.75] File does not exist: /var/www/html/wordpress/phpMyAdmin-2.6.0

Nous n’allons bien sur pas laisser ces tentatives d’intrusion impunies. Nous allons faire en sorte de bannir l’adresse ip de celui qui essaie d’accéder à des dossiers ou fichiers qui ne sont pas disponibles sur le serveur.

Pour cela nous utilisons fail2ban.

Configuration de fail2ban

Ajoutons dans le fichier /etc/fail2ban/jail.conf

# Apcahe 404
[apache-404]
enabled = true
filter  = apache-404
action   = iptables[name=HTTP, port=http, protocol=tcp]
           sendmail-whois[name=HTTP, dest=root, sender=fail2ban@mail.com]
logpath = /var/log/httpd*/error*.log
maxretry = 5

Les filtres

Il nouus reste à créer le filter apache-404. Nous l’ajoutons donc dans /etc/fail2ban/filter.d/

Voici le contenu du fichier apache-404.conf à créer :

# Fail2Ban configuration file
#
# Author: Cédric OLIVIER
#
#

[Definition]

# Option:  failregex
# Notes.:  regex to match the 404 failure messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values:  TEXT
#
failregex = [[]client <HOST>[]] (File does not exist|script not found or unable to stat): .*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Les actions

Dans le fichier /etc/fail2ban/jail.conf une action est définie quand le filtre est respecté. Dans notre cas, c’est :

  • iptables[name=HTTP, port=http, protocol=tcp]
  • sendmail-whois[name=HTTP, dest=root, sender=fail2ban@mail.com]

iptables est une action qui est définie dans /etc/fail2ban/action.d/iptables.conf, cette action a pour effet de bannir l’adresse ip de la personne qui a tenté l’intrusion

sendmail-whois est une action qui recherche les informations whois de l’attaquant et envoie un mail lorsqu’une ip est bannie, cela permet d’avoir une idée de l’efficacité de la règle.


2 réponses à to “Sécuriser apache avec fail2ban”

Laisser un commentaire