Protéger votre blog d’un blast réalisé via des proxys anonymes
13 Nov 2012
écrit parL'un des blogs que j'héberge sur un serveur dédié été victime d'un blast bien sévère (ou mal paramétré?) hier soir...
Plusieurs tentatives de commentaires par seconde via la méthode POST, je vous laisse deviner la suite: un plantage du serveur Apache qui n'a pas tenu la charge, les requêtes en POST n'étant pas mises en cache par Varnish.
Voici comment j'ai pu bloquer l'attaque (pour que mon Apache ne soit pas cassé - cf photo).
Analyse des logs
J'ai tout d'abord dû rebooter le serveur électriquement puisque vu la charge CPU, la connexion SSH était inaccessible.
Ensuite via la commande #tail -100 /var/log/apache/access.log, j'ai pu constater de nombreux appels de la page /wp-comments.php d'un blog sur une des hôtes virtuelles.
L'adresse 'IP était différente à chaque fois mais comme je récupère l'en-tête %{X-Forwarded-For} dans mes logs de cette manière
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
j'ai pu me rendre compte que c'était toujours la même IP qui se cachait derrière chaque proxy!
En effet, quand vous passer par un proxy anonyme (et non un High Anonymous Proxy - Elite), votre adresse IP n'est pas complètement masquée puisqu'elle est transportée dans les en-têtes HTTP via HTTP_X_FORWARDED_FOR.
Il me suffisait donc de bloquer l'adresse IP initiale du spammeur dans la configuration d'Apache.
Blocage de l'IP dans Apache
J'ai ouvert mon fichier de configuration Apache (ou .htaccess si vous n'y avez pas accès) en ajoutant la directive suivante:
RewriteCond %{HTTP:X-FORWARDED-FOR} ^123.45.67.89$ RewriteRule .* - [F]
* 123.45.67.89 est à remplacer par l'IP qui vous attaque.
Dès qu'une requête contenant l'adresse IP spécifiée dans l'en-tête X-forwarded-For est faite, une erreur 403 est retournée.
Me voilà débarrassé du spammeur, le serveur Apache tourne à nouveau correctement, sans utiliser toutes les ressources CPU: serveur OK 🙂
J'espère que cela vous sera utile.
écrit dans Serveurs web - Apache Varnish par |