
Estoy luchando con una regla RBL en mod_security en Apache 2.2 que parece darme un falso positivo. Veo lo siguiente en el registro de auditoría (dirección IP redactada):
Mensaje: La búsqueda RBL de 4.3.2.1.sbl-xbl.spamhaus.org se realizó correctamente en REMOTE_ADDR. [archivo "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_42_comment_spam.conf"] [línea "21"] [id "981138"] [msg "Coincidencia RBL para fuente de SPAM"] [gravedad "CRÍTICA"] [etiqueta " AUTOMATIZACIÓN/MALICIOSO"]
La parte que me está volviendo loco es que si hago una búsqueda nslookup
con el nombre especificado en el mensaje de registro, obtengo el resultado de que no existe. Lo que según tengo entendido significa que esta dirección no está en la lista. Entonces, ¿por qué mod_security está teniendo éxito?
También utilicé el servicio de búsqueda de spamhaus para confirmar que la dirección IP no está en la lista negra.
¿Qué me estoy perdiendo? Parece que algo se está almacenando en caché pero no sé dónde.
Un poco más de historia, inicialmente el host estaba usando un servidor DNS que (útilmente) devolvía direcciones incluso cuando la búsqueda fallaba. Cambié la configuración para usar los servidores de Google (8.8.8.8 y 8.8.4.4) y ahora host
trabajo nslookup
como esperaba. Reinicié el servidor, por lo que, en teoría, no hay memoria caché. También me aseguré de que los archivos de datos mod_security que preservarían la dirección IP estén borrados. Sé que está funcionando ya que la búsqueda inicial de la dirección aparece como se muestra arriba, y las posteriores, después del falso éxito inicial, muestran la dirección como una dirección SPAM conocida.
La regla en cuestión:
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"
Respuesta1
Ya no veo este problema y sospecho que conozco la causa.
- El servidor de nombres se configuró para buscar nombres dentro de midominio.com mediante la configuración de "búsqueda" en /etc/resolv.conf
- Tenía una entrada DNS comodín para *.midominio.com que devolvía una dirección IP
(1) sigue siendo cierto, pero eliminé la entrada DNS comodín, por lo que ahora una búsqueda de ejemplo.com ya no dará como resultado una coincidencia en ejemplo.com.midominio.com