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

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

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

По сравнению с отдельными пакетами Linux, предлагаемыми Вебмониторэкс для NGINX, 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.webmonitorx.ru для работы с Вычислительным кластером Вебмониторэкс API. Если доступ Вебмониторэкс API возможен только через прокси-сервер, воспользуйтесь инструкцией для настройки.

  • Доступ к хранилищу cloud.ru (*.obs.ru-moscow-1.hc.sbercloud.ru), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP.

    Необходимо обеспечить доступ к *.obs.ru-moscow-1.hc.sbercloud.ru по порту 443.

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

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

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

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

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

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

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

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

Если требуется разместить постаналитику на отдельном сервере, используйте инструкцию Установка Меганоды с раздельным сервером постаналитики. Это необязательный сценарий. Ниже описана установка фильтрации и постаналитики на одном сервере. Параметры filtering и postanalytics для нее не нужны.

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

Установка

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

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

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

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

      sudo apt install curl gnupg2 ca-certificates lsb-release
      echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] 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 gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
      sudo apt update
      sudo apt install nginx
      
      sudo apt update
      sudo apt install -y curl gnupg ca-certificates lsb-release ubuntu-keyring
      
      curl -fsSL https://nginx.org/keys/nginx_signing.key \
        | sudo gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg
      
      echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
        | sudo tee /etc/apt/sources.list.d/nginx.list
      
      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.

  • Distribution-Provided 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="5.0"
export WMX_NODE_REVISION="36"
export WMX_NODE_FULL="${WMX_NODE_RELEASE}.${WMX_NODE_REVISION}"
curl -O "https://meganode.webmonitorx.ru/${WMX_NODE_RELEASE}/wnode-portable-bundle-${WMX_NODE_FULL}.x86_64.sh"

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

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

  1. Откройте Консоль управления Вебмониторэкс → Ноды.
  2. Перейдите в Консоль управления → Ноды, создайте ноду и скопируйте сгенерированный токен.

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

Скопировать токен повторно не получится: для восстановления потребуется пересоздать ноду либо извлечь токен из файла node.yaml.

Создание ноды Вебмониторэкс

  1. Откройте Консоль управления Вебмониторэкс → Настройки → API токены.
  2. Найдите или создайте API токен с правами на создание Ноды.
  3. Скопируйте токен.

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

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

sudo sh "wnode-portable-bundle-${WMX_NODE_FULL}.x86_64.sh" -- -b -t "WALLARM_API_TOKEN"

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

Запуск, если /tmp смонтирован с noexec:

Начиная с Меганоды 5.0.33, установщик работает и при /tmp, смонтированном с noexec (например, в Astra Linux 1.8 с настройками по умолчанию): для распаковки используются /var/tmp или /opt.

При необходимости явно укажите каталог распаковки через переменную TMPDIR. В нём должен быть разрешён запуск программ и доступно не меньше 256 МБ свободного места:

sudo mkdir -p /opt/wnode-tmp
sudo env TMPDIR=/opt/wnode-tmp sh "wnode-portable-bundle-${WMX_NODE_FULL}.x86_64.sh" -- -b -t "WALLARM_API_TOKEN"

Временные файлы установщик удалит сам, пустой каталог /opt/wnode-tmp после установки можно удалить.

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;

        ...
}

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


Пример
    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) для зеркалирования входящего трафика на ноду Вебмониторэкс. Для получения подробной информации о настройке мы рекомендуем обратиться к документации вашего веб-сервера или прокси-сервера.

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

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

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

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

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

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

Настройки после установки

Эти настройки зависят от инфраструктуры и не являются обязательными шагами базовой установки.

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

Если доступ к API возможен только через прокси, используйте эту команду на шаге запуска установщика:

sudo https_proxy=http://<ПРОКСИ_СЕРВЕР> sh "wnode-portable-bundle-${WMX_NODE_FULL}.x86_64.sh" -- -b -t "WALLARM_API_TOKEN"

Сохранение настроек памяти и прокси в env.list

Чтобы при обновлении Вебмониторэкс сохранить настройки выделенной памяти под 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/wallarm-override/env.list

    Пример файла /etc/wallarm-override/env.list ниже описывает следующую конфигурацию:

    • 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
    

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

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

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

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

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

sudo sh ./wnode-portable-bundle-5.0.36.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, used only in batch mode.
    -c, --cloud CLOUD           WMX Cloud, default is WMX, used only in batch mode.
    -H, --host HOST             WMX API address, for example: api.webmonitorx.ru, used only in batch mode.
    -P, --port PORT             WMX API port, for example, 443.
    -l, --labels LABELS         WMX application labels.
    -n, --name NODNAME          WMX node instance prefix name.
    -A, --ca-file CERT_AUTHORITY
                                File contains Cloud certificate authority.
        --no-ssl                Disable SSL for WMX API access.
        --no-verify             Disable SSL certificates verification.
        --no-sync               Disable initial sync of customruleset and proton.db files.
        --no-sync-acl           Disable initial sync of ip-lists and ip-lists-source(mmdb) files.
        --no-export-env         Disable initial export of installed component versions to WMX Cloud.
    -f, --force                 Forcefully replaces the existing WMX Node instance with a new one, persisting Node name.
        --skip-registration     Skip node registration process during installation.
        --skip-nginx            Proceed installation even if angie/nginx is not installed.
        --skip-nginx-conf       Skip angie/nginx configuration process during installation.
        --nginx-conf-file NGX_CFILE
                                Manually specified angie/nginx config file.
        --nginx-bin-file NGX_BFILE
                                Manually specified angie/nginx binary file.
        --skip-systemd          Skip systemd unit configuration process during installation.
        --trace-setup           Trace setup script execution.
    -h, --help                  Show this help message.
        --version               Show script version.
    -i, --info                  Show available modules.

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

sudo sh ./wnode-portable-bundle-5.0.36.x86_64.sh -- -b

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

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

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


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