Security Blog
Security Blog
Posted By Gregory

Transformez votre WordPress en Fort Knox

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


English version: Turn your WordPress into Fort Knox


Cet article suppose que nous souhaitons obtenir un site Web protégé à toute épreuve et alimenté par WordPress. Il ne s'agit pas nécessairement de suivre toutes les étapes suivantes mot pour mot et point par point exactement comme décrit. Mais je le recommande si vous souhaitez créer votre propre Fort Knox.

Certaines des étapes suivantes peuvent être à l'origine de problèmes d'incompatibilité avec des plugins étranges qui tentent de modifier des fichiers directement dans les dossiers WordPress. Je recommande d'ignorer tous les plugins de ce type, car leur utilisation peut entraîner de nombreux problèmes et problèmes de sécurité immédiatement ou dans le futur, lorsque des pirates ont étudié des failles dans les plugins ou le thème installé sur votre site. J'ai créé cet article dans l'espoir qu'il sera utile, mais sans aucune garantie.

Remarque : cet article ne s'applique pas si vous utilisez un hébergement mutualisé. Vous devez avoir au moins un site hébergé par VPS.

Exigences : accès root au serveur Linux sur lequel votre site Web est hébergé. Si vous n'avez pas d'accès shell avec les privilèges root, vous ne pouvez rien faire d'utile pour créer un véritable site Web protégé. Il n’existe aucun moyen ni aucun plugin permettant de protéger WordPress et les fichiers de ses répertoires au niveau PRO. Tous les plugins de sécurité ont le même niveau de privilèges (autorisations) que les pirates et les robots. Pas exception. Si un plugin de sécurité a apporté des modifications aux fichiers de votre site Web pour les protéger, tout pirate informatique ou 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. Pas exception
  • Nous devons modifier toutes les valeurs par défaut (dossier, cookies, chemin de connexion, tout autre point de repère) par des valeurs différentes
  • Nous ne devons pas utiliser de plugins ou de thèmes qui fonctionnent avec et essayer de modifier les fichiers PHP ou .htaccess dans les dossiers WordPress

La première étape. Installation de WordPress

N'utilisez pas le préfixe wp_ par défaut pour les tables de base de données. Utilisez plutôt quelques ou trois symboles alphabétiques. Certaines attaques et attaquants spécifiques à WordPress supposent que le préfixe de la table est wp_ . Changer le préfixe nous aide à bloquer certaines attaques par injection SQL.

Deuxième étape. Renforcer le site Web au niveau WordPress

  1. Déplacez le dossier de téléchargement 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 de téléchargement en média (ou quelque chose comme ça, comme vous le souhaitez).
  3. Renommez le dossier wp-content en content (ou quelque chose comme ça, comme vous le souhaitez).
  4. Renommez le dossier des plugins en mod (ou quelque chose comme ça, comme vous voulez).
  5. Ajoutez les lignes suivantes au début du fichier wp-config.php , n'oubliez pas de modifier media , content , mod par les valeurs réelles que vous avez choisies précédemment .
     définir('AUTOMATIC_UPDATER_DISABLED', true ); // oui, vous pouvez le faire manuellement en toute sécurité
    définir('DISALLOW_FILE_EDIT', true ); // nous ne permettons à personne de toucher vos fichiers
    définir('DISALLOW_FILE_MODS', true ); // oui, vous pouvez le faire manuellement en toute sécurité
    définir('FS_METHOD', 'direct'); // pas de FTP bien sur
    définir('WP_HTTP_BLOCK_EXTERNAL', true );
    définir('TÉLÉCHARGEMENTS', ' médias ' ); // nous avons renommé les téléchargements et les avons déplacés vers le niveau supérieur
    définir('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // pas de nom d'hôte, pas de barre oblique finale
    définir('WP_CONTENT_URL', 'http://example.com/ content ');
    définir('WP_PLUGIN_DIR', '/path/to/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ésactive l'affichage des erreurs PHP sur le front-end

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

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

 définir('USER_COOKIE', 'mon_utilisateur_cookie' ); // change-le en quelque chose de différent
définir('PASS_COOKIE', 'mon_pass_cookie' ); // change-le en quelque chose de différent
définir('AUTH_COOKIE', 'mon_auth_cookie' ); // change-le en quelque chose de différent
définir('SECURE_AUTH_COOKIE', 'mon_sec_cookie' ); // change-le en quelque chose de différent
définir('LOGGED_IN_COOKIE', 'mon_logged_cookie' ); // change-le en quelque chose de différent
définir('TEST_COOKIE', 'mon_test_cookie' ); // change-le en quelque chose de différent

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

Protégez votre page de connexion avec WP Cerber Security . Même avec les étapes de protection ci-dessus, les pirates tenteront d’appliquer des attaques par force brute (tentatives de connexion) pour forcer la porte de votre site Web WordPress. Cachez et fermez cette porte avec WP Cerber.

Cinquième étape. Renforcement du site Web au niveau du serveur.

À cette étape, je suppose que vous utilisez un serveur avec Apache comme serveur http. Nous devons changer le propriétaire de tous les fichiers WordPress, y compris les plugins et les thèmes. Par défaut, cet utilisateur est Apache . Nous devons le remplacer par un autre utilisateur que vous avez déjà créé à cet effet. Disons que cet utilisateur est cerber .

  1. Placez le fichier .htaccess dans le dossier multimédia (votre nouveau dossier de téléchargement) contenant la directive suivante. Cela empêche le site Web d’exécuter du code PHP malveillant téléchargé.
     Moteur php_flag désactivé

    Remarque : Le fichier de configuration Apache doit contenir la directive AllowOverride Options pour votre dossier de téléchargement ou l'un de ses dossiers parents pour que cette directive fonctionne.

  2. Pour l'ensemble du répertoire du site Web (/path/to/wordpress/dir), modifiez le propriétaire et les autorisations pour tous les fichiers. Pour ce faire, exécutez les commandes suivantes dans le shell.
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    find /path/to/wordpress/dir -type d -exec chmod 755 {} +
    find /path/to/wordpress/dir -type f -exec chmod 644 {} +

  3. Pour le répertoire de téléchargement (/path/to/wordpress/dir/ media ), nous devons définir des autorisations spéciales. Faisons cela en utilisant les commandes exec dans le shell
     find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
    find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
    find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} +

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

  5. Déplacez le fichier wp-config.php vers le répertoire situé au-dessus de votre répertoire d'installation WordPress.

Sixième étape. Renforcement du site Web au niveau du serveur NGINX

Lire ici : Renforcer WordPress avec WP Cerber et NGINX

Septième étape. Renforcer le site Web avec Fail2Ban

Lisez 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.