mod_security conjunto de regras para o Joomla! admin

4

Eu rodei vários servidores de hospedagem e recentemente experimentei muitos ataques de bruteforce contra sites baseados em joomla. Os atacantes parecem tentar uma força bruta contra administrator/index.php page.

Eu geralmente bloqueio os IPs quando eles tentam forçar a entrada de logins do Wordpress com o seguinte conjunto de regras:

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>

Mas não consigo encontrar uma regra semelhante para o Joomla !, já que o status de resposta é "303 ver outro", ambos com senha válida e senha inválida.

Qualquer ajuda? Obrigado antecipadamente!

    
por godzillante 24.11.2014 / 10:44

2 respostas

2

Então, aqui está minha resposta.

Por esperar os cabeçalhos de retorno, notei que o Joomla! backend retorna alguns cabeçalhos HTTP quando o login está correto e não os retorna quando o login é inválido.

Por exemplo, o P3P é retornado após um login bem-sucedido, então Eu apenas procuro por seu comprimento sendo > 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>
    
por 24.11.2014 / 12:24
0

O problema com a resposta aceita é que ela não leva em consideração quando ocorre uma atualização da página de login. Assim, quando a pessoa atualizar a página de login, ela irá: 1) redefinir o contador (o que é ruim) ou 2) contar a atualização como um login com falha (o que também é ruim).

Acabamos de criar uma regra para lidar com ataques de força bruta no Joomla, que é baseada no valor do post "com_login". Se o valor estiver no valor post, isso significa que houve falha no login, se não, o login será bem-sucedido. A regra pode ser encontrada aqui .

    
por 23.06.2016 / 23:30