Protéger votre WordPress du grand méchant loup
28.11.2008 | 55 Commentaires | 19 208 lectures |
Ils existent un certain nombre de logiciels que j’appelle ici « logiciels de blogging ». Ces logiciels permettent de rédiger et de publier vos articles « depuis l’extérieur » : comprendre « sans passer par l’administration de votre blog ». Wikipedia a l’air de les appeler « desktop blog-publishing application ». Finalement peu importe l’appellation, ces logiciels permettent surtout de pouvoir rédiger ses articles sans forcément être connecté à internet, la publication s’effectuera quand bon vous semble, en fonction de la disponibilité d’un accès internet. Ils proposent tous une meilleure accessibilité (disons ergonomie ou convivialité, comme il vous plaira) et les plus connus sont probablement : Windows Live Writer, BlogJet, MarsEdit, Zoundry et ecto.
Quoiqu’il en soit, si comme moi, vous rédigez vos billets depuis l’interface d’administration de WordPress, vous n’avez donc pas besoin que ces logiciels puissent se connecter à votre blog et nous allons donc « fermer les accès ». Cela dans le seul but d’accroître encore davantage la sécurité en limitant au maximum le nombre d’intrusions possibles. Il suffit d’ouvrir le fichier functions.php de votre thème, et d’ajouter les lignes suivantes…
1 2 | remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); |
La première ligne permet de couper l’accès à tous les logiciels de ce type et la seconde ligne concerne plus spécifiquement le logiciel « Windows Live Writer ». C’est un peu comme avec les arguments conditionnels pour IE, décidément Microsoft fait toujours figure d’exception quelque soit le domaine !
Ces deux fonctions ont été introduites lors de la révision 6195 de WordPress mais je n’ai pourtant trouvé aucune information à leur sujet dans le Codex. Bien que je ne sois pas spécialiste en la matière et que nous nous écartons (une fois n’est pas coutume) du cadre de l’article, voici quelques sites qui comparent les différents « logiciels de blogging »…
- WordPress Desktop Blogging: 5 Tools Reviewed par James Thomas,
- Top 10 Free Desktop Blog Editors for Windows par Palin Ningthoujam,
- 15 Desktop Blogging Tools Reviewed par Smashing,
- Desktop blog editor comparison par Joe Anderson,
- Desktop Blogging Clients, The Ultimate List par hongkiat.














Encore un bon gros pavé pleins d’astuces signé NightAngel pour WP, bien joué
al.
De toute façon c’est encore un bon billet, et très instrutif, pour ceux qui utilise WP ou qui désire l’utiliser. pour les autres je ne sais pas. Perso, j’ai mon fournisseur qui s’occupe de tout d’une main de maître. J’ai toute confiance donc aucun soucis ^^
Ah … WP c’est bien quand même
L’avant dernier est le seul que je peut faire de suite :twisted:
L’image est très sympa !!
Conservé l’effet pupille > très très bien réussis!
Très bon billet qui me sera sûrement utile.
Je suis content de voir que ce billet intéresse quelques personnes
Néanmoins je reconnais avoir un peu baclé certains passages comme la sécurisation de l’identification par .htaccess et .htpasswd mais je n’étais pas sûr que ce billet intéresserait beaucoup de monde alors je ne voulais pas broder pour rien
Si l’article plaît alors je procéderai à une actualisation de ce dernier lors de la sortie de WordPress 2.7 (certaines choses vont un peu changer) et j’en profiterai pour aborder une manière de lutter contre le hotlinking. Une version .pdf est également envisageable/envisagée. Merci pour vos commentaires en tous cas et je suis à votre disposition si vous rencontrez quelque problème que ce soit avec votre installation WordPress 
Oups j’ai un peu de retard =).
Je suis en pleine révisions pour mes exams, je lirais attentivement ton article dès que possible.
Merci beaucoup pour ton aide !
Salut,
Avec wordpress 2.7, il y a une quatrième clé qui s’est rajoutée mais mon problème principal, c’est que je ne trouve pas de fichier wp-config. Faut dire que je n’y connais pas grand chose.
As-tu une idée de ce que je dois faire?(a part me bourrer la gueule).
@Sky : Bonne lecture ;)
@Vilay : Le fichier wp-config.php est à la racine de ton blog. Je pense que tu cherches ce fichier afin d’y ajouter la quatrième clé de cryptage qui a été introduite dans la version 2.7 de WordPress
J’ajouterai quelques techniques malines : http://blogmotion.fr/internet/[...]onfig-3847 ;)
La méthode la plus simple et propre reste de le faire via l’admin, méthode 3 donc.
Pour la version WordPress 2.8 c’est par ici : http://blogmotion.fr/internet/[...]press-3811
@Mr Xhark : Merci pour le lien, pas mal la technique de masquer la présence de wp-config.php en plus d’interdire son accès. Je l’avais testé et je n’étais pas arrivé à la mettre en oeuvre sur ce blog. Bon je n’y avais pas passé énormément de temps ou alors un problème dans la configuration de mon serveur Apache : I don’t know! A titre indicatif, « interdire totalement l’accès (erreur 403) » est traité en page 11 (protéger le fichier wp-config.php) et « masquez le contenu de vos répertoires » est traité en page 9 (empêcher le listage des répertoires). Quoiqu’il en soit c’est une excellente initiative de réunir le maximum de documentation autour de ce sujet : Merci!
Merci pour l’info
Où puis-je trouver ce pack d’émoticons très sympa?
@Fab1 : Voici le lien qui te permettra de télécharger mon pack de smilies/émoticônes. Merci pour ton commentaire en tous cas
Merci beaucoup! C’est super sympa ;)
@ p’luche…
Bonjour,
Bon billet… Intéressant avec des conseils fort utiles ! mais je n’ai pas vu la réponse à la question que je me pose… ;-(
Avec WordPress j’ai créé des pages organisées hiérarchiquement (niveau 1, 2, etc.)… les niveaux 1 correspondent à mes menus principaux et je voudrais justement restreindre l’accès au contenu du menu Espace Client… Dans le .htaccess j’ai renseigné où se trouvait mon .htpassword
AuthUserFile /home/user/html/espaceclient/.htpasswd
Mais comment renseigner le répertoire concerné qui correspond à cette URL : http://www.mondomaine.com/espa[...]ce-client/ ?
car bien sûr tant que ce n’est pas renseigné cela ne peut pas marcher ;-)
Merci pour vos lumières !
@Sandrine : Merci pour le commentaire et on va peut être se tutoyer
Si j’ai bien compris, « espace-client » est une page de niveau hiérarchique 1 qui englobe plusieurs sous-pages de niveaux hiérarchiques inférieurs ?
Si tel est le cas alors /espace-client/ est un lien symbolique (permalien) et non un répertoire réel (présent sur le FTP). Il n’est de ce fait pas possible d’utiliser dans ce cas les méthodes des .htaccess et .htpasswd. En fait tu veux mettre un mot de passe sur ta page « espace-client » ? Mais la page « espace-client » ainsi que ses sous-pages ne sont-elles pas listées dans ta « sidebar » ? Tu comptais donc mettre un mot de passe sur la page « espace-client » ainsi que sur toutes les pages d’un niveau hiérarchique inférieur ? 
On est bien d’accord
/espace-client/ n’est pas un répertoire physique présent d’où le problème ;-)
Espace Client est listé dans les menus avec les sous-pages. Voir : http://www.webperformancetools[...].com/
« Tu comptais donc mettre un mot de passe sur la page « espace-client » ainsi que sur toutes les pages d’un niveau hiérarchique inférieur ? » -> Eh oui ! Tu as tout compris.
@Sandrine : OK je cerne un peu mieux le « problème » désormais
Es-tu obligée de passer par cette étape « d’identification par mot de passe » pour afficher l’espace client ? Il n’est pas envisageable par exemple de rentrer l’ensemble des clients dans la base de données ? A partir de cet instant, quand un client sera connecté à son compte sur le blog, le menu « espace client » s’affichera… En fait je veux savoir s’il est possible d’utiliser ou non le système de permissions intégré à WordPress ou si un mot de passe global (ou spécifique à chaque page) est obligatoire ?
Ce que je n’ai pas compris, c’est pourquoi lors de l’édition de la page, tu ne vas pas en haut à droite dans la boîte « Publier » et que tu ne choisis pas « Visibilité : Protégé par mot de passe » ?
1 – Je voulais utiliser .htaccess/.htpassword car il paraît que la sécurité WordPress est moyenne… voire bof…
2 – Je veux en fait créer un login/mot de passe global pour CHAQUE client (tout le monde ne peut pas être client) valable pour la rubrique Espace Client (donc les pages sous-jacentes)… et créer un login/mot de passe générique pour les évaluateurs.
3 – « Visibilité : Protégé par un mot de passe »… je n’ai pas affiné de ce côté mais j’ai l’impression que cela ne répond pas à mon besoin…
En tout cas merci pour ton aide… car j’en suis à mes « débuts » avec WordPress et je me pose pas mal de question… et dans la communauté (forum) je ne trouve pas forcément les réponses à mes questions… c’est vrai que dans mon cas j’utilise WordPress dans un contexte au-delà du blog
@Sandrine : Le plugin Global Post Password te permet de mettre un mot de passe global sur tes pages, ça évite d’éditer toutes les pages les unes après les autres. Regarde aussi du côté du plugin Show User Level Content pourrait être une alternative « simple ».
Sinon tu mets toutes tes pages relatives à l’espace client, en « Visibilité:privé » et ainsi, seuls les utilisateurs qui disposent d’un compte sur le blog (et qui sont connectés) pourront consulter ces « pages privées ». Pour afficher la liste de tes pages privées uniquement aux utilisateurs enregistrés et connectés, tu utilises ce bout de code dans le fichier de thème approprié (disons header.php par exemple) :
Merci 1.000 fois !
Je regarde et je te tiens informé des résultats.
Bonjour,
Le bout de code contient plusieurs erreurs de syntaxe que je n’arrive pas à corriger… ;-(
Merci
@Sandrine : Oups, j’ai un peu foiré le code au niveau de la ligne 6. Voici le code rectifié :
Le 10 représente l’identifiant (ID) de la page ou du billet qui doit être s’afficher lorsque le visiteur va cliquer sur « For Authors Only ». Cela ne s’affichera qu’aux utilisateurs enregistrés et connectés, cette condition est posée à la ligne 4. Tu trouveras plus d’informations sur la fonction get_permalink() sur cette page.
PS : Mon bout de code était bon mais c’est WordPress qui avait foutu le bordel avec son formatage à la noix
cette ligne présente tjs des erreurs
? inattendu
@Sandrine : Tu as mis le bout de code dans quel fichier ? Je l’ai testé dans sidebar.php et je n’ai pas eu de problème… Peux-tu me filer tout ton code par mail : webmaster@nightangel.fr
Tankiou!
je l’ai mis dans header
mais attends je vais tester dans sidebar
@Sandrine : Il n’y a pas de raison que le bout de code ne fonctionne pas dans header.php et pour être sûr je viens de tester. Je pensais plutôt à un problème d’intégration du bout de code… Le code ne t’affiche strictement rien ?
Ca a l’air OK. Je t’envoie un email, plus simple, et merci…
Bonjour,
Merci pour ce billet fort instructif. Concernant la sécurité du blog (2.8.4).
Ou doit-on installer le plugin?
Merci Paul – NightAngel pour ton aide.
Eureka !!! Voir : http://www.kapitec.com/blog/?p[...]=129 pour la solution qui peut certainement intéresser d’autres personnes ;-)
Excellent dossier ! Je connaissais une partie de ces astuces, mais j’avoue qu’il en reste quelques unes à mettre en place pour avoir un WP en béton armé.
Par rapport à l’idée de renommer wp-admin pour changer l’adresse par défaut de l’interface d’admin, tu as des retours sur tes « expérimentations » dans le domaine ?
@Bruno M : Il n’y a pas un plugin en particulier. Ce billet renferme un ensemble de solutions (dont des plugins) pour accroître la sécurité de WordPress. Merci pour ton commentaire
@Sandrine : Mais de rien, content d’avoir pu te rendre service et merci pour ton lien ;)
@Vince : J’ai pas mal avancé quant au déplacement du répertoire wp-admin cependant je ne suis pas convaincu par les modifications apportées bien qu’elles soient fonctionnelles. Pour l’heure le résultat le plus probant provient de la méthode décrite ici (en anglais). Le principal problème, et pas des moindres, étant que le répertoire wp-admin contient une partie de ce que l’on pourrait appeler le « core » de WordPress. Partant de là, toutes les modifications envisagées pour « déplacer » wp-admin, pourraient poser des problèmes à l’avenir. Je pense notamment lors de profondes mises à jour. Merci pour le com
Article vraiment très intéressant. Avec toutes ces astuces, je sais comment m’occuper ce soir
Bonjour, déja merci pour ce super récapitulatif des méthodes permettant de protéger WordPress. Très instructif et très formateur.
Pour ce qui est du wp-admin, personnellement j’ai juste renommé le dossier (en « modifier » par exemple, « login » et « admin » étant trop facile à trouver) et j’ai éditer tous les fichiers de WordPress pour remplacer « wp-admin » par « modifier » (avec Dream’ 2 minutes montre en main), ainsi que dans la base de donnée via phpmyadmin. Comme ça le pirate mettra 1 poil plus de temps à trouver la page de connexion au PA.
voilà, j’espère que aidera quelqu’un
@Jack NUMBER : Je ne doute pas le moins du monde de la méthode que tu utilises, cependant je ne pense pas qu’elle puisse être appliquée par le plus grand nombre. Il n’y a rien de compliqué dans ta démarche mais cela risque de poser d’importants problèmes lors de futures mises à jours. Personnellement je ne préfère pas la conseiller au plus grand nombre, mais peut être à des personnes qui font des modifications en « connaissance de cause »
Modifier des fichiers en dehors du répertoire wp-content n’est jamais très bon à terme
Merci pour ton commentaire 
je suis tout à fait d’accord avec toi sur les mise à jour et les problèmes possibles (plug-in, requêtes…).
c’est en effet une méthode assez « radicale » qui demande certaines précautions d’usage, surtout pour l’évolution du blog.
à quand un plug-in « Total Security » ?
Suite à ce changement de préfixe j’ai eu une erreur de connection.
« Vous n’avez pas les droits suffisants pour accéder à cette page »
Si cela arrive à quelqu’un j’ai trouvé la solution ici
http://beconfused.com/2007/08/[...]wordpress/
J’ai appliqué la méthode donnée et tout est rentré en ordre
Bonjour,
Merci pour ces conseils mais j’ai un problème…
J’ai ajouté ce code dans le fichier function.php
et depuis j’ai cette erreur :
Warning: Cannot modify header information – headers already sent by (output started at /homez.307/motocros/www/wp-content/themes/mxa/functions.php:13) in /homez.307/motocros/www/wp-includes/pluggable.php on line 865
Impossible d’accéder à l’interface d’administration…
Merci de votre aide
Merci!
Merci pour les liens! Je suis en train de réfléchir pour refondre mon site et mon blog sous wordpress… et là, ça va commencer à me faire peur. Je vais peut-être attendre un peu…
Bonjour,
Je me joins aux commentaires précédants pour remercier NightAngel de la foultitude de conseils que meme des nazouilles comme moi pouvons appliquer…
J’ai une question par rapport au passage en https:// sur la page de connexion.
J’ai suivi pas a pas les indications de la p.3: j’ai copié le code donné et l’ai collé dans un .txt que j’ai mis dans le répertoire wp-content/plugins.
Ma premiere observation est que le plugin n’apparait pas dans la liste des plugins paramétrables via l’interface administrateur de WP.
Ma deuxieme question me dérange plus: suite à cette manip, mon site entier est passé en https, ce qui fait que la visite du site nécessite d’accepter un certificat de sécurité temporaire patati patata… ce qui n’est pas du plus accessible, en terme de facilité d’acces pour les visiteurs…
Est il possible de modifier quelquechose quelque part?
J’ai commencé par simplement effacer le .txt du répertoire plugin, ce qui n’a rien changé du tout…
Merci pour tout!
@léo : Désolé pour ma réponse tardive mais tu as du laisser des lignes vides dans ton fichier functions.php, d’où cette erreur. Généralement il s’agit d’une ligne vide au début et/ou à la fin du fichier je pense. Tu peux m’envoyer le fichier par mail si tu veux : webmaster@nightangel.fr.
@pocpoc : Je suis désolé mais pour l’instant je n’ai plus de serveur qui supporte le https:// et il me sera donc difficile de te répondre… Je viens de lire le plugin que je cite dans le billet et des modifications ont été apportées à WordPress entre temps. Je te conseille d’essayer ce plugin qui est beaucoup plus d’actualité : HTTPS for WordPress. Je sais qu’il est compatible avec la version 2.5 mais au premier abord je ne vois pas pourquoi il ne marcherait pas avec la 2.8. Désolé de ne pouvoir mieux te renseigner…
MERCI pour cet excellent tutoriel, très clair et très complet. Il m’a été très utile.
merci pour toutes vos astuces et vos conseils ! Parfois, je trouve cela compliqué, car je ne suis pas informaticienne et le php c’est une langue étrangère pour moi ! j’en suis encore au bon vieux dhtml !
et encore !
j’ai compris comment cela fonctionne ces langages comme le php, les flux rss et autres joyeusetés, mais franchement j’ai beaucoup de mal à appliquer.
Petite question : mon site à été piraté. Via google, j’ai suivi les conseils mais maintenant, je crains toujours une nouvelle attaque.
Il m’a semblé que ce hacking est arrivé alors que je venais de changer de theme wordpress. Est-ce qu’un theme wordpress gratuit peut-être vérolé ? Comment le reconnaître ?
Merci
Caroline
Bonjour merci pour ce dossier, malheureusement la partie qui m’intéresse n’existe plus et cela fait un moment qu’il est notifié :
« Il n’est pas évident, mais pas impossible non plus, de manipuler le répertoire wp-admin. En effet cela peut poser des problèmes à plusieurs niveaux, je suis actuellement en train de tester une méthode et de vérifier son bon fonctionnement. Dès qu’une solution accessible est trouvée, je viens éditer cette page. Merci pour votre compréhension ! »
Alors j’en conclu que tu n’as pas réussis à le faire ?
Comment déplacer et renommer wp-admin ?
Merci
@dd : Pour l’instant je ne suis toujours pas très satisfait de mes essais et c’est pour cette raison que je n’ai rien publié. Ce n’est pas impossible mais je me refuse catégoriquement de toucher au « core » de WordPress, je veux qu’il reste pleinement possible de le mettre à jour sans problème, etc… Pour l’instant la solution la plus concluante se trouve ici. Je vais continuer mes essais dès que je trouve un peu de temps. Voilà
Bonsoir, super merci infiniment pour ce lien, je cherchais comment résoudre ce problème depuis un moment ;)
Bravo aussi pour ton site, très intéressant ;)
Finalement tu peux peut-être me renseigner, car mon problème est identique à celui décrit ici : http://forum.webrankinfo.com/c[...]l#p1136079
La seule solution est donc de déplacer le dossier wp-admin alors ? Mais donc d’après ce que tu dis si on fait ça on touche au core de wordpress ? C’est donc pour ça que d’après le lien que tu m’as donné il est préférable de faire une redirection de l’accès à la partie admin de wordpress, est-ce bien ça, dis-moi si j’ai bien tout compris ? ;)
Bonsoir, ce script est-il valable ?
http://www.brunovalentin.com/s[...]wordpress/
Si oui comment le mettre en place ?
Bonjour,
Alors toujours un plaisir de lire les conseils dispensés ici. Cependant voilà mon soucis. Je pensais avoir réglé mon problème de hacking sauvage sur mon wordpress et voilà que cela recommence. Je ne suis pas la seule, car pour mon travail, nous administrons un site wordpress qui est une radio podcast pédagogique. Que ce soit mon wordpress ou un autre, il semble que le hacking sauvage sévit. Nous recevons des commentaires bizzares avec des adresses bizzares et comme par hasard, même si vous les supprimez définitivement ou cochez indésirables, à ce moment là, problème. Du coup google, annonce votre site comme étant malveillant ! J’ai beau effectuer toutes les démarches pour y remédier c’est une vraie galère ! please help me ! merci beaucoup !
@dd : Cette méthode est plutôt intéressante cependant la première partie sous-entend que vous ayaez une adresse ip fixe car seule votre connexion pourra accéder au répertoire « wp-admin ». Le problème étant que, comme la plupart des internautes, vous devez avoir une adresse ip dynamique allouée par votre fournisseur d’accès. En d’autres termes, votre adresse ip ne doit pas être la même aujourd’hui que dans 3 jours par exemple.
@caro : Il me faudrait davantage de précisions, vous pouvez me joindre par mail ( webmaster@nightangel.fr ), MSN ( fatal1ty@wanadoo.fr ) ou skype ( nightangel46 ). Par rapport aux commentaires, utilisez-vous le plugin (extension) « akismet » ? Il y a de toutes façons d’autres problèmes si je me base sur le site openbooks.fr En effet il y a des bouts de codes étranges tels que :
ou encore :
Ce sont probablement les fichiers de thème « header.php » et « footer.php » qui sont impactés, voire « functions.php ». Merci pour votre commentaire et vous savez où me joindre si nécessaire.
Bonsoir, voulant retourner sur le lien donné dans le post plus haut, je ne peux accéder, Kapersky me bloque cette page avec un gros avertissement rouge, c’est étonnant le lien semble infecté par un « Trojan-Clicker.JS.Agent.ma » selon Kapersky 2010 ?
merci pour cet article qui m’a permis d’améliorer mes connaissances en Wp !
Superbe tutoriel, franchement tu es une bombe man, la sécurité à ce niveau tu es top ! Continue…
il est bien ce tuto, bravo!
une idée juste comme ça (n’ai pas testé)
si on ne peux pas déplacer wp-admin, on peux déplacer, (et renomer?) wp-login.php
l’emplacement de ce fichier est définit dans general-template.php par wp_login_url()
la même fonction dans le theme, modifiée pour fournir la bonne url selon certaine condition (une variable ou le referer par ex.) pourrait fonctionner
…heu, c’est jouable?
Waoh, superbe guide, merci beaucoup, vraiment très utile, un de mes blogs a été hacké une fois dans le passé, aujourd’hui, j’essaie de les sécurisé au max.