Stopper toutes les attaques en force brute, c’est possible


Un blog est beaucoup plus visité qu’on ne l’imagine. Mais ces visites sont bien souvent le fait de robots qui tentent d’y pénétrer afin d’en prendre le contrôle. Comment allez-vous protégez l’accès de votre blog des attaques pirates ? Suivez le guide…

L’imagination des personnes mal intentionnées ne connaît pas de limites, soit. Mais celle-ci est inversement proportionnelle à la vigilance des victimes potentielles. Ainsi les attaques classiques continuent bien souvent de conserver leur efficacité, et la plupart d’entre elles sont effectuées par des scripts qui tournent comme des robots. Un des types d’attaque le plus fréquemment rencontré est l’attaque par force brute, qui a en plus l’inconvénient de consommer beaucoup de ressources sur votre blog. Mais les pirates ne vont pas prendre de gants, n’est-ce pas ?

Comment se déroule une attaque par force brute ?

L’attaquant va essayer tous les mots de passe possibles sur la page d’accès à l’administration du blog (wp-login.php sous WordPress). Cette opération peut durer des semaines ou des mois, peu importe. C’est votre blog et c’est un robot qui s’en occupe. Le pirate n’a aucun autre effort à fournir que de désigner des cibles à traiter au robot. Plus le mot de passe choisi est long et compliqué (nombre de caractères + caractères spéciaux) et plus l’attaque peut durer longtemps. On peut s’imaginer que choisir un mot de passe très difficile à trouver comme en fournissent les générateurs aléatoires de mots de passe, renforce la sécurité du blog. C’est vrai, mais l’envers de la médaille existe aussi, puisque la durée de l’attaque est plus longue. Donc plus gourmande en ressources sur votre blog. Des ressources qui auraient été plus utiles au service de gentils internautes aux doigts d’argent.

Je suis passé de 300 à 30 requêtes malveillantes par jour !

Si comme moi sur mon blog pour avoir des commentaires sur son blog, vous êtes seul à administrer votre blog, seul à publier des articles et seul à valider les commentaires, personne d’autre n’a réellement besoin d’avoir accès au tableau de bord de votre blog WordPress. Pour stopper net toutes les attaques par force brute, il suffit tout simplement d’en bloquer l’accès. C’est ainsi que je suis passé de 300 tentatives pour pénétrer mon blog à une trentaine par jour. La seule parade pour décourager les attaques par force brute est de présenter au robot le fameux 403: forbidden (accès interdit).

212.200.65.118 - - [07/May/2014:21:10:48 +0200] "GET /wp-login.php HTTP/1.1" 200 1226 "-" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
212.200.65.118 - - [07/May/2014:21:10:49 +0200] "POST /wp-login.php HTTP/1.1" 200 1617 "http://avoirun.com/wp-login.php" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
212.200.65.118 - - [07/May/2014:21:11:13 +0200] "GET /wp-login.php HTTP/1.1" 200 1225 "-" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
212.200.65.118 - - [07/May/2014:21:11:14 +0200] "POST /wp-login.php HTTP/1.1" 200 1616 "http://avoirun.com/wp-login.php" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
212.200.65.118 - - [07/May/2014:21:11:36 +0200] "GET /wp-login.php HTTP/1.1" 200 1226 "-" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
212.200.65.118 - - [07/May/2014:21:11:37 +0200] "POST /wp-login.php HTTP/1.1" 200 1617 "http://avoirun.com/wp-login.php" "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
86.36.49.200 - - [08/May/2014:00:12:45 +0200] "GET /wp-login.php HTTP/1.1" 403 168 "-" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
86.36.49.200 - - [08/May/2014:00:12:52 +0200] "GET /wp-login.php HTTP/1.1" 403 168 "-" "Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko"
86.36.49.200 - - [08/May/2014:00:13:13 +0200] "GET /wp-login.php HTTP/1.1" 403 168 "-" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
86.36.49.200 - - [08/May/2014:00:14:59 +0200] "GET /wp-login.php HTTP/1.1" 403 168 "-" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
86.36.49.200 - - [08/May/2014:00:15:13 +0200] "GET /wp-login.php HTTP/1.1" 403 168 "-" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"

Pourquoi pas ? Mais comment pourrais-je accéder à mon propre blog, si l’accès en est interdit à tout le monde ?

Un petit script pour bloquer les attaques par force brute :

La solution pour bloquer la page d’accès au tableau de bord WordPress à tous, à l’exclusion de votre usage personnel est d’autoriser l’IP, ou la plage d’IP que vous utilisez, selon que votre fournisseur d’accès Internet (FAI) vous alloue une IP statique, ou dynamique. La première opération est de repérer la, ou les adresses IP que vous utilisez, afin de spécifier au script les exceptions au blocage. Le résultat est radical !

Cela se présente ainsi dans le vhost ou le htaccess sous Apache :
<Files "wp-login.php">
order deny,allow
Deny from all

# liste blanche plage IP
allow 192.168.0.0/24;
# liste blanche adresse IP unique
allow 192.168.0.5;

</Files>

Ou dans la conf. de votre serveur virtuel NginX si c’est votre cas :

location ~ /wp-config\.php { deny all; }
location ~* /(?:uploads|files)/.*\.php$ { deny all; }
location ~ /\.ht { deny all; }
location ~* wp-login\.php {
allow 127.0.0.1;
# liste blanche plage IP
allow 192.168.0.0/24;
# liste blanche adresse IP unique
allow 192.168.0.5;
deny all;
}

location /doc/ {
[…]
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 150s;
include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /\.ht {
# deny all;
#}
[…]

Sujets similaires
Pour marque-pages : Permaliens.

Les commentaires sont fermés