Установка и подключение WAF‑ноды на основе NGINX¶
Обзор способа установки¶
Обработка запросов в Валарм WAF делится на две фазы:
-
Первичная обработка в модуле NGINX-Wallarm
-
Статистический анализ обработанных запросов в модуле постаналитики
В зависимости от архитектуры системы, модуль 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-5.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-5.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-5.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¶
-
Откройте файл
/etc/nginx/nginx.conf
:sudo vim /etc/nginx/nginx.conf
-
Проверьте, что в файле есть строка
include /etc/nginx/conf.d/*
. Если такой строки нет, добавьте ее. -
Добавьте следующую директиву под директивой
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;
-
Скопируйте конфигурационные файлы для настройки системы:
sudo cp /usr/share/doc/nginx-module-wallarm/examples/*.conf /etc/nginx/conf.d/
5. Подключите WAF‑ноду к Облаку Валарм¶
В процессе работы WAF‑нода взаимодействует с облаком Валарм. Чтобы подключить WAF‑ноду к облаку, выполните следующие действия:
-
Убедитесь, что роль вашего пользователя в Консоли управления Валарм — Администратор или Деплой и для пользователя отключена двухфакторная аутентификация.
Для этого перейдите к списку пользователей в RU‑облаке или EU‑облаке и проверьте столбцы Роль и Auth:
-
В системе с установленной WAF‑нодой запустите скрипт
addnode
:sudo /usr/share/wallarm-common/addnode
sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru
-
Введите email и пароль от вашего аккаунта Валарм.
-
Введите название WAF‑ноды или нажмите Enter, чтобы использовать название, сгенерированное автоматически.
-
Перейдите в Консоль управления Валарм → секция Ноды для RU‑облака или EU‑облака и убедитесь, что в списке появилась созданная WAF‑нода.
6. Настройте память для модуля постаналитики¶
WAF‑нода использует находящееся в памяти хранилище Tarantool. Рекомендуемое количество памяти для Tarantool: 75% от общей памяти виртуальной машины. Чтобы настроить объем памяти для Tarantool:
-
Откройте для редактирования конфигурационный файл Tarantool:
sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/sysconfig/wallarm-tarantool
-
Укажите размер выделенной памяти в директиве
SLAB_ALLOC_ARENA
в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части — точка). Например, 24 ГБ:SLAB_ALLOC_ARENA=24
Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.
-
Чтобы применить изменения, перезапустите 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‑ноду для фильтрации трафика.