Cet article traite des méthodes techniques de sécurisation de votre système de fichiers WordPress et est destiné à être utilisé par les ingénieurs. Les conseils fournis aux présentes doivent être utilisés comme ligne directrice, étant entendu que les autorisations réelles du système de fichiers varieront en fonction de la distribution Linux et d’autres variables environnementales.
Autorisations de fichier
Pour les installations où l’administrateur a accès aux fichiers de base WordPress (p. ex. local, Infrastructure-service, hébergement VPS), des autorisations de fichiers doivent être définies pour s’assurer que les autres processus et utilisateurs de la plateforme de serveur Web ont un accès limité et approprié. Le tableau suivant résume les exigences en matière d’autorisations.
Sous Linux, WordPress recommande les autorisations « 755 » pour tous les répertoires WordPress et les autorisations « 644 » pour tous les autres fichiers. Cela peut être automatisé comme suit :
find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
Nous vous recommandons de sécuriser davantage ces fichiers selon votre environnement. Bien que les directives ci-dessus soient généralement acceptables, il est possible d’en faire beaucoup plus pour restreindre davantage l’accès aux fichiers WordPress. Le respect du principe du « moindre privilège » est également important ici.
Fixation de wp-admin
Le répertoire /wp-admin/ est utilisé uniquement par ceux qui se connectent au site WordPress et non par le grand public. Par conséquent, il peut être possible de sécuriser davantage ces zones en limitant l’accès aux utilisateurs qui se connectent à partir d’un emplacement spécifique ou qui ont un mot de passe global. Pour ce faire, utilisez les mécanismes « d’authentification de base » HTTP disponibles dans la configuration du serveur Web.
Le code suivant peut être ajouté à votre .htaccess pour permettre uniquement l'accès au répertoire wp-admin à partir de l'adresse IP 1.2.3.4.
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
En outre (ou alternativement), le répertoire peut être protégé par un mot de passe supplémentaire. Cela ne devrait pas utiliser le même mot de passe que votre mot de passe WordPress et pourrait être partagé avec un petit groupe. En général, le partage de mot de passe n’est pas recommandé. Cependant, ce mot de passe donnera accès à l’écran de connexion en premier.
Dans le fichier /wp-admin/.htaccess, ajoutez :
AuthName "My Org Access Only"
AuthUserFile /path/to/passwords/.htpasswd
AuthType basic
require user myusername
Pour créer le fichier de mot de passe, utilisez la commande :
htpasswd -c /path/to/passwords/.htpasswd myusername
La fixation du wp comprend
De nombreux fichiers du répertoire /wp-includes/ ne doivent être consultés qu’à l’interne par d’autres scripts. Cependant, tous les fichiers de ce répertoire se trouvent dans la racine Web et sont accessibles directement par défaut. Une méthode pour empêcher l’accès direct à ces fichiers est l’utilisation des règles mod_rewrite dans Apache. Les recommandations suivantes sont faites par WordPress pour être ajoutées au fichier .htaccess (ou .conf, le cas échéant) :
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
Sécurisation de la configuration wp
Le fichier wp-config.php est le plus sensible de tous les fichiers de configuration WordPress et doit être protégé en conséquence. Les recommandations suivantes sont faites pour aider à sécuriser ce fichier :
1. Déplacer le fichier wp-config hors de Webroot dans un répertoire de configuration externe
2. Modifiez les autorisations de fichier pour qu’elles soient lisibles uniquement par le serveur Web :
chown apache.apache /path/to/config/wp-config.php
chmod 400 /path/to/config/wp-config.php
3. Créer des règles .htaccess pour empêcher l'accès externe direct au fichier wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
Si vous suivez les étapes 1 et 2 ci-dessus, vous ne devriez pas avoir à mettre en œuvre la 3e recommandation. Nous recommandons, au minimum, de mettre en œuvre la troisième recommandation.
Refuser la modification de fichier
WordPress permet aux administrateurs de modifier les fichiers PHP à partir du Web. Cela peut présenter une vulnérabilité importante si le compte administrateur est compromis. Nous recommandons de désactiver cette fonctionnalité en incluant la ligne suivante dans le fichier wp-config.php :
define('DISALLOW_FILE_EDIT', true);
Cet article contient des documents techniques destinés aux développeurs et aux administrateurs de systèmes. Veuillez demander des services professionnels si vous n’êtes pas à l’aise avec les changements que vous voyez dans cet article.
Comme toujours, pour obtenir plus de renseignements à ce sujet, veuillez communiquer avec nous; nous sommes là pour vous aider!