Bonjour à tous
Je viens de subir une attaque de type Pingback wordpress et je viens donc faire un retour avec une solution au cas ou d'autres personnes rencontrerez le même problème.
En gros la fonction pingback de wordpress permet à deux wordpress de communiquer ensemble pour faire des liens, le problème est qu'une ancienne version de ce système peu être utiliser pour lancer une attaque DDOS à partir de ces sites.
Comment on le voit?
Simplement en allant voir votre log apache ( tail -n 300 /var/log/apache/access.log pour avoir les 300 dernieres lignes, ou tail -f /var/log/apache/access.log pour voir le log en direct), vous trouverez quelque chose qui ressemble à ça:
Code:
54.226.156.45 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/3.9.9; http://23.21.224.30; verifying pingback from 10.62.74.72"
54.243.227.90 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/4.1.8; http://54.243.227.90; verifying pingback from 169.50.5.45"
54.88.132.209 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/3.9.9; http://mlearning-mlearnin-3je9n2k7nfpm-1114833812.us-east-1.elb.amazonaws.com; verifying pingback from 10.17.0.40"
54.94.255.144 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/4.1.8; http://www.jornalao.com.br; verifying pingback from 172.31.6.134"
52.0.106.240 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/4.1.1; http://52.0.106.240; verifying pingback from 169.50.5.38"
54.226.156.45 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/3.9.9; http://54.243.94.197; verifying pingback from 10.63.39.40"
54.64.173.154 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/4.1.8; http://54.64.173.154; verifying pingback from 169.50.5.38"
54.84.79.249 - - [03/Oct/2015:16:01:14 +0200] "GET / HTTP/1.0" 403 481 "-" "WordPress/4.1.8; http://blog.thisisleap.com; verifying pingback from 169.50.5.42"
Si vous venez de google et que vous êtes en pleine attaque, je vais pas vous faire perdre de temps et je vais vous mettre directement une solution les bannirs en utilisant fail2ban.
A noter que mon site n'est pas un wordpress, n'utilisez pas directement cette technique si vous avez un site wordpress! Ici il n'y aura plus de pingback et la moindre ligne de log avec le mot wordpress entraine le ban de l'utilisateur.
Pour commencer on crée le filtre qui va faire le trie entre vos visiteurs et les sites wordpress corrompus:
Code:
nano /etc/fail2ban/filter.d/apache-wordpress.conf
Code:
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = apache-common.conf
[Definition]
# Option: failregex
# Notes.: regex to match the w00tw00t scan messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
failregex = ^ -.*WordPress.*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
ignoreregex =
On se trompe pas, on test le filtre avant de continuer et de faire une erreur:
Code:
fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/apache-wordpress.conf
Le principe de fail2ban-regex est de mettre en premier argument le log, et en second le filtre à tester. Pensez à vérifier que le résultat vous semble cohérent (genre, votre IP est pas dans la liste des bannis, et vous retrouvez les IPs des wordpress corrompus dedans) .
Ca peut prendre un peu de temps car votre fichier access.log est sans doute gros à cause du ddos, si besoin ne prenez qu'un "échantillon"
Puis, il faut créer la prison qui va l'utiliser:
Code:
nano /etc/fail2ban/jail.local
jail.local est un nouveau fichier, le contenu de ce fichier est chargé après jail.conf et remplace les variables par défaut par celles qui s'y trouvent. Il suffit juste de rajouter les variables que vous avez modifié, pas besoin de recopier le fichier en entier. C'est plus clair, on voit de suite ce qu'on a changé.
et y met:
Code:
[apache-wordpress]
enabled = true
filter = apache-wordpress
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/apache*/*access.log
maxretry = 1
bantime = 86400
Pour plus de sécurité, à la fin de ce fichier vous pouvez ajouter
ignoreip = TonIP
Histoire d'être certain de pas vous bannir.
Attention la configuration fail2ban peu être un peu tatillonne, chez moi la prison ne s’activait pas, sans faire d'erreur, et c'est d'ajouter un retour à la ligne entre [apache-wordpress] et enabled = true qui à fait la différence. C'est très désagréable de perdre du temps avec ce genre de détail quand le serveur de production est mort ...
On recharge fail2ban
Code:
/etc/init.d/fail2ban reload
On vérifie que notre prison est bien active:
Code:
fail2ban-client status
On doit donc y trouver apache-wordpress
Pour voir les IPs bannis par fail2ban, faites:
fail2ban-client status apache-wordpress
Dans mon cas:
A noter que ça peu prendre quelques minutes la première fois le temps de digérer le fichier access.log, surtout qu'en général avec le DDOS en cours le serveur n'est pas dans une forme olympique.
J'espère que ce retour pourra être utile.
Voici quelques liens, avec d'autres solutions que j'ai trouvé intéressant pendant ma recherche:
Listes des commandes fail2ban:
http://www.fail2ban.org/wiki/index.php/Commands
La ou j'ai eu la commande pour vérifier le filtre:
http://www.the-art-of-web.com/system/fail2ban-log/
La ou j'ai copié son explication sur le wootwoot afin de l'adapter au wodpress pingback:
https://technique.arscenic.org/secur...des-tentatives
Si vous avez un wordpress, allez voir:
http://www.scottbrownconsulting.com/...with-fail2ban/
J'ai essayé chez moi un exit(); si il y a un user agent avec wordpress, ça n'as pas était suffisant pour moi:
http://john.cuppi.net/blocking-wordp...nx-and-apache/
Bloquer l'attaque via la config d'apache (j'ai pas su activer le rewriting ni le blocage direct sur apache)
http://blamcast.net/articles/block-b...an-ip-htaccess
Assez similaire, blocage selon l'user agent:
http://www.inmotionhosting.com/suppo...using-htaccess
Coté OVH la protection marche du tonnerre, je reçoit habituellement les mails de DDOS sans impact sur le site, mais cette attaque semble passer à travers les filets d'OVH à l'heure ou j’écris ce post. Quel support me conseillez vous d'utiliser pour contacter OVH et les informer de cette fuite?
Amrac - fourmizzz.fr