J'ai un serveur avec apache et j'ai récemment installé mod_security2 parce que je suis très attaqué par ceci:
Ma version d'apache est apache v2.2.3 et j'utilise mod_security2.c
Voici les entrées du journal des erreurs:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Voici les erreurs de l'access_log:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
J'ai essayé de configurer mod_security2 comme ceci:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
La chose dans mod_security2 est que SecFilterSelective ne peut pas être utilisé, il me donne des erreurs. J'utilise plutôt une règle comme celle-ci:
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Même cela ne fonctionne pas. Je ne sais plus quoi faire. Quelqu'un a un conseil?
Mise à jour 1
Je vois que personne ne peut résoudre ce problème avec mod_security. Jusqu'ici, utiliser ip-tables semble être la meilleure option pour le faire, mais je pense que le fichier deviendra extrêmement volumineux car l'adresse IP change plusieurs fois par jour.
Je suis venu avec 2 autres solutions, quelqu'un peut-il les commenter d'être bons ou pas.
La première solution qui me vient à l’esprit est d’exclure ces attaques de mes journaux d’erreur Apache. Cela me facilitera la tâche pour repérer d’autres erreurs urgentes à mesure qu’elles se produisent et pour ne pas devoir cracher dans un long journal.
La deuxième option est meilleure, je pense, et bloque les hôtes qui ne sont pas envoyés de la bonne façon. Dans cet exemple, l'attaque w00tw00t est envoyée sans nom d'hôte, je pense donc pouvoir bloquer les hôtes qui ne sont pas sous la forme correcte.
Mise à jour 2
Après avoir parcouru les réponses, je suis arrivé aux conclusions suivantes.
Avoir une journalisation personnalisée pour apache consommera des recours inutiles, et s'il y a vraiment un problème, vous voudrez probablement consulter le journal complet sans rien manquer.
Il est préférable d'ignorer les hits et de se concentrer sur une meilleure façon d'analyser vos journaux d'erreurs. Utiliser des filtres pour vos journaux est une bonne approche pour cela.
Réflexions finales sur le sujet
L’attaque mentionnée ci-dessus n’atteindra pas votre machine si vous avez au moins un système à jour, il n’ya donc aucun souci à vous faire.
Il peut être difficile de filtrer toutes les fausses attaques après un certain temps, car les journaux d’erreurs et d’accès deviennent extrêmement volumineux.
Empêcher que cela se produise de quelque manière que ce soit vous coûtera des ressources et c'est une bonne pratique de ne pas gaspiller vos ressources pour des tâches sans importance.
La solution que j'utilise maintenant est Linux Logwatch . Il m'envoie des résumés des journaux et ils sont filtrés et regroupés. De cette façon, vous pouvez facilement séparer les éléments importants des éléments non importants.
Merci à tous pour l'aide, et j'espère que ce post pourra être utile à quelqu'un d'autre aussi.