Languages: English • Français • 日本語 (Add your language)
Page d'accueil du Codex en français - Télécharger WordPress en français
Les utilisateurs francophones se retrouvent sur le site WordPress-Francophone, notamment sur son forum d'entraide.
Contrairement aux piratages qui se concentrent sur des vulnérabilités dans un logiciel, une attaque par force brute est le type de méthode la plus simple pour accéder à un site : il essaye des noms d'utilisateur et des mots de passe, encore et encore, jusqu'à ce qu'il arrive à entrer. Souvent considéré comme "inélégante", cette méthode fonctionne très souvent lorsque les gens utilisent des mots de passe comme « 123456 » et les noms d'utilisateur comme « admin ».
En bref, ils s'attaquent au maillon faible de la sécurité de tout site Web : Vous.
En raison de la nature de ces attaques, vous pouvez voir la mémoire de votre serveur exploser, provoquant des problèmes de performance. C'est dû au nombre de requêtes HTTP (c'est le nombre de fois que quelqu'un visite votre site) qui est tellement élevé que les serveurs sont à cours de mémoire.
Ce genre d'attaque est pas endémique à WordPress, cela arrive avec chaque application Web ici ou là, mais WordPress étant populaire cela fait donc de lui une cible fréquente.
Un point d'attaque commun sur WordPress est de s'acharner sur le fichier wp-login.php encore et encore jusqu'à ce qu'ils entrent ou que le serveur meurt. Vous pouvez faire certaines choses pour vous protéger.
La majorité des attaques supposent que les gens utilisent l'identifiant « admin » en raison du fait que les premières versions de WordPress utilisaient cela par défaut. Si vous utilisez encore ce nom d'utilisateur, créez un nouveau compte, transférez tous les articles à ce compte, et changer 'admin' à un profil abonné (ou supprimez-le complètement).
Vous pouvez utiliser l'extension Admin Renamer Extended pour changer le nom d'utilisateur en place.
L'objectif avec votre mot de passe est de le rendre difficile à deviner pour d'autres personnes et résistant pour résister à une attaque par force brute. Il existe beaucoup de générateurs automatiques de mot de passe qui peuvent être utilisés pour créer des mots de passe sécurisés.
WordPress dispose également d'un système de mesure de la force du mot de passe qui s'affiche lors du changement de votre mot de passe dans WordPress. Utilisez-le lorsque vous changez votre mot de passe pour assurer que sa solidité est adéquate.
Vous pouvez utiliser l'extension Appliquer des mots de passe forts pour forcer les utilisateurs à définir des mots de passe sûrs.
Les choses à éviter lors du choix d'un mot de passe :
Un mot de passe sécurisé est nécessaire pas simplement pour protéger le contenu de votre blog. Un pirate qui accède à votre compte administrateur est en mesure d'installer des scripts malveillants qui peuvent potentiellement compromettre tout votre serveur.
Pour augmenter encore la force de votre mot de passe, vous pouvez activer Two Step Authentication (en anglais) pour protéger davantage votre blog.
Il y a beaucoup d'extensions disponibles pour limiter le nombre de tentatives de connexion faites pour votre site. Sinon, il y a aussi beaucoup d'extensions que vous pouvez utiliser pour empêcher les gens d'accéder à wp-admin complètement.
Si vous décidez de verrouiller wp-login.php ou wp-admin, vous pouvez trouver obtenir une erreur 404 ou 401 lorsque vous tentez d'accéder à ces pages. Pour éviter cela, vous devrez ajouter ce qui suit à votre fichier .htaccess.
ErrorDocument 401 default
Vous pouvez avoir l'erreur 401 qui pointe sur 401.html, mais le point visé n'est pas WordPress.
Pour Nginx vous pouvez utiliser la directive error_page mais vous devez fournir une url absolue.
error_page 401 http://example.com/forbidden.html;
Protéger par un mot de passe votre fichier wp-login.php (et le dossier wp-admin) peut ajouter une couche supplémentaire à votre serveur. Parce qu'un mot de passe protégeant wp-admin peut casser une extension utilisant ajax sur la partie publique du site, il est généralement suffisant de ne protéger simplement que wp-login.
Pour ce faire, vous devrez créer un fichier .htpasswd. Beaucoup d'hébergeurs ont des outils pour le faire pour vous, mais si vous avez à le faire manuellement, vous pouvez utiliser ceci htpasswd generator (en anglais). Tout comme votre fichier .htaccess (qui est un fichier qui n'est seulement qu'une extension), .htpasswd n'aura également pas de préfixe.
Vous pouvez soit mettre ce fichier en dehors de votre dossier web public (pas dans /public_html/ ou /domain.com/, en fonction de votre hébergeur), ou vous pouvez le mettre dans le même répertoire, mais vous aurez envie de faire un peu de travail de sécurité supplémentaire dans votre fichier .htaccess si vous le faites.
Une fois que vous avez téléchargé le fichier .htpasswd, vous devez dire au .htaccess où il est placé. En supposant que vous avez mis .htpasswd dans le répertoire d'accueil de votre compte utilisateur et votre nom d'utilisateur de votre .htpasswd est mysecretuser, alors vous mettez dans votre .htaccess :
# Empêcher Apache de délivrer les fichiers .ht* <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> # Protection wp-login <Files wp-login.php> AuthUserFile ~/.htpasswd AuthName "Private access" AuthType Basic require user mysecretuser </Files>
L'emplacement réel des AuthUserFile dépend de votre serveur, et le 'require user' changera en fonction du nom d'utilisateur que vous choisirez.
Si vous utilisez Nginx vous pouvez protéger par un mot de passe votre fichier wp-login.php en utilisant le HttpAuthBasicModule (en anglais). Ce bloc doit être à l'intérieur de votre bloc de serveur.
location /wp-login.php { auth_basic "Administrator Login"; auth_basic_user_file .htpasswd; }
The filename path is relative to directory of nginx configuration file nginx.conf The file should be in the following format:
user:pass user2:pass2 user3:pass3
Les mots de passe doivent être encodés par la fonction crypt(3). Vous pouvez utiliser en ligne htpasswd generator (en anglais) pour crypter votre mot de passe.
Si vous êtes la seule personne qui a besoin de se connecter à votre espace d'administration et que vous avez une adresse IP fixe, vous pouvez refuser l'accès de wp-admin à tout le monde sauf vous par un fichier .htaccess.
Créez un fichier texte brut appelé .htaccess dans un éditeur de texte et ajoutez :
# Bloquer l'accès à wp-admin. order deny,allow allow from x.x.x.x deny from all
Remplacer x.x.x.x avec votre adresse IP. Votre fournisseur d'accès Internet peut vous aider à établir votre adresse IP. Ou vous pouvez utiliser un service en ligne comme What Is My IP (en Anglais).
Pour Nginx vous pouvez ajouter un bloc d'emplacement dans votre bloc de serveur qui fonctionne de la même manière que l'exemple ci-dessus Apache.
error_page 403 http://example.com/forbidden.html; location /wp-admin { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; deny all; }
Notez que l'ordre de deny/allow est de la plus haute importance. Vous pourriez être tenté de penser que vous pouvez changer l'ordre des directives d'accès et tout fonctionnera. En fait, ce n'est pas le cas. Le changement de l'ordre dans l'exemple ci-dessus présente aura pour résultat de refuser l'accès à toutes les adresses.
Si votre thème ou vos extensions utilisent AJAX, vous aurez probablement besoin d'ajouter un groupe supplémentaire de paramètres à votre .htaccess de manière à ce que cette fonctionnalité continue de fonctionner :
# Autoriser les accès à wp-admin/admin-ajax.php <Files admin-ajax.php> Order allow,deny Allow from all Satisfy any </Files>
Enregistrez le fichier et transférer-le dans à votre dossier wp-admin.
Encore une fois pour Nginx si vous limitez l'accès wp-admin et et que vous utilisez ajax vous aurez besoin d'ajouter un autre bloc d'emplacement à votre bloc de serveur.
location /wp-admin/admin-ajax.php { allow all; }
Vous pouvez ajouter plus d'une adresse IP autorisée en utilisant :
# Bloquer l'accès à wp-admin. order deny,allow allow from x.x.x.x allow from y.y.y.y allow from z.z.z.z deny from all
Cela peut être utile si vous utilisez plus d'un fournisseur d'accès Internet pour administrer votre site (si par exemple, vous accédez également à la zone d'administration de votre site par votre opérateur de téléphonie mobile) ou si vous avez un très petit groupe de gens qui sont autorisés à accéder à la zone d'administration de votre site.
Si vous avez besoin pour permettre l'accès à un grand bloc d'adresses IP, essayez d'utiliser quelque chose comme :
# Bloquer l'accès à wp-admin. order deny,allow allow from x.x.x.* deny from all
Utiliser par exemple 192.168.1.* permettrait l'accès à toutes les adresses IP dans la plage 192.168.1.
Étendu à partir de Combatting Comment Spam (en anglais), vous pouvez l'utiliser pour empêcher quiconque qui ne soumet pas le formulaire de connexion d'y accéder :
# Stopper les attaques de connexions et commentaires indésirables <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .(wp-comments-post|wp-login)\.php* RewriteCond %{HTTP_REFERER} !.*example.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) http://%{REMOTE_ADDR}/$1 [R=301,L] </ifModule>
Nginx - Interdire les requêtes sans référent
location ~* (wp-comments-posts|wp-login)\.php$ { if ($http_referer !~ ^(http://example.com) ) { return 405; } }
Changez example.com par votre domaine. Si vous utilisez le multisite avec des domaines mappés, vous aurez besoin de changer example.com par (example.com|example.net|example4.com)
et ainsi de suite.
Si vous utilisez ModSecurity, vous pouvez suivre les conseils de Frameloss - Arrêter les connexions par force brute contre WordPress (en anglais). Cela exige l'accès de niveau root sur votre serveur, et vous aurez peut-être besoin de l'aide de votre hébergeur.
Si vous utilisez ModSecurity 2.7.3, vous pouvez ajouter les règles dans votre fichier .htaccess à la place.
Fail2ban est un démon Python qui fonctionne en tâche de fond. Il vérifie les fichiers journaux qui sont générés par Apache (ou SSH par exemple), et sur certains événements, il peut ajouter une règle de pare-feu. Il utilise un filtre avec une expression régulière. Si cette expression régulière est détectée par exemple 5 fois en 5 minutes, il peut bloquer cette adresse IP pendant 60 minutes (ou n'importe quel autre ensemble de nombres). L'installation et la configuration Fail2ban nécessitent un accès root.
Il semble que la plupart des attaques par force brute sont des hôtes en provenance de Russie, du Kazakhstan et d'Ukraine. Vous pouvez choisir de bloquer les adresses IP qui proviennent de ces pays. Il y a des listes de blocage disponibles sur Internet que vous pouvez télécharger. Avec un peu de scripts shell, vous pouvez ensuite charger les règles de blocages dans iptables. Vous devez être conscient que vous bloquez les utilisateurs légitimes ainsi que des attaquants. Assurez-vous que vous pouvez justifier et expliquer cette décision à vos clients.
Outre les les listes de blocage par pays, il y a des listes avec les adresses IP des spammeurs connus. Vous pouvez également les utiliser pour les bloquer avec iptables. Il est bon de mettre à jour ces listes régulièrement.
La mise en place de listes noires et iptables nécessitent un accès root.
Des services comme CloudFlare et Sucuri CloudProxy peuvent également aider à atténuer ces attaques en bloquant les adresses IP avant qu'elles n'atteignent votre serveur.