Apache2 : système de blacklist

June 23, 2008

Après avoir installé mon serveur web (Apache) et un serveur d’applications J2EE (GlassFish) je me suis vite rendu compte, après une semaine d’exécution, que les logs du serveur prennaient de plus en plus de place.

En regardant rapidement les fichiers de logs on se rend très vite compte que le serveur se fait “spammer” des URL du type : phpmyadmin, admin, mysql, …

J’ai décidé de mettre en place un système de blacklistage instégré à Apache.

Configuration de Apache

Pour cela il faut installer le module mod_rewrite (inclus par défaut avec Apache2).

On ajoute donc les règles dans le fichier de configuration d’apache (/etc/apache2/sites-avaible/)

RewriteEngine On

RewriteMap hosts-deny txt:/etc/apache2/hosts.deny RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR] RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND RewriteRule ^/.* - [F]</pre>

Ainsi les adresses IP ou nom de domaine listés dans le fichier /etc/apache2/hosts.deny recevront le code réponse : 403 Forbidden.

On crée le fichier /etc/apache2/hosts.deny :

adresse_ip -
nom_de_domaine -

Penser à ajouter le tiret “-” à la fin de chaque entrée dans ce fichier.

Page d’erreur personnalisée

Si vous voulez rediriger les adresses blacklilstées vers une page personnalisée il faut modifier les règles dans le fichier de configuration de Apache :

Remplacez :
RewriteRule ^/.* - [F]

Par : RewriteRule ^/.* /blacklisted.html [L]</pre>

Créez alors le fichier blacklisted.html.

Source : http://httpd.apache.org/docs/2.0/misc/rewriteguide.html