如果請求被阻止,mod_security 是否只能記錄觸發的規則?

如果請求被阻止,mod_security 是否只能記錄觸發的規則?

我已經安裝了 mod_security,並且當前正在DetectionOnly模式下運行,因為我監視日誌並進行配置以滿足我的伺服器需求。

我已經將其設置為異常評分,並相應地調整了我的分數以減少誤報。

在 Apache2 中,error_log我收到以下日誌事件:

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

這些事件不會超過我配置的入站異常分數,目前設定為 20 error_log

是否有辦法限制發送到的內容,error_log以便僅記錄超出我限制的異常情況?

目的

我想在這裡實現兩件事。我想error_log盡可能保持乾淨,這樣它就不會膨脹並佔用過多的空間。

我還希望能夠查看和監視這些日誌,以繼續我正在進行的 mod_security 配置。理想情況下,它只會顯示超出異常限制的事件,以便我可以查看它們是否是誤報。

謝謝。

答案1

規則如下:

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

這基本上表示如果分數高於 0 但低於 tx.inbound_anomaly_score_level,則記錄它。大概這樣您就可以查看已觸發但不足以阻止的規則。

如果此規則對您來說不是很有用,那麼最好將其完全刪除,這樣您就不會浪費時間測試是否要執行它:

SecRuleRemoveById 981203

請注意,必須在定義規則後指定這一點。

以這種方式刪除規則通常比實際編輯 CRS 檔案更好,以使將來的升級更容易。

相關內容