Tengo un servidor con apache y recientemente he instalado mod_security2 porque me atacan mucho por esto:
Mi versión de apache es apache v2.2.3 y yo uso mod_security2.c
Esta fueron las entradas del registro de errores:
[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:)
Aquí están los errores de la 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 "-" "-"
He intentado configurar mod_security2 como este:
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 cosa en mod_security2 es que SecFilterSelective no puede ser utilizado, me da errores. En lugar de eso usar una regla como esta:
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:\)"
Incluso esto no funciona. No sé qué hacer ya. Alguien tiene algún consejo?
Actualización 1
Veo que nadie puede resolver este problema utilizando mod_security. Hasta el momento el uso de ip-tables parece que la mejor opción para hacer esto, pero creo que el archivo es muy grande debido a que la ip cambia varias veces al día.
Me vino con 2 otras soluciones, alguien puede comentar sobre ellos en ser bueno o no.
La primera solución que viene a mi mente es la exclusión de estos ataques desde mi apache registros de error. Esto hará que sea más fácil para mí para encontrar otras urgente errores que se producen y no tiene que escupir a través de un largo registro.
La segunda opción es mejor, yo creo, y que es el bloqueo de los hosts que no son enviados en la forma correcta. En este ejemplo, el w00tw00t ataque es enviar sin nombre de host, así que creo que me pueden bloquear los hosts que no son de la forma correcta.
Actualización 2
Después de pasar a través de las respuestas que se llegó a las siguientes conclusiones.
Tener un registro personalizado para apache se consumen algunos innecesario de recursos, y si realmente hay un problema que probablemente va a querer mirar el log completo sin faltantes.
Es mejor ignorar los éxitos y concentrarse en una mejor forma de analizar los registros de error. El uso de filtros en sus registros un buen enfoque para esto.
Reflexiones finales sobre el tema
El ataque se mencionó anteriormente no va a llegar a su máquina si al menos se cuenta con un sistema así que básicamente no hay preocupaciones.
Puede ser difícil de filtrar todos los falsos ataques de la real después de un tiempo, debido a que tanto los registros de errores y registros de acceso se hacen muy grandes.
Evitar que esto ocurra en cualquier forma le costará recursos y es una buena práctica de no desperdiciar sus recursos en cosas sin importancia.
La solución que yo uso ahora es Linux logwatch. Ella me envía resúmenes de los registros y que se filtran y se agrupan. De esta manera usted puede fácilmente separar lo importante de lo no importante.
Gracias a todos por la ayuda, y espero que este post puede ser útil para alguien más.