Sécurisez votre site WordPress

Posté par | content

 

Les sites conçus avec les CMS WordPress font l’objet d’une recrudescence d’attaques par force brute. Les hackers cherchent, par ce procédé, à prendre possession des comptes « administrateur » en crackant leur mot de passe.
L’attaque par force brute est un procédé qui vise, pour un pirate, à s’emparer des données d’identification du compte d’administrateur d’un site, en testant toutes les combinaisons possibles du mot de passe associé à ce compte.

 

Comment se protéger contre ce type d’attaque ?

  • Quelques alternatives :

    N’utilisez pas le nom « admin » pour votre compte administrateur. Le remplacer par un nom d’utilisateur plus complexe (en lui conférant naturellement les droits d’administrateur). Il est possible de casser un mot de passe en bruteforce (en essayant toutes les combinaisons jusqu’à trouver le bon mot de passe), il est presque impossible de deviner un couple login / mot de passe par la même méthode.

    Choisir un mot de passe complexe. Utilisez un générateur de chaines aléatoires pour générer un login d’au moins 8 caractères, si possible avec au moins un caractère non alpha numérique
    Si « admin » existe, créez un nouvel administrateur, attribuez-lui toutes les publications d’admin et supprimez admin en étant connecté sous le nouvel identifiant.

     

    Mettre à jour son site wordpress, ainsi que les plugins installés.

     

    Sous WordPress (administration plus experte) : bloquer l’accès à WP-LOGIN.PHP en utilisant le fichier HTACCESS, afin de créer une protection par login/mot de passe pour protéger la zone d’administration.

     

    Créez un utilisateur avec moins de privilèges pour la rédaction d’articles : il est souvent possible de deviner une partie des logins d’un site en étudiant ses auteurs. Si vous ne l’avez pas fait, pensez à créer cet utilisateur et lui attribuer les publications déjà existantes.

     

    N’utilisez pas le préfixe « wp_ » pour nommer vos tables. Dans la même idée que le nom de la base de données, conserver le préfixe « wp_ » vous rend plus vulnérable en cas d’injection sql. Si vos tables utilisent ce préfixe vous pouvez les renommer, ou bien en utilisant un plugin de sécurité, comme Acunetix WP Security, qui fait sauvegardes de la base de données, et utile si n’avez pas suivi les bonnes pratiques dès l’installation. Il teste les possibles failles de votre blog, et vous indique comment y remédier.

 

  • Après l’installation, la configuration :

    En fonction de ce que permet votre hébergeur, vous pouvez ne pas avoir accès au fichier .htaccess, ce qui n’est pas une catastrophe. Mais si vous pouvez insérer ces quelques lignes, ne vous en privez pas.

     

    Protégez le fichier wp-config.php, il contient tout le paramétrage de votre site (hors plugins) et notamment les codes d’accès à votre base de données.

     

    Protégez wp-config.php avec .htaccess
    <Files wp-config.php>
    order allow,deny
    deny from all
    </Files>

    Cachez vos répertoires, c’est à dire empêchez aux internautes d’accéder à la liste des fichiers (et donc des dossiers) qu’ils contiennent : moins ils auront d’informations, moins vous serez vulnérable.

     

    Cachez vos répertoires avec .htaccess
    Options All -Indexes

     

    Protégez le fichier .htaccess lui-même, parce que charité bien ordonnée commence par soi-même.

     

    Protégez .htaccess grâce à lui-même
    <Files .htaccess>
    order allow,deny
    deny from all
    </Files>

     

    Effacez le fichier readme.html à la racine de votre site.

     

    Supprimez la balise « generator » du site (<meta name= »generator » content= »WordPress x.y.z » />) en ajoutant cette ligne au fichier functions.php du theme :

     

    Supprimer la meta generator de WordPress
    remove_action(« wp_head », « wp_generator »);

     

    Masquez les erreurs de connexion : Le message retourné par WordPress en cas de problème de connexion est explicite, ajouter cette ligne au fichier functions.php du thème permet d’afficher un message d’erreur banalisé :

     

    Supprimez la meta generator de votre flux rss
    add_filter(‘login_errors’,create_function(‘$erreur’, « return ‘Erreur de connexion'; »));

 

    • Deux plugins indispensables pour la sécurité de WordPress :

      Limitez le nombre de tentatives de connexions grâce à Limit Login Attempts, vous pouvez vous protéger des attaques par force brute en banissant temporairement une adresse IP après un certain nombre de tentatives de connexion infructueuses.

       

      Après avoir installé un thème gratuit, le plugin Theme Authenticity Checker permet de le scanner et de vérifier qu’il ne contient pas de code malveillant.

 

  • La sauvegarde :Pensez à sauvegarder votre site grâce à un plugin qui s’en chargera à votre place. Utilisez BackWPup, cette extension vous permettra de programmer des sauvegardes régulières qui pourront être transférées sur le serveur de votre choix.
    Si vous avez bien sauvegardé régulièrement votre site, même en cas de piratage ou d’erreur humaine, vous pourrez le remettre en route rapidement.

 

Néanmoins, une solution alternative a été trouvée par la société Inter-Système en rajoutant ces lignes de code au tout début dans votre fichier HTACCESS :

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php*
RewriteCond %{HTTP_REFERER} !.*VOTRESITE.COM.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
</ifModule>

 

Ensuite il vous suffira de changer VOTRESITE.COM pour votre nom de domaine, sans les www.

 

Le code ci-dessous n’arrêtera pas complètement les attaques, mais en atténuera ses effets, en bloquant plusieurs adresses IP venant d’Asie et de certains centre de données problématiques qui ne pourront plus avoir accès à votre fichier pour s’identifier à votre WordPress WP-LOGIN.PHP :

 

<Files wp-login.php>
deny from 1.0.0.0/8
deny from 14.0.0.0/8
deny from 27.0.0.0/8
deny from 36.0.0.0/8
deny from 42.0.0.0/8
deny from 49.0.0.0/8
deny from 58.0.0.0/8
deny from 59.0.0.0/8
deny from 60.0.0.0/8
deny from 61.0.0.0/8
deny from 101.0.0.0/8
deny from 102.0.0.0/8
deny from 103.0.0.0/8
deny from 106.0.0.0/8
deny from 110.0.0.0/8
deny from 111.0.0.0/8
deny from 112.0.0.0/8
deny from 113.0.0.0/8
deny from 114.0.0.0/8
deny from 115.0.0.0/8
deny from 116.0.0.0/8
deny from 117.0.0.0/8
deny from 118.0.0.0/8
deny from 119.0.0.0/8
deny from 120.0.0.0/8
deny from 121.0.0.0/8
deny from 122.0.0.0/8
deny from 123.0.0.0/8
deny from 124.0.0.0/8
deny from 125.0.0.0/8
deny from 140.0.0.0/8
deny from 153.0.0.0/8
deny from 163.0.0.0/8
deny from 171.0.0.0/8
deny from 175.0.0.0/8
deny from 180.0.0.0/8
deny from 182.0.0.0/8
deny from 183.0.0.0/8
deny from 186.0.0.0/8
deny from 187.0.0.0/8
deny from 202.0.0.0/8
deny from 203.0.0.0/8
deny from 210.0.0.0/8
deny from 211.0.0.0/8
deny from 218.0.0.0/8
deny from 219.0.0.0/8
deny from 220.0.0.0/8
deny from 222.0.0.0/8
deny from 63.143.32.0/19
deny from 64.31.0.0/18
deny from 69.162.64.0/18
deny from 74.63.192.0/18
deny from 192.169.80.0/20
deny from 208.115.192.0/18
deny from 216.144.240.0/20
deny from 216.245.192.0/19
</files>

 

© Crédit photo jamdesign – Fotolia.com

© Platine 21/01/2014