Security Blog
Security Blog
Posted By Gregory

Transformez votre WordPress en forteresse Knox

Comment transformer WordPress en une forteresse protégée comme Fort Knox


English version: Turn your WordPress into Fort Knox


Cet article part du principe que vous souhaitez obtenir un site web ultra-sécurisé sous WordPress. Il n'est pas nécessaire de suivre scrupuleusement chaque étape décrite. Cependant, je vous le recommande vivement si vous voulez créer votre propre forteresse numérique.

Certaines des étapes suivantes peuvent entraîner des problèmes de compatibilité avec des extensions particulières qui modifient directement les fichiers dans les dossiers WordPress. Je recommande d'ignorer ce type d'extensions, car leur utilisation peut causer de nombreux problèmes et failles de sécurité, immédiatement ou ultérieurement, si des pirates informatiques exploitent des vulnérabilités dans les extensions ou le thème installés sur votre site. Cet article a été rédigé dans l'espoir qu'il vous sera utile, mais sans aucune garantie.

Remarque : cet article ne s’applique pas aux hébergements mutualisés. Vous devez disposer au minimum d’un site hébergé sur un serveur privé virtuel (VPS).

Prérequis : accès root au serveur Linux hébergeant votre site web. Sans accès shell avec privilèges root, la création d’un site web réellement protégé est impossible. Aucun plugin ni outil de sécurité ne permet de protéger WordPress et ses fichiers de manière professionnelle. Tous les plugins de sécurité disposent des mêmes privilèges (permissions) que les pirates et les robots. Sans exception. Si un plugin de sécurité modifie des fichiers de votre site web pour les protéger, un pirate ou un code malveillant peut annuler ces modifications ou supprimer la protection.

Voici quelques points importants concernant mon approche.

  • Tous les fichiers de code (code PHP) et tous les fichiers .htaccess doivent être protégés en écriture. Aucune exception.
  • Nous devons modifier toutes les valeurs par défaut (dossier, cookies, chemin de connexion, et tous les autres points de repère) et leur attribuer des valeurs différentes.
  • Nous ne devons pas utiliser de plugins ou de thèmes qui interagissent avec les fichiers PHP ou .htaccess dans les dossiers WordPress et tentent de les modifier.

Étape 1. Installation de WordPress

N'utilisez pas le préfixe par défaut wp_ pour les tables de base de données. Utilisez plutôt deux ou trois lettres. Certaines attaques spécifiques à WordPress et certains attaquants partent du principe que le préfixe des tables est wp_ . Modifier le préfixe permet de bloquer certaines attaques par injection SQL.

Deuxième étape. Renforcement de la sécurité du site web au niveau de WordPress

  1. Déplacez le dossier uploads d'un niveau vers le haut, de l'intérieur du dossier /wp-content/ vers la racine de votre dossier d'installation WordPress.
  2. Renommez le dossier uploads en media (ou quelque chose de similaire, comme vous le souhaitez).
  3. Renommez le dossier wp-content en content (ou quelque chose de similaire, selon votre choix).
  4. Renommez le dossier plugins en mod (ou quelque chose de similaire, comme vous le souhaitez).
  5. Ajoutez les lignes suivantes au début du fichier wp-config.php , n'oubliez pas de remplacer media , content et mod par les valeurs que vous avez choisies précédemment .
     define('AUTOMATIC_UPDATER_DISABLED', true); // Oui, vous pouvez le faire manuellement sans problème.
    define('DISALLOW_FILE_EDIT', true); // Nous n'autorisons jamais personne à modifier vos fichiers
    define('DISALLOW_FILE_MODS', true); // oui, vous pouvez le faire manuellement sans risque
    define('FS_METHOD', 'direct'); // pas de FTP bien sûr
    définir('WP_HTTP_BLOCK_EXTERNAL', vrai );
    define('UPLOADS', ' media ' ); // Nous avons renommé uploads et l'avons déplacé au niveau supérieur.
    define('WP_CONTENT_DIR', '/chemin/vers/le/répertoire/wordpress/ content '); // pas de nom d'hôte, pas de barre oblique finale
    définir('WP_CONTENT_URL', 'http://example.com/ content ');
    define('WP_PLUGIN_DIR', '/chemin/vers/wordpress/dir/ content / mod '); // pas de nom d'hôte, pas de barre oblique finale
    définir('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
    ini_set('display_errors',0); // Désactiver l'affichage des erreurs PHP côté client

Troisième étape. Modifier le nom des cookies par défaut.

Ajoutez ces lignes au début du fichier wp-config.php

 define('USER_COOKIE', 'my_user_cookie' ); // à modifier
define('PASS_COOKIE', 'my_pass_cookie' ); // à modifier
define('AUTH_COOKIE', 'my_auth_cookie' ); // à modifier
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // à modifier
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // à modifier
define('TEST_COOKIE', 'my_test_cookie' ); // à modifier

Étape quatre. Installez un plugin de sécurité immédiatement après l'installation de WordPress.

Protégez votre page de connexion avec WP Cerber Security . Malgré les mesures de protection mentionnées ci-dessus, les pirates tenteront d'accéder à votre site WordPress par des attaques par force brute (tentatives de connexion). Masquez et bloquez cette porte d'entrée avec WP Cerber.

Étape cinq. Renforcement de la sécurité du site web au niveau du serveur.

À cette étape, je suppose que vous utilisez un serveur Apache comme serveur HTTP. Nous devons modifier le propriétaire de tous les fichiers WordPress, y compris les extensions et les thèmes. Par défaut, cet utilisateur est « apache » . Nous devons le remplacer par un autre utilisateur que vous avez créé à cet effet au préalable. Supposons que cet utilisateur soit « cerber » .

  1. Placez le fichier .htaccess dans le dossier media (votre nouveau dossier d'uploads) et insérez-y la directive suivante. Cela empêchera le site web d'exécuter le code PHP malveillant téléchargé.
     php_flag moteur désactivé

    Remarque : pour que cette directive fonctionne, le fichier de configuration Apache doit contenir la directive AllowOverride Options pour votre dossier uploads ou l’un de ses dossiers parents.

  2. Pour l'ensemble du répertoire du site web (/chemin/vers/wordpress/dir), modifiez le propriétaire et les permissions de tous les fichiers. Pour ce faire, exécutez les commandes suivantes dans le terminal.
     trouver /chemin/vers/wordpress/dir -exec chown cerber:root {} +
    trouver /chemin/vers/wordpress/dir -type d -exec chmod 755 {} +
    trouver /chemin/vers/wordpress/dir -type f -exec chmod 644 {} +

  3. Pour le répertoire d'uploads (/chemin/vers/wordpress/dir/ media ), nous devons définir des permissions spécifiques. Pour ce faire, utilisons les commandes exec dans le shell.
     trouver /chemin/vers/wordpress/dir/ media -exec chown cerber:apache {} +
    trouver /chemin/vers/wordpress/dir/ media -type d -exec chmod 775 {} +
    trouver /chemin/vers/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. Configurez la structure des liens permanents dans les paramètres WordPress, puis modifiez les permissions du fichier .htaccess pour le protéger en écriture.
     chown cerber:root /chemin/vers/wordpress/dir/.htaccess
    chmod 644 /chemin/vers/wordpress/dir/.htaccess

  5. Déplacez le fichier wp-config.php dans le répertoire parent de votre répertoire d'installation WordPress.

Étape six. Renforcement de la sécurité du site web au niveau du serveur NGINX

Lire ici : Sécuriser WordPress avec WP Cerber et NGINX

Étape sept. Renforcer la sécurité du site web avec Fail2Ban

Lire ici : Comment protéger WordPress avec Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.