Установка динамически подключаемого модуля NGINX из репозиториев Debian/CentOS

Вы можете установить модуль NGINX из репозиториев Debian/CentOS.

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

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

Необходимые условия

  • Перед установкой отключите или настройте SELinux, если он установлен в операционной системе.
  • Убедитесь, что вы выполняете все команды, приведенные ниже, от имени суперпользователя (например, root).

1. Добавьте репозитории Debian/CentOS

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

Debian 8.x (jessie-backports)
Debian 9.x (stretch)
Debian 9.x (stretch-backports)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# apt-get install dirmngr
# apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
# echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/ignore-release-date
# echo 'deb http://archive.debian.org/debian jessie-backports/ main' > /etc/apt/sources.list.d/jessie-backports.list
# echo 'deb http://repo.wallarm.com/debian/wallarm-node jessie/2.14/' > /etc/apt/sources.list.d/wallarm.list
# echo 'deb http://repo.wallarm.com/debian/wallarm-node jessie-backports/2.14/' >> /etc/apt/sources.list.d/wallarm.list
# apt-get update
# apt-get install dirmngr
# apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
# sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch/2.14/' >/etc/apt/sources.list.d/wallarm.list"
# apt-get update
# apt-get install dirmngr
# apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
# sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch/2.14/' >/etc/apt/sources.list.d/wallarm.list"
# sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch-backports/2.14/' >>/etc/apt/sources.list.d/wallarm.list"

[ВАЖНО]снимите комментарий со следующей строки в файле /etc/apt/sources.list:
deb http://deb.debian.org/debian stretch-backports main contrib non-free

# apt-get update
# apt-get install dirmngr
# apt-key adv --keyserver keys.gnupg.net --recv-keys 72B865FD
# sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node buster/2.14/' > /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/2.14/x86_64/Packages/wallarm-node-repo-1-4.el6.noarch.rpm
# yum install -y epel-release
# rpm -i https://repo.wallarm.com/centos/wallarm-node/7/2.14/x86_64/Packages/wallarm-node-repo-1-4.el7.noarch.rpm

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

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

2. Установите NGINX с модулем Валарм

Важная информация для пользователей Debian 8 «Jessie»

Обратите внимание, что использование NGINX, установленного из репозитория jessie, приведет к неработоспособности модуля Валарм для NGINX.

Необходимо подключить backports-репозиторий jessie-backports и установить NGINX из этого репозитория.

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

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

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

  • модуль Валарм;
  • располагающееся в памяти хранилище Tarantool;
  • модуль постаналитики.

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

Debian 8.x (jessie-backports)
Debian 9.x (stretch)
Debian 9.x (stretch-backports)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# apt-get install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm -t jessie-backports
# apt-get install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
# apt-get install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm -t stretch-backports
# apt-get install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
# yum install nginx wallarm-node nginx-mod-http-wallarm
# yum install nginx wallarm-node nginx-mod-http-wallarm

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

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

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

Debian 8.x (jessie-backports)
Debian 9.x (stretch)
Debian 9.x (stretch-backports)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# apt-get install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm -t jessie-backports
# apt-get install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm
# apt-get install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm -t stretch-backports
# apt-get install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm
# yum install nginx wallarm-node-nginx nginx-mod-http-wallarm
# yum install nginx wallarm-node-nginx nginx-mod-http-wallarm

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

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

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

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

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

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

Debian 8.x (jessie)
Debian 9.x (stretch)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# 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)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# systemctl restart wallarm-tarantool
# systemctl restart wallarm-tarantool
# systemctl restart wallarm-tarantool
# service wallarm-tarantool restart
# systemctl restart wallarm-tarantool

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

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

Debian
CentOS
$ cp /usr/share/doc/libnginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
$ cp /usr/share/doc/nginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/

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

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

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

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

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

  • https_proxy — прокси для протокола HTTPS;
  • http_proxy — прокси для протокола HTTP;
  • 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, используя для авторизации на прокси-сервере имя пользователя admin и пароль 01234.
  • для запросов к 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost проксирование отключено.
https_proxy=http://admin:01234@1.2.3.4:1234
http_proxy=http://admin:01234@1.2.3.4:1234
no_proxy="127.0.0.1, 127.0.0.8, 127.0.0.9, localhost"

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

Доступ к API

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

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

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

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

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

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

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

    # /usr/share/wallarm-common/addnode
    

    При необходимости укажите имя создаваемого узла, используя опцию -n <имя узла>.

  3. Введите логин и пароль от вашей учетной записи в веб-интерфейсе Валарм.

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

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

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


     upstream wallarm_tarantool {
         server <ip1>:3313 max_fails=0 fail_timeout=0 max_conns=1;
         server <ip2>:3313 max_fails=0 fail_timeout=0 max_conns=1;

         keepalive 2;
    }

    ...

    wallarm_tarantool_upstream wallarm_tarantool;

Необходимые условия

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

  • Значение keepalive должно быть не меньше, чем количество серверов tarantool.
  • Значение max_conns должно быть указано для каждого сервера, чтобы предотвратить создание лишних соединений.

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

Для обработки 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;
      }
    }

9. Настройте логирование

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

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

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

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

# usermod -aG wallarm <user_name>

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

Debian 8.x (jessie)
Debian 9.x (stretch)
Debian 10.x (buster)
CentOS 6.x
CentOS 7.x
# systemctl restart nginx
# systemctl restart nginx
# systemctl restart nginx
# service nginx restart
# systemctl restart nginx

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

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

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

Настройки по умолчанию

Только что установленный фильтрующий узел будет находиться в режиме блокировки (см. описание директивы wallarm_mode) в соответствии с настройками по умолчанию.

Это может привести к неработоспособности сканера Валарм. Если вы используете сканер, выполните дополнительные действия, чтобы он работал.

Дополнительные настройки

После установки фильтрующий узел может потребовать дополнительной настройки.

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

Для получения информации о других доступных настройках, обратитесь к разделу «Настройка» руководства администратора.

Настройка отображения реального IP-адреса клиента

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

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

Добавление адресов сканера Валарм в белый список

Сканер Валарм позволяет сканировать ресурсы вашей компании на уязвимости. Сканирование происходит с IP-адресов из этих списков:

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

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

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

Ограничение времени обработки единичного запроса

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

Если запрос обрабатывается за большее время, чем указано в директиве, то в лог-файл заносится информация об ошибке, а запрос помечается как атака overlimit_res.

Ограничение времени ожидания ответа сервера

Используйте директиву NGINX proxy_read_timeout, чтобы задать таймаут чтения ответа проксированного сервера.

Если за это время сервер ничего не передаст, то соединение будет закрыто.

Ограничение максимального размера запроса

Используйте директиву NGINX client_max_body_size, чтобы задать ограничение на максимальный размер тела запроса клиента.

В случае превышения этого ограничения NGINX вернет клиенту ответ с кодом 413 (Payload Too Large, также известный как Request Entity Too Large).

results matching ""

    No results matching ""