OVH Community, votre nouvel espace communautaire.

DDOS - Bloquer une attaque pingback wordpress


janus57
19/10/2015, 18h34
Citation Envoyé par Amrac
Merci je vais tester ça.

Quant au log de 12 mois, vue la place que ça prend ça m'étonnerais que beaucoup de monde les gardes ^^
Bonjour,

mais si un jour la justice vous les demande vous pouvez être condamné pour ne pas les avoir gardés =).

Rien n'empêche de les déplacer sur un autre serveur qui ne sert qu'a ça (genre 2KS-1 qui en même temps faut serveur de backup+ backup OVH).

Cordialement, janus57

Amrac
19/10/2015, 14h20
Merci je vais tester ça.

Quant au log de 12 mois, vue la place que ça prend ça m'étonnerais que beaucoup de monde les gardes ^^

extralarge
13/10/2015, 07h38
Effectivement à plusieurs niveaux les fichiers logs sont utiles. Surtout a posteriori pour installer tes règles de bannissement via fail2ban, cisco ou htaccess.
Tu pourrai installer monit
https://mmonit.com/monit/
et paramétrer une action Triger
https://mmonit.com/monit/documentati...E-SIZE-TESTING
sur la taille de ton fichier log.
et la en fonction de sa taille et à titre exceptionnel, tu pourrai forcer le logrotate immédiat.
Xavier

janus57
12/10/2015, 19h25
Bonjour,

pas plus simple de faire tourner le fichier de log (logrotate power) ?

Car en le vidant vous ne respecter plus la législation FR qui oblige à garder les logs 12 mois (de mémoire).

Cordialement, janus57

Amrac
12/10/2015, 09h06
L'attaque continue depuis 1 semaine et j'ai une correction a proposer.
Parfois, quand l'attaque est bien brutal ca semble saturer fail2ban. Il ne ban plus et tourne a 100%. Quand on le met en mode debug on se rend compte qu'a chaque changement sur le fichier de logs apache il est dérangè. Hors avec le ddos ca arrive plusieurs dizaine de fois par secondes et il y a un moment ou il suit plus.
Je soupconne qu'a chaque derangement il lui faut un peu de temps pour retrouver ou il etait dans le fichier.
La solution la plus efficace que j'ai trouvè est d'effacè le log apache plus régulierement.
Pour cela, rien de tel qu'un cron:
Faites crontab -e pour pouvoir éditer les crons.
Si c'est la premiere fois il vous demandera quel editeur utiliser, je vous conseil nano.
Ajouter cette ligne:
1 * * * * echo '' > /var/log/apache2/access.log

Pour fail2ban c'est un grand bol d'air frais et il pourra procéder au ban massif du ddos facilement

Pascal [ZR]
08/10/2015, 12h43
@Amrac

non c'est dans la section [DEFAULT]
Par contre, verifie les adresses déjà protégées (il doit y avoir au moins les 127.0.0.X) et reprend les en plus de ton ajout sinon ça va coincer..

madri2
07/10/2015, 16h54
un modérateur peut me débloquer ?

Amrac
07/10/2015, 10h56
Merci Pascal pour ton retour, j'ai édité pour conseiller directement le jail.local. Pour le ignoreip, on peut le rajouter directement dans la jail genre: ?
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
ignoreip = TonIP
Merci aussi AR51Kevinos pour ton retour, je suis sur que ce sera très utile aux futurs victimes de ces attaques

madri2
05/10/2015, 19h59
plutôt mettre une détection de "verifying pingback from" pour justement ne pas blocker wordpress

Pascal [ZR]
04/10/2015, 22h50
@Amrac:
Bonne explication, merci.
Pour ceux qui débute avec fail2ban, deux petits conseils:
- mettre vos modifications et nouveaux paramètres dans un fichier jail.local plutôt que dans le jail.conf. 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é.
- mettre son IP dans la variable "ignoreip". Avec fail2ban, c'est recommandé.

@AR51Kevinos
Simple et efficace, merci.

AR51Kevinos
04/10/2015, 19h25
Salut,

Tuto sympa, je rajoute ceci pour ceux qui ont pas fail2ban installé, cela marche aussi a 100% via le fichier .htaccess

J'ai justement reçu ce type de ddos hier sur mon site.


SetEnvIfNoCase User-Agent ^$ keep_out
SetEnvIfNoCase User-Agent (conf_group=135|WordPress|diavol|dotbot) keep_out

Order Allow,Deny
Allow from all
Deny from env=keep_out


Amrac
03/10/2015, 18h32
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:
Code:
Total banned:     9026
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