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 part du principe que nous souhaitons obtenir un site Web protégé par des balles propulsé par WordPress. Il n'est pas nécessaire de suivre toutes les étapes suivantes mot pour mot et point par point exactement comme décrit. Mais je vous 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 certains plugins étranges qui tentent de modifier les 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 à l'avenir, lorsque des pirates informatiques étudieront les failles des plugins ou du 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 partagé. Vous devez disposer au moins d'un site hébergé sur 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 des 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 qui puisse 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 pirates et les robots. Aucune exception. Si un plugin de sécurité a apporté des modifications aux fichiers de votre site Web pour les protéger, tout pirate 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. Aucune exception
- Nous devons modifier toutes les valeurs par défaut (dossier, cookies, chemin de connexion, tout autre point de repère) en des valeurs différentes
- Nous ne devons pas utiliser de plugins ou de thèmes qui fonctionnent avec et tentent de modifier les fichiers PHP ou .htaccess dans les dossiers WordPress
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 deux ou trois symboles alphabétiques. Certaines attaques et attaquants spécifiques à WordPress supposent que le préfixe de la table est wp_
. La modification du préfixe nous aide à bloquer certaines attaques par injection SQL.
Deuxième étape : Renforcement du site Web au niveau de WordPress
- Déplacez le dossier de téléchargements vers le haut d'un niveau, de l'intérieur du dossier /wp-content/ vers la racine de votre dossier d'installation WordPress.
- Renommez le dossier de téléchargement en média (ou quelque chose comme ça, comme vous le souhaitez).
- Renommez le dossier wp-content en contenu (ou quelque chose comme ça, comme vous le souhaitez).
- Renommez le dossier des plugins en mod (ou quelque chose comme ça, comme vous le souhaitez).
- 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 .
define('AUTOMATIC_UPDATER_DISABLED', true ); // oui, il est possible de le faire manuellement en toute sécurité
define('DISALLOW_FILE_EDIT', true ); // nous ne permettons jamais à quiconque de toucher à vos fichiers
define('DISALLOW_FILE_MODS', true ); // oui, il est prudent de le faire manuellement
define('FS_METHOD', 'direct'); // pas de FTP bien sûr
définir('WP_HTTP_BLOCK_EXTERNAL', vrai );
define('UPLOADS', ' media ' ); // nous avons renommé les téléchargements et les avons déplacés vers un niveau supérieur
define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // pas de nom d'hôte, pas de barre oblique finale
define('WP_CONTENT_URL', 'http://example.com/ contenu ');
define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // pas de nom d'hôte, pas de barre oblique de fin
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 : 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' ); // changez-le en quelque chose de différent
define('PASS_COOKIE', 'my_pass_cookie' ); // changez-le en quelque chose de différent
define('AUTH_COOKIE', 'my_auth_cookie' ); // changez-le en quelque chose de différent
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // changez-le en quelque chose de différent
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // le changer en quelque chose de différent
define('TEST_COOKIE', 'my_test_cookie' ); // changez-le en quelque chose de différent
Étape 4. 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 mesures de protection ci-dessus, les pirates informatiques tenteront d'appliquer des attaques par force brute (tentatives de connexion) pour ouvrir la porte de votre site Web WordPress. Cachez et fermez cette porte avec WP Cerber.
Étape 5. 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 créé à cet effet auparavant. Disons que cet utilisateur est cerber .
- Placez le fichier .htaccess dans le dossier media (votre nouveau dossier de téléchargements) avec la directive suivante. Cela empêche le site Web d'exécuter le 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échargements ou l'un de ses dossiers parents pour que cette directive fonctionne. - Pour l'ensemble du répertoire du site Web (/path/to/wordpress/dir), modifiez le propriétaire et les autorisations de tous les fichiers. Pour ce faire, exécutez les commandes suivantes dans le shell.
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 {} + - 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
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 {} + - Configurez la structure du lien permanent dans les paramètres WordPress, puis modifiez l'autorisation du fichier .htaccess pour le protéger en écriture.
chown cerber:root /chemin/vers/wordpress/dir/.htaccess
chmod 644 /chemin/vers/wordpress/dir/.htaccess - Déplacez le fichier wp-config.php dans le répertoire au-dessus de votre répertoire d'installation WordPress.
Étape 6. Renforcement de la sécurité du site Web au niveau du serveur NGINX
Lire ici : Renforcer WordPress avec WP Cerber et NGINX
Étape 7. Renforcement du site Web avec Fail2Ban
Lire ici : Comment protéger WordPress avec Fail2Ban