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