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

Установка ModSecurity 3 и интеграция с Nginx на Ubuntu 22.04

5 min read Безопасность Обновлено 27 Nov 2025
ModSecurity + Nginx на Ubuntu 22.04 — Установка
ModSecurity + Nginx на Ubuntu 22.04 — Установка

Диаграмма установки ModSecurity и интеграции с Nginx на Ubuntu 22.04

ModSecurity 3 — это свободный WAF, который защищает веб-приложения от XSS, SQL-инъекций и RCE. В этой инструкции показано, как собрать ModSecurity из исходников, подключить его к Nginx и настроить OWASP CRS на Ubuntu 22.04. В конце — тесты, чеклисты и советы по безопасности.

Важно: перед началом создайте резервные копии конфигураций и убедитесь, что у вас есть доступ к консоли сервера в случае проблем.

О чём эта инструкция

  • Установка зависимостей и сборка ModSecurity 3
  • Сборка и подключение модуля ModSecurity-nginx к Nginx
  • Настройка конфигурации Nginx и включение правила OWASP CRS
  • Создание systemd-сервиса для управления Nginx
  • Проверка работы и базовые тесты

Предусловия

  • Сервер с Ubuntu 22.04.
  • Установлен root-пароль или доступ по sudo.

Начальная подготовка пакетов

Рекомендуется сначала обновить систему и установить все нужные пакеты:

apt update -y  
apt upgrade -y

Установите набор зависимостей для сборки ModSecurity и Nginx:

apt install g++ flex bison curl apache2-dev doxygen libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev git liblmdb-dev libpkgconf3 lmdb-doc pkgconf zlib1g-dev libssl-dev -y

После установки зависимостей можно переходить к сборке.

Установка ModSecurity 3

ModSecurity 3 обычно не доступен в стандартных репозиториях Ubuntu в актуальной версии, поэтому его собирают из исходников.

Скачайте релиз (пример v3.0.8):

wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.8/modsecurity-v3.0.8.tar.gz

Распакуйте архив:

tar -xvzf modsecurity-v3.0.8.tar.gz

Сконфигурируйте и соберите модуль:

cd modsecurity-v3.0.8  
./build.sh  
./configure

Установите собранные артефакты:

make  
make install

Примечание: вывод сборки может содержать предупреждения. Если компиляция завершилась с ошибкой, проверьте установленные пакеты разработки (dev) и версии инструментов сборки.

Установка Nginx с поддержкой ModSecurity 3

Скачать коннектор ModSecurity-nginx:

cd ~  
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

Скачать исходники Nginx (пример 1.20.2):

wget https://nginx.org/download/nginx-1.20.2.tar.gz

Распакуйте и подготовьтесь к конфигурации:

tar xzf nginx-1.20.2.tar.gz

Создайте системного пользователя для Nginx:

useradd -r -M -s /sbin/nologin -d /usr/local/nginx nginx

Соберите Nginx с подключением динамического модуля ModSecurity:

cd nginx-1.20.2  
./configure --user=nginx --group=nginx --with-pcre-jit --with-debug --with-compat --with-http_ssl_module --with-http_realip_module --add-dynamic-module=/root/ModSecurity-nginx --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log

Соберите и установите модули:

make  
make modules  
make install

Создайте ссылку для удобного запуска:

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

Проверьте версию Nginx и параметры сборки:

nginx -V

Вы увидите строку конфигурации с аргументом –add-dynamic-module, подтверждающую, что модуль подключён.

Конфигурация Nginx для работы с ModSecurity

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

cp ~/modsecurity-v3.0.8/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf  
cp ~/modsecurity-v3.0.8/unicode.mapping /usr/local/nginx/conf/

Создайте резервную копию основного конфига Nginx и откройте его для редактирования:

cp /usr/local/nginx/conf/nginx.conf{,.bak}

nano /usr/local/nginx/conf/nginx.conf

Замените/добавьте в файл следующие строки (пример минимальной конфигурации):

load_module modules/ngx_http_modsecurity_module.so;
user  nginx;
worker_processes  1;
pid        /run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  nginx.example.com;
        modsecurity  on;
        modsecurity_rules_file  /usr/local/nginx/conf/modsecurity.conf;
        access_log  /var/log/nginx/access_example.log;
        error_log  /var/log/nginx/error_example.log;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Сохраните файл и включите режим блокировки SecRuleEngine:

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /usr/local/nginx/conf/modsecurity.conf

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

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

OWASP ModSecurity CRS — это набор готовых правил для детектирования распространённых атак.

Склонируйте репозиторий CRS в директорию конфигурации:

cd  
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /usr/local/nginx/conf/owasp-crs

Переименуйте пример конфигурации:

cp /usr/local/nginx/conf/owasp-crs/crs-setup.conf{.example,}

Добавьте включение CRS в modsecurity.conf:

echo -e "Include owasp-crs/crs-setup.conf  
Include owasp-crs/rules/*.conf" >> /usr/local/nginx/conf/modsecurity.conf

Проверьте конфигурацию Nginx:

nginx -t

Если ошибок нет, конфигурация корректна.

Создание systemd сервиса для Nginx

Создайте файл unit для управления установкой Nginx:

nano /etc/systemd/system/nginx.service

Вставьте следующий unit-файл:

[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/local/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

Примените изменения и включите сервис:

systemctl daemon-reload
systemctl start nginx  
systemctl enable nginx

Проверьте статус:

systemctl status nginx

Проверка работы ModSecurity

Простой тест на RCE-паттерн:

curl localhost?doc=/bin/ls

Ожидаемый результат — 403 Forbidden и запись в лог аудита ModSecurity.

Проверка аудита ModSecurity:

tail /var/log/modsec_audit.log

Пример логов покажет, какие правила сработали и почему был возвращён код 403.

Тесты и критерии приёмки

Критерии приёмки:

  • Nginx запускается и обслуживает HTTP-запросы.
  • ModSecurity подключён как модуль (nginx -V показывает ngx_http_modsecurity_module).
  • В режиме DetectionOnly — нет блокировок; в режиме On — тестовый RCE возвращает 403.
  • OWASP CRS загружен и правила включены в конфигурацию modsecurity.conf.

Минимальные тесты:

  • curl localhost?doc=/bin/ls — должен давать 403 при включённом CRS.
  • curl “‘ or 1=1 –“ — должен детектироваться как SQL-инъекция в логах.
  • Проверить access_log и modsec_audit.log на соответствующие записи.

Режимы использования и когда ModSecurity даёт ограниченную защиту

Когда ModSecurity помогает:

  • Детектирование и блокировка известных сигнатур XSS, SQLi, RCE и др.
  • Быстрая защита при внедрении CRS и базовой конфигурации.

Ограничения и когда не сработает:

  • Не заменяет необходимость безопасного кода и валидации на сервере.
  • Тяжёлые DDoS‑атаки на сетевом уровне нужно отражать с помощью WAF на уровне сети/CDN или DDoS-решений.
  • Возможны ложные срабатывания; CRS требует тюнинга под приложение.

Альтернативные подходы

  • Использовать поставляемые пакеты (apt) с модулем ModSecurity в дистрибутивах, если не требуется кастомная сборка Nginx.
  • Использовать коммерческие/облачные WAF (Cloudflare, AWS WAF) для упрощённого управления и защиты от DDoS.
  • Применять nginx-ingress с ModSecurity в Kubernetes для контейнерных сред.

Советы по безопасности и жёсткая конфигурация

  • Переведите ModSecurity в режим DetectionOnly перед включением в production и тщательной проверкой логов.
  • Ограничьте права файлов и владельца конфигураций (root:root, 600 для конфиденциальных файлов).
  • Настройте ротацию логов и мониторинг модулей (logrotate для /var/log/modsec_audit.log).
  • Обновляйте CRS и ModSecurity регулярно, следите за CVE и релизами.

Чеклист ролей (администратор, разработчик, секьюрити)

Администратор:

  • Установить зависимости и собрать ModSecurity.
  • Настроить systemd unit и права доступа.
  • Настроить ротацию логов и мониторинг.

Разработчик:

  • Тестировать приложение на ложные срабатывания.
  • Подготавливать исключения для легитимного трафика.

Команда безопасности:

  • Настроить CRS и поддерживать актуальность правил.
  • Выполнять аудит срабатываний и обновлять сигнатуры.

Совместимость и заметки по миграции

  • Версии Nginx и ModSecurity должны быть совместимы: для ModSecurity-nginx требуется, чтобы Nginx собирался с поддержкой динамических модулей и опцией –with-compat.
  • При обновлении Nginx пересобирайте модуль ModSecurity-nginx против новой версии исходников.

Краткий глоссарий

  • ModSecurity — модуль Web Application Firewall (WAF).
  • OWASP CRS — набор правил ModSecurity для защиты от OWASP Top 10.
  • DetectionOnly — режим, в котором правила логируют, но не блокируют.

Частые ошибки и отладка

  • Ошибка: модуль не загружается — проверьте путь к modules/ngx_http_modsecurity_module.so и наличие файла.
  • Ошибка конфигурации nginx -t — изучите строку ошибки и верните временно предыдущую конфигурацию из nginx.conf.bak.
  • Ложные срабатывания — временно переводите в DetectionOnly и добавляйте исключения строго для конкретных правил.

Заключение

Поздравляю — вы установили ModSecurity 3 и интегрировали его с Nginx на Ubuntu 22.04. Это даёт дополнительный уровень защиты веб‑приложений, но не заменяет надёжную разработку и сетевые средства защиты. Тестируйте CRS в режиме DetectionOnly, постепенно переводите в режим блокировки и отслеживайте логи.

Эксперт по безопасности: “ModSecurity — эффективный инструмент для многослойной защиты, если его комбинировать с корректной архитектурой приложения и мониторингом”.

Если хотите, могу помочь с конкретной настройкой CRS под ваше приложение или подготовить playbook автоматизации сборки и деплоя.

Поделиться: 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 быстро