Comment j’ai surmonté mon premier piratage et sécurisé mon site

Comment j’ai surmonté mon premier piratage et sécurisé mon site

Aujourd’hui, j’ai le plaisir de publier une expérience contre votre ennemi public numéro 1 : le piratage. Michaël, qui m’a envoyé ce témoignage, se présente comme un auto-didacte ; je rajouterais aussi qu’il est passionné par le code, aux vues de son article très bien détaillé. Il vient vous raconter comment il s’est fait piraté et surtout, comment il s’en est sorti !

J’espère que vous apprécierez ce compte rendu autant que moi ; j’ai pensé que le point de vue d’un néophyte apporterait un regard nouveau sur ce sujet qui fait souvent très peur. J’en profite pour le remercier d’avoir pris le temps de rédiger cet article à votre intention. C’est  ce genre d’attention qui construit le web collaboratif que l’on connaît aujourd’hui.

Trêve de blabla ! Je laisse la parole à Michaël :

I – Comment me suis-je fait pirater mon site ?

Au printemps dernier, j’ai entrepris de monter un blog WordPress.

Je dois avouer que je ne suis pas un expert en informatique mais juste un autodidacte. Mon domaine d’expertise serait plutôt celui de la santé (au sens large)…

Bref, quelques mois et dix articles plus tard, en plein week-end du 15 août, bingo ! Premier piratage en règle : tout le contenu avait disparu !

J’ai d’abord cru à un bug de la dernière version 3.9.2 de WordPress que je venais de mettre à jour. Mais le contexte ne collait pas vraiment avec cette hypothèse. le blog semblait désespérément vide. Côté tableau de bord : plus aucun article ni aucune page. C’est comme si le blog était vierge. Toutes les catégories avaient disparu. Il subsistait quelques bribes de commentaires et c’est tout.

En essayant de réenregistrer un de mes articles (heureusement sauvegardés), pas moyen d’entrer les mots-clés. A la place du bouton « Publier » apparaissait un étrange bouton « Soumettre à la relecture ». Une fois l’article enregistré en brouillon, hop, voilà qu’il disparaissait dans un gouffre ! Abracadabra, effacé ! Et les sables mouvants se sont refermés sur un index des articles apparaissant neuf et vierge comme au premier jour.

Panique à bord !

II- Etablir le diagnostic du piratage

Je contacte le support de WordPress

Le support est joignable à cette adresse : http://www.wordpress-fr.net/support/

Première suggestion : désactiver toutes les extensions. Impossible de le faire du tableau de bord, tout paraît bloqué. Passant par le FTP, en renommant le fichier « plugins » en « X-plugins », c’est possible.

Le problème subsiste-il, me demande-on ? Oui. Ca ne change rien. De surcroît, une avalanche de « pings » hautement suspects, jusque là endiguée par Akismet (qui n’est alors plus actif), déferle sur les ruines de mon pauvre blog…

Le hack est probable, il m’est suggéré de tester le site ici (n’est pas fiable à 100 % me dit-on) : http://sitecheck.sucuri.net/

Tous les indicateurs sont dans le rouge. Le blog a été hacké !

Aïe, aïe, aïe… Comment vais-je me tirer de ce mauvais pas… ?

« As-tu une sauvegarde de la base de données et des fichiers du site avant l’incident ? Si c’est le cas, cela permettrait de la remettre dans l’état où elle était auparavant… », me demande le modérateur de WordPress.

Aïe ! Pas de sauvegarde fiable de la base de données, tout simplement parce que j’avais fait confiance jusqu’à lors à un plugin que je ne nommerai pas et qui m’avait fourni des archives parfaitement inexploitables… Heureusement pour moi, tous mes articles (écrits en HTML avec leur mise en page, une habitude que j’ai gardé du temps où j’éditais un site statique…) sont sauvegardés.

Comment avoir une sauvegarde fiable de sa base de données ?

Depuis, croyez-moi, j’ai appris ce que c’est qu’une base de donnée et comment ça se sauvegarde manuellement (étape indispensable si l’on ne veut pas voir son blog dépendre d’un plugin foireux), et surtout comment ça se restaure !

Après avoir appris à le faire à la main, voici une extension fiable pour le faire automatiquement, « WP-DB-Backup » par Austin Matzko. Je vous recommande d’ouvrir une adresse Gmail dédiée exclusivement à la sauvegarde de votre base de donnée, et automatiser ainsi celle-ci une fois par jour (vous y ferez le ménage de temps en temps).

Nettoyer une base de données infectée après un piratage

J’ai appris également, après avoir tout écrasé et tout réinstallé à neuf, qu’une base de donnée infectée se nettoie suivant les indications de cet excellent tutoriel qui donne la marche à suivre pas à pas après un piratage… :-)  http://www.iceranking.com/wordpress-seo/guide-complet-pour-nettoyer-et-securiser-wordpress-apres-un-hacking/

Vérifier que la sauvegarde des fichiers n’est pas infectée

Quant à WordPress, il suffit en fait de vérifier le dossier wp-content en local (sur votre ordinateur) avec un antivirus avant de le réinstaller (d’où l’intérêt de le sauvegarder également :).

III – L’orage passé, les premières précautions de sécurisation à prendre pour ne plus être piraté

Le fichier .htaccess pour vérouiller l’entrée

Le premier conseil qui m’a été donné (toujours pas le modérateur de WordPress-fr.net), c’est de blinder le .htaccess ainsi :

# Protection du fichier .htaccess
Order Allow,Deny
Deny from all

# Protection du fichier wp-config.php
 order allow,deny
 deny from all

# Desactivation de l'affichage des repertoires
 Options All -Indexes

Puis, de sécuriser son blog comme indiqué ici : http://www.lumieredelune.com/encrelune/securiser-wordpress,2012,12

Plus malin : planquer son wp-login en le renommant et en le déménageant !

Beaucoup de monde essaie de forcer l’entrée de votre site via le fichier wp-login.php. Vous ne me croyez pas ? Essayez d’installer un petit mouchard à la racine du fichier index.php (qui initialise WordPress), pour qu’il vous envoie par mail l’adresse IP de chaque visiteur (dans un autre compte gmail dédié, par ex : monadressedediee@gmail.com). Voici comment faire :

/**
 * Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/

/* mouchard */
$ip = $_SERVER['REMOTE_ADDR'];
mail('monadressedediee@gmail.com', 'Ip visiteur', ' .$ip. ');
/**

 

Je l’ai fait… et j’ai commencé à réaliser avec sidération le nombre d’IPs de visiteurs « exotiques » qui se baladaient sur mon site (de Chine, Russie, Roumanie, etc.), parfois la même IP toutes les minutes, 60 fois par heure !

Pas bon, tout ça, même en ayant renommé le compte administrateur de ‘admin’ vers un nom moins évident. Que faire d’autre ? Planquer le wp-login !

« Est-il possible de renommer manuellement ‘wp-login.php’ ?

J’ai testé.

La réponse est oui.

Remarque de Marie-Eve : J’ai retiré cette partie du tutoriel car ce type de modification dans le coeur de WordPress sera écrasé à chaque mise à jour…c’est à dire très souvent. Je vous recommande plutôt de passer par un plugin comme « Rename wp-login.php » ou par une modification de votre fichiers functions.php pour renommer le fichier login.php.

Après quelques tests en local grâce à Easy-php (un logiciel que je recommande pour vos sites en local), j’ai fini par trouver un plugin idéal « better-wp-security » : ce plugin n’a rien à envier aux solutions professionnelles comme Sucuri !

(A peine) plus compliqué : renommer & déménager son wp-content

En éditant le journal des erreurs 404 d’un plugin qui s’appelle « Redirection« , j’ai constaté de nombreux essais en force de hacks sur les plugins.
Le premier visé étant (cela revient sans arrêt), ‘contactform7’… Bon à savoir !

Un moyen efficace de planter sur place tout ce beau petit monde serait donc de changer carrément le wp-content d’adresse.
Est-ce possible ?

Plusieurs ressources indiquent que oui, à commencer par le codex de wp : http://codex.wordpress.org/Editing_wp-config.php#Moving_wp-content_folder

La marche à suivre est la suivante :

1/ Editer le wp-config (une sauvegarde préalable serait la bienvenue :)

Les différents auteurs recommandent de se placer avant la dernière ligne. Cela veut dire en clair n’importe où entre le début et la fin :)  Pour ma part, je me suis calé juste en dessous de l’instruction de mode deboguage vers la ligne 90.

2/ Ensuite, il y a les instructions à modifier dans le code.  J’ai trouvé assez peu de clarté personnellement chez les principaux auteurs…jusqu’à ce que je trouve le pourquoi du comment… lequel est d’une simplicité éblouissante !

En fait, il y a un binôme d’instruction.

  1. La première instruction définit le ‘WP_CONTENT_DIR’, le chemin absolu de la direction du répertoire ‘wp-content’ que l’on souhaite renommer + déplacer.
  2. La seconde définit le ‘WP_CONTENT_URL’, l’adresse du répertoire donné.

Pour la première, le codex propose une instruction qui pourrait être un raccourci, mais qui en fait ne fonctionne pas :)

1 – Ce qui fonctionne, c’est de définir cette première instruction en deux temps :

 define ('WP_CONTENT_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');
 define ('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;

2- La deuxième instruction se passe de commentaires :

 define( 'WP_CONTENT_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');

Cela donne le triplet suivant à placer dans le fichier wp-config.php :

define ('WP_CONTENT_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');
define ('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;
define( 'WP_CONTENT_URL', 'http://www.mondomaine.com//mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');

En théorie, c’est tout !

En pratique, plusieurs auteurs, dont le Codex, mettent en garde l’utilisateur en lui recommandant de spécifier CHAQUE chemin pour CHAQUE sous-répertoire du ‘wp-content’

Cela donne donc :

/* Demenagement du wp-content */

define ('WP_CONTENT_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');
 define ('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;
 define( 'WP_CONTENT_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux');

define ('WP_PLUGIN_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/plugins');
 define ('WP_PLUGIN_DIR', ABSPATH . WP_PLUGIN_FOLDERNAME) ;
 define( 'PLUGINDIR', ABSPATH . WP_PLUGIN_FOLDERNAME) ;
 define( 'WP_PLUGIN_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/plugins');

define ('WP_THEMES_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/themes');
 define ('WP_THEMES_DIR', ABSPATH . WP_THEMES_FOLDERNAME) ;
 define( 'WP_THEMES_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/themes');

define ('WP_LANGUAGES_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/languages');
 define ('WP_LANGUAGES_DIR', ABSPATH . WP_LANGUAGES_FOLDERNAME) ;
 define( 'WP_LANGUAGES_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/languages');

define ('WP_DOWNLOADS_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/downloads');
 define ('WP_DOWNLOADS_DIR', ABSPATH . WP_DOWNLOADS_FOLDERNAME) ;
 define( 'WP_DOWNLOADS_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/downloads');

define ('WP_WP-ADMIN_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/wp-admin');
 define ('WP_WP-ADMIN_DIR', ABSPATH . WP_WP-ADMIN_FOLDERNAME) ;
 define( 'WP_WP-ADMIN_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/wp-admin');

define ('WP_UPLOADS_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/uploads');
 define ('WP_UPLOADS_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;
 define( 'WP_UPLOADS_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/uploads');

define ('WP_UPGRADE_FOLDERNAME', '/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/upgrade');
 define ('WP_UPGRADE_DIR', ABSPATH . WP_UPGRADE_FOLDERNAME) ;
 define( 'WP_UPGRADE_URL', 'http://www.mondomaine.com/mon-chemin-pour-acceder-au/wp-content-renomme-en-ce-que-je-veux/upgrade');

C’est tout, et ça fonctionne !

Ah, juste un dernier bémol :

Si plugin s’avère défaillant suite à cette manipulation, c’est qu’il est mal programmé. Il faudra alors remplacer manuellement, dans le code du plugin, toute mention à un dossier ‘wp-content’ par la fonction ‘use content_url()’ (un bonheur:)… ou alors se passer du plugin en question !

Voilà, j’espère que ce retour d’expérience vous aura aidé vous aussi à mettre votre précieux blog un peu mieux à l’abri !

Un témoignage signé Michaël Ramain, auteur du site ecoledumieuxetre.com.

A propos de Michaël Ramain

Michaël Ramain tient le site "L'école du mieux être". Curieux des nouvelles technologies et de WordPress, Michaël vient nous rapporter son expérience de néophyte autodidacte.

25 commentaires

  1. bonjour marie eve , merci tout d’abord pour ton blog qui apporte une foule de conseils issus de l’expérience dans wordpress.

    Pour éviter ou rendre plus difficile le piratage, j’utilise le plugin login lockdown qui permet dejà une bonne protection antipiratage.

    Répondre
  2. Bonjour Michaël et Marie-Eve,
    Merci beaucoup pour cet article très intéressant ! Je vais installer un mouchard sur mon site car je suis curieux de savoir combien il y a de tentatives de connexion… C’est peut-être pour ça que j’ai autant de redirections automatiques avec le plugin 404 Redirect ?
    Pour sécuriser mon site, j’ai effectivement modifié mon login et installé le plugin Login LockDown qui limite le nombre de tentatives que l’on peut faire. Au-delà, l’accès est bloqué pour la durée que l’on choisit.
    Et quelques autres astuces glanées de ci de là. Mais je vois que les modifs que tu proposes sont d’un autre niveau, je vais les mettre en œuvre dès que j’aurai un moment. Merci du partage !
    A bientôt,
    Jérémie

    Répondre
    • Merci pour ton message Jérémie.

      Tu viens de changer de thème non ? Il était pas sur fond noir ton site ?

      Répondre
  3. Bonjour,

    Article très judicieux, la sécurité d’un blog est un facteur essentiel qu’il faut prendre en considération afin d’éviter toute déconvenues,

    En plus de ce qui a été écrit dans cet article, je conseils d’utiliser quelques plugins fait pour ça, personnellement j’utilise:

    – Login LockDown (qui permet de bloquer les brute force qui génèrent des mots de passe aléatoires afin d’accéder à votre blog)

    – WordPress Backup to Dropbox (qui fait des sauvegardes automatiques)

    – wsd security (qui scan vos pages et vous donne des conseils de sécurité)

    + une sauvegarde manuelle de la base de données ainsi que du blog complet

    on est jamais trop prudent ^^

    Répondre
  4. Bonjour !

    Il me semble que j’ai le privilège de pouvoir commenter cet article en premier ou je me trompe :-)

    Un grand MERCI à Marie-Eve d’avoir eu la gentillesse d’accorder un bon accueil à cette expérience et de publier mon point de vue de néophyte.

    La leçon de cette petite histoire, c’est que cela n’arrive pas qu’aux autres. Prévenir vaut mieux que guérir dit-on, car lorsque cela nous arrive, le moins que je puisse dire c’est que ça fait drôle :-(

    Je voudrais reprendre point par point et/ou ajouter quelques commentaires à cet article, qui date de très peu de temps, mais qui, si je devais le réécrire aujourd’hui, serait déjà différent car entre temps j’ai appris de nouvelles choses.

    Premièrement, j’insisterai encore sur l’utilité :-) de faire des sauvegardes régulières et fréquentes de la base de donnée. C’est le coeur du système ! Tout le reste peut se changer (moyennant beaucoup de temps), sauf à le sauvegarder intelligemment aussi.

    Deuxièmement, deuxième règle importante dont je n’ai pas parlé ici car je l’ai appris entre temps, et à appliquer en priorité, avant même tout ce que je relate ici, c’est de changer les permissions d’accès aux fichiers sur le serveur. En effet, si vos fichiers ne sont pas ouverts aux modifications, ce sera difficile pour un hacker d’aller les modifier 😉

    J’ai trouvé ici, sur le forum d’OVH, une mine d’informations importantes et un tutoriel complet à ce propos ; et même en n’ayant pas son site hébergé chez OVH, cela reste transposable à priori partout.

    Troisièmement, le .htaccess. Ce qui est exposé ci-dessus est un minimum vital assez sommaire. Vous trouverez dans la ressource ci-dessus une mine de précautions supplémentaires à mettre en oeuvre à ce sujet.

    Quatrièmement, planquer son wp-login en le renommant et en le déménageant. Je ne partage pas le point de vue ci-dessus de Marie-Eve de dire que type de modification dans le coeur de WordPress sera écrasé à chaque mise à jour…à condition d’avoir la sagesse bien sûr d’aller le fourrer dans un dossier, pourquoi pas créé de toutes pieces, qui n’appartiendra pas à l’arborescence de WordPress, et ne sera pas touché par les mises à jour. Pour ceux/celles que ce point intéresse, j’avais déposé un commentaire détaillé sur ce point sur le blog de l’éditeur de mon thème. Mon point de vue est qu’un plugin « dédié » à cette tâche est une solution de facilité qui a ses limites et ses failles, c’est pourquoi je ne partage pas ce point de vue non plus.

    Cinquièmement, le petit mouchard à l’entrée. Planquer le « vrai » wp-login.php sous une autre identité au fond du labyrinthe de son blog permet de laisser en place un « faux » wp-login.php contenant un appât pour les mouches. J’ai « équipé » celui que j’ai triomphalement laissé trôner dans son emplacement d’origine du petit « mouchard » ci-dessus, amélioré ainsi :

    /* mouchard */
    $ip = $_SERVER[‘REMOTE_ADDR’];
    mail(‘monadressedediee@gmail.com’, ‘Mouchard du Wp-login-racine : Ip suspecte !’, ‘ ‘.$ip.’ ‘);
    $chaine=’?_’.$ip;
    $url=’www.mondomaine.com/404.php’ .$chaine;
    header(« Location: http://$url« );
    exit;
    /* creation d’un rapport de journal 404 intégrant l’adresse IP suspecte 😉 */

    Que se passe-t’il lorsque un indélicat tente d’ouvrir le wp-login.php ? Le même se voit redirigé vers la page 404, dont l’affichage se termine alors par 404.php?IP.du.visiteur.indélicat. Le tout arrive dans la boite mail, et peut être récupéré également par cet excellent plugin que je vous recommande et qui s’appelle « Redirection« . Il ne reste plus alors qu’à cueillir cette adresse IP, à vérifier quand même qu’il ne s’agit pas dun robot de Google 😉 et l’ajouter à la (longue) liste des IPs indésirables sur le .htaccess racine, ainsi :

    # Blocage des IPs indesirables
    order allow,deny
    allow from all
    Deny from Ip.ip.ip.ip ##selectif##
    Deny from Ip.ip.ip ##plage d’Ips##
    # etc.

    Sixièmement, j’ai écrit une bêtise dans la ligne de code ci-dessus :-)
    « define (‘WP_CONTENT_FOLDERNAME’, ‘/mon-chemin-pour… »
    Il y a un slash en trop, et c’est en fait ceci qu’il faudrait écrire :
    « define (‘WP_CONTENT_FOLDERNAME’, ‘mon-chemin-pour- »

    Septièmement, la manip décrite ci-dessus ne m’a pas empêché de garder mes images en place dans un sous-répertoire du wp-content 😉

    Huitièmement, il n’y a pas de plugin de sécurité « idéal » ! Au « better-wp-security » ci-dessus, j’ai combiné également sur mon blog « Wordfence », « Sucuri-scanner », « wp-security-scan » et « timthumb-vulnerability-scanner », combinaison qui ne semble pas présenter jusqu’à ce jour de conflits de fonctionnement. Mais tout ceci ne remplace pas la vigilance au quotidien…

    Ah, neuvièmement, dernière astuce : je ne sais plus de qui j’ai appris cela, mais il est vivement conseillé lorsqu’on travaille sur son blog, d’ouvrir les pages publiques dans un navigateur (par exemple chrome) et simultanément, ouvrir le tableau de bord dans un AUTRE navigateur (p.ex firefox) !

    Enfin, dixièmement, il est sage d’avoir un compte « rédacteur » différent de son compte « administrateur » lorsque nous travaillons sur les tâches courantes comme la mise en ligne de nos articles par exemple.

    Voilà. Tout ceci ne devrait pas nous masquer l’essentiel : le plaisir d’écrire et partager nos passions et/ou nos domaines d’expertises 😉 !

    Merci encore à Marie-Eve d’avoir publié cet article.

    Amicalement, bonne journée,
    Michaël

    Répondre
    • Merci à toi Michael, je l’ai publié avec grand plaisir :)

      Répondre
      • Merci Marie-Eve 😉

  5. Bonjour,

    il y a ce petit plugin très simple qui permet de changer l’url du wp admin : HC Custom WP-Admin URL
    Plus besoin de limiter les tentatives de connexion qui sont, comme dit précédemment, extrêmement nombreuses.

    Chez ovh on peut aussi restaurer une sauvegarde antérieure (jusqu’à 3 semaines si mes souvenirs sont bons) et dans certains cas on retrouve un blog tout neuf.

    Enfin pour se protéger il y a le plugin wordfence qui est assez complet et permet d’être alerté quand quelque chose de bizarre se produit sur le blog…et là aussi c’est assez fréquent.
    A+

    PS: super site Marie-Eve, j’ai trouvé beaucoup de réponses à mes interrogations. 😉

    Répondre
    • Bonjour David,

      Oui j’ai aussi installé WordFence dernièrement. Je pense à y rajouter iThemes (anciennement wp better security) pour renforcer encore.

      Pour ovh, tu sais à partir de quelle formule cette option existe ? Ca m’étonnerait qu’elle y soit pour l’offre perso, je penche plutôt pour l’offre pro.

      Répondre
  6. Personnellement je n’ai eu un site piraté qu’une seule fois, et c’était il y a longtemps déjà (2010). Une bonne vieille injection SQL. Le type avait profité d’une faille dans un de mes (trop nombreux) plugins. Le genre de trucs qui aide à prendre conscience des risques inhérents à la création de site web…

    C’est à cette époque que j’ai découvert Sucuri. Ils sont bons, très bons même, mais leurs services ne sont pas à la portée de toutes les bourses, donc si on a un site professionnel c’est une solution éventuellement envisageable, mais pour un site perso, clairement pas.

    Personnellement j’utilise une combinaison de différentes mesures pour limiter la casse. J’ai utilisé aussi Login LockDown sur certains sites que j’avais créés mais désormais je préfère avoir recours à Wordfence (qui propose une fonction de ce type et bien d’autres choses plus avancées). Un des gros points forts de Wordfence c’est qu’il est relativement simple à configurer, même pour un néophyte. Après, il y a un paquet de mesures qui ne sont pas prises en compte, mais je trouve que c’est un excellent compromis. Et il fonctionne très bien avec d’autres (bons) plugins de sécurité. Dernier détail, qui a son importance : il est parfaitement compatible avec WP multisite.

    D’ailleurs j’en profite pour signaler un plugin très léger… et très efficace : WP fail2ban. Son seul défaut est qu’il n’est absolument pas configurable, donc cela peut entraîner pas mal de « faux positifs » sur un gros site. Sur un de mes sites, j’ai régulièrement des personnes qui se trompent de mot de passe, en étant naturellement persuadée d’avoir saisi le bon, et qui soudainement ne peuvent plus accéder du tout au site… Sachant que l’immense majorité en conclue que le site est en panne et ne font pas le lien avec leur erreur de mot de passe (forcément), ça peut vite poser quelques problèmes.

    Répondre
  7. Il m’est arrivé une petite mésaventure à la suite de ce grand déménagement dans l’arborescence wordpress de mon blog qui mérite d’être racontée.

    Tous les plugins installés sur mon blog ont résisté à ce déménagement sauf un : Jetpack. Impossible de le reconfigurer, celui-ci envoyant une erreur serveur indiquant qu’il n’était pas correctement installé, (HTTP_REFERER_quelque-chose).

    Apprenti-sorcier que je suis, je me suis dit : qu’à cela ne tienne, je vais recréer l’ancienne direction /wp-content/plugins/ rien que pour jetpack, et déplacer tout le répertoire jetpack. Ce que je fais. Je raffraichis le tableau de bord : bing ! Ereur 500 du serveur. Côté site, page blanche ! Je reviens côté tableau de bord : page blanche ! Plus rien ! Le site avait comme disparu. Je ne vous dis pas le travail pour dépanner tout ça et tout remettre en route : il m’a fallu réinstaller WordPress de A à Z sur la config originelle, puis prudemment rebasculer sur la config « déménagée », en réintroduisant le wp-config modifié…
    Et Jetpack ne fonctionne toujours pas :-) Si quelqu’un a une idée pour débugguer ce truc-là… Merci infiniment 😉

    Répondre
    • Bonjour Michael,

      Merci pour ce complément, ça montre à tous que les problèmes ne sont pas insurmontables !
      Tu devrais poser la question sur le groupe FB ‎ »WordPress Academy » (groupe en français), je suis sûre que tu auras une réponse très rapidement. 😉

      Répondre
      • Ah ! Merci, bonne idée !

        J’ai essayé de débugguer la config actuelle de jetpack, mais ceci dépasse mes compétences. Apparemment, les directions y sont programmées en relatif (‘./repertoire-antérieur’) et non en absolu. Bref, le bazar. C’est où me plonger là-dedans, et renoncer à produire du contenu pour le blog, ou avancer sur mon article de la semaine, et tant pis pour ‘jetpack’…

      • Bonjour Marie-Eve,

        Ca y est, j’ai fini par trouver comment débugguer ‘Jetpack’, enfin ! Ca a été incroyablement compliqué, mais j’ai fini par m’en sortir, je passe sur les détails, en bidouillant le wp-config, en trifouillant le Core de Wp avec un plugin « Core Control », en testant Jetpack avec « Jetpack compatibility test », etc. Ouf, ne dites pas à ma mère que je suis un informaticien du dimanche, elle me croit pianiste dans un b… 😉

        Merci pour le soutien quoi qu’il en soit.
        Amicalement,
        Michaël

        PS- Moi aussi, j’ai changé le look de de mon site, na :)

  8. Bonjour Marie-Eve,

    Précieux article !!
    J’ai aussi tous les jours des tentatives de connexion (je le vois avec un plugin qui m’envoie des notif par mail), en général au moins 10, parfois 1000, et franchement j’en ai ras le bol !
    J’ai déjà changé le nom de mon admin pour me logger, un truc super compliqué et long que je ne peux même pas retenir, et idem pour le mot de passe qui doit bien faire dans les 30 signes.

    Mais j’aimerais renforcer ma protection, seulement je ne suis pas sûre d’avoir bien compris comment renommer et déménager son wp-content. Je comprends vite mais il faut m’expliquer longtemps lol !

    Je vais relire tout ça à tête reposée.
    Belle fin de journée à toi 😀

    Marjorie

    Répondre
    • Bonjour Marjorie,

      Lorsque je relis l’article que j’ai confié à Marie-Eve, je ne suis pas sûr d’avoir bien compris moi non plus 😉

      Il faut y aller méthodiquement, pas après pas.

      1- Sauvegarder son wp-config.

      2- Créer les repertoires & sous-répertoires choisis pour déménager son wp-content.

      3- Ouvrir son wp-config.php avec Notepad++

      4- Se caler ligne 70 (si rien n’a été modifié avant), juste après le $table_prefix. Insérer sur cette même ligne 70 :
      /* Demenagement du wp-content */

      5- Créer 2 retours à la ligne, puis revenir en arrière ligne 71 .

      6- Copier-coller ligne 71 ces 3 lignes :

      define (‘WP_CONTENT_FOLDERNAME’, ‘ma/direction/choisie’);
      define (‘WP_CONTENT_DIR’, ABSPATH . WP_CONTENT_FOLDERNAME) ;
      define( ‘WP_CONTENT_URL’, ‘http://www.mondomaine.com/ma/direction/choisie’);

      7- Remplacer « mondomaine.com » et « ma/direction/choisie » par les bonnes valeurs

      8 – Recopier à nouveau ces 3 lignes, prendre un nouveau retour à la ligne sur le wp-config.php et les coller en dessous, ligne 75 ;

      9 – Copier dans le tuto ci-dessus ‘WP_THEMES_FOLDERNAME’.

      10 – Remplacer, ligne 75, ‘WP_CONTENT_FOLDERNAME’ en ‘WP_THEMES_FOLDERNAME’. Faire bien attention de ne pas rajouter ni enlever d’apostrophe ‘.

      11 – Ajouter /themes à la fin de la ligne 75 :
      define (‘WP_THEMES_FOLDERNAME’, ‘ma/direction/choisie/themes’);

      12 – Transformer par le même procédé la ligne 76 « define (‘WP_CONTENT_DIR’, ABSPATH . WP_CONTENT_FOLDERNAME) ; » en « define (‘WP_THEMES_DIR’, ABSPATH . WP_THEMES_FOLDERNAME) ; »

      13 – Transformer pareillement la ligne 77 « define( ‘WP_CONTENT_URL’, ‘http://www.mondomaine.com/ma/direction/choisie’); » en « define( ‘WP_THEMES_URL’, ‘http://www.mondomaine.com/ma/direction/choisie/themes’); »

      14 – Copier ces 3 lignes 75, 76 et 77 nouvellement créées ;

      15 – Prendre un retour à la ligne et les coller en dessous, ligne 79, 80, 81.

      16 – Reprendre la ligne 79 « define (‘WP_THEMES_FOLDERNAME’, ‘ma/direction/choisie/themes’); » en « define (WP_LANGUAGES_FOLDERNAME’, ‘ma/direction/choisie/languages’); »

      17 – Reprendre la ligne 80 « define (‘WP_THEMES_DIR’, ABSPATH . WP_THEMES_FOLDERNAME) ; » en « define (‘WP_LANGUAGES_DIR’, ABSPATH . WP_LANGUAGES_FOLDERNAME) ; »

      18 – Reprendre la ligne 81 « define( ‘WP_THEMES_URL’, ‘http://www.mondomaine.com/ma/direction/choisie/themes’); » en « define( ‘WP_LANGUAGES_URL’, ‘http://www.mondomaine.com/ma/direction/choisie/languages’); »

      19 – Copier à nouveau ces 3 dernières lignes 79, 80, 81, prendre un retour à la ligne et venir les coller en dessous, ligne 83.

      20 – Reprendre la ligne 83 « define (‘WP_LANGUAGES_FOLDERNAME’, ‘ma/direction/choisie/languages’); » en « define (‘WP_PLUGIN_FOLDERNAME’, ‘ma/direction/choisie/plugins’); »

      21 – Reprendre la ligne 84 « define (‘WP_LANGUAGES_DIR’, ABSPATH . WP_LANGUAGES_FOLDERNAME) ; » en « define (‘WP_PLUGIN_DIR’, ABSPATH . WP_PLUGIN_FOLDERNAME) ; »

      22 – Reprendre la ligne 85 « define( ‘WP_LANGUAGES_URL’, ‘http://www.mondomaine.com/ma/direction/choisie/languages’); » en « define( ‘WP_PLUGIN_URL’, ‘http://www.mondomaine.com/ma/direction/choisie/plugins’); »

      23 – Attention, petite subtilité, copier à nouveau la ligne 84 modifiée et la dupliquer juste en dessous, ligne 85 (l’ancienne ligne 85 se décale en 86).

      24 – Modifier cette nouvelle ligne 85 « define (‘WP_PLUGIN_DIR’, ABSPATH . WP_PLUGIN_FOLDERNAME) ; » en « define (‘PLUGINDIR’, ABSPATH . WP_PLUGIN_FOLDERNAME) ; »

      25 – Enregistrer tout ça si ce n’est déjà fait, et ajouter autant de triplets ainsi modifiés pour les éventuels sous-répertoires « uploads », « upgrade », « downloads », etc. Comme dans le tuto ci-dessus 😉

      26 – Copier-coller le contenu du répertoire « wp-content » dans son nouveau répertoire dédié, ou recréer son double en chargant les plugins et thème(s) zippés avant de les dézipper. ATTENTION : garder l’ancien wp-content intact pour le moment, sait-on jamais !

      27 – Charger le nouveau wp-config.php sur le serveur.

      29 – S’assurer que tout fonctionne bien.

      30 – Si tout fonctionne bien, effacer l’ancien wp-content. Sinon, renvoyer l’ancien wp-config.php sur le serveur pour revenir à l’ancienne config et s’assurer que l’on a pas introduit de petite bêtise au passage dans le code
      (on peut aussi momentanément transformer la ligne ex-90 (nouvellement 107 ?) « define(‘WP_DEBUG’, false);  » en « define(‘WP_DEBUG’, true);  » pour voir apparaître la/les ligne(s) d’erreur(s) éventuelle(s). Ne pas oublier ensuite de revenir sur « define(‘WP_DEBUG’, false);  » sinon le monde entier « bénéficiera » du journal d’erreur de notre blog :-)

      Voilà. J’espère avoir répondu à cette interrogation aussi bien que Marie-Eve aurait pu le faire… :-)

      Amicalement,
      Michael

      Répondre
  9. @Michael : pas mal ton nouveau design : c’est très épuré. Par contre, tu devrais mettre un plugin de cache car c’est très lent…

    Répondre
    • Salut Marie-Eve,

      J’ai suivi ton conseil et j’ai ENFIN fini par installer wp-rocket hier.

      J’étais très fier d’avoir réussi à apprivoiser la « bête »
      malgré la configuration « exotique » de mon WordPress,
      fruit du (long) développement ci-dessus,
      puis à le configurer en apparence parfaitement !

      Sauf que, hier était hier…

      … Et aujourd’hui, bingo, impossible de pénétrer dans le back-office de mon blog,
      lequel affiche insolemment une magnifique page BLANCHE … 😐

      Je sais, ça fait gag 😉

      Quel est le nain de jardin qui a prétendu que tenir un blog était facile :-)) ?

      Bon, reprenons, je vais trouver comment débugguer ça… demain 😉
      Aujourd’hui, repos, ah mais !

      Bon week-end à toi, amicalement,
      Michael

      Répondre
    • Mésaventures estivales, suite 😉

      Bon, j’ai quand même tenté de faire machine arrière,
      j’ai désactivé wp-rocket depuis le serveur, et viré tous les fichiers cache.
      J’ai fermé le ‘WP_CACHE’ dans le wp-config, nettoyé le .htaccess de toutes ses fioritures…
      Statu quo, page blanche toujours…
      C’est bizarre que le « sitecheck.sucuri.net » (lien ci-dessus) génère une liste de scripts incluant tous les fichiers de cache comme si rien n’était alors que je les ai virés du serveur, vidé le cache du navigateur, etc. Comme à mon habitude je n’y comprends RIEN, c’est ça les autodidactes-apprentis-sorciers 😉

      Quelqu’un aurait une idée 😉 ??

      Répondre
    • Ouf ! Une journée de boulot pour tout remettre en route, quel chantier !

      Du coup, j’ai rétrogradé vers la dernière version stable 4.2.4. de Wp,
      et je ne suis plus tellement pressé de migrer vers Wp 4.3…
      … comme je ne suis plus tellement pressé de re-tester ‘wp-rocket’ !
      Je ne sais pas ce qui s’est passé… sauf que mon dimanche derrière l’écran, je ne l’ai pas vu passer non plus 😐

      Sinon, Marie-Eve, j’ai tiré les leçons de tes suggestions,
      et j’ai carrément recentré mes objectifs en un seul :
      promouvoir ma formation en ligne « enfinlibredutabac » !
      Le résultat ici :
      http://www.ecoledumieuxetre.com/

      Merci pour le soutien, amicalement,
      Michael

      Répondre
      • Bonjour Michael,

        Et bien quelle histoire ! Je comprends que tu ne veuilles plus toucher à rien. Bravo quand même pour t’en être sorti !

        Bien à toi,
        Marie-Eve

      • Merci Marie-Eve

  10. …et dire qu’il y en a qui disent qu’avoir un blog c’est facile…quand on se voit tout ce qu’il y a à maîtriser et les risques dont il faut se protéger en permanence, il faut vraiment avoir la passion pour persévérer non?

    Répondre
    • Oui !! J’approuve 😉

      Répondre
  11. Je tiens à vous féliciter pour le temps que vous mis à rédiger cet article. Je pense essayer l’astuce. Je vous tiendrai au courant! A bientôt.

    Répondre

Trackbacks/Pingbacks

  1. Comment j'ai surmonté mon premier pirata... - […] Aujourd’hui, j’ai le plaisir de publier une expérience contre votre ennemi public numéro 1 : le piratage. Voici comment…
  2. Sous-traiter la réalisation de son site web ou le faire soi-même ? - […] Sachant précisément quelle fonctionnalité sert pour quelle utilisation, vous avez une connaissance parfaite de votre site. Celui-ci est à…
  3. Wordpress | Pearltrees - […] connexion (niv. expert) add_filter('login_errors',create_function('$a', "return null;")); Comment j'ai surmonté mon premier piratage. Aujourd’hui, j’ai le plaisir de publier une…
  4. WordPress: sécurité, plugins, astuces, blogs | Pearltrees - […] Comment j'ai surmonté mon premier piratage. Aujourd’hui, j’ai le plaisir de publier une expérience contre votre ennemi public numéro…

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This Blog will give regular Commentators DoFollow Status. Implemented from IT Blögg

EmailEmail
PrintPrint