Назад | Перейти на главную страницу

Как заставить mod_security регистрировать все данные POST?

В настоящее время у меня есть система 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