Гид по технологиям

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

• 4 min read • Security • Обновлено 27 Nov 2025
ModSecurity для Apache на Ubuntu 22.04
ModSecurity для Apache на Ubuntu 22.04

Схематичное изображение ModSecurity, логотип и схема защиты веб-трафика

Коротко о ModSecurity

ModSecurity — это свободный WAF (веб-аппликационный брандмауэр) с сигнатурной моделью обнаружения. Он блокирует XSS, инъекции кода, брутфорс и другие известные атаки. Поддерживается Apache, Nginx и IIS. Краткое определение: WAF — фильтр HTTP/HTTPS, который анализирует трафик и применяет правила безопасности.

Важно: ModSecurity снижает риск эксплойтов, но не заменяет безопасную разработку приложений и обновления ОС и ПО.

Требования

  • Сервер с Ubuntu 22.04.
  • Доступ root или пользователь с sudo.

Установка Apache

  1. Установите зависимости:
apt install gnupg2 software-properties-common curl wget git unzip -y
  1. Добавьте репозиторий Apache (при необходимости):
add-apt-repository ppa:ondrej/apache2 -y
  1. Обновите кеш и установите Apache:
apt update -y
apt install apache2 -y
  1. Проверьте статус 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

  1. Откройте файл включения модуля:
nano /etc/apache2/mods-enabled/security2.conf
  1. Раскомментируйте или добавьте строку:
IncludeOptional /etc/modsecurity/*.conf
  1. Переименуйте рекомендованный конфиг, чтобы он стал активным:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
  1. Отредактируйте главный конфиг:
nano /etc/modsecurity/modsecurity.conf

Измените значения:

SecRuleEngine On
SecAuditLogParts ABCEFHJKZ
  1. Перезапустите Apache:
systemctl restart apache2

Примечание: SecRuleEngine может быть выставлен в DetectionOnly для режима мониторинга без блокировок. В рабочей среде рекомендуется On, но сначала проверьте правила в тестовой среде.

Установка набора правил OWASP CRS

  1. Скачайте релиз OWASP CRS (в примере используется v3.3.0):
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
  1. Распакуйте архив:
tar xvf v3.3.0.tar.gz
  1. Создайте папку и переместите правила:
mkdir /etc/apache2/modsecurity-crs/
mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs
  1. Переименуйте пример конфигурации:
cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
mv crs-setup.conf.example crs-setup.conf
  1. Подключите 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
  1. Проверьте синтаксис Apache:
apache2ctl -t

Ожидаемый ответ:

Syntax OK
  1. Перезапустите сервис:
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)

  1. Переключите ModSecurity в режим DetectionOnly в /etc/modsecurity/modsecurity.conf.
  2. Удалите или закомментируйте IncludeOptional CRS в /etc/apache2/mods-enabled/security2.conf.
  3. Перезапустите Apache: systemctl restart apache2.
  4. Восстановите из резервной копии конфигов, если нужно.

Заключение

Вы настроили ModSecurity и OWASP CRS на Apache в Ubuntu 22.04. Это улучшит защиту приложения от известных эксплойтов, но не заменит безопасную разработку и регулярные обновления. Тестируйте правила в DetectionOnly, настраивайте исключения и следите за логами.

Если нужны примеры кастомных правил, сценарии тестирования или помощь в настройке для Nginx — напишите, укажу шаги и примеры.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро