Déni de service et spam de commentaires sur WordPress

Depuis samedi dernier, ce site est victime de spams de commentaires. Je ne sais d’ailleurs pas dire, hélas, s’il s’agit là d’une conséquence ou d’une cause de nombreuses tentatives en dénis de service. Il y a beaucoup d’outils pour y faire face. Pour isoler les noms de machines des différents assaillants, j’ai installé et utilisé iftop ! L’essentiel des « attaques » provienne de Chine et des pays de l’Est.

Plutôt que d’utiliser GeoIP au niveau d’Apache ou de Iptables pour isoler ces pays « belliqueux », je me suis appuyé sur les adresses Ip des spams de commentaires pour les bloquer au niveau de Iptables et de Apache. Je ne tiens pas à bloquer les spiders de Yandex et de Baidu ! Je me suis appuyé sur le site DB-IP pour savoir d’où provenaient ces requêtes. Même si je suis quelque peu sceptique quant à son utilisation, l’autre alternative est d’utiliser Fail2Ban. Je ne m’y suis pas encore risqué pour l’instant ! Je n’ai pas suffisamment de temps de cerveau disponible pour m’y consacrer totalement.

DB-IP

Collecter les adresses Ip des spams de commentaire

Équipés d’Askimet, les sites WordPress que j’édite sont réglés de façon à classer parmi les indésirables tout commentaire possédant plus d’un lien. La requête ci-dessous vous permettra de collecter les adresses Ip de ces spams de commentaires :

SELECT comment_author_IP
FROM wp_comments
WHERE comment_approved != 1

Iptables (pour le dédié)

Depuis samedi, j’ai ajouté les règles suivantes à mon fichier de configuration qui, sous CentOS, se situe dans /etc/sysconfig/iptables. Cette opération n’est possible que sur de l’hébergement dédié !

-A INPUT -p tcp -m tcp -m multiport -s 110.85.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 110.86.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 112.101.64.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 112.111.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 120.37.210.50 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 121.205.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 142.0.138.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 142.4.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 175.42.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 175.44.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 176.9.51.134 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 178.33.45.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 192.162.19.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 192.74.240.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 192.74.240.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 198.200.37.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 198.204.228.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 204.93.60.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 212.59.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 216.152.252.99 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 216.172.147.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 216.59.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 217.195.202.34 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 218.10.17.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 222.77.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 27.153.186.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 27.159.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 36.248.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 36.250.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 37.59.151.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 5.158.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 5.164.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 58.22.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 58.62.183.247 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 80.93.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 87.98.166.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 89.137.227.23 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 91.231.40.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 91.232.75.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 91.232.96.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 91.236.74.0/24 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 95.65.0.0/16 -i eth0 --dports 80,443 -j DROP
-A INPUT -p tcp -m tcp -m multiport -s 95.79.0.0/16 -i eth0 --dports 80,443 -j DROP

.htaccess pour le mutualisé

Ce que vous pouvez faire dans le cadre d’un hébergement mutualisé, c’est ajouter ces quelques lignes à votre fichier .htaccess :

Order allow,deny
Allow from all
Deny from .sistrix.net
Deny from .su .lt .ua .ro .ru .pl .cz .id .au .sg .jp .cn .pw .su .vg .il .xn--*
Deny from 110.86
Deny from 112.101.64
Deny from 112.111
Deny from 120.37.210.50
Deny from 121.205 142.0.138
Deny from 142.4
Deny from 175.42
Deny from 175.44
Deny from 176.9.51
Deny from 178.33.45
Deny from 192.162.19
Deny from 192.74
Deny from 198.200.37
Deny from 198.204.228
Deny from 204.93.60
Deny from 212.59
Deny from 216.59
Deny from 216.172.147
Deny from 216.152.252.99
Deny from 217.195.202.34
Deny from 218.10.17
Deny from 222.77
Deny from 27.153.186
Deny from 36.250.177
Deny from 37.59.151
Deny from 5.158
Deny from 5.164
Deny from 58.22
Deny from 80.93
Deny from 87.98.166
Deny from 89.137.227.23
Deny from 91.231.40
Deny from 91.232.96
Deny from 91.236.74
Deny from 91.236.75
Deny from 95.65
Deny from 95.79

Conclusion provisoire

Depuis samedi, les choses vont beaucoup mieux, même si j’ai régulièrement des lenteurs dues à des attaques venues d’autres serveurs. Cette liste est susceptible de connaître des évolutions dans les jours et les mois qui viennent.

Dsfc Dsfc

Déni de service et spam de commentaires sur WordPress
3 votes, 5.00 avg. rating (97% score)
Tags : , , , , , , , , , , , , ,
Commentaires

Tu connais le plugin Fail2ban pour WordPress?
Peut être qu’il est possible d’écrire un plugin similaire qui bloquerait les ordi qui veulent poster X commentaire à la minutes + ceux qui sont taggés spam par Askimet?

@Tuxicoman

Non, je ne le connais pas. Je vais m’intéresser à Fail2Ban très rapidement.

En même temps qui utilise WordPress encore ?

@Corbier

Selon Smile, WordPress était en 2012 l’un des trois CMS les plus utilisés. Je ne pense pas que les choses aient changé en 1 an.

@Denis c’était une blague ;-)

@Corbier

Je suis resté de marbre ! ;+)

Laisser un commentaire

(requis)

(requis)


*