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

ModSecurity не применяет правила - нет записей в журнале ошибок

У меня свежая установка CentOS 8. Я установил Apache 2.4.37 из репо. Затем установили последнюю версию ModSecurity:

dnf install mod_security -y

Проверил установку

dnf info mod_security

Результат:

Name         : mod_security
Version      : 2.9.2

Необходимые модули Apache доступны / загружены:

apachectl -M | grep security -> security2_module (shared)
apachectl -M | grep unique -> unique_id_module (shared)

Установил основной набор правил из репо:

dnf install mod_security_crs

который автоматически связывает правила с папкой apache

/etc/httpd/modsecurity.d/activated_rules

Правила проверены / находятся на месте.

Основной файл конфигурации

/etc/httpd/conf.d/mod_security.conf

включает необходимые дополнительные файлы конфигурации, включая сами файлы конфигурации правил:

IncludeOptional /etc/httpd/modsecurity.d/crs-setup.conf
IncludeOptional /etc/httpd/modsecurity.d/activated_rules/*.conf
IncludeOptional /etc/httpd/modsecurity.d/local_rules/*.conf

(пути были дважды проверены) и активирует механизм правил:

SecRuleEngine On

Файл конфигурации правил modsecurity.d/crs-setup.conf (который входит в mod_security.conf, см. выше) обеспечивает

SecDefaultAction "phase:1,log,auditlog,deny,status:403"
SecDefaultAction "phase:2,log,auditlog,deny,status:403"

Apache httpd.conf вызывает ModSecurity:

SecStatusEngine On

Перезапуск (apachectl restart) показывает, что ModSecurity был успешно загружен:

ModSecurity: StatusEngine call successfully sent. <-- including LUA etc.

Тесты с манипулируемыми URL-адресами, например вставкой скрипта:

/?q=%22%3E%3Cscript%3Ealert(1)%3C/script%3E%27

не проявлять никакой реакции со стороны ModSecurity. Никаких записей в файлах журнала аудита и отладки ModSecuritie (уровень отладки был установлен на 3), никаких ошибок в файлах журнала Apache.

Я просто пропустил включение каталога conf.d в Apache httpd.conf. Вот почему движок ModSecurity мог запуститься, но правил не читал.

Я добавил строку

IncludeOptional /etc/httpd/conf.d/*.conf

в httpd. conf, и все работает как положено.