Aujourd’hui tuto bonne pratique wordpress sécurité
Nous allons voir comment séparer l’admin de wordpress vers un sous-domaine. Exemple : votre site https://exemple.com et l’admin sur https://admin.exemple.com
Configuration Serveur
Mise en place de 3 liens symboliques dans le repertoire wp-admin
Dans le répertoire wp-admin
ln -s ../wp-includes ./ ln -s ../wp-content ./ ln -s . wp-admin
Config Apache
2 vhosts à déclarer pour pouvoir séparer l’url d’admin
- L’url de l’admin
ServerName admin.exemple.com DocumentRoot /path/to/wordpress/wp-admin SSLEngine on SSLCertificateFile /path/to/server.crt SSLCertificateKeyFile /path/to/server.key
- Le site
ServerName exemple.com DocumentRoot /path/to/wordpress/ SSLEngine on SSLCertificateFile /path/to/server.crt SSLCertificateKeyFile /path/to/server.key CustomLog /path/to/apache_access.log common
Config WordPress
wp-config.php
Ajouter ces lignes dans votre fichier wp-config.php en les adaptant à votre domaine
define('ADMIN_SITEURL', 'https://admin.exemple.com'); define( 'ADMIN_COOKIE_PATH', FALSE ); define( 'COOKIE_DOMAIN', '.exemple.com' ); if ($_SERVER['HTTP_SSL'] == 'on') $_SERVER['HTTPS']='on'; if('https://' . $_SERVER['HTTP_HOST'] == ADMIN_SITEURL) $_SERVER['PHP_SELF'] = '/wp-admin' . $_SERVER['PHP_SELF'];
.htaccess
Ajouter ces lignes dans votre fichier .htaccess en les adaptant à votre domaine
Header set Access-Control-Allow-Origin "*" RewriteEngine On RewriteBase / RewriteCond ${HTTP_HOST} exemple.com RewriteRule ^/wp-admin/(.*) https://admin.exemple.com/$1 [R=301,QSA,L] # BEGIN WordPress RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=on [NC] RewriteCond ${HTTP_HOST} exemple.com RewriteRule ^/wp-admin/(.*) https://admin.exemple.com/$1 [R=301,QSA,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
wp-login.php
- Copie et modification du fichier wp-login.php dans le dossier wp-admin
- Comme le vhost admin pointe vers le répertoire wp-admin, on indique à WordPress d’aller chercher les fichier wp-load.php un répertoire au-dessus dans l’arborescence
Remplacer la ligne
require( dirname(__FILE__) . '/wp-load.php' );
par
require( dirname(__FILE__) . '/../wp-load.php' );
- Modifier les 4 formulaires qui font appel à l’admin WordPress
Dans la version WordPress 3.9, les modifications se situent aux lignes 526, 603, 692 et 858 : remplacer l’appel à site_url() par admin_url()
Dans la version WordPress 4.0, les modifications se situent aux lignes 528, 616, 705 et 865 : remplacer les appels à network_site_url() et site_url() par admin_url()
de