Renforcer la sécurité de WordPress

Voici quelques idées et conseils pour améliorer la sécurité de son blog sous WordPress.
Au moment où un script qui tente de craquer les codes de l’admin de WordPress se balade (voir cet article de Bojan Zdrnja) dans la nature et alors que pas mal de mes installations ont été victimes d’attaques ces derniers mois, je crois que cet effort de sécurisation n’est pas du luxe.
Cet article s’inspire de cet autre publié sur blogsecurity.
Avertissement : il se peut que ces méthodes altèrent le fonctionnement de certains plugins et thème. Faites vos tests…
Ce petit guide va vous permettre de vous protéger de bien des attaques et en particulier les attaques en force brute, le recensement de vos plugins, l’affichage de vos répertoires, le dévoilement d’information sensibles et les failles des inclusion de fichiers. Il existe aussi d’autres méthodes de renforcement de la sécurité. Ce guide n’est pas complet.
Note importante : faites un backup de votre base de données et de votre répertoire FTP avant de modifier quoi que ce soit.
Étape 1 : limiter l’accès à wp-content et wp-includes
En utilisant les directives <files> de htaccess nous pouvons restreindre l’accès au fichiers autres que les images, les CSS et le Javascript. Ajoutez les lignes suivantes à votre fichier .htaccess :
Order Allow,Deny Deny from all <Files ~ "\.(css|jpe?g|png|gif|js)$"> Allow from all </Files>
Si vous voulez autoriser certains plugins (Democracy dans l’exemple ci dessous) vous pouvez ajouter ce type de lignes au fichier .htaccess à mettre dans le répertoire wp-content :
<Files "democracy.php"> Allow from all </Files>
Mettez cela dans un fichier .htaccess que vous devrez créer dans vos répertoire wp-content et wp-includes.
Etape 2 : Restreindre l’accès à wp-admin
Maintenant, pour restreindre l’accès au répertoire wp-admin, vous avez 2 possibilités. Soit une protection par IP (nécessite que vous soyez toujours derrière cette IP fixe) soit une protection par mot de passe
Protection par IP :
order deny,allow allow from a.b.c.d # Ceci est votre IP statique deny from all
Le code ci dessus empêche tous les navigateurs d’accéder à n’importe quel fichier dans ces répertoires sauf s’il a l’IP « a.b.c.d » que vous devrez changer avec votre propre adresse IP.
Protéger avec un mot de passe :
Je ne vais pas en parler ici, pour protéger l’accès avec un mot de passe , vous pouvez faire une recherche dans Google du genre ‘WordPress htpasswd » ou consulter ce livre blanc pour sécuriser WordPress (en Anglais).
Tags : securite

Intéressant. Mais pourquoi pas chmoder directement? C’est moins sûr?
Parce que si tu Chmode les répertoires comme wp-upload, t’es foutu pour l’envoie d’images sur ton blog.
Idem pour le « allow from ip fixe, deny from all ». Ceci nécessite d’avoir une ip fixe, et dans le cadre d’un blog multi contributeur, ça devient vite très compliqué.
Mais j’ai entendu parler il y a peu d’un plug in qui limite le nombre de tentative de log par ip et par heure. Tout est configurable dans le panneau d’admin et les ip qui se plantent de mot de passe sont enregistrées dans la bdd.
J’avais découvert ça sur Websourcing : http://blog.websourcing.fr/wordpress-login-lockdown-protegez-votre-blog-des-hackers
En effet, c’est Login Lockdown: http://www.bad-neighborhood.com/
Ca c’est cool, il me le faut! Merci beaucoup pour l’info!
Salut,
Sur le sujet: peut on sécuriser la page de connexion wp, en mode SSL?
histoire de ne pas se faire hacké son pass
merci
(merci de m’envoyer un mail si réponse et si le blog ne le fait pas automatiquement)
Je suis toute nouvelle utilisatrice de wordpress depuis quelques mois, et j’ai été victime d’un hack. Et avant de tout remettre je me renseigne sur la manière de rendre celui-ci un peu plus sur à l’avenir. Tombée sur votre blog, j’aimerai plus de détail par mail sur la partie protéger par mot de passe.
Merci d’avance
Bonnes fêtes
Bonjour,
Tout d’abord merci beaucoup pour cette mine d’infos qu’est ce site
je ne m’en serai pas sorti sans! Je suis entrain de travailler sur un projet de webzine, et compte me mettre sous wordpress, cependant certaines choses m’échappes quand à la sécurité. J’ai installé certains plugin que vous recommandez. Et les ai insérés dans la liste que j’ai créé dans .htaccess cependant après avoir créé ce fichier, mon blog apparait tout blanc comme si aucun css n’existait. Je l’ai supprimé et tout est revenu à la normale. Premier petit problème. Le second c’est une question, pour la protection du fichier wp-admin.php par adresse ip le texte que vous donnez il faut également l’insérer dans le fichier .htaccess? Ne faut-il pas indiquer que cette action se limite au fichier wp-admin.php? Et si cela est possible, pourquoi ne pas ajouter à ce fichier, chaque IP pour chacuns des admin? Ou est-ce que les simples inscrits passent également par ce fichier?
Cordialement.
Y
salut
merci de votre conseil
je voudrai savoir le code exact pour faire just mon IP qui rejoint
à l’adminstraeur comme dans cet exemple
order deny,allow
allow from a.b.c.d # Ceci est votre IP statique
deny from all
merci d’avance
Ce qui est pas mal également, c’est de bien régler son fichier robots.txt histoire que ce soit pas la pagaille en bloquant l’accès aux répertoires inutiles au référencement.
Certains bots ne sont pas tous de « gentils moteurs de recherche »
Salut,
Je voudrais juste apporter une petite précision. Quitte à être dans la sécu, les lignes suivantes ont une importance. Écrire :
order deny,allow
allow from a.b.c.d # Ceci est votre IP statique
deny from all
N’est pas faut, et fonctionne bien
Mais comme ceci :
order allow,deny
allow from a.b.c.d # Ceci est votre IP statique
deny from all
C’est mieux. Apache teste les conditions dans l’ordre, et prend sa décision finale en fonction du denier test. Donc dans le premier cas, si il n’arrive pas à une correspondance il autorise quand même le passage (puisque non explicitement interdit par deny). Tant dit que dans le second cas, si il n’arrive pas à faire une correspondance il rejette la requête (deny en dernier test). Et a mon avis c’est plus sécure de refuser en cas de doute