
Estou lutando com uma regra RBL no mod_security no Apache 2.2 que parece estar me dando um falso positivo. Vejo o seguinte no log de auditoria (endereço IP redigido):
Mensagem: pesquisa RBL de 4.3.2.1.sbl-xbl.spamhaus.org foi bem-sucedida em REMOTE_ADDR. [arquivo "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_42_comment_spam.conf"] [linha "21"] [id "981138"] [msg "RBL Match for SPAM Source"] [severity "CRITICAL"] [tag " AUTOMAÇÃO/MALICIOSO"]
A parte que está me deixando maluco é que, se eu fizer uma pesquisa nslookup
no nome especificado na mensagem de log, obtenho o resultado de que ele não existe. O que, pelo que entendi, significa que este endereço não está na lista. Então, por que o mod_security está tendo sucesso?
Também usei o serviço de pesquisa do spamhaus para confirmar se o endereço IP não está na lista negra.
o que estou perdendo? Parece que algo está sendo armazenado em cache, mas não consigo descobrir onde.
Um pouco mais de fundo, inicialmente o host estava usando um servidor DNS que retornava endereços (de forma útil) mesmo quando a pesquisa falhava. Mudei a configuração para usar os servidores do Google (8.8.8.8 e 8.8.4.4) e agora host
funciona nslookup
como esperado. Reinicializei o servidor, então, em teoria, não há cache de memória. Também verifiquei se os arquivos de dados mod_security que preservariam o endereço IP foram limpos. Eu sei que está funcionando, pois a pesquisa inicial do endereço aparece como acima, e as subsequentes, após o falso sucesso inicial, mostram o endereço como um endereço de SPAM conhecido.
A regra em questão:
SecRule REMOTE_ADDR "@rbl sbl-xbl.spamhaus.org" \
"phase:1,id:'981138',t:none,pass,nolog,auditlog,msg:'RBL Match for SPAM Source',\
tag:'AUTOMATION/MALICIOUS',severity:'2',setvar:'tx.msg=%{rule.msg}',\
setvar:tx.automation_score=+%{tx.warning_anomaly_score},\
setvar:tx.anomaly_score=+%{tx.warning_anomaly_score},\
setvar:tx.%{rule.id}-AUTOMATION/MALICIOUS-%{matched_var_name}=%{matched_var},\
setvar:ip.spammer=1,expirevar:ip.spammer=86400,setvar:ip.previous_rbl_check=1,\
expirevar:ip.previous_rbl_check=86400,skipAfter:END_RBL_CHECK"
Responder1
Não estou mais vendo esse problema e suspeito que conheço a causa.
- O servidor de nomes foi configurado para procurar nomes em mydomain.com por meio da configuração "search" em /etc/resolv.conf
- Eu tinha uma entrada DNS curinga para *.mydomain.com retornando um endereço IP
(1) permanece verdadeiro, mas removi a entrada DNS curinga, então agora uma pesquisa por exemplo.com não resultará mais em uma correspondência em exemplo.com.meudominio.com