저는 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으로 설정된 내 구성 인바운드 이상 점수를 초과하지 않습니다. 단일 페이지 로드에서 이러한 종류의 이벤트를 약 25회 기록할 수 있어 Apache2가 부풀어 오릅니다 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 파일을 실제로 편집하는 것보다 낫습니다.