Conjunto de reglas mod_security para Joomla! administración

Conjunto de reglas mod_security para Joomla! administración

Manejo varios servidores de alojamiento y recientemente he experimentado muchos ataques de fuerza bruta contra sitios web basados ​​en Joomla. Los atacantes parecen intentar aplicar fuerza bruta contra administrator/index.phpla página.

Normalmente bloqueo las IP cuando intentan forzar los inicios de sesión de Wordpress con el siguiente conjunto de reglas:

SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000134
<Locationmatch "/wp-login.php">
SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</Locationmatch>

Pero no puedo encontrar una regla similar para Joomla!, ya que el estado de respuesta es "303 ver otro" tanto con contraseña válida como con contraseña no válida.

¿Alguna ayuda? ¡Gracias de antemano!

Respuesta1

Entonces, aquí está mi respuesta.

Al inspeccionar los encabezados de retorno, noté que Joomla! El backend devuelve algunos encabezados HTTP cuando el inicio de sesión es correcto y no los devuelve cuando el inicio de sesión no es válido.

por ejemplo, elP3PEl encabezado se devuelve después de un inicio de sesión exitoso, por lo que solo busco que su longitud sea > 0:

SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000144
<Locationmatch "/administrator/index.php">
    SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000145,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
    SecRule RESPONSE_HEADERS:P3P "streq 0" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000146"
    SecRule RESPONSE_HEADERS:P3P "!streq 0" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000147"
    SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>

Respuesta2

El problema con la respuesta aceptada es que no tiene en cuenta cuándo se realiza una actualización de la página de inicio de sesión. Entonces, cuando la persona actualiza la página de inicio de sesión,: 1) restablecerá el contador (lo cual es malo) o 2) contará la actualización como un inicio de sesión fallido (lo cual también es malo).

Acabamos de idear una regla para manejar ataques de fuerza bruta en Joomla que se basa en el valor de publicación "com_login". Si el valor está en el valor de la publicación, esto significa que no se pudo iniciar sesión; de lo contrario, el inicio de sesión fue exitoso. La regla se puede encontrar.aquí.

información relacionada