modsecurity: bloqueia o endereço IP que visitou páginas 404 mais de 10 vezes em um minuto

4

Estamos usando mod_security e atualmente temos problemas com alguns bots.

Gostaria de bloquear o endereço IP que visitou páginas 404 mais de 10 vezes em um minuto.

Como isso pode ser feito? Como posso pesquisar os códigos de retorno 404?

Como posso contar os códigos de retorno do erro 404 na fase 3?

RESPONSE_STATUS may not work as expected in embedded mode, as Apache sometimes handles certain requests differently, and without invoking ModSecurity (all other modules).

Como posso obter o RESPONSE_STATUS todas as vezes, com certeza? fase 5?

    
por JMW 29.03.2012 / 17:09

2 respostas

2

O Mod_security já deve vir com alguns scripts, fornecidos pelo projeto OWASP, que bloqueiam robôs. Você já deu uma olhada? Você terá que habilitar modsecurity_crs_35_bad_robots.conf. Você pode baixar o arquivo do site do projeto OWASP:

link

As instruções também podem ser encontradas lá.

Do README:

== base_rules/modsecurity_crs_35_bad_robots.conf ==  Detection of Malicious Robots
    - Unique request attributes: User-Agent header, URL, Headers
    - RBL Check of IP addresses
    - Detection of security scanners
    - Blocking can confuse security testing software (WAFW00f)
    
por 29.03.2012 / 22:19
0

A sugestão para o conjunto de regras principal é boa, mas a regra real que você deve usar é

modsecurity_crs_11_brute_force.conf

Esta regra é especialmente para o seu caso: protege determinado URL de ser forçado a brute e bloqueia o IP que inicia este ataque de força bruta . Você pode configurar esta regra no arquivo de configuração

modsecurity_crs_10_setup.conf

Neste arquivo de configuração, modifique a variável tx.brute_force_protected_urls na regra 900014 com as URLs que você deseja proteger:

SecAction \
  "id:'900014', \
  phase:1, \
  t:none, \
  setvar:'tx.brute_force_protected_urls=#/error/404.html#, #/error/403.html#', \
  setvar:'tx.brute_force_burst_time_slice=60', \
  setvar:'tx.brute_force_counter_threshold=2', \
  setvar:'tx.brute_force_block_timeout=300', \
  nolog, \
  pass"

A variável tx.brute_force_burst_time_slice especifica o período de tempo em segundos dentro de um certo limite deve ser excedido . Pelo que entendi bem, use 60. A variável tx.brute_force_block_timeout define a hora em que o IP do forcado de brute é bloqueado . A variável tx.brute_force_counter_threshold é um pouco complicada. Ele define com que frequência você pode acessar um URL antes de ser bloqueado. Não é o número exato, mas com o valor 2 ou 3 você deve obter um resultado muito bom para sua regra de bloqueio após 10 solicitações.

    
por 24.06.2016 / 15:42