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