Вопрос или проблема
- Apache/2.4.62 (Debian)
- ModSecurity 2.9.7-1+b1
- OWASP coreruleset-4.6.0
Я защитил свой веб-сервер Apache с помощью ModSecurity и набора правил OWASP. Это работает очень хорошо, и тест на SQL-инъекцию также успешно обнаруживается и отклоняется.
Теперь у меня несколько виртуальных хостов. Некоторые используют WordPress, один использует Roundcube, а некоторые просто используют обычные HTML-страницы без ничего за ними.
Как я могу настроить так, чтобы плагин OWASP для WordPress использовался только для виртуальных хостов с установкой WordPress, а плагин OWASP для Roundcube – только для хоста Roundcube, а все остальные хосты использовали стандартный набор правил?
Ответ или решение
Вопрос, который вы подняли, касается настройки Apache с использованием ModSecurity и OWASP для разных виртуальных хостов, что является важным аспектом обеспечения безопасности веб-приложений. Давайте подробно рассмотрим, как можно разделить конфигурацию между виртуальными хостами для WordPress, Roundcube и простых HTML-страниц.
Шаг 1: Установка и базовая настройка
Для начала убедитесь, что ваш веб-сервер настроен правильно. У вас уже установлены:
- Apache/2.4.62 (Debian)
- ModSecurity 2.9.7-1+b1
- OWASP core ruleset 4.6.0
После успешной установки и тестирования базовой конфигурации, можно переходить к более детальной настройке.
Шаг 2: Определение структуры виртуальных хостов
Вам необходимо понимать, как у вас организованы виртуальные хосты. Например, ваша структура может выглядеть следующим образом:
<VirtualHost *:80>
ServerName wordpress.example.com
DocumentRoot /var/www/wordpress
</VirtualHost>
<VirtualHost *:80>
ServerName roundcube.example.com
DocumentRoot /var/www/roundcube
</VirtualHost>
<VirtualHost *:80>
ServerName static.example.com
DocumentRoot /var/www/static
</VirtualHost>
Шаг 3: Настройка конфигурации ModSecurity
Вам потребуется использовать директивы Include
или Require
для задания определенных правил ModSecurity для каждого виртуального хоста.
- WordPress: Здесь вы будете использовать специфические правила для защиты WordPress, такие как запрет на SQL-инъекции, обработку запросов к темам и плагинам.
<VirtualHost *:80>
ServerName wordpress.example.com
DocumentRoot /var/www/wordpress
<IfModule mod_security2.c>
SecRuleEngine On
Include /etc/modsecurity/owasp-crs/crs-setup.conf
Include /etc/modsecurity/owasp-crs/rules/*.conf
Include /etc/modsecurity/wordpress-rules.conf # Ваши специфические правила для WordPress
</IfModule>
</VirtualHost>
- Roundcube: Для Roundcube можно использовать отдельные правила, которые будут специально адаптированы для защиты этого веб-приложения.
<VirtualHost *:80>
ServerName roundcube.example.com
DocumentRoot /var/www/roundcube
<IfModule mod_security2.c>
SecRuleEngine On
Include /etc/modsecurity/owasp-crs/crs-setup.conf
Include /etc/modsecurity/owasp-crs/rules/*.conf
Include /etc/modsecurity/roundcube-rules.conf # Ваши специфические правила для Roundcube
</IfModule>
</VirtualHost>
- Статические страницы: Эти виртуальные хосты могут воспользоваться менее строгим набором правил, чтобы не перегружать сервер без необходимости.
<VirtualHost *:80>
ServerName static.example.com
DocumentRoot /var/www/static
<IfModule mod_security2.c>
SecRuleEngine On
Include /etc/modsecurity/owasp-crs/crs-setup.conf
Include /etc/modsecurity/owasp-crs/rules/*.conf
# Обычные правила без специфических настроек
</IfModule>
</VirtualHost>
Шаг 4: Инициализация правил
После изменения конфигурации не забудьте перезагрузить Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
Заключение
Таким образом, вы можете достаточно легко управлять специфическими правилами для различных приложений, обеспечивая при этом безопасность вашего веб-сервера. Использование ModSecurity с правилом OWASP для каждого виртуального хоста, самостоятельно адаптированного под конкретный тип приложения, поможет вам минимизировать риски и защитить ваши веб-ресурсы.
Если у вас остались какие-либо вопросы или необходима дополнительная помощь в настройке, не стесняйтесь обращаться к профессионалам в области веб-безопасности.