Установка ModSecurity для Apache на Ubuntu 22.04

Коротко о ModSecurity
ModSecurity — это свободный WAF (веб-аппликационный брандмауэр) с сигнатурной моделью обнаружения. Он блокирует XSS, инъекции кода, брутфорс и другие известные атаки. Поддерживается Apache, Nginx и IIS. Краткое определение: WAF — фильтр HTTP/HTTPS, который анализирует трафик и применяет правила безопасности.
Важно: ModSecurity снижает риск эксплойтов, но не заменяет безопасную разработку приложений и обновления ОС и ПО.
Требования
- Сервер с Ubuntu 22.04.
- Доступ root или пользователь с sudo.
Установка Apache
- Установите зависимости:
apt install gnupg2 software-properties-common curl wget git unzip -y- Добавьте репозиторий Apache (при необходимости):
add-apt-repository ppa:ondrej/apache2 -y- Обновите кеш и установите Apache:
apt update -y
apt install apache2 -y- Проверьте статус Apache:
systemctl status apache2Пример ожидаемого вывода:
? apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-10-18 10:49:42 UTC; 4s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 74445 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 74449 (apache2)Установка ModSecurity
Установите модуль ModSecurity для Apache:
apt install libapache2-mod-security2 -yВключите модуль и перезапустите Apache:
a2enmod security2
systemctl restart apache2Проверьте статус сервиса после перезапуска:
systemctl status apache2Базовая конфигурация ModSecurity
- Откройте файл включения модуля:
nano /etc/apache2/mods-enabled/security2.conf- Раскомментируйте или добавьте строку:
IncludeOptional /etc/modsecurity/*.conf- Переименуйте рекомендованный конфиг, чтобы он стал активным:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf- Отредактируйте главный конфиг:
nano /etc/modsecurity/modsecurity.confИзмените значения:
SecRuleEngine On
SecAuditLogParts ABCEFHJKZ- Перезапустите Apache:
systemctl restart apache2Примечание: SecRuleEngine может быть выставлен в DetectionOnly для режима мониторинга без блокировок. В рабочей среде рекомендуется On, но сначала проверьте правила в тестовой среде.
Установка набора правил OWASP CRS
- Скачайте релиз OWASP CRS (в примере используется v3.3.0):
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz- Распакуйте архив:
tar xvf v3.3.0.tar.gz- Создайте папку и переместите правила:
mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs- Переименуйте пример конфигурации:
cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf- Подключите CRS в конфиг модуля:
nano /etc/apache2/mods-enabled/security2.confДобавьте строки:
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf- Проверьте синтаксис Apache:
apache2ctl -tОжидаемый ответ:
Syntax OK- Перезапустите сервис:
systemctl restart apache2Проверка работы ModSecurity
Запустите простые тесты локально:
curl http://localhost/index.html?exec=/bin/bashОжидаемый ответ — 403 Forbidden. Другой тест:
curl localhost?doc=/bin/lsПроверьте логи ModSecurity:
tail /var/log/apache2/modsec_audit.logВ логе будут записи правил CRS и информация о срабатываниях, например строки SecRule и SecAction.
Конфигурация logrotate для audit-лога ModSecurity
При высокой нагрузке файл /var/log/apache2/modsec_audit.log может быстро расти. Создайте файл ротации:
nano /etc/logrotate.d/modsecВставьте:
/var/log/apache2/modsec_audit.log
{
rotate 31
daily
missingok
compress
delaycompress
notifempty
}Эта настройка будет ежедневно ротировать лог и хранить до 31 сжатого файла.
Отладка и распространённые проблемы
- Если Apache не стартует после правок — проверьте вывод “apache2ctl -t” и системный журнал: “journalctl -u apache2 -xe”.
- Если ModSecurity блокирует легитимный трафик, временно переключите режим в DetectionOnly и отладьте правила.
- При ошибках в IncludeOptional проверьте права доступа и корректность путей.
- Если audit-лог пуст, проверьте, правильно ли указан параметр SecAuditLog в /etc/modsecurity/modsecurity.conf.
Когда ModSecurity может не помочь
- Атакующие используют легитимный HTTP-поведение, не подпадающее под правила сигнатур.
- Нестандартные приложения, которые генерируют вредоносный трафик внутри допустимых паттернов.
В таких случаях нужны дополнительные меры: WAF уровня приложений с поведенческим анализом, rate-limiting и проверка кода.
Альтернативные подходы
- Модульный WAF для Nginx (ngx_http_modsecurity_module) — если вы используете Nginx.
- Коммерческие WAF с поддержкой ML и интеграцией CDN (Cloudflare, Imperva) — если необходима поддержка и SLA.
- Inline-прокси и reverse-proxy с фильтрацией трафика.
Модель принятия решений (хек-эвристика)
- Если у вас небольшое приложение и вы хотите бесплатное решение — ModSecurity + OWASP CRS.
- Если у вас критичный трафик и бюджет — коммерческий WAF с 24/7 поддержкой.
- Всегда тестируйте в DetectionOnly, затем переводите в On.
Факт-бокс: ключевые значения
- ОС: Ubuntu 22.04
- OWASP CRS в примере: v3.3.0
- Пример Apache в выводе: 2.4.52
- Ротация логов: rotate 31, daily
- Основные пути: /etc/modsecurity/, /etc/apache2/mods-enabled/, /etc/apache2/modsecurity-crs/
Роль-базированный чеклист
Для системного администратора:
- Обновить пакеты и зависимости.
- Установить Apache и ModSecurity.
- Перенести и подключить OWASP CRS.
- Настроить logrotate и мониторинг диска.
Для разработчика:
- Проверить, что приложения корректно обрабатывают 403 ответы.
- Прогнать набор тестов (см. Критерии приёмки).
- Сообщать false-positive в команду Ops.
Для менеджера по безопасности:
- План тестирования и отката.
- Процедура уведомлений при инцидентах.
- Периодический обзор правил CRS и их обновление.
Критерии приёмки
- Apache запускается без ошибок: “apache2ctl -t” => “Syntax OK”.
- ModSecurity активен: SecRuleEngine On.
- OWASP CRS подключён и правила читаются (отсутствие ошибок при старте).
- Тестовые вредоносные запросы приводят к 403 и логируются в /var/log/apache2/modsec_audit.log.
- Logrotate корректно сжимает и хранит логи.
Быстрые команды проверки
apache2ctl -t
systemctl restart apache2
systemctl status apache2
tail -n 200 /var/log/apache2/modsec_audit.log
curl "http://localhost/index.html?exec=/bin/bash"Короткое руководство по откату (rollback)
- Переключите ModSecurity в режим DetectionOnly в /etc/modsecurity/modsecurity.conf.
- Удалите или закомментируйте IncludeOptional CRS в /etc/apache2/mods-enabled/security2.conf.
- Перезапустите Apache: systemctl restart apache2.
- Восстановите из резервной копии конфигов, если нужно.
Заключение
Вы настроили ModSecurity и OWASP CRS на Apache в Ubuntu 22.04. Это улучшит защиту приложения от известных эксплойтов, но не заменит безопасную разработку и регулярные обновления. Тестируйте правила в DetectionOnly, настраивайте исключения и следите за логами.
Если нужны примеры кастомных правил, сценарии тестирования или помощь в настройке для Nginx — напишите, укажу шаги и примеры.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента