3 votes

Comment protéger mon site web Wordpress/Apache contre une attaque de botnet par force brute ?

Il y a quelque chose (un botnet ?) qui attaque apparemment mon site Wordpress. Je vois beaucoup d'entrées comme celle-ci dans les journaux d'accès Apache, plusieurs par seconde :

46.105.113.8 - - [14/Apr/2013:22:57:18 -0400] "POST /blog//wp-login.php HTTP/1.1" 200 4115 "-" "Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.15) Gecko/20091028 15 Ubuntu/9.04 (jaunty) Firefox/3.0.15"
74.207.229.103 - - [14/Apr/2013:22:57:19 -0400] "POST /wp-cron.php?doing_wp_cron=1365994639.0381069183349609375000 HTTP/1.0" 200 222 "-" "WordPress/3.5.1; http://mysite.com"

Je pense que quelque chose essaie de deviner les mots de passe par force brute.

Une idée que j'ai eue serait de bloquer toutes les requêtes vers wp-login.php, sauf pour l'adresse IP de mon domicile. Comment pourrais-je réaliser cela ?

Ou existe-t-il un plugin Wordpress qui bloque automatiquement ces attaques par force brute ?

Ou y a-t-il une meilleure idée ?

J'utilise Apache 2.2.22 sur Ubuntu 12.04.

3voto

Adam F Points 163

Merci nerveusement pour les indications.

Voici deux plugins Wordpress qui bloquent les adresses IP après un certain nombre de tentatives de connexion infructueuses :

Comme j'avais un tas de sites Wordpress et que je voulais arrêter les attaques rapidement, je ne voulais pas installer les plugins partout... Voici ce que j'ai fini par faire :

  1. Installé Apache mod_security en utilisant les instructions figurant dans Comment installer mod_security sur Ubuntu 12.04 - comme l'a dit nerveusement, mod_security est un module Apache qui aide à prévenir les attaques de ce genre, et fait beaucoup d'autres choses intéressantes en matière de sécurité. J'ai suivi les instructions de l'article ci-dessus pour installer le jeu de règles par défaut.

  2. J'ai trouvé l'adresse IP de mon réseau domestique en tapant "Quelle est mon adresse IP ?" dans Google.

  3. J'ai ajouté les règles suivantes dans mon fichier /etc/modsecurity/modsecurity.conf :

    # site configuration
    # allow all access from home
    SecRule REMOTE_ADDR "^1.2.3.4" phase:1,nolog,allow,ctl:ruleEngine=off
    # deny all access to wp-login to prevent wordpress botnet attacks
    SecRule REQUEST_URI "@rx (.*)wp-login.php(.*)" deny,nolog
  4. J'ai remplacé le 1.2.3.4 par l'adresse IP de mon domicile. (Vous pouvez avoir plusieurs lignes lignes comme celle-ci si vous accédez à votre site WordPress depuis plusieurs adresses IP, mais je n'en avais pas besoin).

  5. J'ai redémarré Apache : $ sudo /etc/init.d/apache2 restart Et voilà, l'attaque du botnet a été stoppée. J'ai vérifié mes journaux Apache pour voir qu'au lieu de codes de réussite (200), des codes d'erreur 403 étaient renvoyés pour les requêtes du botnet.

Le botnet a fini par abandonner et arrêter les tentatives de POST.

Je vais probablement revenir en arrière et installer l'un de ces deux plugins plus tard, quand j'aurai le temps.

1voto

nerve Points 176

À grande échelle (pour plusieurs sites), je recommanderais une règle Mod Security pour surveiller les POST sur wp-login.php, et bloquer après un certain nombre. À plus petite échelle, je recommanderais quelque chose comme :

http://wordpress.org/extend/plugins/better-wp-security/

Dans chaque cas que j'ai vu, le changement de l'URL de connexion (une fonctionnalité du plugin), atténue assez bien cela. Vous pouvez également gérer l'accès IP - bien que vous puissiez également le faire via .htaccess dans le répertoire wp-admin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X