Ich habe mod_security installiert und verwende diesen DetectionOnly
Modus 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_log
erhalte 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_log
sodass nur Anomalien protokolliert werden, die meinen Grenzwert überschreiten?
Das Ziel
Ich versuche hier zwei Dinge zu erreichen. Ich möchte es error_log
so 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.