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é à l'épreuve des balles, propulsé par WordPress. Ce n'est pas nécessairement que vous fassiez toutes les étapes suivantes, mot pour mot et point par point, exactement comme décrit. Mais je le recommande si vous voulez créer votre propre Fort Knox.

Certaines des étapes suivantes peuvent être à l'origine de problèmes d'incompatibilité avec certains 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 poser de nombreux problèmes de sécurité, immédiatement ou à l'avenir, lorsque les pirates informatiques étudient les failles des plugins ou des thèmes installés sur votre site. J'ai créé cet article dans l'espoir qu'il vous sera utile, mais sans aucune garantie.

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

Conditions requises: accès root au serveur Linux sur lequel votre site Web est hébergé. Si vous n'avez pas d'accès au 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'y a aucun moyen ni aucun plugin de protéger WordPress et les fichiers de ses répertoires à un niveau PRO. Tous les plugins de sécurité ont le même niveau de privilèges (autorisations) que les hackers et les bots. Pas exception. Si un plug-in de sécurité a apporté des modifications dans les fichiers de votre site Web pour les protéger, tout pirate informatique ou tout code malveillant peut annuler ces modifications ou supprimer la protection.

Voici quelques points importants sur 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) en valeurs différentes.
  • Nous ne devons pas utiliser de plugins ou de thèmes fonctionnant avec et essayant de changer les fichiers PHP ou .htaccess dans les dossiers WordPress

La première étape. Installer WordPress

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

Deuxième étape Durcissement du site Web au niveau WordPress

  1. Déplacez le dossier de téléchargement d'un niveau supérieur, de l'intérieur du dossier / wp-content / à 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 voulez).
  3. Renommez le dossier wp-content en contenu (ou quelque chose comme ça, comme vous voulez).
  4. Renommez le dossier 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 changer le média , le contenu , le mod en valeurs réelles que vous avez précédemment choisies .
     define ('AUTOMATIC_UPDATER_DISABLED', true); // oui, c'est sûr de le faire manuellement 
    define ('DISALLOW_FILE_EDIT', true); // nous ne permettons jamais à quiconque de toucher vos fichiers
    define ('DISALLOW_FILE_MODS', true); // oui, c'est sûr de le faire manuellement
    define ('FS_METHOD', 'direct'); // pas de FTP bien sûr
    define ('WP_HTTP_BLOCK_EXTERNAL', true);
    define ('UPLOADS', ' media '); // nous avons renommé les téléchargements et l'avons déplacé de niveau supérieur
    define ('WP_CONTENT_DIR', '/ chemin / vers / wordpress / dir / contenu '); // pas de nom d'hôte, pas de barre oblique
    define ('WP_CONTENT_URL', 'http://example.com/ content ');
    define ('WP_PLUGIN_DIR', '/ chemin / vers / wordpress / dir / contenu / mod '); // pas de nom d'hôte, pas de barre oblique
    define ('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
    ini_set ('display_errors', 0); // désactiver 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

 define ('USER_COOKIE', 'mon_utilisateur_cookie'); // change le en quelque chose de différent 
define ('PASS_COOKIE', 'my_pass_cookie'); // change le en quelque chose de différent
define ('AUTH_COOKIE', 'mon_auth_cookie'); // change le en quelque chose de différent
define ('SECURE_AUTH_COOKIE', 'my_sec_cookie'); // change le en quelque chose de différent
define ('LOGGED_IN_COOKIE', 'mon_logged_cookie'); // change le en quelque chose de différent
define ('TEST_COOKIE', 'mon_test_cookie'); // change le en quelque chose de différent

Quatrième étape. Installer 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 mesures de protection ci-dessus, les pirates essaieront d’appliquer des attaques par force brute (tentatives de connexion) pour percer 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.

Sur cette étape, je suppose que vous utilisez un serveur avec Apache en tant que 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 changer pour un autre utilisateur, vous avez créé à cet effet auparavant. Disons que cet utilisateur est cerber .

  1. Placez le fichier .htaccess dans le dossier de support (votre nouveau dossier de téléchargement) avec la directive suivante. Cela empêche le site Web d'exécuter du code PHP malveillant téléchargé.
     php_flag éteint le moteur 

    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 tout le répertoire du site Web (/ path / to / wordpress / dir), changez le propriétaire et les autorisations pour tous les fichiers. Pour ce faire, exécutez les commandes suivantes dans le shell.
     trouver / chemin / vers / 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-le en utilisant des commandes exec dans le shell
     trouver / chemin / vers / 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 de permalien dans les paramètres WordPress, puis modifiez l’autorisation du fichier .htaccess de le protéger en écriture.
     cerf chown: root /path/to/wordpress/dir/.htaccess 
    chmod 644 /path/to/wordpress/dir/.htaccess

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

Étape six. Renforcement du site Web au niveau du serveur NGINX

Lire ici: Durcissement de WordPress avec WP Cerber et NGINX

Étape sept. Renforcer le site 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.