Attention alerte des plus sérieuses : La quasi totalité des blogs WordPress de la planete fait l’objet en ce moment même d’une attaque distribuée par force brute, qui a pour objectif d’accéder à votre admin WordPress.
Je prépare un article plus complet, mais pour parer à l’urgence, voici des conseils rapides:
- vous êtes vulnérable si votre user admin wp s’appelle « admin »
- si vous avez un mot de passe faible ou contenant un mot du dictionnaire
- si votre wp-login.php n’est pas protégé
Les parades rapides dans l’urgence :
- changer le nom de votre user admin, utiliser un mot de passe fort (minuscules, majuscules, chiffres, caractères tordus, long)
- installer un plugin comme limit login attempts (gratuit) . Les réglages par défaut sont ok, vous pouvez cocher pour recevoir un mail lors de blocage.
- si vous savez faire, protégez vos pages wp-login.php par un .htaccess
Je fais le tour de mes sites critiques et je reviens vous en dire plus et donner d’autres conseils pratiques.
Plus de détails :
Le 11 Avril, en vérifiant les logs de mes sites (eh oui, ça m’arrive régulièrement, pas vous ?)
je vois passer des tonnes de tentatives POST sur http://xspin.it/ wp-login.php (plusieurs par seconde)
Je souris : sans doute un petit malin qui veut accéder gratos à l’outil ?
ni une ni deux, je blackliste l’IP fautive.
Et ça continue… d’autres tentatives, en masse… je creuse, je checke mes logs de sécurité : le post essaye de se logguer à l’admin WP, sous le user « admin » (le nom de user par défaut des blogs wordpress).
Le premier truc qu’on remarque, c’est que le serveur ralentit et patine. J’ai vu depuis plusieurs fois ce symptome sur ces derniers jours : des sites de clients pour qui le login n’est plus possible, ou temporairement le blog lui même plus visible.
Des plugins qui fonctionnent une fois sur deux… Quand vous avez 10 tentatives de connexion par seconde sur votre blog, forcément, ça lui prend du temps de tout traiter, même si c’est pour dire … « ah ben… non…., c’est pas le bon mot de passe. »
Dans les forums, des gens qui se plaignent de leur hébergeur, car le login n’est pas possible, leur ip est bloquée, le site est lent…
Si c’est depuis le 11, que ça a repris aujourd’hui, ne cherchez pas plus loin ….
Quasiment tous les hébergeurs sont concernés, si votre site est sous wp, vous êtes concerné.
Il s’agit d’une attaque distribuée (hostgator a par exemple identifié plus de 90000 adresses ip sources de l’attaque ! )
Les conseils de bon sens que j’ai donné plus haut (pas de user admin + mot de passe FORT) vont empêcher aux attaquants d’accéder à votre admin.
(Attention, je ne dis pas que c’est imparable dans tous les cas, juste que pour cette attaque précise par force brute, ça complique suffisamment le problème pour rendre l’accès des plus improbables)
Ca ne va pas résoudre le problème de charge de votre site, sa lenteur.
Une bonne solution est de restreindre l’accès au login de votre wordpress (la page /wp-login.php) via une authentification htaccess.
Quezaco ?
Pour vous loguer à votre admin, vous devrez entrer un user/pass avant même de voir la page de login.
Comment faire ?
- il vous faut un fichier avec user:pass. Allez ici, entrez user et mot de passe voulu, create htpasswd, vous allez avoir une ligne du type « toto:$apr1$1FkPcIZB$uvfFsaIQEOD16Vezp3B/O0″
- sauvez cette ligne dans un fichier .wpadmin par exemple à la racine de votre hébergement.
- éditez votre fichier .htaccess (à la racine de votre site, toujours) et ajoutez-y les lignes suivantes :
<FilesMatch "wp-login.php">
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /home/username/.wpadmin
require valid-user
</FilesMatch> - (remplacez /home/username/.wpadmin par le vrai chemin de votre fichier .wpadmin, demandez à votre hébergeur si vous ne le connaissez pas
L’accès à l’url wp-login.php sera désormais protégé, au niveau apache, par un mot de passe ce qui va grandement alléger la charge du serveur et éviter tout risque de hack.
Votre WP est accessible à de nombreux auteurs , utilisateurs ? plus compliqué !
Dans ce cas, assurez vous d’avoir un plugin comme limit login attempts, et/ou une sécurité supplémentaire lors du login pour ralentir les accès.
Discutez avec votre hébergeur pour qu’il mette en place des règles fail2ban ou similaires, pour filtrer au niveau réseau les attaques avant qu’elles n’arrivent au serveur web.
Des questions, d’autres bonnes idées pour sécuriser votre wp ? les commentaires sont là pour ça.
Merci de laisser les commentaires neuneus aux vestiaires, ça me gave…
Voir également:
- attaque wordpress
- supprimer d\un coup tous les commentaires d\un blog wordpress
- pb wp-login attaque
- fichier wp-login supprimé
- www blog-expert fr attaque-wordpress-login-1339
- brute force attaque ralentissent wordpress
- plugin protection attaques : wordpress
- attaque post /wp-login php
- wp-login php wordpress tentative
- connexion sous commentaires wordpress
Statistiques sur une vaste attaque (login) en force brute contre des sites WordPress http://t.co/Lr1PKqfp48 via
Un article plus détaillé en anglais sur le sujet :
http://arstechnica.com/security/2013/04/huge-attack-on-wordpress-sites-could-spawn-never-before-seen-super-botnet/
Wow c’est pas cool ca va falloir que je fasse le tour de mes blogs. Ceux qui ont des tools de gestion globale doivent etre content dans de tels cas !
Bonjour,
C’est vrai que j’ai pas mal de blogs en wordpress sur 4 serveurs différents et pas mal de soucis en ce moment.
Pour me protéger sans que ce soit la solution ultime, c’est un plugin « wordfence », il me signale les fichiers suspects, il bloque l’ip dés qu’un login est mauvais, et quelques autres protections comme le nombre de login autorisé, en payant la version pro j’ai même pu bloquer les pays en entier d’où venait les attaques.
Wordfence scanne aussi les plugins, les fichiers originaux de wordpress, les thèmes.
Cela dit, la meilleure sécurité c’est quand même le backup
Pour la protection du répertoire, c’est pas con, par contre ta manip risque de perturber le débutant qui se retrouverait bien vite avec un site qui n’est plus accessible en cas de mauvaise manip, je me demande si ce n’est pas plus facile de passer par le cpanel qui propose ce genre de protection plus facilement ?
Amicalement
Patrick
cPanel permet de mettre facilement une protection sur un répertoire, moins aisément sur un fichier comme ici.
La sécurité n’est, à l’évidence, pas une histoire de débutant. C’est toujours l’aspect humain qui sera la faille (user par défaut, login faible, pas de mises à jour…)
On entend souvent dire qu’il est facile d’installer un wp « en quelques clics », on oublie de dire que sans des bases en sécurité et un suivi constant, on installe un gruyère en « open bar ».
Seule l’éducation et la compréhension technique du système, donc en partie à quoi sert un fichier .htaccess et comment le modifier, permet d’avoir un peu plus de sécurité.
Les CMS « grand public » comme WordPress sont à ce titre un outil à double tranchant…
Bonjour Sylvain,
Tu as raison, il faut protéger le fichier wp-login.php et pas uniquement le répertoire wp-admin, d’ailleurs je viens d’aller sur mon cpanel et au moment de faire l’opération, il me dit que les extensions frontpage étant installées, la protection ne marchera pas, qu’à celà ne tienne, je me précipite sur le bouton de désactivation mais le message est clair, je vais perdre tous mes htaccess, bon, pas de précipitation, je vais utiliser la méthode manuelle sur un de mes sites peu importants pour ‘voir’
Patrick (qui a plus de 40 blogs à sécuriser)
Bon courage
Merci pour ces explications et conseils de sécurité, je vais mettre en place tout ça sur mes sites, changer quelques mots de passe et l’authentification htaccess pour les sites les plus importants.
merci pour ces informations. J’ai fait des modifications sur plusieurs sites mais j’ai encore beaucoup de boulot.
<troll>Si je comprends bien, pour lutter contre les pirates qui tentent de se connecter via l’utilisateur « admin », tu préconises de protéger l’accès au fichier « wp-login » via un utilisateur « toto » ? (Rassure-moi, son mot de passe n’est pas « toto », ou bien si ?) Vraiment ?</troll>
Sur la période du 1er au 15 avril 2013, je note 66.419 tentatives de connexion via « wp-login » sur l’ensemble de mes sites sous WordPress (environ 40). Toutefois, alors que 100 % de mes sites voient le code source de WordPress hébergé dans un sous-dossier « /wordpress », impliquant un « /wordpress/wp-login.php » dans l’URL de connexion, 75 % des tentatives se contentent de taper dans un fichier inexistant, « /wp-login.php ».
Cette solution me paraît plus plus facile à mettre en place et à maintenir. En effet, un éventuel client ne te réclamera pas son mot de passe d’accès… au login quand il aura perdu ses emails, par exemple. Bref, du support en moins.
Hello Martin,
Bravo, tu as deviné le mot de passe de l’exemple !
Sur le fond, toute problématique de sécurité est complexe et jamais générique ni imparable.
Dans le cas présent, le botnet est simpliste, ce qui n’est pas le cas de toutes les attaques, surtout si c’est ciblé.
Ensuite, le contexte et l’importance des données à protéger entre en jeu.
Il y a un compromis permanent entre facilité d’utilisation et sécurité.
Tu imposes un mot de passe compliqué, les utilisateurs l’écrivent sur un post-it ou l’enregistrent dans le navigateur…
On ne traite pas non plus de la même manière la sécurité d’un blog pour un client parmi d’autres, comme on protège un blog qui nous fait vivre, etc…
A chacun de prendre conscience des failles de tout système, et d’y consacrer ce qu’il estime suffisant par rapport à son niveau personnel d’aversion au risque.
Pour cette attaque précise, moultes précautions basiques (yc simplement des recos de base de wp, comme un mot de passe fort, sans plus) suffisent à ne pas se faire hacker.
Ca ne sera pas toujours le cas.
Hello, question d’une noob : comment on accède à son blog si on a des lignes d’erreurs qui s’affichent lors de la tentative de connection ?
exemple :
Warning: include_once(/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/alpinebot-primary.php) [function.include-once]: failed to open stream: No such file or directory in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 53
Warning: include_once() [function.include]: Failed opening ‘/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/alpinebot-primary.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 53
Warning: include_once(/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/alpinebot-display.php) [function.include-once]: failed to open stream: No such file or directory in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 54
Warning: include_once() [function.include]: Failed opening ‘/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/alpinebot-display.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 54
Warning: include_once(/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/plugin-widget.php) [function.include-once]: failed to open stream: No such file or directory in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 58
Warning: include_once() [function.include]: Failed opening ‘/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/plugin-widget.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 58
Warning: include_once(/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/plugin-shortcode.php) [function.include-once]: failed to open stream: No such file or directory in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 59
Warning: include_once() [function.include]: Failed opening ‘/homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/gears/plugin-shortcode.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /homez.666/unegeeke/www/wp-content/plugins/alpine-photo-tile-for-instagram/alpine-phototile-for-instagram.php on line 59
Fatal error: Class ‘Alpine_PhotoTile_for_Instagram’ not found in /homez.666/unegeeke/www/wp-includes/widgets.php on line 324
Eh bien.. « /plugins/alpine-photo-tile-for-instagram » c’est une erreur du plugin « alpine photo tile for instagram », qui soit n’est pas à jour, soit ne supporte pas votre version de php ou de wordpress.
En ftp, ou via un gestionnaire de fichier cpanel, supprimer ce répertoire www/wp-content/plugins/alpine-photo-tile-for-instagram et tout ce qu’il contient.
Cela va désactiver le plugin et l’erreur avec.
A vous de voir ensuite si vous tentez de le remettre
Bonsoir,
Merci pour ces quelques recommandations.
Je souhaite rebondir sur le conseil de Patrick d’installer le plugin Wordfence: c’est un bon début, mais il ne protège pas de tout, car le seul blog que j’ai équipé de cette extension a été victime d’une tentative de piratage il y a un peu plus d’un mois et mon hébergeur a été obligé de bloquer purement et simplement l’accès aux sites impactés. Il a fallu que je supprime tous les dossiers qui semblaient suspects avant que l’hébergeur ne me redonne accès à mes sites.
Je crois donc qu’il n’y a aucune solution miracle, mais que c’est toujours mieux que rien.
Heureusement, je n’ai perdu que du temps dans cette histoire.
Oui. Sécuriser son site ne se limite pas à installer un plugin, aussi bon soit-il.
Il est dangereux de dire « installe tel plugin et tu seras tranquille ».
Le seule protection est une bonne compréhension du système à protéger, une formation de ses utilisateurs, et une surveillance constante à plusieurs niveaux.
C’est totalement hors de portée du blogueur « moyen » qui n’a même pas la main sur son hébergement.
Merci pour cet avertissement. Pas trop d’inquiétudes de mon côté, mes logins WP sont assez solides
Sinon le plugin que tu recommandes me semble tout à fait adapté. Pour ce qui est du .htaccess, cela fonction bien aussi, mais attention aux manipulations !
Bonsoir,
Je ne sais pas si c’est cette attaque qui rend mon admin si lent, mais pour en revenir à la protection du log, j’ai 2 questions :*
1 / où placer les lignes suivantes exactement dans le htaccess ? Il y a déjà du code écrit par Wp et je ne sais pas utiliser ce genre de fichier.
:
AuthName « Authorized Only »
AuthType Basic
AuthUserFile /home/username/.wpadmin
require valid-user
2/Où trouver l’info chez l’hebergeur pour connaître l’adresse exacte ?
(remplacez /home/username/.wpadmin par le vrai chemin de votre fichier .wpadmin, demandez à votre hébergeur si vous ne le connaissez pas
Merci par avance et surtout merci de cette alerte !
Bonjour Véronique,
Si la manip htaccess est trop complexe, utilisez « simplement » le plugin conseillé. Avec un mot de passe fort ça limite énormément les risques.
Sinon, pour 1/, on ajoute les lignes tout au début ou tout à la fin (de préférence)
pour 2, si ce n’est pas clair, demandez à votre hébergeur.
Le système de défense de WordPress est puissant si on utilise le plug-in, mais une fois encore, il faut travailler un peu sur le choix de mot de passe. Cela fait pas mal de temps que j’entends le même problème sur twitter, les hackers sont-ils devenu plus puissant?
Et merci pour cette dernière réponse Sylvain, j’aurais moi aussi avoir besoin de celle-ci plus tard!
Ça fait peur tout ça, moi je m’y connais pas du tout en bidouillage et langage de programmation. J’ai été aidé par un ami pour suivre votre tuto mais j’avais compris globalement l’idée, sauf le paragraphe sur l’htaccess, un peu trop technique pour moi .
Merci pour ces explications et conseils de sécurité, je vais mettre en place tout ça sur mes sites, changer quelques mots de passe et l’authentification htaccess pour les sites les plus importants.