Saviez-vous que plus de 73 millions de sites web dans le monde fonctionnent avec WordPress ? Cela rend WordPress plus populaire que Microsoft SharePoint, Blogger ou Drupal. Cela signifie également que cette plateforme est une grande cible pour les pirates. La moitié des sites WordPress étant auto-hébergés, l’administrateur WordPress porte une grande responsabilité dans la gestion sécuritaire du site web. Malheureusement, ce rôle n’est pas toujours confié à des experts, or la plupart des sites web WordPress sont menacés de Hacking. Pour pallier à cette situation, voici Cinq moyens d’améliorer la sécurité de votre site web WordPress que nous vous recommandons. Nous vous sensibiliserons sur les menaces les plus récurrentes et proposerons des pistes de solutions.
Vulnérabilité # 1: SQL Injection et URL Hacking
La faille :
WordPress est un CMS (Gestionnaire de contenu) dont le fonctionnement repose essentiellement sur un système de Gestion de bases de données SQL. Il communique aussi régulièrement avec le serveur web au travers de scripts PHP.
Ce sont pourtant ces deux caractéristiques fondamentales qui rendent ce CMS si vulnérable à certaines attaques.
En effet, il est possible d’envoyer des commandes à WordPress via les paramètres d’URL. Et malheureusement, les hackers savent comment construire des requêtes que WordPress aurait du mal à interpréter et qui l’emmènerait à agir sans autorisation. Ce genre d’attaques se nomme Injection SQL ou URL Hacking.
Ces pirates ont ainsi la possibilité d’accéder à votre base de données, d’en extraire des données confidentielles, de les modifier, ou même d’introduire un logiciel malveillant.
La plupart des sites web WordPress attaqués le sont à partir de cette faille.
La parade :
Comme tout site web, notre gestionnaire de contenu a besoin, pour son hébergement, d’un serveur web. Et la bonne nouvelle est que bon nombre d’usagers utilisent comme serveur web : Apache (NB : différent d’un amérindien en fureur).
Pour son fonctionnement, notre Apache utilise un fichier dénommé .htaccess. Il sert à définir les règles d’accès à votre site web. Vous n’aurez donc pas de mal à retrouver ce fameux .htaccess puisqu’il y a de fortes chances que vous aussi utilisiez Apache.
Ce fichier, véritable rempart de sécurité de votre WordPress, réunit un ensemble complet de règles qui servent à contrôler tout accès volontaire ou involontaire à votre site. Pour ce faire, il suffit de le paramétrer convenablement. Vous éviterez ainsi d’éventuelles menaces.
Le code ci-dessous représente un solide ensemble de règles que vous pourriez insérer dans votre .htaccess :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ – [F,L]
RewriteCond %{QUERY_STRING} ../ [NC,OR]
RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag= [NC,OR]
RewriteCond %{QUERY_STRING} ftp: [NC,OR]
RewriteCond %{QUERY_STRING} http: [NC,OR]
RewriteCond %{QUERY_STRING} https: [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|ê| »|;|?|*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*("|'|<|>|\|{||).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^(.*)$ – [F,L]
</IfModule>
Vulnérabilité # 2: Accès aux fichiers sensibles
La faille :
Toute installation standard de WordPress contient un certain nombre de fichiers que vous ne voudrez pas voir entre les mains d’un hacker. Ces fichiers peuvent être le fichier de configuration de WordPress, le script d’installation et même le fichier « readme ». Il est donc nécessaire de les rendre inaccessibles à toute personne non autorisée.
La parade :
Comme avec la prévention des URL hacks, vous pouvez ajouter des commandes au dossier de votre serveur Apache afin de contrôler l’accès à tout fichier privé sensible.
Nous vous recommandons les instructions ci-dessous, qui permettront de bloquer l’accès à vos listes d’annuaires, ainsi qu’à un ensemble de fichiers spécifiques liés à WordPress et le serveur Web lui-même.
Options All -Indexes
<files .htaccess>
Order allow,deny
Deny from all
</files>
<files readme.html>
Order allow,deny
Deny from all
</files>
<files license.txt>
Order allow,deny
Deny from all
</files>
<files install.php>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>
<files error_log>
Order allow,deny
Deny from all
</files>
<files fantastico_fileslist.txt>
Order allow,deny
Deny from all
</files>
<files fantversion.php>
Order allow,deny
Deny from all
</files>
Vulnérabilité # 3: Admin par défaut comme compte d’utilisateur
La faille :
Beaucoup d’installations de WordPress utilisent par défaut comme compte utilisateur-administrateur, le populaire nom d’utilisateur suivant « admin ». Conscients de cette fâcheuse habitude, les hackers tentent de se connecter au compte administrateur. Il ne leur reste plus qu’à deviner (contourner ou cracker) le mot de passe.
La parade :
Bien qu’un pirate ait encore besoin de deviner ou de cracker votre mot de passe pour accéder au compte admin, vous êtes encore plus sécurisé si vous n’employez plus le populaire compte « admin ».
Il est donc recommandé de créer un nouvel utilisateur avec un nom imprévisible, d’attribuer à ce dernier des privilèges d’administrateur et bien sûr de supprimer le compte « admin ».
Ainsi, un intrus aura maintenant besoin de deviner à la fois le nom d’utilisateur et le mot de passe, pour espérer avoir accès en tant qu’administrateur à votre site.
Vulnérabilité # 4: préfixe par défaut pour les tables de base de données
La faille :
La base de données WordPress se compose de diverses tables. Dans de nombreux WordPress installés, ces tables sont nommées avec un préfixe par défaut qui commence par « wp_« . Pour les hackers, le fait de le savoir peut leur fournir un avantage à ne pas négliger.
La parade :
Changer le préfixe de vos tables de WordPress peut éliminer cette prévisibilité, même si certains experts en sécurité estiment que cela ne suffira pas à arrêter un pirate averti qui userait de tout moyen pour déterminer le nom des tables.
Si cela est vrai pour un pirate bien avisé, il n’en est pas de même pour de nombreux hackers amateurs qui utilisent généralement des scripts préemballés pour effectuer leur sale besogne. Ces derniers verront donc leur chance de réussite considérablement amoindrie.
Lors de l’installation de WordPress, vous avez la possibilité de spécifier le préfixe de vos tables de base de données. Cela vous donne la possibilité de choisir quelque chose d’unique et d’imprévisible.
Toutefois, si WordPress est déjà installé, vous aurez toujours la possibilité de modifier le nom des tables. Mais cette fois-ci de façon manuelle directement depuis votre base de données. Ou encore en modifiant le préfixe wp à partir du fichier wp-config.php.
Heureusement un plugin existe pour vous faciliter la tâche : le plugin WP BETTER SECURITY. Ce dernier permet de renommer automatiquement vos tables. Le grand avantage est que ces noms sont attribués de façon aléatoire et sont par conséquent imprévisibles.
Vulnérabilité # 5: la force brute tentatives de connexion
La faille :
Les hackers comptent souvent sur des scripts automatisés pour atteindre leur objectif. Ces scripts effectuent de nombreuses tentatives pour accéder à votre page d’administration WordPress en essayant des milliers et des milliers de combinaisons de noms d’utilisateur et mots de passe imaginables.
Ces tentatives peuvent avoir pour impact le ralentissement de la connexion à votre site web par des utilisateurs légitimes. Ce qu’il faut savoir, c’est que ces tentatives de hacking peuvent aboutir; et dans ce cas, inutile d’imaginer les éventuels dégâts.
La parade :
On ne le répétera jamais assez. La prévention, c’est aussi un Mot de Passe solide. Plus il est long et composé de caractères mixtes, plus il sera difficilement “hackable”. Ces attaques utilisent généralement des combinaisons de mots et de chiffres dictionnaire. Rappelez-vous que les logiciels malveillants peuvent rendre fébriles les mots de passe solides.
Une défense encore plus efficace est d’installer un limiteur de connexion pour WordPress. Cela permettra essentiellement de bloquer ou mettre en quarantaine une adresse IP ou le nom d’utilisateur qui tente et ne parvient pas à envoyer des demandes de connexion au-dessus d’un taux de seuil. Par exemple, une limite de connexion de 10 tentatives par cinq minutes peut être sauvegardée avec un timeout de pénalité de 1 heure.
Une attaque par force brute succès contre un mot de passe fort devient effectivement impossible avec ces limites en place, parce que le pirate peut ne jamais essayer suffisamment de variations (ou plutôt, il faudrait de nombreuses années de tentatives continues).
Deux plugins WordPress permettent d’appliquer un limiteur de connexion. Il s’agit de LIMIT TENTATIVES CONNEXION et du plugin susmentionné WP BEST SECURITY.
Si malgré toutes ces précautions le pirate réussit quand même à pénétrer votre site web, la meilleure solution pour l’empêcher de faire plus que ça serait de crypter les données sensibles.
Aussi, nous avons des plugins spécialement conçus pour la sécurité comme WP BETTER SECURITY ainsi que des plugins pour scanner les malwares.
Ces cinq stratégies sont efficaces sur la sécurité de début de WordPress et non la fin. Comme toute forme de sécurité, la défense de WordPress est un processus continu qui doit impliquer la sensibilisation aux nouvelles menaces combinées avec des détails spécifiques sur votre propre environnement installé.