我已经安装了mod_security,目前我正在运行DetectionOnly模式,因为我监视日志并进行configuration以适合我的服务器需求。
我已经设置了exception评分,并相应地调整了分数,以减less误报。
在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"]
这些事件不会超过我configuration的入站exception分数,当前设置为20.我可以在单个页面加载中logging大约25次这类事件,从而使我的Apache2 error_log膨胀。
是否有限制什么发送到error_log以便只有超出我的限制的exceptionlogging?
目的
我想在这里做两件事情。 我想保持error_log尽可能干净,以免它膨胀,并使用过多的空间。
我也希望能够检查和监视这些日志,以继续我正在进行的mod_securityconfiguration。 理想情况下,它只会显示超出exception限制的事件,所以我可以看到它们是否为误报。
谢谢。
规则如下:
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然后logging它。 大概是这样,你可以审查规则,但没有足够的阻止。
如果这个规则对你不是很有用,那么也许最好把它完全删除,这样你就不用浪费时间去testing是否运行了。
SecRuleRemoveById 981203
请注意,必须在规则定义后指定。
以这种方式去除规则通常比实际编辑CRS文件更好,以使未来的升级更容易。