Kann mod_security ausgelöste Regeln nur protokollieren, wenn die Anfrage blockiert wurde?

Kann mod_security ausgelöste Regeln nur protokollieren, wenn die Anfrage blockiert wurde?

Ich habe mod_security installiert und verwende diesen DetectionOnlyModus derzeit, da ich Protokolle überwache und die Konfiguration so vornehme, dass sie den Anforderungen meiner Server entspricht.

Ich habe es für die Anomaliebewertung eingerichtet und meine Bewertungen entsprechend optimiert, um Fehlalarme zu reduzieren.

In Apache2 error_logerhalte ich Protokollereignisse wie diese:

[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"]

Diese Ereignisse überschreiten meinen konfigurierten Inbound-Anomalie-Score nicht, der derzeit auf 20 eingestellt ist. Bei einem einzigen Seitenladevorgang können derartige Ereignisse etwa 25 Mal protokolliert werden, was meinen Apache2 aufbläht error_log.

Gibt es eine Möglichkeit, die gesendeten Daten zu begrenzen, error_logsodass nur Anomalien protokolliert werden, die meinen Grenzwert überschreiten?

Das Ziel

Ich versuche hier zwei Dinge zu erreichen. Ich möchte es error_logso sauber wie möglich halten, damit es nicht aufgebläht wird und zu viel Platz einnimmt.

Ich möchte diese Protokolle auch überprüfen und überwachen können, um meine laufende Konfiguration von mod_security fortzusetzen. Im Idealfall werden nur Ereignisse angezeigt, die das Anomalielimit überschritten haben, sodass ich sehen kann, ob es sich um Fehlalarme handelt oder nicht.

Danke.

Antwort1

Die Regel lautet wie folgt:

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}"

was im Wesentlichen bedeutet, dass, wenn der Score über 0, aber unter tx.inbound_anomaly_score_level liegt, es protokolliert werden soll. Vermutlich, damit Sie Regeln überprüfen können, die ausgelöst wurden, aber nicht ausreichen, um zu blockieren.

Wenn diese Regel für Sie nicht besonders nützlich ist, ist es vielleicht besser, sie einfach vollständig zu entfernen, damit Sie keine Zeit damit verschwenden, zu testen, ob sie ausgeführt werden soll oder nicht:

SecRuleRemoveById 981203

Beachten Sie, dass dies angegeben werden muss, NACHDEM die Regel definiert wurde.

Das Entfernen von Regeln auf diese Weise ist normalerweise besser als das tatsächliche Bearbeiten der CRS-Dateien, um zukünftige Upgrades zu vereinfachen.

verwandte Informationen