Originalmente publiqué esto en webmasters.stackexchange.com , pero me dijeron que obtendría una mejor recepción aquí.
Durante los últimos días, he estado sufriendo de lo que parece ser un ataque DDOS (presumiblemente inadvertido). He recibido tantas solicitudes de un agente que se identifica como "Mozilla / 4.0 (compatible; ICS)" que apache consume toda la memoria disponible.
En consecuencia, me gustaría bloquear todas las solicitudes acompañadas por este agente de usuario, así que intenté hacer esto en httpd.conf:
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
Pero cuando reinicio apache, se queja de usar deny
aquí. Sin tener que envolverlo en un bloque location
o directory
, lo que significaría que tendría que agregar un nuevo bloque para cada sitio, ¿hay alguna forma de negar el acceso a todo el servidor?
ACTUALIZACIÓN: El error que obtengo
- Reinicio del servidor web Apache2
Error de sintaxis en la línea 4 de /etc/apache2/httpd.conf: negar no permitido aquí [error]
fuente
<Location>
ya que anula cualquier otra restricción de autorización<Directory>
, a menos que agregueAuthMerging And
. Consulte la advertencia de seguridadRequire
en los documentos de Apache: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requiremod_rewrite se puede configurar a nivel del servidor de acuerdo con los documentos:
No te olvides de escapar de la expresión regular en el
RewriteCond
fuente
<!-- -->
a la ediciónSiempre que la sintaxis en las líneas SetEnv sea correcta, debería poder incluirla en la configuración de la siguiente manera:
Debería permitir que eso funcione en todos los hosts virtuales: recién probado en 2.2.24, funcionó de maravilla.
fuente