Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtrer les requetes apaches

3 réponses
Avatar
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] "\x173r\xe57\xa4\x05\x85
\x89\xebQ\xcdwAEkF\x98\xc2\x89^\xa2\x13\x1d\xa2Z\xb0\x05\xd7\rt^\x07\xf4
\x88\x8a\xf9b\xfe\x81\xf6\x865$\xc2W.\x95\x99\xea\xa3\x98\xe4;A\xb6\xe3K
\xca\xff\xffa\x1a\xab\x1a\v\xb7c\xdf\xea\xd0\xe6\x10:\x14U(\xa3\xb8^\xd1y
\t\xf6\xd4\xf4:'J\xf6O1'\xdbD\xa3\xcf\xf2Eu\x19s\x13\xb8r\xbcw0G\x06\xa2
\xc0\xabd\xc5$K\xbai\xf1\xb87\x94\x05\x84\xad/b\xa1'\xe4\x11\xc1\xa52
\xa3RlW\xaao\xe0MN\x86.T\xe5\xfe\xea\xc6@\xfbZh\x86\xc2\xaf\xec@\xbd\xed
\x90;\xdc\xdd1pE\xc1\xb5|u\xfd~Q\xcc\xd7&\x87\xc0&\xe8\xf8B&\xe8\x01\xea
\x9d\xb6Z?" 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] "\x01\xa7\xbb\xc9\x9b\xb3
\x01T:$7\x8d\xce\x1f\x87\x85\xcegW\x1bZ\xbb\xf6\xa4q\x89\x12\x14\xf6\xf7
\x99\xdc?#O\x97\xd3\xb7fc\xbf\x06\xa0&K\xe9\x9c\xec\xd3\x99\x9bl\xef\xa5
\xe8f\xafa[\xf5\xb7\x05\x85\xfa\x89\xc7j\x88\xb4yl\x1b\xa8\xa9Jdd\xccu
\x16V)\xf4\x07\x02\xfd\x07\x14\xaeZD\xf41\xe5y8\xbe/\xf7A\x82\xf5\x1f
\x1eqJ\x88\xb5\xe0\xdcBmf\xed\xf2\xc03\xeaH/\x13\x1a\x93\xc1\x19\xd8y\xc6X
\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

3 réponses

Avatar
Samuel Colin
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.

Avatar
Séb
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 :)

Avatar
Séb
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 :)