Filtrer les requetes apaches

Le
Séb
Bonjour à tous.
Sur mon serveur apache j'ai constamment des entrées erronées telles que
celles-ci :

84.211.3.xxx - - [08/Apr/2008:11:45:01 +0200] "x13BitTorrent protocol" 400 434
87.179.120.xxx - - [08/Apr/2008:11:54:50 +0200] "x173rxe57xa4x05x85
x89xebQxcdwAEkFx98xc2x89^xa2x13x1dxa2Zxb0x05xd7t^x07xf4
x88x8axf9bxfex81xf6x865$xc2W.x95x99xeaxa3x98xe4;Axb6xe3K
xcaxffxffax1axabx1avxb7cxdfxeaxd0xe6x10:x14U(xa3xb8^xd1y
txf6xd4xf4:'Jxf6O1'xdbDxa3xcfxf2Eux19sx13xb8rxbcw0Gx06xa2
xc0xabdxc5$Kxbaixf1xb87x94x05x84xad/bxa1'xe4x11xc1xa52
xa3RlWxaaoxe0MNx86.Txe5xfexeaxc6@xfbZhx86xc2xafxec@xbdxed
x90;xdcxdd1pExc1xb5|uxfd~Qxccxd7&x87xc0&xe8xf8B&xe8x01xea
x9dxb6Z?" 400 434
78.32.64.xxx - - [08/Apr/2008:12:00:23 +0200] "x13BitTorrent protocol" 400 434
[]
84.221.4.xxx - - [08/Apr/2008:12:17:58 +0200] "x13BitTorrent protocol" 400 434
85.54.160.xxx - - [08/Apr/2008:12:19:20 +0200] "x01xa7xbbxc9x9bxb3
x01T:$7x8dxcex1fx87x85xcegWx1bZxbbxf6xa4qx89x12x14xf6xf7
x99xdc?#Ox97xd3xb7fcxbfx06xa0&Kxe9x9cxecxd3x99x9blxefxa5
xe8fxafa[xf5xb7x05x85xfax89xc7jx88xb4ylx1bxa8xa9Jddxccu
x16V)xf4x07x02xfdx07x14xaeZDxf41xe5y8xbe/xf7Ax82xf5x1f
x1eqJx88xb5xe0xdcBmfxedxf2xc03xeaH/x13x1ax93xc1x19xd8yxc6X
xa1:x94" 302 398

Mon PC fait office de routeur Tor, l'ip est publique et je pense qu'il s'agit de
tentatives pour trouver des failles. C'est pourquoij'ai mis en place une règle
fail2ban pour bloquer ces IPs ( sur le fichier error.log :
failregex = [[]client <HOST>[]] (Invalid URI in request|request failed) )

Mais cela n'empêche pas d'autres IPs de reprendre les attaques, et mes logs se
retrouvent remplis de ce genre de requêtes. J'aimerais savoir s'il existe des
moyens pour filtrer ces requêtes en amont plutôt que de mettre en place une
solution d'après-coup.

Je pense soit à un petit script qui écouterait sur le port http et redirigerait
la requête vers apache si celle-ci est valide ( et la bloquerait le cas
contraire ), ou alors un module apache qui pourrait faire ce boulot.

Est-ce que vous connaissez des solutions qui pourrait répondre à ce genre de
problèmes ? ( Je n'ai pas envie de faire une règle iptable sur toute une zone
géographique..)

Merci à vous

--
Sébastien
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Samuel Colin
Le #2569921
Dixit Séb :
Bonjour à tous.


Bonsoir

84.221.4.xxx - - [08/Apr/2008:12:17:58 +0200] "x13BitTorrent protocol" 400 434
85.54.160.xxx - - [08/Apr/2008:12:19:20 +0200] "x01xa7xbbxc9x9bxb3
x01T:$7x8dxcex1fx87x85xcegWx1bZxbbxf6xa4qx89x12x14xf6xf7
x99xdc?#Ox97xd3xb7fcxbfx06xa0&Kxe9x9cxecxd3x99x9blxefxa5
xe8fxafa[xf5xb7x05x85xfax89xc7jx88xb4ylx1bxa8xa9Jddxccu
x16V)xf4x07x02xfdx07x14xaeZDxf41xe5y8xbe/xf7Ax82xf5x1f
x1eqJx88xb5xe0xdcBmfxedxf2xc03xeaH/x13x1ax93xc1x19xd8yxc6X
xa1:x94" 302 398


Est-ce que vous connaissez des solutions qui pourrait répondre à ce genre de
problèmes ? ( Je n'ai pas envie de faire une règle iptable sur toute une zone
géographique..)

iptables reste pertinent dans ce cas, si bien utilisé.

Dans ton cas particulier tu veux bloquer tous les paquets IPs qui
ressemblent à ce que tu vois dans tes logs.
Je suggère iptables avec le module "string".
En revanche tu devras te documenter un peu sur le type de paquets que tu
reçois, éventuellement en faisant une petite analyse avec wireshark ou
tcpdump.

Séb
Le #2705751
Le Tue, 08 Apr 2008 21:44:06 +0200, Samuel Colin a écrit:

iptables reste pertinent dans ce cas, si bien utilisé. Dans ton cas
particulier tu veux bloquer tous les paquets IPs qui ressemblent à ce
que tu vois dans tes logs. Je suggère iptables avec le module "string".


Merci je ne connaissais pas ce module.

En revanche tu devras te documenter un peu sur le type de paquets que tu
reçois, éventuellement en faisant une petite analyse avec wireshark ou
tcpdump.


Les xYY correspondent à des code héxa de caractères non affichables par
apache

Je pense qu'il s'agit d'attaques binaires de ce style-ci :
http://www.milw0rm.com/exploits/3996

Où alors c'est un encodage que le serveur ne comprend pas..

Voici un petit code iptable qui permet de réduire 70% des attaques dans mon
cas ( fail2ban se chargera du reste... )

iptables -A INPUT -p tcp --dport 80 -j FILTER_HTTP
iptables -A INPUT -p tcp --dport 443 -j FILTER_HTTP

iptables -A FILTER_HTTP -m string --hex-string "13"
--algo kmp -j DROP
iptables -A FILTER_HTTP -m string --hex-string "ff"
--algo kmp -j DROP
iptables -A FILTER_HTTP -m string --hex-string "c9"
--algo kmp -j DROP
iptables -A FILTER_HTTP -p tcp -j ACCEPT

( Je crée une nouvelle table pour éviter d'avoir à appliquer le module à
l'ensemble des paquets entrants : je pense que cela doit demander plus de
ressources au noyau d'attendre que le paquet soit composé pour ensuite faire
une recherche de chaîne.. )

En espérant que ça soit utile à d'autres :)

Séb
Le #2705741
Le Tue, 08 Apr 2008 21:44:06 +0200, Samuel Colin a écrit:

iptables reste pertinent dans ce cas, si bien utilisé. Dans ton cas
particulier tu veux bloquer tous les paquets IPs qui ressemblent à ce
que tu vois dans tes logs. Je suggère iptables avec le module "string".


Merci je ne connaissais pas ce module.

En revanche tu devras te documenter un peu sur le type de paquets que tu
reçois, éventuellement en faisant une petite analyse avec wireshark ou
tcpdump.


Les xYY correspondent à des code héxa de caractères non affichables par
apache

Je pense qu'il s'agit d'attaques binaires de ce style-ci :
http://www.milw0rm.com/exploits/3996

Où alors c'est un encodage que le serveur ne comprend pas..

Voici un petit code iptable qui permet de réduire 70% des attaques dans
mon cas ( fail2ban se chargera du reste... )

iptables -A INPUT -p tcp --dport 80 -j FILTER_HTTP
iptables -A INPUT -p tcp --dport 443 -j FILTER_HTTP

iptables -A FILTER_HTTP -m string --hex-string "13"
--algo kmp -j DROP
iptables -A FILTER_HTTP -m string --hex-string "ff"
--algo kmp -j DROP
iptables -A FILTER_HTTP -m string --hex-string "c9"
--algo kmp -j DROP
iptables -A FILTER_HTTP -p tcp -j ACCEPT

( Je crée une nouvelle table pour éviter d'avoir à appliquer le module à
l'ensemble des paquets entrants : je pense que cela doit demander plus de
ressources au noyau d'attendre que le paquet soit composé pour ensuite
faire une recherche de chaîne.. )

En espérant que ça soit utile à d'autres :)

Publicité
Poster une réponse
Anonyme