В настоящее время у меня есть система CentOS, которая успешно регистрирует соответствующие действия mod_security в файле журнала аудита. Вот моя конфигурация:
<IfModule mod_security2.c>
SecRuleEngine On
SecAuditEngine RelevantOnly
SecAuditLog /var/log/httpd/modsec_audit.log
SecDebugLog /var/log/httpd/modsec_debug.log
SecDebugLogLevel 0
SecRequestBodyAccess On
SecDataDir /tmp
SecTmpDir /tmp
SecPcreMatchLimit 250000
SecPcreMatchLimitRecursion 250000
</IfModule>
Это регистрирует все действия, при которых mod_security перехватывает / блокирует запрос из-за SecAuditEngine RelevantOnly
настройка.
Однако я хотел бы, чтобы он дополнительно регистрировал все данные POST, которые отправляются на сервер (независимо от статуса). Я мог добиться этого, установив SecAuditEngine On
но это регистрирует все данные GET и POST, что является излишним. Я бы в основном хотел опустить все данные GET, если запрос не был перехвачен.
Кто-нибудь может подсказать, как это сделать?
Есть правило, которое включает AuditEngine
для POST
Запросы.
Примерно так (непроверено):
SecRule REQUEST_METHOD "POST" "id:1000,phase:2,ctl:auditEngine=On,nolog,pass"
Действия Ctl влияют только на текущий запрос, поэтому впоследствии он будет сброшен обратно на RelevantOnly для следующего запроса.
Вы также можете создать Sanitise
правила, обеспечивающие маскировку конфиденциальных данных, таких как пароли и данные кредитных карт, перед регистрацией. Посмотреть здесь: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#sanitiseArg