WordPress® est un excellent système de gestion de contenu (CMS), surtout si vous débutez dans les blogs ou le codage. Cependant, en raison du nombre élevé d'installations de WordPress, Wordpress est devenu une cible pour les attaquants. La bonne nouvelle est qu'il existe de nombreuses étapes que vous pouvez suivre pour rendre votre installation WordPress plus sécurisée.
Utilisateurs et autorisations Linux
Il est courant pour les utilisateurs qui découvrent WordPress de définir leurs autorisations en grand ouvert (définissez 777 autorisations) lorsqu'ils voient un Permission Denied
erreur de WordPress. Cette configuration permet à tout utilisateur (le plus important, le processus du serveur Web) de modifier les fichiers de votre installation WordPress. Pour verrouiller cela, nous vous recommandons de créer un utilisateur pour chaque installation WordPress en tant qu'utilisateur du protocole de transfert de fichiers (FTP) pour le site. Cet article suppose que vous avez un seul site et que vous nommez ce serveur wp-user
.
Utilisez la commande suivante pour créer cet utilisateur :
sudo useradd wp-user -d /home/wp-user -m -s /bin/false
Remarque :Nous vous recommandons d'utiliser uniquement l'authentification par clé Secure Shell (SSH). Si vous prévoyez d'utiliser l'authentification par mot de passe pour FTP, vous devez créer un mot de passe fort pour l'utilisateur.
Définir les autorisations
Vous devez faire d'un utilisateur, autre que l'utilisateur système du service Web, le propriétaire de la racine du document de votre site. Vous devez également refuser les autorisations d'écriture au service Web. Le service Web n'a besoin que d'une autorisation de lecture pour diffuser du contenu, et l'attribution d'autorisations d'écriture ou d'exécution laisse un vecteur d'attaque pour les étrangers. Cependant, étant donné que WordPress doit pouvoir télécharger des fichiers et mettre à jour son propre code, vous devez légèrement contourner ces règles.
Par exemple, vous devez définir la propriété de l'ensemble du répertoire sur wp-user:www-data
.
Ce paramètre signifie que wp-user
a la propriété de l'utilisateur, et www-data
(l'utilisateur système du serveur Web Apache®) est propriétaire du groupe. Selon votre système d'exploitation, cet utilisateur peut également être nommé httpd
ou apache
. Si vous utilisez nginx®, l'utilisateur est nginx
. Pour définir les autorisations, exécutez la commande suivante en remplaçant la valeur d'exemple /var/www/example.com/
avec la racine du document de votre site :
sudo chown -R wp-user:www-data /var/www/example.com/
Utilisez les autorisations de base suivantes pour votre installation WordPress :
- 755 (drwxr-xr-x) pour les dossiers
- 644 (-rw-r–r–) pour les fichiers
Ces autorisations accordent wp-user
la possibilité de tout modifier et l'accès en lecture seule au serveur Web.
L'exemple suivant montre comment attribuer ces autorisations :
find /var/www/example.com/ -type d -exec sudo chmod 755 {} \;
find /var/www/example.com/ -type f -exec sudo chmod 644 {} \;
Ces autorisations accordent wp-user
la possibilité de tout modifier et l'accès en lecture seule au serveur Web. Bien que ce soit une pratique courante pour les sites statiques, WordPress doit pouvoir accéder à certains fichiers et les exécuter pour fonctionner correctement. La liste suivante répertorie les exceptions et les autorisations que vous devez définir, en supposant la même racine de document :
find /var/www/example.com/wp-content/uploads -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/upgrade -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/themes -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/plugins -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/uploads -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/upgrade -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/themes -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/plugins -type f -exec sudo chmod 664 {} \;
sudo chmod 775 /var/www/example.com/wp-config.php
WordPress utilise ces répertoires pour les mises à jour du système, les mises à jour des thèmes et des plugins et les téléchargements de pièces jointes de blog (le plus souvent des images).
Utilisateur administrateur WordPress
Semblable à l'utilisateur racine Linux®, votre installation WordPress est livrée avec un administrateur utilisateur. Parce qu'il s'agit d'un utilisateur administratif qui existe dans presque toutes les installations WordPress, les pirates le ciblent dans des attaques par force brute. Le moyen le plus simple de fermer ce vecteur d'attaque consiste à supprimer l'utilisateur admin. Nous vous recommandons de créer un utilisateur avec un nom différent, de donner à cet utilisateur des privilèges d'administrateur, puis de supprimer l'utilisateur admin.
Mises à jour sécurisées
FTP est intrinsèquement non sécurisé, en particulier lorsque vous utilisez une authentification par mot de passe. Il est beaucoup plus sûr de configurer des mises à jour de clés SSH au lieu d'utiliser des mots de passe. Utilisez les étapes suivantes pour configurer les mises à jour de clé SSH :
-
Assurez-vous que les packages nécessaires sont installés sur votre système. Sur Ubuntu® ou Debian®, exécutez les commandes suivantes :
sudo apt-get update sudo apt-get install php5-dev libssh2-php libssh2-1-dev
-
Configurez votre accès SSH en effectuant les étapes suivantes en tant que
wp-user
. Parce que vous avez refusé la connexion en tant quewp-user
, vous devez ouvrir un shell à l'aide de la commande sudo suivante :sudo -u wp-user /bin/bash
-
Utilisez les commandes suivantes pour passer au
wp-user
répertoire personnel et configurez les clés SSH :cd ~ ssh-keygen -t rsa -b 4096 mkdir ~/.ssh; cd ~/.ssh echo 'from="127.0.0.1"' cat ~/.ssh/id_rsa.pub > authorized_keys exit
-
Ensuite, assurez-vous de définir correctement les autorisations à l'aide des commandes suivantes :
sudo chmod 700 /home/wp-user/.ssh sudo chmod 040 /home/wp-user/.ssh/* sudo chmod 644 /home/wp-user/.ssh/authorized_keys
-
Ajoutez les lignes suivantes à votre /var/www/example.com/wp-config.php fichier :
define('FTP_PUBKEY','/home/wp-user/id_rsa.pub'); define('FTP_PRIVKEY','/home/wp-user/id_rsa'); define('FTP_USER','wp-user'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22');
Vous devriez pouvoir mettre à jour WordPress, les plug-ins et les thèmes sans être invité à fournir des informations de connexion.
Plug-ins
Nous vous recommandons d'utiliser le moins de plug-ins possible pour obtenir les résultats souhaités. Cependant, nous vous recommandons d'utiliser les plug-ins suivants pour renforcer la sécurité :
- WP Security Pro :Il s'agit d'un plug-in tout-en-un doté de fonctionnalités de protection telles que la protection de la connexion, l'analyse des logiciels malveillants, l'authentification à deux facteurs et un pare-feu.
- Désactiver XML-RPC :Vous pouvez verrouiller XML-RPC en utilisant un .htaccess dossier. Cependant, à moins que vous n'ayez une raison impérieuse d'avoir besoin du contrôle à distance de votre installation WordPress, il est préférable de le désactiver pour éviter les attaques par pingback.
- Disqus :Parce que le système de commentaire utilisateur intégré pour WordPress est très sujet au spam, nous vous recommandons de désactiver l'enregistrement ouvert. Pour ce faire, accédez à Paramètres > Général , puis en décochant Tout le monde peut s'inscrire . Utilisez ensuite Disqus pour modérer les commentaires et demandez aux utilisateurs de s'authentifier auprès de leurs comptes Facebook® ou Google®.