Как установить ModSecurity в Nginx на Ubuntu 18.04 20.4 22.04 и Debian

ModSecurity — это брандмауэр веб-приложений (WAF) с открытым исходным кодом, предназначенный для защиты веб-приложений от вредоносных атак. Он предназначен для защиты веб-приложений от атак 7-го уровня (уровня приложений), таких как SQL-инъекции, межсайтовый скриптинг (XSS) и многих других типов атак. В этом руководстве мы покажем вам, как установить ModSecurity в Nginx на системах Ubuntu и Debian.

Предварительные условия

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

  • Ubuntu 16.04/18.04/20.04 или Debian 9/10
  • Nginx 1.10 или выше
  • Root-пользователь или права sudo

Шаг 1: Установите Nginx

Если на вашем сервере еще не установлен веб-сервер Nginx, установите Nginx с помощью следующей команды. Если Nginx уже установлен, этот шаг можно проигнорировать.

$ sudo apt install nginx

Шаг 2: Скачайте и скомпилируйте ModSecurity

Установите зависимости сборки с помощью следующей команды

$ apt-get install libtool autoconf build-essential libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libgeoip-dev liblmdb-dev libyajl-dev libcurl4-openssl-dev libpcre++-dev pkgconf libxslt1-dev libgd-dev automake

Теперь вам нужно скачать ModSecurity

$ cd /usr/local/src
$ git clone --depth 100 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
$ cd ModSecurity
$ git submodule init
$ git submodule update

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

# Generate configure file
$ sh build.sh
# Pre compilation step. Checks for dependencies
./configure
# Compiles the source code
$ make
# Installs the Libmodsecurity to **/usr/local/modsecurity/lib/libmodsecurity.so**
$ make install

Шаг 3: Скачайте и скомпилируйте исходный код ModSecurity v3 Nginx Connector

Запустите команду «nginx -V» и узнайте версию вашего сервера Nginx. Теперь вам нужно загрузить подходящий исходный код Nginx и исходный код коннектора Nginx на ваш сервер. Используйте исходный код для создания модуля Libmodsecurity для вашего сервера Nginx. Обратитесь к следующим командам и выполните их по порядку.

$ mkdir /usr/local/src/cpg
$ cd /usr/local/src/cpg

Убедитесь, что номер versoin совпадает с версией вашего локального сервера Nginx

$ wget http://nginx.org/download/nginx-1.21.4.tar.gz
$ tar -xvzf nginx-1.21.4.tar.gz
# Download the source code for ModSecurity-nginx connector
$ git clone https://github.com/SpiderLabs/ModSecurity-nginx
Скомпилируйте Nginx

Далее нам нужно скомпилировать Nginx с модулем ModSecurity. Мы не будем компилировать/устанавливать сам Nginx, а скомпилируем только модуль Nginx. Для этого убедитесь, что ваш пакет Nginx скомпилирован с флагом «-with-compat». Флаг -with-compat сделает модуль бинарно совместимым с существующим бинарным пакетом Nginx. Вы можете использовать следующую команду для компиляции Nginx + ModSecurity, совместимого с существующими модулями

$ cd nginx-1.21.4
$ ./configure --with-compat --with-openssl=/usr/include/openssl/ --add-dynamic-module=/usr/local/src/cpg/ModSecurity-nginx

Теперь нам нужно собрать модули и скопировать их в каталог модулей Nginx

$ make modules
$ cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Шаг 4: Загрузка модуля ModSecurity в Nginx

Открыть файл /etc/nginx/modules-enabled/50-mod-http-modsecurity.conf и добавьте в него следующее содержимое.

load_module modules/ngx_http_modsecurity_module.so;

Шаг 5: Установите конфигурацию Nginx

1. Откройте . /etc/nginx/nginx.conf и добавьте следующую строку после включения «/etc/nginx/sites-enabled/*.conf»

include /etc/nginx/cpguard_waf_load.conf;

2. Добавьте следующее содержимое в файл /etc/nginx/cpguard_waf_load.conf

modsecurity on;
modsecurity_rules_file /etc/nginx/nginx-modsecurity.conf;

3. Добавьте следующее содержимое в файл /etc/nginx/nginx-modsecurity.conf

SecRuleEngine On
SecRequestBodyAccess On
SecDefaultAction "phase:2,deny,log,status:406"
SecRequestBodyLimitAction ProcessPartial
SecResponseBodyLimitAction ProcessPartial
SecRequestBodyLimit 13107200
SecRequestBodyNoFilesLimit 131072
SecPcreMatchLimit 250000
SecPcreMatchLimitRecursion 250000
SecCollectionTimeout 600
SecDebugLog /var/log/nginx/modsec_debug.log
SecDebugLogLevel 0
SecAuditEngine RelevantOnly
SecAuditLog /var/log/nginx/modsec_audit.log
SecUploadDir /tmp
SecTmpDir /tmp
SecDataDir /tmp
SecTmpSaveUploadedFiles on
# Include file for cPGuard WAF
Include /etc/nginx/cpguard_waf.conf

Шаг 6: Настройка параметров cPGuard WAF

После успешного выполнения описанных выше шагов вы можете использовать следующие значения параметров.

waf_server = nginx
waf_server_conf = /etc/nginx/cpguard_waf.conf
waf_server_restart_cmd = /usr/sbin/service nginx restart
waf_audit_log = /var/log/nginx/modsec_audit.log
Вот и все

У вас должен быть включен ModSecurity, а после включения cPGuard WAF ваш сервер будет защищен от веб-атак.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *