Настройка ModSecurity в Apache

ModSecurity — это WAF (web application firewall), т.е. файервол для веб-приложений. Его смысл заключается в том, что он проверяет все приходящие на веб-сервер запросы и отфильтровывает те из них, которые соответствуют правилам безопасности. WAF может предотвратить атаки самого разного рода — инъекции (инжекты) в базы данных, межсайтовый скриптинг.

Разберем установку и настройку WAF с использованием ModSecurity. Для тестирования используйте VPS для кратковременного использования.

⏺Установка ModSecurity

Для примера рассмотрим настройку WAF с использованием ModSecurity — одного из самых популярных и мощных инструментов для защиты веб-приложений.

Установите ModSecurity на ваш сервер:

sudo apt-get install libapache2-mod-security2

⏺Активация конфигурационного файла

Скопируйте рекомендуемый конфигурационный файл:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# Включить (On) или выключить (Off) механизм фильтрации
SecRuleEngine On
# Механизм аудита работает независимо и может быть включен (On) или
# выключен (Off) на уровне сервера или директории
SecAuditEngine RelevantOnly
# Имя файла журнала для записи событий аудита
SecAuditLog /var/log/apache2/modsec_audit.log
# Имя файла журнала
SecDebugLog /var/log/apache2/modsec_debug.log
# Maximum request body size we will
# accept for buffering
SecRequestBodyLimit 131072

⏺Включение правил защиты

Активируйте модуль security2 и перезапустите Apache:

sudo a2enmod security2
sudo systemctl restart apache2

⏺Проверка работы WAF

Чтобы убедиться, что WAF работает, попробуйте отправить подозрительный запрос:

curl -H "User-Agent: <script>alert(1)</script>" http://<your_server>

Если WAF настроен правильно, он заблокирует этот запрос, обнаружив потенциальную XSS-атаку.

⏺Настройка дополнительных правил

Для повышения уровня защиты вы можете добавить дополнительные правила в конфигурационный файл:

sudo vim /etc/modsecurity/modsecurity.conf
# Пример добавления правила
SecRule REQUEST_HEADERS:User-Agent "curl" "id:1000,deny,log,msg:'Curl tool detected'"

⏺Логирование и мониторинг

ModSecurity ведет журналы всех заблокированных запросов, что позволяет проводить анализ инцидентов и улучшать защиту. Логи можно найти по пути:

/var/log/apache2/modsec_audit.log