Установка с использованием NGINX Plus

Варианты установки

Обработка запросов в фильтрующем узле делится на две фазы:

  • Первичная обработка в модуле NGINX-Wallarm.
  • Постаналитика. Статистический анализ обработанных запросов.

Первичная обработка не требует большого объема оперативной памяти, поэтому может быть размещена на текущих frontend-серверах без изменения требований к ним.

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

Установка постаналитики на отдельный сервер

Если вы планируете установить модуль постаналитики на отдельный сервер, необходимо сначала установить его. Подробнее в Отдельная установка постаналитики.

Для установки с использованием NGINX Plus вам потребуется выполнить следующие действия:

  1. Установить NGINX Plus.
  2. Добавить репозитории Валарм, из которых вы загрузите пакеты.
  3. Установить пакеты Валарм.
  4. Настроить модуль постаналитики.
  5. Подключить модуль Валарм.
  6. Настроить фильтрующий узел для использования прокси-сервера.
  7. Подключить фильтрующий узел к облаку Валарм.
  8. Настроить адреса сервера постаналитики.
  9. Настроить режим фильтрации.
  10. Перезапустить NGINX.

1. Установите NGINX Plus

Официальная инструкция по установке NGINX Plus.

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

Установка и обновление модуля Валарм для NGINX Plus происходит из репозиториев Валарм.

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

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
echo 'deb http://repo.wallarm.com/debian/wallarm-node jessie/' >/etc/apt/sources.list.d/wallarm.list
apt-get update
apt-get install dirmngr
apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
sudo sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch/' >/etc/apt/sources.list.d/wallarm.list"
apt-get update
apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node trusty/' >/etc/apt/sources.list.d/wallarm.list
apt-get update
apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node xenial/' >/etc/apt/sources.list.d/wallarm.list
apt-get update
apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
sudo sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node bionic/' >/etc/apt/sources.list.d/wallarm.list"
apt-get update
yum install --enablerepo=extras -y epel-release centos-release-SCL
rpm -i https://repo.wallarm.com/centos/wallarm-node/6/x86_64/Packages/wallarm-node-repo-1-2.el6.noarch.rpm
yum install -y epel-release
rpm -i https://repo.wallarm.com/centos/wallarm-node/7/x86_64/Packages/wallarm-node-repo-1-2.el7.centos.noarch.rpm

Доступ к репозиториям

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

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

Для выполнения обработки запросов и постаналитики на одном сервере необходимо установить следующие пакеты:

  • nginx-plus-module-wallarm.
  • модуль постаналитики.

Для выполнения только обработки запросов на сервере необходимо установить следующие пакеты:

  • NGINX Plus с модулем Валарм.

Установите обработку запросов и постаналитику на один сервер

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
apt-get install --no-install-recommends wallarm-node nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node nginx-plus-module-wallarm
yum install yum install wallarm-node nginx-plus-module-wallarm
yum install yum install wallarm-node nginx-plus-module-wallarm

Установите только обработку запросов на сервер

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm
apt-get install --no-install-recommends wallarm-node-nginx nginx-plus-module-wallarm
yum install wallarm-node-nginx nginx-plus-module-wallarm
yum install wallarm-node-nginx nginx-plus-module-wallarm

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

Пропустите этот шаг, если постаналитика установлена на отдельный сервер. Вы уже настроили постаналитику во время отдельной установки.

Модуль постаналитики использует находящееся в памяти хранилище Tarantool.

Вам необходимо указать объем оперативной памяти, который будет выделен под хранилище Tarantool.

Количество памяти влияет на качество работы статистических алгоритмов. Рекомендуемое значение — 75% от общей памяти сервера. Например, если у сервера 32 ГБ памяти, оптимально выделить под хранилище 24 ГБ.

Укажите объем оперативной памяти для Tarantool:

Откройте конфигурационный файл Tarantool:

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
vi /etc/default/wallarm-tarantool
vi /etc/default/wallarm-tarantool
vi /etc/default/wallarm-tarantool
vi /etc/default/wallarm-tarantool
vi /etc/default/wallarm-tarantool
vi /etc/sysconfig/wallarm-tarantool
vi /etc/sysconfig/wallarm-tarantool

Укажите размер выделяемой памяти в конфигурационном файле Tarantool директивой SLAB_ALLOC_ARENA.

Например:

SLAB_ALLOC_ARENA=24

Перезапустите Tarantool:

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
systemctl restart wallarm-tarantool
systemctl restart wallarm-tarantool
service wallarm-tarantool restart
service wallarm-tarantool restart
service wallarm-tarantool restart
service wallarm-tarantool restart
systemctl restart wallarm-tarantool

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

Добавьте в файл /etc/nginx/nginx.conf следующую директиву сразу под директивой 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;

Скопируйте конфигурационные файлы для настройки системы:

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


6. Настройте фильтрующий узел для использования прокси-сервера

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

Если Вы не используете прокси-сервер, пропустите этот этап настройки.

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

Добавьте в файл /etc/environment экспорты новых значений переменных окружения:

  • export https_proxy — прокси для протокола https;
  • export http_proxy — прокси для протокола http;
  • export no_proxy — ресурсы, для запросов к которым необходимо отключить проксирование.

Присвойте переменным https_proxy и http_proxy строки вида <scheme>://<proxy_user>:<proxy_pass>@<host>:<port>, где:

  • <scheme> — используемый протокол (должен совпадать с протоколом, для которого настраивается прокси в текущей переменной окружения);
  • <proxy_user> — имя пользователя для авторизации на прокси-сервере;
  • <proxy_pass> — пароль для авторизации на прокси-сервере;
  • <host> — хост используемого прокси-сервера;
  • <port> — порт используемого прокси-сервера.

Присвойте переменной no_proxy значение в виде массива IP-адресов и/или доменов, к которым нужно обращаться без использования прокси: "<res_1>, <res_2>, <res_3>, <res_4>, ...", где <res_1>, <res_2>, <res_3> и <res_4> — IP-адреса и/или домены.

Ресурсы, к которым нужно обращаться без использования прокси

Для корректной работы системы в список ресурсов, к которым нужно обращаться без прокси, необходимо добавить следующие IP-адреса и домен: 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost.

IP-адреса 127.0.0.8 и 127.0.0.9 используются для работы фильтрующего узла Валарм.

Пример корректного содержимого файла /etc/environment ниже демонстрирует следующую конфигурацию:

  • Протоколы https и http используют хост 1.2.3.4 и порт 1234 для проксирования запросов;
  • Протоколы https и http используют имя пользователя admin и пароль 01234 для авторизации на прокси-сервере;
  • Для запросов к 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost проксирование отключено.
export https_proxy=http://admin:01234@1.2.3.4:1234
export http_proxy=http://admin:01234@1.2.3.4:1234
export no_proxy="127.0.0.1, 127.0.0.8, 127.0.0.9, localhost"

7. Подключите фильтрующий узел к облаку Валарм

Доступ к API

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

Фильтрующий узел в процессе работы взаимодействует с облаком Валарм.

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

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

    Это можно проверить, просмотрев список пользователей в консоли Валарм:

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

  2. На виртуальной машине с фильтрующим узлом запустите скрипт addnode:

    sudo /usr/share/wallarm-common/addnode
    
  3. Введите логин и пароль от вашей учетной записи в веб-интерфейсе Валарм.

    8. Настройте адреса сервера постаналитики

  • Пропустите данный шаг, если постаналитика и фильтрующий узел установлены на один сервер.
  • Выполните данный шаг, если если постаналитика и фильтрующий узел установлены на разные серверы.

Добавьте в /etc/nginx/conf.d/wallarm.conf адреса серверов постаналитики:


     upstream wallarm_tarantool {
        server <ip1>:3313;
        server <ip2>:3313;
        ...
        server <ipN>:3313;
    }

    ...

    wallarm_tarantool_upstream wallarm_tarantool;

9. Настройте режим фильтрации

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

Для настройки правил проксирования и фильтрации необходимо отредактировать файлы конфигурации NGINX и фильтрующего узла Валарм, которые содержатся в директории etc/nginx/conf.d:

  • Файл default.conf содержит настройки NGINX;
  • Файл wallarm.conf содержит глобальные настройки фильтрующего узла Валарм;
  • Файл wallarm-status.conf содержит настройки мониторинга работы Валарм.

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

Подробную информацию о работе с конфигурационными файлами NGINX вы можете найти в официальной документации NGINX.

Логика работы фильтрующего узла Валарм настраивается при помощи директив Валарм. Список доступных директив Валарм доступен на странице «Тонкая настройка».

Пример файла конфигурации

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

  • обработка HTTPS-трафика не настроена;
  • запросы осуществляются к двум доменам: example.com и www.example.com;
  • все запросы нужно передавать на сервер 10.80.0.5;
  • все входящие запросы меньше 1 МБ (значение по умолчанию);
  • нет запросов, которые обрабатываются дольше 60 секунд (значение по умолчанию);
  • система должна работать в режиме мониторинга;
  • клиенты обращаются к фильтрующему узлу напрямую, не через промежуточный HTTP-балансировщик.

Создание файла конфигурации

Вы можете создать свой файл конфигурации NGINX (например, example.com.conf), или модифицировать файл конфигурации NGINX, который используется по умолчанию (default.conf).

При создании собственного файла конфигурации, убедитесь, что NGINX будет слушать входящие соединения на свободном порту.

Файл конфигурации в этом случае будет выглядеть следующим образом:

    server {
      listen 80;
      listen [::]:80 ipv6only=on;

      # the domains for which traffic is processed
      server_name example.com; 
      server_name www.example.com;

      # turn on the monitoring mode of traffic processing
      wallarm_mode monitoring; 

      location / {
        # setting the address for request forwarding
        proxy_pass http://10.80.0.5; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }

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

Предоставление пользователю прав root

Если вы запускаете NGINX под пользователем, который не имеет прав root, добавьте пользователя в группу wallarm при помощи следующей команды:

usermod -aG wallarm user_name,

где user_name — это имя пользователя, который не имеет прав root.

Debian 8.x (jessie)
Debian 9.x (stretch)
Ubuntu 14.04 LTS (trusty)
Ubuntu 16.04 LTS (xenial)
Ubuntu 18.04 LTS (bionic)
CentOS 6.x
CentOS 7.x
systemctl restart nginx
systemctl restart nginx
service nginx restart
service nginx restart
service nginx restart
service nginx restart
systemctl restart nginx


Установка завершена

На этом установка завершена.

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

results matching ""

    No results matching ""