Problème de flood apache

Bonjour à tous !

J’ai un serveur chez Online sous Debian 6 sur lequel j’héberge les sites web de mes clients avec apache, bind, mysql. Jusqu’aujourd’hui tout va bien.

Ce matin je remarque que l’accès à tous les sites hébergés sur ce serveur est très très lent. En regardant dans les logs, j’ai ce genre de choses (en milliers d’exemplaires) :

199.15.113.196 - - [13/Jun/2012:20:55:30 +0000] "GET http://ad.globe7.com/st?ad_type=iframe&ad_size=160x600&section=3048849&pub_url=${PUB_URL} HTTP/1.0" 404 1806 "http://www.economicwindows.com/index.php?option=com_mailto&tmpl=component&link=aHR0cDovL3d3dy5lY29ub21pY3dpbmRvd3MuY29tL2luZGV4LnBocD9vcHRpb249Y29tX2NvbnRlbnQmdmlldz1hcnRpY2xlJmlkPTUyOTE6MjAxMS0wNy0wNi0xMy0zMi0xOCZjYXRpZD00NDpmaW5hbmNpYWwtc3RhdGVtZW50Jkl0ZW1pZD0xMDA=" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.2a1pre) Gecko/20110323 Firefox/4.2a1pre" 199.83.92.75 - - [13/Jun/2012:20:55:31 +0000] "GET http://ib.adnxs.com/ttj?id=820050 HTTP/1.0" 404 1806 "http://kownledgeport.com/index.php?view=article&catid=47%3Aknowledge-transfer&id=11248%3A2011-10-01-08-47-45&tmpl=component&print=1&layout=default&page=&option=com_content&Itemid=97" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8a) Gecko/20040416 Firefox/0.8.0+" 109.120.156.113 - - [13/Jun/2012:20:55:31 +0000] "POST http://wmlink.ru/index.php HTTP/1.0" 200 6986 "-" "Mozilla/3.0 (compatible; Indy Library)" 108.171.246.152 - - [13/Jun/2012:20:55:31 +0000] "GET http://ads.tlvmedia.com/st?ad_type=iframe&ad_size=728x90&section=2672296 HTTP/1.0" 404 1806 "http://autotrackauto.com/skin-care/Smokers-are-at-High-Risk-for-Psoriasis.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20020923 Phoenix/0.1" 174.142.57.83 - - [13/Jun/2012:20:55:31 +0000] "GET http://ad.yieldmanager.com/st?ad_type=iframe&ad_size=300x250&section=2930354 HTTP/1.1" 404 809 "http://www.filecx.com/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E)" 108.171.248.143 - - [13/Jun/2012:20:55:31 +0000] "GET http://ad.adserverplus.com/st?ad_type=iframe&ad_size=300x250&section=2843540 HTTP/1.0" 404 1806 "http://likecatpink.com/index.php?view=article&catid=43%3Afashion-jewellery&id=10072%3A2012-01-07-14-12-03&format=pdf&option=com_content&Itemid=99" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Win64; x64; SV1; .NET CLR 2.0.50727)"

Les requêtes ne correspondent à aucun domaine hébergés sur ce serveur.
Comment traiter ces “fausses” requêtes ? Dans la mesure du possible, si le domaine n’est pas géré par le serveur j’aimerais qu’apache ne réponde pas du tout (même pas d’erreur 404). Et surtout j’aimerais que les ressources soient de nouveau allouées aux vraies requêtes !

Quelqu’un peut-il m’aider ?

J’ai essayé plusieurs choses : ajouter des règles pour fail2ban, ajouter mod_security, mod_evasive…
J’ai également essayé de créer un vhost qui récupère toutes les requêtes qui ne matchent aucun domaine déjà défini, et de renvoyer ces requêtes sur un autre serveur virtuel (sorte de honeypot) mais je n’y suis pas parvenu…

Merci !

Bonjour,

Et qu’est-ce qui n’a pas fonctionné dans tes tentatives? La redirection/blocage des requêtes ou la réduction de charge de ton serveur Web?

As tu reçu une demande de rançon ?

Ton serveur doit être effectivement piraté car il renvoie un code 200 sur une requête pour le domaine wmlink.ru

Merci pour ces réponses !

[quote=“ripat”]Ton serveur doit être effectivement piraté car il renvoie un code 200 sur une requête pour le domaine wmlink.ru

Effectivement je n’avais pas vu ce code 200 !

[quote=“ripat”]
Et qu’est-ce qui n’a pas fonctionné dans tes tentatives? La redirection/blocage des requêtes ou la réduction de charge de ton serveur Web?[/quote]

Alors le comportement est très bizarre (pour moi). Ce que j’ai fait c’est définir un vhost comme ça :

<VirtualHost y.y.y.y:80>
ProxyPass / http://10.x.x.x/
ProxyPassReverse / http://10.x.x.x/ http://localhost/
</VirtualHost>

Et ce qui est bizarre c’est que la redirection fonctionne étant donné que quand je fais des requêtes avec curl elles se retrouvent dans les logs de la machine en 10.x.x.x (sur mon réseau local virtuel). Mais les requêtes “pirates” continuent à passer normalement.

Mais quoiqu’il en soit, si je suis vicitime d’une intrusion, comment arranger ça ?
Et dernière chose : non je n’ai pas de demande de rançon.

As-tu essayé de simplement réécrite les requêtes avec mod_rewrite? Du style:

[code]# journalisation pour tests. À supprimer en prod.
RewriteLog /chemin/vers/monRewrite.log
RewriteLogLevel 2

réécriture proprement dite: si pas nom de domaine autorisé

redirection vers rien d’autre qu’un code forbidden

RewriteEngine On
RewriteCond %{HTTP_HOST} !(bonDomaine1|bonDomaine2|bonDomaine3) [NC]
RewriteRule ^.*$ - [F][/code]

À part réinstaller chacun des sites à partir de ta machine de dev, je ne vois pas trop comment trouver les scripts malveillants surtout si tu as installé des CMS ou autres applications tierces. Vérifie également les log d’accès ssh et ftp. Beaucoup de boulot en perspective. Courage.

Je viens d’essayer avec mod_rewrite mais ça ne semble pas être pris en compte non plus. Aucune erreur 403 n’est renvoyée (ce qui devrait être le cas). Je ne vois nulle part dans la configuration des élément qui peuvent autoriser ça… :frowning:

J’ai désactivé tous mes vhosts sauf un. Peu importe lequel j’active, les requêtes pirates passent. Enfin la plupart avec erreur 404 mais bon…

Si tu traites le problème au niveau du serveur http, par mod_rewrite, security ou autre, tu ne résous pas le problème de la charge que le serveur doit encaisser suite au flood. Il doit traiter la requête de toutes les façons. Avec les autres méthodes comme fail2ban, là tu bloques tout trafic en provenance d’une IP vers ton (tes) port(s) http au risque de bloquer des IP légitimes.

À choisir entre la peste et le choléra j’utiliserais plutôt la deuxième solution. As-tu essayé avec une failregex qui éjecte les noms de domaine illicites?

Oui c’est sur que je ne règle pas le problème. Mais j’essaye déjà de l’identifier. Que ce soit en mod_rewrite ou en proxypass, je devrais pouvoir rediriger les requêtes non ?
Mais je suis d’accord, l’idéal serait que le trafic ne parvienne carrément pas au serveur web.
Je ne connais pas vraiment fail2ban mais je vais essayer de faire ça, et voir ce que ça donne…

En attendant je réinstalle un nouveau serveur :’(

Ce qu’il me semble, c’est que quelque part (un bot ?), des fichiers DNS sont vérolé, et ils renvoient sut ton adresse IP.
Peux tu changer d’adresse IP de tes serveurs via ton fournisseur de service (avec mise à jour des DNS racine évidement)?