Может ли 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. Я могу регистрировать подобные события около 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, чтобы упростить будущие обновления.

Связанный контент