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
- 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.
- Renommez le dossier de téléchargement en média (ou quelque chose comme ça, comme vous voulez).
- Renommez le dossier wp-content en contenu (ou quelque chose comme ça, comme vous voulez).
- Renommez le dossier plugins en mod (ou quelque chose comme ça, comme vous voulez).
- 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 .
- 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. - 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 {} + - 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 {} + - 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 - 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