В статье описан способ быстрого запуска ModSecurity в CentOS . Web Application Firewall (ModSecurity) - это сетевой экран веб приложений, позволяющий блокировать атаки на уровне веб сервера, до того как они "достигнут" веб-приложения.
ModSecurity - является брандмауэром веб-приложений (WAF) с открытым исходным кодом. Первоначально разработанный как модуль для Apache HTTP Server, он развивался, чтобы обеспечить множество возможностей фильтрации запросов и ответов протокола Hypertext Transfer Protocol наряду с другими функциями безопасности на ряде различных платформ, включая Apache HTTP Server, Microsoft IIS и Nginx.
Установка mod_security в CentOS
До окончания настройки не стоит перезапускать веб-сервер, это приведет к блокировки всех запросов.
Перед установкой пакета, дополнительно ставим пакет git, он понадобиться для получения правил работы
1 | yum install git |
Устанавливаем mod_security
1 | yum install mod_security |
Настройка правил mod_security
В качестве правил будем использовать правила OWASP
Скачиваем правила:
1 | git clone https://github.com/coreruleset/coreruleset.git |
копируем файл crs-setup.conf, без него mod_security будет блокировать все запросы
1 | cp coreruleset/crs-setup.conf.example /etc/httpd/modsecurity.d/activated_rules/00-crs-setup.conf |
копируем правила, в директорию /etc/httpd/modsecurity.d/activated_rules/
1 | cp coreruleset/rules/* /etc/httpd/modsecurity.d/activated_rules/ |
после этого можно перезапустить apache
1 | systemctl restart httpd |
Дополнительной настройки не требуется, так как ModSecurity настроен на блокирование всех обнаруженных атак.
Ошибка при запросе
Если журналах веб сервиса присутствует следующая ошибка
[Fri Mar 04 07:26:04.516164 2022] [:error] [pid 2078:tid 140249942456064] [client 192.168.153.1:2203] [client 192.168.153.1] ModSecurity: Access denied with code 500 (phase 1). Operator EQ matched 0 at TX. [file "/etc/httpd/modsecurity.d/activated_rules/REQUEST-901-INITIALIZATION.conf"] [line "63"] [id "901001"] [msg "ModSecurity Core Rule Set is deployed without configuration! Please copy the crs-setup.conf.example template to crs-setup.conf, and include the crs-setup.conf file in your webserver configuration before including the CRS rules. See the INSTALL file in the CRS directory for detailed instructions"] [severity "CRITICAL"] [ver "OWASP_CRS/3.4.0-dev"] [hostname "192.168.153.128"] [uri "/"] [unique_id "YiIFXIj7rlMc5p57Jzu2sAAAAEA"]
значит не был скопирован файл "crs-setup.conf.example" отключающий правило 900990