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

Установка Меганоды Вебмониторэкс

Меганода Вебмониторэкс – универсальный установщик, который предназначен для оптимизации и стандартизации процесса установки динамического модуля в различных средах. Установщик автоматически определяет версии вашей операционной системы и NGINX/Angie и устанавливает все необходимые зависимости.

По сравнению с отдельными пакетами Linux, предлагаемыми Вебмониторэкс для NGINX, NGINX Plus, NGINX c дистрибутивом и Angie, универсальный установщик упрощает процесс, автоматически выполняя следующие действия:

  1. Проверка вашей ОС и версии NGINX/Angie/Angie PRO.

  2. Подключение установленного модуля Вебмониторэкс к вашему NGINX/Angie/Angie PRO.

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

Сценарии использования

Среди всех поддерживаемых вариантов развертывания Вебмониторэкс это решение рекомендуется в следующих случаях:

  • Ваша инфраструктура основана на «голом железе» или виртуальных машинах без использования методов на основе контейнеров. Обычно этими настройками управляют с помощью инструментов «Инфраструктура как код» (IaC), таких как Ansible или SaltStack.

  • Ваши сервисы построены на базе NGINX/Angie. Вебмониторэкс может расширить свои функциональные возможности с помощью универсального установщика.

Требования

  • Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс.

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

  • Доступ к https://meganode.webmonitorx.ru/ для загрузки универсального установщика Вебмониторэкс. Убедитесь, что доступ не заблокирован брандмауэром.

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

  • Для обработки запросов и постаналитики на разных серверах: модуль постаналитики, установленный на отдельный сервер по инструкции.

  • Доступ к хранилищу Яндекс S3 (https://storage.yandexcloud.net), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP.

    Необходимо обеспечить доступ к https://storage.yandexcloud.net или нескольким диапазонам IP‑адресов: диапазон 1 и диапазон 2.

  • Установленный текстовый редактор vim, nano или другой.

Поддерживаемые операционные системы

  • Debian 10, 11 и 12.x
  • Ubuntu LTS 18.04, 20.04, 22.04
  • CentOS 7, 8 Stream, 9 Stream
  • Alma/Rocky Linux 9
  • RHEL 8.x, 9.x
  • Oracle Linux 8.x
  • РЕД ОС
  • Альт Сервер 10
  • SuSe Linux
  • Astra Linux
  • Другие (список постоянно расширяется, вы можете связаться со службой поддержки Вебмониторэкс, чтобы проверить, есть ли в списке ваша ОС)

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

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

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

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

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

Команды установки для разных вариантов описаны в соответствующих шагах.

Установка

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

Установите последнюю версию NGINX или Angie:

  • 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
      

      a. Если для CentOS 7.x у вас уже подключен репозиторий EPEL, отключите установку NGINX stable из репозитория EPEL. Для этого добавьте выражение exclude=nginx* в файл /etc/yum.repos.d/epel.repo.

      Пример файла после добавления выражения exclude=nginx*:

              [epel]
              name=Extra Packages for Enterprise Linux 7 - $basearch
              #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
              metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
              failovermethod=priority
              enabled=1
              gpgcheck=1
              gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
              exclude=nginx*
      
              [epel-debuginfo]
              name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
              #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
              metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
              failovermethod=priority
              enabled=0
              gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
              gpgcheck=1
      
              [epel-source]
              name=Extra Packages for Enterprise Linux 7 - $basearch - Source
              #baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
              metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
              failovermethod=priority
              enabled=0
              gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
              gpgcheck=1
      

      b. Установите NGINX stable из официального репозитория:

          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 stable на AlmaLinux, Rocky Linux, Oracle Linux 8.x, RedOS

      Возможен только один вариант установки NGINX stable на AlmaLinux, Rocky Linux, Oracle Linux 8.x, RedOS — из исходного кода из репозитория NGINX.

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

  • Distribution-Provided NGINX — для установки используйте следующие команды:

sudo apt-get update 
sudo apt -y install --no-install-recommends nginx
sudo apt update 
sudo apt -y install --no-install-recommends nginx
sudo yum -y update 
sudo yum install -y nginx
sudo yum -y update 
sudo yum install -y nginx

2. Загрузите Меганоду Вебмониторэкс

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

export WMX_NODE_RELEASE="4.6"
export WMX_NODE_REVISION="47"
export WMX_NODE_FULL="${WMX_NODE_RELEASE}.${WMX_NODE_REVISION}"
curl -O "https://meganode.webmonitorx.ru/${WMX_NODE_RELEASE}/wallarm-${WMX_NODE_FULL}.x86_64.sh"

3. Подготовьте токен Вебмониторэкс

Для установки ноды вам понадобится токен Вебмониторэкс соответствующего типа.
Чтобы подготовить токен:

  1. Откройте Консоль управления Вебмониторэкс → Ноды.
  2. Выполните одно из следующих действий:
    • Перейдите в Консоль управления → Ноды, создайте ноду и скопируйте сгенерированный токен.
      Создание ноды Вебмониторэкс
    • Используйте существующую группу ноды — скопировать токен с помощью меню ноды → Копировать токен.
  1. Откройте Консоль управления Вебмониторэкс → Настройки → API токены.
  2. Найдите или создайте API токен с ролью Деплой.
  3. Скопируйте токен.
Установка с отдельным сервером постаналитики
  1. Запустите скрипт с параметром filtering:

    sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN" filtering

Или запустите скрипт sudo sh ./wallarm-4.6.25.x86_64.sh filtering без параметров и ответьте на вопросы скрипта.

  1. В файл /etc/nginx/conf.d/default.conf добавьте wallarm_mode block;.
  2. В файле /etc/nginx/conf.d/wallarm.conf укажите IP-сервера постаналитики:

      upstream wallarm_tarantool {
    
        server <IP>:3313 max_fails=0 fail_timeout=0 max_conns=1;
    
        keepalive 1;
    
        }
    
        # omitted
    
       wallarm_tarantool_upstream wallarm_tarantool;
    
  3. На сервере постаналитики запустите скрипт с параметром postanalytics:

        sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN" postanalytics
    

    Или запустите скрипт sudo sh ./wallarm-4.6.25.x86_64.sh postanalytics без параметров и ответьте на вопросы скрипта.

  4. Перезапустите NGINX/Angie

    sudo systemctl restart nginx
    sudo systemctl enable nginx
    sudo systemctl status nginx
    
    sudo systemctl restart angie
    sudo systemctl enable angie
    sudo systemctl status angie
    

4. Запустите скрипт

Используйте токен ноды для запуска скрипта:

sudo sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN"

Запуск через прокси:

sudo https_proxy=http://<ПРОКСИ_СЕРВЕР> sh "wallarm-4.6.47.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN"

Сохранение настроек выделенной памяти под Tarantool:

Чтобы при обновлении Вебмониторэкс сохранить настройки выделенной памяти под Tarantool, необходимо создать файл /etc/wallarm-override/env.list.

  • Внутри файла укажите размер памяти в ГБ, создав атрибут SLAB_ALLOC_ARENA.
    Значение может быть целым или дробным (разделитель целой и дробной части — точка).
    Например: SLAB_ALLOC_ARENA=10.4.

  • Также в файле можно указать используемый proxy-сервер для обновления Меганоды и связи с вычислительным кластером, создав атрибут https_proxy.

    Пример файла env.list
    SLAB_ALLOC_ARENA=0.2
    https_proxy=http://<адрес_прокси_сервера>
    

Значение no_proxy

Присвойте переменной no_proxy значение в виде массива IP‑адресов и/или доменов, к которым нужно обращаться без использования прокси:

  • 127.0.0.1, 127.0.0.8, 127.0.0.9 и localhost для корректной работы WAF‑ноды Вебмониторэкс

  • дополнительные адреса в формате "<res_1>, <res_2>, <res_3>, <res_4>, ...", где <res_1>, <res_2>, <res_3> и <res_4> — IP‑адреса и/или домены

    Пример файла /etc/environment

    Пример файла /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"
    

5. Включите ноду Вебмониторэкс для анализа трафика

По умолчанию развернутая нода Вебмониторэкс не анализирует входящий трафик.

В зависимости от выбранного подхода к развертыванию Вебмониторэкс (проксированный или зеркалированный) настройте Вебмониторэкс либо на прокси-трафик, либо на обработку зеркала трафика.

Выполните следующую настройку в файле конфигурации NGINX/Angie на устройстве с установленной нодой:

  1. Установите IP-адрес, на который Вебмониторэкс будет проксировать легитимный трафик. Это может быть IP-адрес экземпляра приложения, балансировщика нагрузки, DNS-имя и т. д., в зависимости от вашей архитектуры.
    Для этого отредактируйте значение proxy_pass, например. Вебмониторэкс должен отправлять легитимные запросы на адрес http://10.80.0.5:
server {
        listen 80;
        listen [::]:80 ipv6only=on;

        ...

        location / {
            proxy_pass http://10.80.0.5; 
                ...
        }
}
  1. Чтобы нода Вебмониторэкс могла анализировать входящий трафик, установите директиву wallarm_mode на мониторинг:

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

        ...
}

Режим мониторинга рекомендуется использовать для первого развертывания и тестирования решения. Вебмониторэкс также обеспечивает разные режимы блокировки.


Пример
    http {
    upstream backend {
    server backend1.example.com; # Ваш бэкенд
}
    server {
        listen 443 ssl;
        server_name ваш_домен.ru;  # Замените "ваш_домен.ru" на ваш домен
        wallarm_mode monitoring; # Режим работы Вебмониторэкс
        ssl_certificate /путь/к/вашему/сертификату.crt;
        ssl_certificate_key /путь/к/вашему/ключу.key;

        location / {
            proxy_pass https://backend;  # Проксирование на конечный ресурс по HTTPS
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

  1. Чтобы нода Вебмониторэкс принимала зеркалированный трафик, установите в server NGINX следующую конфигурацию:
wallarm_force server_addr $http_x_server_addr;
wallarm_force server_port $http_x_server_port;
# Change 222.222.222.22 to the address of the mirroring server
set_real_ip_from  222.222.222.22;
real_ip_header    X-Forwarded-For;
real_ip_recursive on;
wallarm_force response_status 0;
wallarm_force response_time 0;
wallarm_force response_size 0;
  • Директивы set_real_ip_from и real_ip_header необходимы для того, чтобы Консоль управления Вебмониторэкс отображала IP-адреса злоумышленников.
  • Директивы wallarm_force_response_* необходимы для отключения анализа всех запросов, кроме копий, полученных из зеркалированного трафика.
  1. Чтобы нода Вебмониторэкс могла анализировать зеркалируемый трафик, установите директивы wallarm_mode для monitoring:
server {
        listen 80;
        listen [::]:80 ipv6only=on;
        wallarm_mode monitoring;

        ...
    }

Поскольку вредоносные запросы невозможно заблокировать, единственный режим, который принимает Вебмониторэкс, — это мониторинг. Для встроенного развертывания также существуют режимы безопасной блокировки и блокировки, но даже если вы установите для директивы wallarm_mode значение, отличное от мониторинга, узел продолжает отслеживать трафик и записывать только вредоносный трафик (кроме выключенного режима).

6. Перезапустите NGINX/Angie

Используйте следующие команды для NGINX/Angie, чтобы перезапустить, активировать автостарт при перезагрузке сервера и проверить статус:

sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl restart angie
sudo systemctl enable angie
sudo systemctl status angie

Сервер NGINX/Angie должен корректно перезапуститься и находиться в состоянии active.

7. Настройте отправку трафика на ноду Вебмониторэкс

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

Настройте свой веб-сервер или прокси-сервер (например, NGINX) для зеркалирования входящего трафика на ноду Вебмониторэкс. Для получения подробной информации о настройке мы рекомендуем обратиться к документации вашего веб-сервера или прокси-сервера.

Проверка работы Меганоды

  1. Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:

    curl http://localhost/etc/passwd
    
  2. Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.

    Атаки в интерфейсе

Настройка

Динамический модуль Вебмониторэкс со стандартными настройками установлен на NGINX/Angie. Чтобы кастомизировать настройки Вебмониторэкс, используйте доступные директивы.

Частые настройки:

Параметры запуска

Как только вы загрузите универсальный скрипт, вы сможете получить помощь по нему:

sudo sh ./wallarm-4.6.47.x86_64.sh -- -h

Что возвращает:

    ...
    Usage: setup.sh [options]... [arguments]... [filtering/postanalytics]

    OPTION                      DESCRIPTION
    -b, --batch                 Batch mode, non-interactive installation.
    -t, --token TOKEN           Node token, only used in a batch mode.
    -P, --port PORT             Wallarm API pot, for example, 443.
        --no-ssl                Disable SSL for Wallarm API access.
        --no-verify             Disable SSL certificates verification.
    -f, --force                 If there is a node with the same name, create a new instance.
        --skip-registration     Skip node registration process during installation.
        --skip-nginx            Skip nginx configuration process during installation.
        --skip-systemd          Skip systemd unit configuration process during installation.
    -h, --help                  Show this help message.
        --version               Show script version.

Чтобы воспользоваться запуском без подсказок:

sudo sh ./wallarm-4.6.47.x86_64.sh -- -b

Обратите внимание:

  • Опция --batch включает пакетный (неинтерактивный) режим. В этом режиме, если вы не используете дополнительные параметры, нода устанавливается сразу после запуска скрипта, не требуя от пользователя дополнительного взаимодействия или ввода данных. Пакетный режим:

    • Требуется --token.
    • Позволяет изменять поведение скрипта с помощью дополнительных опций.
  • Переключатель filtering/postanalytics позволяет установить модуль постаналитики отдельно. Если переключатель не используется, то фильтрационная и постаналитическая часть устанавливаются целиком.


История версий Меганоды Вебмониторэкс →
Обновление пакетных версий ноды на Меганоду →