O mod_security somente pode registrar regras acionadas se a requisição foi bloqueada?

2

Instalei o mod_security e atualmente estou executando no modo DetectionOnly enquanto monitoro os logs e os configuro para atender às necessidades dos meus servidores.

Eu configurei para pontuação de anomalia e ajustei minhas pontuações de acordo para reduzir os falsos positivos.

No Apache2 error_log estou recebendo eventos de log assim:

[Fri May 01 14:48:48 2015] [error] [client 81.138.5.14] ModSecurity: Warning. Operator LT matched 20 at TX:inbound_anomaly_score. [file "/etc/apache2/modsecurity-crs/activated_rules/modsecurity_crs_60_correlation.conf"] [line "33"] [id "981203"] [msg "Inbound Anomaly Score (Total Inbound Score: 13, SQLi=11, XSS=): Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded"] [hostname "www.domain.co.uk"] [uri "/wp-admin/admin-ajax.php"] [unique_id "VUOEQNRurOYAABA-HZEAAAAA"]

Esses eventos não excedem minha pontuação de anomalia de entrada configurada, que está atualmente definida como 20. Eu posso obter esses eventos de tipo registrados em torno de 25 vezes em um único carregamento de página, inchando meu Apache2 error_log .

Existe alguma maneira de limitar o que é enviado para o error_log , de modo que apenas anomalias que excedam o meu limite sejam registradas?

O objetivo

Estou tentando conseguir duas coisas aqui. Eu quero manter o error_log o mais limpo possível para que ele não fique inflado e use espaço excessivo.

Eu também quero poder revisar e monitorar esses logs para continuar minha configuração contínua do mod_security. Idealmente, seria apenas mostrar eventos que excederam o limite de anomalia, para que eu possa ver se eles são falsos positivos ou não.

Obrigado.

    
por AJReading 01.05.2015 / 16:01

1 resposta

2

A regra é a seguinte:

SecRule TX:INBOUND_ANOMALY_SCORE "@gt 0" \
    "chain,phase:5,id:'981203',t:none,log,noauditlog,pass,skipAfter:END_CORRELATION,msg:'Inbound Anomaly Score (Total Inbound Score: %{TX.INBOUND_ANOMALY_SCORE}, SQLi=%{TX.SQL_INJECTION_SCORE}, XSS=%{TX.XSS_SCORE}): %{tx.inbound_tx_msg}'"
    SecRule TX:INBOUND_ANOMALY_SCORE "@lt %{tx.inbound_anomaly_score_level}"

que basicamente diz que se a pontuação estiver acima de 0, mas abaixo de tx.inbound_anomaly_score_level, faça o login. Presumivelmente, você pode rever as regras que dispararam, mas não o suficiente para bloquear.

Se essa regra não for muito útil para você, talvez seja melhor removê-la completamente para que você não perca tempo testando se deseja executá-la ou não:

SecRuleRemoveById 981203

Observe que isso deve ser especificado APÓS a regra ser definida.

A remoção de regras dessa forma geralmente é melhor do que realmente editar os arquivos do CRS para facilitar futuros upgrades.

    
por 02.05.2015 / 11:02