Hello,

Cet article fait suite (encore !) à mon mini-tuto sur comment bloquer une attaque HTTP FLOOD. Dans cet article je vais vous parler de ce qui suit une attaque comme ça, si vous êtes gentils. Ou si vous êtes méchants, plutôt.

Et oui, vous l’avez deviné (z’êtes géniaux !), on va signaler aux hébergeurs que des IP ont été utilisées contre nous.

Je vais couper cet article en 3 parties, afin de séparer le contenu utile de ma critique envers les hébergeurs.

  1. Trouver les vilaines IP
  2. Que faire si vous avez beaucoup d’IP
  3. La réponse des hébergeurs

Trouver les vilaines IP

Pour signaler à un hébergeur, il nous faut 3 choses : l’IP du vilain pas beau, des preuves et l’adresse mail de l’hébergeur.

Première commande : fail2ban-client status <jail> en remplaçant <jail> par le nom de votre prison, c’est à dire http-wordpress-dos dans mon cas.

La sortie ressemble grossièrement à ça :

Status for the jail: http-wordpress-dos
|- Filter
|  |- Currently failed:	0
|  |- Total failed:	12
|  `- File list:	/var/log/nginx/access.log
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	101.78.230.205

On s’intéresse donc à 101.78.230.205.

$ host 101.78.230.205
Host 205.230.78.101.in-addr.arpa not found: 2(SERVFAIL)

HAHAHAHA. LOL. MDR. PTDR. C’est trop drôle, le serveur DNS qui renvoie les IP qui refuse notre requête. Le hic, c’est que le DNS qui s’occupe de répondre à cette question est celui de l’hébergeur. Complice ?? COMPLOT ?!

(Je vous passe la partie pas intéressante du whois)

$ whois 101.78.230.205
NetType:        Allocated to APNIC
Comment:         This IP address range is not registered in the ARIN database.
Comment:        For details, refer to the APNIC Whois Database via
Comment:        WHOIS.APNIC.NET or http://wq.apnic.net/apnic-bin/whois.pl

country:        HK
e-mail:         abuse@wharftt.com

C’est rigolo de voir que l’APNIC dit “Cette IP ne nous appartient pas” juste en dessous de “Allocated to APNIC”.

Bref, on a l’IP et l’email d’abuse de l’hébergeur “supposé”, il reste juste à extraire les logs pour cette IP.

$ grep 101.78.230.205 /var/log/nginx/access.log
101.78.230.205 - - [21/Mar/2016:12:58:54 +0100] "GET / HTTP/1.0" 403 169 "-" "WordPress/4.4.2; http://booking.hkptu.org; verifying pingback from 181.214.92.103" U:-
...

On s’arrange pour en prendre assez (c’est à dire au moins 3), puis on envoie un mail qui ressemble à ça à l’hébergeur:

Hello,

I just received an attack from your network : 101.78.230.205

My logs are in this timezone: Europe/Paris, and my IP is 1.2.3.4; the attacked ports are 80 and 443.

Logs:

101.78.230.205 - - [21/Mar/2016:12:58:54 +0100] “GET / HTTP/1.0” 403 169 “-” “WordPress/4.4.2; http://booking.hkptu.org; verifying pingback from 181.214.92.103” U:-

Si vous écrivez à Amazon Web Services, ajoutez aussi votre identité (nom, prénom, numéro de téléphone) sans quoi ils refuseront votre dénonciation.

Et voilà, vous avez envoyé votre abuse, et vous n’avez plus qu’à attendre une réponse (positive, si tout se passe bien).

Que faire si vous avez beaucoup d’IP

Dans mon cas, je n’avais pas moins de 2000 IP à signaler. Si je devais signaler chaque IP à la main, il m’aurait fallu plusieurs heures (Jours ? Mois ?), et je n’ai pas que ça à faire.

La liste complète se trouve ici : https://gist.github.com/PunKeel/261b8d1eb46bf48b6a15, accompagnée de deux documents : un tri par Pays et un tri par AS (Autonomous System, mot bizarre pour dire responsable de cette plage d’IP).

C’est le tri par AS qui va me permettre d’améliorer mon signalement. En effet, chaque AS doit fournir un email d’abuse. Et si je peux signaler toutes les IP d’amazon (qui ne se suivent pas) en un seul mail, tant mieux. Ah oui, j’oubliais. Il y a 900 IP Amazon dans ma liste.

La grande question : comment ai-je fait pour générer cette liste ?

La réponse simple : je me suis servi de l’outil proposé par la Team Cymru, c’est à dire que j’ai mis toutes les IP dans un fichier texte, une par ligne, avec des commentaires, puis j’ai lancé une petite commande.

Le fichier, nommé list1.log :

begin
countrycode
notruncate
1.1.1.1
2.2.2.2
...
end

L’option notruncate indique que je veux obtenir le nom complet de l’AS, l’option contrycode … que je veux aussi avoir le nom du pays.

La commande magique : netcat whois.cymru.com 43 < list1.log | sort -n > list02

Ce qu’elle fait : elle envoie une demande à Cymru, trie la réponse par ordre alphabétique (dans notre cas, par IP croissante), et stocke tout dans list02. Exemple de résultat.

Pour sortir les lignes de journaux utiles, j’ai pris toutes les IP concernées, j’ai egrep les logs : egrep "1.1.1.1|1.1.1.2|45.27.28.21" /var/log/nginx/access.log, et enfin j’ai envoyé tout ça par mail.

La réponse des hébergeurs

C’est en général la partie la plus drôle. Je n’inclurais pas les heures exactes d’envoi et de réponse, car ce n’est pas le principal ici, et que le contact a été réalisé pendant le Week-End, et que toutes les sociétés ne sont pas sur le même fuseau horaire.

  • Online Aucun signe de vie. Patientons !
  • Kheops (Oui oui, le Dieu égyptien) : réponse reçue ce lundi matin, à la première heure. >Bonjour xx, > >Je m’appelle xx. Je vais m’occuper de traiter et résoudre votre demande. >Vous pouvez à tout moment me joindre en répondant à cet email ou en m’appelant au xxx. > >Je reviens vers vous rapidement avec des éléments de réponse.

Plutôt professionnel ! J’admire, je n’avais jamais entendu parler de cette société mais ils m’impressionnent.

  • Microsoft (Cloud) Réponse rapide, avec des précisions supplémentaires pour les fois prochaines. J’aime !

Hello,

Thank you for bringing this to our attention. We have passed on your information to the appropriate team.

To avoid delays, in the future please report these types of problems directly at cert. microsoft. com. You may also simply email our cert team at cert@microsoft.com.

Thank you,

Carl Microsoft Online Safety

  • Linode Réponse extrêmement rapide (5 minutes !). >Hello, > >Thanks for reaching out to us about this. We are currently taking steps to resolve this and to ensure that this doesn’t happen again. > >Please let us know if you have any questions. > >Best regards, > >JD > >Linode Trust & Safety Team

  • Alterway J’attends …

  • RamNode J’attends … (pire, je reçois encore des attaques provenant des mêmes IP \o/)

  • Bouygues Telecom Pas obtenu de réponse, une seule IP est concernée mais quand même. À vrai dire, je n’attends pas de réponse, je n’en ai jamais reçu de leur part (ni de celle d’Orange / SFR).

  • DigitalOcean Oh mon dieu, je les aime. Réponse extrêmement rapide, qui précise en plus le type d’attaque utilisée contre moi. Et ça, c’est bonus. <3

Hi there,

This looks related to an issue with the XML-RPC pingback functionality; due to the number of customers involved I’m going to generate tickets for each manually; it’ll take me a bit to get this done but I’ll make sure everyone gets notified.

Regards, Trust & Safety Specialist Digital Ocean Support


De l’autre côté de la bordure, il y a les vilains. Les pas beaux. Ceux qui t’ignorent, ne te considèrent pas à juste titre, te rappellent que tu es mauvais. Bref, ceux à qui il vaut mieux carrément ne pas envoyer de mails. Ma liste est courte, mais je n’ai pas envoyé de mails à ceux qui sont méchants. Pour le plaisir, j’ai quand même essayé.

  • OVH >Hi. This is the qmail-send-out program at mx1.ovh.net. > >I’m afraid I wasn’t able to deliver your message to the following addresses. > >This is a permanent error; I’ve given up. Sorry it didn’t work out. > >… (550_sorry, user over quotamail532 … > > Giving up on 127.0.0.1.

J’espère qu’ils vont résoudre ce problème d’ici peu … ;-)

  • Amazon Web Services. >Hello, > >Thanks for contacting the AWS Abuse Team. We reviewed your report and determined that the logs do not appear to be abusive, it’s likely that your site was experiencing a high volume of visits during that time. > >If you have any evidence otherwise, please feel free to reach out to us again at ec2-abuse@amazon.com. > >Best regards, >AWS EC2 Abuse Team

Traduction: Merci, mais t’es juste mauvais et tu ne sais pas adapter ton infrastructure à ton projet. Pourquoi ne viens-tu pas chez nous ?

À leurs yeux, si 900 IP se coordonnent pour m’envoyer en boucle des pingback WordPress, c’est normal. Et c’est ma faute si mon site ne tient pas la route. Bien sûr.

Bref, Amazon est vilain.


La conclusion à tout ça, c’est qu’envoyer des mails c’est énervant, et les réponses peuvent décevoir. Il peut alors être sympa’ d’automatiser ce processus, et c’est ce qui est proposé par blocklist.de : on rajoute une action à nos prisons, on envoie les signalements à blocklist.de qui rassemble tout et envoie des abuses groupés, donc avec plus de poids. Malin ! D’autant plus que c’est inclus de base dans Fail2Ban 0.9 (dispo en unstable dans les dépôts debian).

Et de l’autre côté, si on possède un serveur, on peut utiliser leur liste pour mettre en place un firewall qui protège contre les IP avec une mauvaise réputation.