09 juin 2009
Bannir une/des ip via Apache
Par Christophe de saint leger le mardi, juin 9 2009, 09:52 - Serveur - Lien permanent
Le Ban ,
Nous allons voir dans cet article comment bloquer des adresses ip via apache .
Il faut savoir que l'on peu facilement contourner ce genre de blocage , en utilisant un proxy par exemple ou le réseau de ses voisins. Cette méthode n'est donc pas fiable pour les connaisseurs , mais pour le commun des mortel , cette méthode reste efficace .
J'explique donc comment faire , plus pour dire de connaître cette méthode qu'autre chose !
Et oui ça fait longtemps que je n'ai pas édité de billet par manque de temps .. alors .. il faut bien dire quelque chose .. 
Fichier de configuration
L'on commence par créer un fichier de configuration qui sera ensuite lié à la configuration principale d'apache ,
vim httpd-blacklist.conf
Le contenu sera donc celui-ci :
Voici le contenu de ce fichier :
#Blacklistage
RewriteEngine On
RewriteMap hosts-deny txt:/usr/local/conf/extra/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]
#Page d'erreur
#remplacer la dernière ligne par
#RewriteRule ^/.* /jenetaimepas.html [L]
Pour commencer , nous activons simplement le mod_rewrite , ( ce mode doit donc être activé ) , Ensuite , nous allons lire le fichier qui contiend tout les hotes qui sont black-listés , essayer de trouver une correspondance avec le client courant .
Si aucune correspondance n'est trouvée , alors on redirige vers la page demandée . Sinon , rien , le client aura droit à une belle page blanche .
Vous pouvez "customizer" la page d'avertissement , en remplaçant la dernière ligne
RewriteRule ^/.* - [F]
par :
RewriteRule ^/.* /jenetaimepas.html [L]
L'utilisateur bloqué se retrouvera donc sur la page jenetaimepas.html.
Fichier hosts.deny
Ici il s'agit du fichier contenant toutes les adresses ip ou domaines black-listés , ils sont renseignés sous la forme :
xxx.xxx.xxx.xxx - domaine.com - ... - ... -
Il est indispensable de mettre un espace puis "quelque chose" ici un tiret , pour que le fichier soit lu correctement via RewriteMap Plus d'infos à cette adresse
Liaison avec apache
Vous pouvez activer cette liste de blackliste de deux façons , soit pour la totalité des sites gérés par votre serveur , soit uniquement par un ou plusieurs vhost .
Selon votre souhait , vous aller placer la ligne suivante , soit dans le fichier de configuration général d'apache , soit dans la configuration du ou des vhosts.
Include <chemin vers votre fichier>/httpd-blacklist.conf
Conclusion
Vous voilà avec une blackliste effective ( utile .. ou pas ) , n'oubliez pas qu'une adresse ip , peut tres bien être l'adresse d'une entreprise , ou un cyber , si vous la bloquez , vous bloquez tous les utilisateurs au sein de cette entreprise ou de ce cyber .
D'où le peut d'intérêt de bloquer une ip .

Commentaires
Bonjour,
On obtiendrait pas le meme effet avec simplement un fichier .htaccess à la racine de son site web et la directive
deny from xxx.yyy.zzz
avec une ip par ligne ?
cdt.
Encore merci de votre intervention ,
Effectivement , celà revient à faire la même chose,
Je dirais que l'avantage de le faire comme je le présente , et d'avoir une et une seule liste partagée , cette liste pourrais être géré par une base sql pour plus de souplesse .. mais bon je reste sur mon opinion que ce n'est pas une méthode viable pour faire du bannissement durable .
cdt,
Ch.