Instalé mod_security y actualmente estoy ejecutando en DetectionOnly
modo mientras superviso los registros y configuro para satisfacer las necesidades de mis servidores.
Lo configuré para la puntuación de anomalías y modifiqué mis puntuaciones en consecuencia para reducir los falsos positivos.
En Apache2 error_log
recibo eventos de registro como este:
[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"]
Estos eventos no exceden mi puntaje de anomalía entrante configurado, que actualmente está establecido en 20. Puedo registrar eventos de este tipo alrededor de 25 veces en una sola carga de página, lo que infla mi Apache2 error_log
.
¿Existe alguna forma de limitar lo que se envía para error_log
que solo se registren las anomalías que excedan mi límite?
El objetivo
Estoy tratando de lograr dos cosas aquí. Quiero mantenerlo lo error_log
más limpio posible para que no se infle y ocupe demasiado espacio.
También quiero poder revisar y monitorear estos registros para continuar con mi configuración actual de mod_security. Idealmente, solo mostraría eventos que excedieron el límite de anomalía, para poder ver si son falsos positivos o no.
Gracias.
Respuesta1
La regla es la siguiente:
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 básicamente dice que si la puntuación está por encima de 0 pero por debajo de tx.inbound_anomaly_score_level, regístrela. Presumiblemente para que pueda revisar las reglas que se activaron pero no lo suficiente como para bloquear.
Si esta regla no es muy útil para usted, tal vez sea mejor eliminarla por completo para no perder el tiempo probando si ejecutarla o no:
SecRuleRemoveById 981203
Tenga en cuenta que esto debe especificarse DESPUÉS de que se defina la regla.
Eliminar las reglas de esta manera suele ser mejor que editar los archivos CRS para facilitar futuras actualizaciones.