Вы когда-нибудь задумывались, как добавить дополнительный уровень безопасности к вашему веб-серверу Nginx? Что ж, вот тут-то и вступает в игру модуль Nginx ModSecurity. Это фантастический брандмауэр веб-приложений с открытым исходным кодом (WAF), который помогает защитить ваши веб-приложения от всех видов киберугроз и атак. Прежде чем мы перейдем к установке ModSecurity в Nginx, давайте на минутку разберемся, что такое ModSecurity.

Что такое ModSecurity?

Итак, представьте, что у вас есть веб-сервер, на котором запущен ваш замечательный веб-сайт или веб-приложение. Теперь мы все знаем, что Интернет может быть немного диким местом со всеми видами киберугроз, таящихся вокруг. Вот где ModSecurity становится вашим надежным телохранителем веб-приложений!

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

Как работает Nginx ModSecurity?

ModSecurity действует как привратник, стоя между вашим веб-сервером Nginx и входящим трафиком. Он тщательно проверяет каждый входящий запрос и ответ, анализируя содержимое и заголовки для выявления любой подозрительной или вредоносной активности. Это как будто зоркий охранник проверяет каждого, кто входит в дверь.

Благодаря своим предопределенным правилам безопасности ModSecurity может обнаруживать распространенные веб-угрозы, такие как SQL-инъекции, межсайтовый скриптинг (XSS) и многие другие. Это похоже на встроенный щит, который автоматически блокирует эти вредоносные попытки, сохраняя ваш веб-сайт и ваши драгоценные данные в целости и сохранности.

Теперь, когда вы знаете, что такое ModSecurity, давайте перейдем к этапам его установки на ваш сервер Nginx!

Установка Nginx ModSecurity на Windows

Чтобы начать процесс установки, выполните следующие действия:

  1. Перейдите на страницу ModSecurity GitHub и загрузите последнюю версию модуля ModSecurity для Windows.
  2. Извлеките содержимое загруженного пакета ModSecurity в каталог по вашему выбору в вашей системе Windows. Например, вы можете извлечь его в C:\modsecurity.

Настройка Nginx ModSecurity для Windows

Теперь давайте настроим Nginx для использования модуля ModSecurity:

Откройте файл конфигурации Nginx, обычно расположенный по адресу C:\nginx\conf\nginx.conf, в текстовом редакторе.

Добавьте следующие строки в блок http для загрузки модуля ModSecurity и укажите его файл конфигурации:

load_module "modules/ngx_http_modsecurity_module.so";

http {
    ...
    modsecurity on;
    modsecurity_rules_file "conf/modsecurity.conf";
    ...
}

Сохраните изменения и закройте файл.

Настройте правила ModSecurity

Чтобы настроить правила ModSecurity, выполните следующие действия:

  • Откройте файл конфигурации ModSecurity, обычно расположенный по адресу C:\modsecurity\modsecurity.conf, в текстовом редакторе.
  • Настройте набор правил в соответствии с вашими требованиями. Вы можете изменять существующие правила или добавлять новые правила, чтобы обеспечить желаемый уровень безопасности. Файл конфигурации содержит обширную документацию, которая поможет вам понять и эффективно настроить правила.
  • Сохраните изменения и закройте файл.

Теперь пришло время запустить Nginx и воспользоваться преимуществами ModSecurity:

  • Откройте командную строку с правами администратора.
  • Перейдите в каталог установки Nginx, например, C:\nginx.
  • Для запуска Nginx выполните следующую команду:
    nginx.exe

Теперь Nginx будет запущен и запущен с включенным ModSecurity в вашей системе Windows. Вот и все! Теперь у вас есть знания для установки ModSecurity в Nginx в вашей среде Windows.

Установка Nginx ModSecurity на Ubuntu

Прежде чем начать установку, рекомендуется убедиться, что ваша система обновлена. Откройте терминал и выполните следующие команды:

sudo apt update && sudo apt upgrade

Чтобы установить ModSecurity, нам нужно будет скомпилировать его из исходников. Выполните следующие шаги:

Установите необходимые зависимости, выполнив следующую команду:

sudo apt install git build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev

Клонируйте репозиторий ModSecurity из GitHub с помощью следующей команды:

git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity

Перейдите в каталог ModSecurity:

cd ModSecurity

Соберите и установите ModSecurity, выполнив следующие команды:

./build.sh
./configure
make
sudo make install

Загрузите и соберите Nginx с помощью ModSecurity

Далее мы загрузим и соберем Nginx с поддержкой ModSecurity. Следуйте этим инструкциям:

Загрузите исходный код Nginx, выполнив следующую команду:

wget http://nginx.org/download/nginx-1.21.0.tar.gz

Примечание: замените 1.21.0последней стабильной версией, если она доступна.

Извлеките загруженный файл:

tar -xvf nginx-1.21.0.tar.gz

Перейдите в исходный каталог Nginx:

cd nginx-1.21.0

Настройте Nginx с поддержкой ModSecurity, выполнив следующую команду:

./configure --with-compat --add-dynamic-module=../ModSecurity/nginx/modsecurity

Соберите и установите Nginx:

make
sudo make install

Теперь, когда у нас установлен Nginx с ModSecurity, давайте настроим его.

Откройте файл конфигурации Nginx в текстовом редакторе:

sudo nano /etc/nginx/nginx.conf

Добавьте следующие строки в блок http для загрузки модуля ModSecurity и укажите его файл конфигурации:

load_module modules/ngx_http_modsecurity_module.so;

http {
    ...
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;
    ...
}

Сохраните изменения и выйдите из текстового редактора.

Настройте правила ModSecurity

Чтобы настроить правила ModSecurity, выполните следующие действия:

Создайте каталог для хранения правил ModSecurity:

sudo mkdir /etc/nginx/modsecurity

Скопируйте файл конфигурации ModSecurity по умолчанию во вновь созданный каталог:

sudo cp ModSecurity/modsecurity.conf-recommended /etc/nginx/modsecurity/modsecurity.conf

Отредактируйте файл конфигурации ModSecurity в соответствии с вашими требованиями:

sudo nano /etc/nginx/modsecurity/modsecurity.conf

Вы можете настроить набор правил и настроить конфигурации в соответствии со своими потребностями.

Сохраните изменения и выйдите из текстового редактора.

Чтобы применить изменения, перезапустите службу Nginx, выполнив следующую команду:

sudo systemctl restart nginx

Поздравляем! Вы успешно установили и настроили Nginx ModSecurity на вашей системе Ubuntu. Не забывайте регулярно обновлять набор правил ModSecurity и будьте в курсе последних практик безопасности. Это гарантирует, что ваш веб-сервер останется устойчивым к возникающим уязвимостям.

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

Изменение существующих правил ModSecurity

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

  1. Найдите файл конфигурации ModSecurity, обычно расположенный по адресу /etc/nginx/modsecurity/modsecurity.conf.
  2. Откройте файл конфигурации в текстовом редакторе.
  3. Найдите раздел, содержащий набор правил, который обычно определяется с помощью директивы SecRule.
  4. Определите конкретное правило, которое вы хотите изменить.
  5. Настройте параметры правила в соответствии с вашими требованиями. Это может включать изменение действия правила, цели или шаблона.
  6. Сохраните изменения и перезапустите Nginx, чтобы применить измененные правила.

Не забудьте тщательно протестировать измененные правила, чтобы убедиться, что они работают так, как задумано, не влияя на легитимный трафик.

Включение и отключение правил ModSecurity

В определенных ситуациях вам может потребоваться включить или отключить определенные правила ModSecurity. Это может быть полезно при работе с ложными срабатываниями или при временном обходе определенных правил. Вот как можно включить или отключить правила ModSecurity:

  1. Откройте файл конфигурации ModSecurity, обычно расположенный по адресу /etc/nginx/modsecurity/modsecurity.conf.
  2. Найдите раздел, в котором определены правила, обычно вместе с директивой SecRule.
  3. Чтобы отключить определенное правило, закомментируйте его, добавив # в начале строки правила.
  4. Чтобы включить отключенное правило, удалите # из закомментированной строки.
  5. Сохраните изменения и перезапустите Nginx, чтобы изменения вступили в силу.

Не забывайте проявлять осторожность при отключении правил, так как это может потенциально сделать ваше веб-приложение уязвимым для атак. Всегда тщательно проверяйте влияние отключенных правил перед их развертыванием в производственной среде.

Регистрация и мониторинг событий ModSecurity

ModSecurity предоставляет мощные возможности ведения журнала, позволяя вам отслеживать и анализировать события безопасности. По умолчанию журналы ModSecurity обычно находятся в файле /var/log/modsec_audit.log. Чтобы включить ведение журнала, выполните следующие действия:

Откройте файл конфигурации ModSecurity в текстовом редакторе.

Найдите директиву SecAuditLog и убедитесь, что она включена.

Укажите желаемое местоположение файла журнала с помощью директиву SecAuditLogдирективы. Например

SecAuditLog /var/log/modsec_audit.log

Сохраните изменения и перезапустите Nginx.

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

Исключения ModSecurity и белые списки

В некоторых случаях вам может потребоваться исключить определенные URL-адреса, IP-адреса или определенные части вашего веб-приложения из правил ModSecurity. Это может быть полезно при работе с ложными срабатываниями или при наличии легитимного трафика, который запускает правила ModSecurity. Вот как можно реализовать исключения и белый список:

  • Откройте файл конфигурации ModSecurity в текстовом редакторе.
  • Найдите директивы SecRule, определяющие правила, от которых вы хотите отказаться.
  • Добавьте новую директиву SecRule перед правилом, которое вы хотите исключить, указав критерии исключения. Например, чтобы исключить определенный путь URL, вы можете использовать следующую директиву:
    SecRule REQUEST_URI "^/exempt-path" "phase:1,nolog,allow"

Это исключает любые запросы с URL-путем, начинающимся с /exempt-path. Сохраните изменения и перезапустите Nginx.

Внедряя исключения и белые списки, вы можете гарантировать, что определенные части вашего веб-приложения не будут подпадать под действие правил ModSecurity, что позволит законному трафику проходить без каких-либо последствий.

В заключение, вы узнали, как установить Nginx ModSecurity на системах Windows и Ubuntu. Модуль Nginx ModSecurity действует как мощный брандмауэр веб-приложений, защищая ваш сайт от различных киберугроз. Следуя пошаговым инструкциям, вы успешно настроили ModSecurity в Nginx, настроили набор правил и обеспечили защиту вашего веб-сервера.

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

Не забывайте регулярно обновлять набор правил Nginx ModSecurity и будьте в курсе последних практик безопасности, чтобы гарантировать, что ваш веб-сервер остается устойчивым к возникающим уязвимостям. С ModSecurity вы можете быть спокойны, зная, что ваши веб-приложения надежно защищены от вредоносных атак.

Так что вперед, устанавливайте ModSecurity в Nginx и сделайте этот дополнительный шаг к укреплению безопасности вашего веб-сервера. Счастливого безопасного просмотра!

Written by Иван Васильков

Системный администратор и DevOps с опытом 10+ лет.