Перейти к содержанию

Установка и подключение WAF‑ноды на основе NGINX

Обзор способа установки

Обработка запросов в Валарм WAF делится на две фазы:

  1. Первичная обработка в модуле NGINX-Wallarm

  2. Статистический анализ обработанных запросов в модуле постаналитики

В зависимости от архитектуры системы, модуль NGINX-Wallarm и модуль постаналитики могут быть установлены на один сервер или на разные серверы.

Данная инструкция описывает установку модулей NGINX-Wallarm и постаналитики на один сервер. WAF‑нода Валарм будет установлена как динамический модуль к бесплатной версии NGINX stable, установленной из репозитория NGINX.

Список всех доступных форм установки →

Требования

  • Доступ к аккаунту с ролью Администратор или Деплой и отключенной двухфакторной аутентификацией в Консоли управления Валарм для RU‑облака или EU‑облака

  • Выполнение команд от имени суперпользователя (например, root)

  • Поддерживаемая 64‑битная ОС:

    • Debian 9.x (stretch)
    • Debian 10.x (buster)
    • Ubuntu 16.04 LTS (xenial)
    • Ubuntu 18.04 LTS (bionic)
    • Ubuntu 20.04 LTS (focal)
    • CentOS 7.x
    • Amazon Linux 2
    • CentOS 8.x
  • SELinux, отключенный или настроенный по инструкции

  • Возможность обращаться к https://repo.wallarm.com для загрузки пакетов. Убедитесь, что доступ не ограничен настройками файервола

  • Доступ к https://api.wallarm.com:444 для работы с EU‑облаком Валарм или к https://api.wallarm.ru:444 для работы с RU‑облаком Валарм. Если доступ к Валарм API возможен только через прокси‑сервер, используйте инструкцию для настройки

  • Установленный текстовый редактор vim, nano или другой. В инструкции используется редактор vim

Установка

1. Установите NGINX stable и зависимости

Возможны следующие способы установки NGINX stable из репозитория NGINX:

  • Установка из готового пакета

    sudo apt install curl gnupg2 ca-certificates lsb-release
    echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
    curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
    sudo apt update
    sudo apt install nginx
    
    sudo apt install curl gnupg2 ca-certificates lsb-release
    echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
    curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
    sudo apt update
    sudo apt install nginx
    
    echo -e '\n[nginx-stable] \nname=nginx stable repo \nbaseurl=http://nginx.org/packages/centos/$releasever/$basearch/ \ngpgcheck=1 \nenabled=1 \ngpgkey=https://nginx.org/keys/nginx_signing.key \nmodule_hotfixes=true' | sudo tee /etc/yum.repos.d/nginx.repo
    sudo yum install nginx
    
  • Компиляция и установка с аналогичными опциями из исходного кода из ветки stable репозитория NGINX

Более подробная информация об установке доступна в официальной документации NGINX.

2. Добавьте репозитории Валарм WAF

Валарм WAF устанавливается и обновляется из репозиториев Валарм. Для добавления репозиториев используйте команды для вашей платформы.

sudo apt install dirmngr
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo apt install dirmngr
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node buster/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node xenial/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node bionic/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node focal/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/7/2.18/x86_64/Packages/wallarm-node-repo-1-6.el7.noarch.rpm
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/7/2.18/x86_64/Packages/wallarm-node-repo-1-6.el7.noarch.rpm
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/8/2.18/x86_64/Packages/wallarm-node-repo-1-6.el8.noarch.rpm

3. Установите пакеты Валарм WAF

В зависимости от вашей операционной системы, выполните одну из следующих команд:

sudo apt install --no-install-recommends wallarm-node nginx-module-wallarm
sudo apt install --no-install-recommends wallarm-node nginx-module-wallarm
sudo yum install wallarm-node nginx-module-wallarm

4. Подключите модуль Валарм WAF

  1. Откройте файл /etc/nginx/nginx.conf:

    sudo vim /etc/nginx/nginx.conf
    
  2. Проверьте, что в файле есть строка include /etc/nginx/conf.d/*. Если такой строки нет, добавьте ее.

  3. Добавьте следующую директиву под директивой worker_processes:

    load_module modules/ngx_http_wallarm_module.so;
    

    Пример файла с добавленной директивой:

    user  nginx;
    worker_processes  auto;
    load_module modules/ngx_http_wallarm_module.so;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
  4. Скопируйте конфигурационные файлы для настройки системы:

    sudo cp /usr/share/doc/nginx-module-wallarm/examples/*.conf /etc/nginx/conf.d/
    

5. Подключите WAF‑ноду к Облаку Валарм

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

  1. Убедитесь, что роль вашего пользователя в Консоли управления Валарм — Администратор или Деплой и для пользователя отключена двухфакторная аутентификация.

    Для этого перейдите к списку пользователей в RU‑облаке или EU‑облаке и проверьте столбцы Роль и Auth:

    Список пользователей в консоли Валарм

  2. В системе с установленной WAF‑нодой запустите скрипт addnode:

    sudo /usr/share/wallarm-common/addnode
    
    sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru
    
  3. Введите email и пароль от вашего аккаунта Валарм.

  4. Введите название WAF‑ноды или нажмите Enter, чтобы использовать название, сгенерированное автоматически.

  5. Перейдите в Консоль управления Валарм → секция Ноды для RU‑облака или EU‑облака и убедитесь, что в списке появилась созданная WAF‑нода.

6. Настройте память для модуля постаналитики

WAF‑нода использует находящееся в памяти хранилище Tarantool. Рекомендуемое количество памяти для Tarantool: 75% от общей памяти виртуальной машины. Чтобы настроить объем памяти для Tarantool:

  1. Откройте для редактирования конфигурационный файл Tarantool:

    sudo vim /etc/default/wallarm-tarantool
    
    sudo vim /etc/default/wallarm-tarantool
    
    sudo vim /etc/sysconfig/wallarm-tarantool
    
  2. Укажите размер выделенной памяти в директиве SLAB_ALLOC_ARENA в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части — точка). Например, 24 ГБ:

    SLAB_ALLOC_ARENA=24
    

    Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.

  3. Чтобы применить изменения, перезапустите Tarantool:

    sudo systemctl restart wallarm-tarantool
    
    sudo service wallarm-tarantool restart
    
    sudo systemctl restart wallarm-tarantool
    

7. Перезапустите NGINX

sudo systemctl restart nginx
sudo service nginx restart
sudo systemctl restart nginx

Следующие шаги

Установка WAF‑ноды завершена. Далее необходимо настроить WAF‑ноду для фильтрации трафика.

Настройка правил проксирования и фильтрации →