Ⅱ. Руководство по установке и вводу в эксплуатацию компонентов Немезида ВАФ | Немезида ВАФ

Руководство по вводу в эксплуатацию компонентов Немезида ВАФ. Установку компонентов рекомендуется выполнять в соответствующем руководству порядке.

Общая информация

Доступ к внешним ресурсам

Для корректной работы всех компонентов Немезида ВАФ на каждом сервере, где они установлены, необходимо предоставить доступ к внешним ресурсам:

  • https://nemesida-security.com;
  • https://nw-auth-extra.nemesida-security.com;
  • http(s)://geoip.nemesida-security.com.
Требования к аппаратному обеспечению компонентов Немезида ВАФ
Для эффективной работы компонентов Немезида ВАФ рекомендуется использовать серверы, имеющие следующие технические характеристики*:

Сервер для фильтрующей ноды
анализирует и перенаправляет незаблокированные запросы на сервер с веб-приложением
Процессор 4 ядра x 2.4 ГГц
Оперативная память 6 ГБ
Дисковое пространство 10 ГБ
Сервер для Nemesida AI MLC
используется для построения поведенческих моделей и анализа с их помощью всех поступающих запросов, выявляет атаки методом перебора, флуд и DDoS-атаки уровня приложений
Тарифы Лайт Бизнес, Энтерпрайз
Процессор 6 ядер x 2.4 ГГц
Оперативная память 4 ГБ 24 ГБ
Дисковое пространство 25 ГБ
Сервер для Nemesida WAF API, Личного кабинета и СУБД PostgreSQL
используется для хранения и визуализации выявленных аномалий и недостатков веб-приложения, а также для управления поведением модуля машинного обучения и фильтрующей нодой
Процессор 4 ядра x 2.4 ГГц
Оперативная память 6 ГБ
Дисковое пространство 25 ГБ

* Заявленные технические требования являются примерными (для нагрузки до 10к RPS) и подбираются индивидуально, в зависимости от количества и типа поступаемого трафика.

Отказоустойчивость компонентов Немезида ВАФ
Для обеспечения отказоустойчивой работы комплекса Немезида ВАФ рекомендуем ознакомиться со схемой, которая отражает минимальное количество серверов, используемых компонентами:

Cхема предполагает обеспечение отказоустойчивой работы для компонентов Немезида ВАФ с различным уровнем критичности:

Кластер фильтрующих нод
анализирует и перенаправляет незаблокированные запросы на сервер с веб-приложением
Критичность Высокая
Минимальное количество серверов 2
Описание В случае недоступности компонента:

  • не будет производиться анализ запросов;
  • будут недоступны сервисы, к которым выполняется проксирование трафика через фильтрующую ноду.
Сервер для Nemesida AI MLC
используется для построения поведенческих моделей и анализа с их помощью всех поступающих запросов, выявляет атаки методом перебора, флуд и DDoS-атаки уровня приложений
Критичность Средняя
Минимальное количество серверов 1
Описание В случае недоступности компонента:

  • не будет производиться выявление DDos/Brute/Flood-атак;
  • будет приостановлен процесс обучения/переобучения поведенческой модели. Недоступность компонента не влияет на анализ запросов модулем машинного обучения на фильтрующей ноде, если поведенческая модель уже была создана и применена до этого;
  • будет приостановлен процесс анализа запросов для генерации спецификации OpenAPI.
Сервер для Nemesida WAF API и СУБД PostgreSQL
используется для хранения выявленных аномалий и недостатков веб-приложения, а также для управления поведением модуля машинного обучения и фильтрующей нодой
Критичность Высокая
Минимальное количество серверов 2*
Описание В случае недоступности компонента:

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

* — использование одной копии Nemesida WAF API в режиме Read only позволит компонентам получать список настроек для них (настройки фильтрующей ноды, информация о поведенческих моделях, правила исключения/блокировки и т.д.), но не позволит произвести запись новых данных в БД.

Сервер для компонента Личный кабинет
используется для визуализации выявленных аномалий
Критичность Низкая
Минимальное количество серверов 1
Описание В случае недоступности компонента:

  • будет приостановлен доступ к интерфейсу Личного кабинета.
Сервер для Nemesida WAF Scanner
используется для выявления недостатков веб-приложения
Критичность Низкая
Минимальное количество серверов 1
Описание В случае недоступности компонента:

  • будет невозможно сканирование защищаемого веб-приложения для выявления уязвимостей;
  • будет невозможно использование функционала Recheck;
СУБД PostgreSQL
Перед началом установки компонентов Немезида ВАФ необходимо выполнить подготовку СУБД PostgreSQL к работе с компонентами:

Автоматическая установкаDebian, UbuntuRHELDocker

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./1-postgresql-deploy.sh 'pg_api_pwd=%Password%' 'pg_cabinet_pwd=%Password%' 'api_srv_ip=%Nemesida WAF API server address%'

где:

  • pg_api_pwd — пароль для создания пользователя nw_api для БД waf;
  • pg_cabinet_pwd — пароль для создания пользователя nw_cabinet для БД cabinet (необходимо для работы компонента Личный кабинет);
  • api_srv_ip — IP-адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки.
# apt install postgresql

После установки СУБД:

  • Создайте базу данных для компонентов Nemesida WAF API и Личный кабинет:

    Nemesida WAF API
    # su - postgres -c "psql -c \"CREATE DATABASE waf;\""
    # su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'YOUR_PASSWORD';\""
    # su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf TO nw_api;\""
    # su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""
    # su - postgres -c "psql waf -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_api;\""
    # su - postgres -c "psql waf -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_api;\""
    # su - postgres -c "psql waf -c \"GRANT CREATE ON SCHEMA public TO nw_api;\""
    

    YOUR_PASSWORD — пример пароля, не рекомендуется для использования.

    Личный кабинет
    # su - postgres -c "psql -c \"CREATE DATABASE cabinet;\""
    # su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'YOUR_PASSWORD';\""
    # su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet TO nw_cabinet;\""
    # su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""
    # su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_cabinet;\""
    # su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_cabinet;\""
    # su - postgres -c "psql cabinet -c \"GRANT CREATE ON SCHEMA public TO nw_cabinet;\""
    

    YOUR_PASSWORD — пример пароля, не рекомендуется для использования.

  • Предоставьте доступ для внешних подключений компонентов, внеся изменения в файл конфигурации pg_hba.conf:

    Пример:

    # IPv4 local connections:
    host    all             all             10.1.1.1/32            md5
    
Настройте политику SELinux или деактивируйте ее командой:

# setenforce 0

после чего приведите файл /etc/selinux/config к виду:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Установите и настройте СУБД PostgreSQL:

# dnf update
# dnf install postgresql-devel postgresql-server
# postgresql-setup initdb
# sed -i "s|host    all             all             127.0.0.1/32            ident|host    all             all             127.0.0.1/32            md5|" /var/lib/pgsql/data/pg_hba.conf
# sed -i "s|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|" /var/lib/pgsql/data/pg_hba.conf
# systemctl start postgresql
# systemctl enable postgresql

После установки СУБД:

  • Создайте базу данных для компонентов Nemesida WAF API и Личный кабинет:

    Nemesida WAF API
    # su - postgres -c "psql -c \"CREATE DATABASE waf;\""
    # su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'YOUR_PASSWORD';\""
    # su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf TO nw_api;\""
    # su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""
    # su - postgres -c "psql waf -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_api;\""
    # su - postgres -c "psql waf -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_api;\""
    # su - postgres -c "psql waf -c \"GRANT CREATE ON SCHEMA public TO nw_api;\""
    

    YOUR_PASSWORD — пример пароля, не рекомендуется для использования.

    Личный кабинет
    # su - postgres -c "psql -c \"CREATE DATABASE cabinet;\""
    # su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'YOUR_PASSWORD';\""
    # su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet TO nw_cabinet;\""
    # su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""
    # su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_cabinet;\""
    # su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_cabinet;\""
    # su - postgres -c "psql cabinet -c \"GRANT CREATE ON SCHEMA public TO nw_cabinet;\""
    

    YOUR_PASSWORD — пример пароля, не рекомендуется для использования.

  • Предоставьте доступ для внешних подключений компонентов, внеся изменения в файл конфигурации pg_hba.conf:

    Пример:

    # IPv4 local connections:
    host    all             all             10.1.1.1/32            md5
    
Информация об использовании компонента в Docker-контейнере доступна в соответствующем разделе.
Nemesida WAF API
Nemesida WAF API предназначен для взаимодействия компонентов друг с другом, а также приема информации об инцидентах и выявленных уязвимостях для передачи в БД. Для установки компонента:

1. Предоставьте доступ к внешним ресурсам для корректной работы компонента.
2. Установите компонент одним из способов:

Автоматическая установкаУстановка из репозиторияDockerYandex Cloud VM

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./2-api-deploy.sh 'pg_srv_ip=%PostgreSQL server address%' 'pg_srv_port=%PostgreSQL port%' 'pg_api_pwd=%Password%' 'api_proxy=%Proxy server address%'

где:

  • pg_srv_ip — IP-адрес сервера с БД waf;
  • pg_srv_port — порт сервера с БД waf;
  • pg_api_pwd — пароль пользователя nw_api для БД waf;
  • api_proxy — (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например, http://proxy.example.com:3128).
Руководство по установке компонента доступно в соответствующем разделе.
Информация об использовании компонента в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании компонента в виде Yandex Cloud VM доступна в соответствующем разделе.


Установка и настройка Nemesida WAF API (видеоинструкция)

Личный кабинет
Компонент предназначен для визуализации и систематизации информации об атаках и выявленных уязвимостях, а также управления настройками Немезида ВАФ и веб-сервера Nginx. Для установки компонента:

1. Предоставьте доступ к внешним ресурсам для корректной работы компонента.
2. Установите компонент одним из способов:

Автоматическая установкаУстановка из репозиторияDockerYandex Cloud VM

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./3-cabinet-deploy.sh 'pg_srv_ip=%PostgreSQL server address%' 'pg_srv_port=%PostgreSQL port%' 'pg_api_pwd=%Password%' 'pg_cabinet_pwd=%Password%' 'api_url=%Nemesida WAF API URL%' 'proxy=%Proxy server address%' 'api_proxy=%Proxy server address%'

где:

  • pg_srv_ip — IP-адрес сервера БД;
  • pg_srv_port — порт сервера БД;
  • pg_api_pwd — пароль пользователя nw_api для БД waf;
  • pg_cabinet_pwd — пароль пользователя nw_cabinet для БД cabinet;
  • api_url — адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки (например, http://api.example.com:8080/nw-api/);
  • proxy — (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например, http://proxy.example.com:3128);
  • api_proxy — (Опционально) IP-адрес прокси сервера для взаимодействия с Nemesida WAF API (например, http://proxy.example.com:3128).
Руководство по установке компонента доступно в соответствующем разделе.
Информация об использовании компонента в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании компонента в виде Yandex Cloud VM доступна в соответствующем разделе.


Установка и настройка Личного кабинета (видеоинструкция)

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

1. Предоставьте доступ к внешним ресурсам для корректной работы компонента.
2. Установите компонент одним из способов:

Автоматическая установкаУстановка из репозиторияDockerYandex Cloud VM

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./4-filtering-node-deploy.sh 'nwaf_lic_key=%Licence key%' 'api_url=%Nemesida WAF API URL%' 'sys_proxy=%Proxy server address%' 'api_proxy=%Proxy server address%'

где:

  • nwaf_lic_key — лицензионный ключ;
  • api_url — адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки (например, http://api.example.com:8080/nw-api/);
  • sys_proxy — (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например, http://proxy.example.com:3128);
  • api_proxy — (Опционально) IP-адрес прокси сервера для взаимодействия с Nemesida WAF API (например, http://proxy.example.com:3128).
Руководство по установке компонента доступно в соответствующем разделе.

После установки компонента обязательно:

Информация об использовании компонента в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании компонента в виде Yandex Cloud VM доступна в соответствующем разделе.


Установка и настройка фильтрующей ноды (видеоинструкция)

Nemesida AI MLC
Модуль машинного обучения состоит из агента машинного обучения Nemesida AI MLA (входит в пакет nwaf-dyn и, как правило, не требует настройки) и модуля машинного обучения Nemesida AI MLC. Для установки компонента:

1. Предоставьте доступ к внешним ресурсам для корректной работы компонента.
2. Установите компонент одним из способов:

Автоматическая установкаУстановка из репозиторияDockerYandex Cloud VM

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./5-mlc-deploy.sh 'nwaf_lic_key=%Licence key%' 'api_url=%Nemesida WAF API URL%' 'rmq_endpoints=%RabbitMQ endoints info%' 'sys_proxy=%Proxy server address%' 'api_proxy=%Proxy server address%'

где:

  • nwaf_lic_key — лицензионный ключ;
  • api_url — адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки (например, http://api.example.com:8080/nw-api/);
  • rmq_endpoints — реквизиты подключения к очереди RabbitMQ на фильтрующих нодах (например, guest:guest@127.0.0.1);
  • sys_proxy — (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например, http://proxy.example.com:3128);
  • api_proxy — (Опционально) IP-адрес прокси сервера для взаимодействия с Nemesida WAF API (например, http://proxy.example.com:3128).
Руководство по установке компонента доступно в соответствующем разделе.

После установки компонента обязательно:

Информация об использовании компонента в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании компонента в виде Yandex Cloud VM доступна в соответствующем разделе.


Установка и настройка Nemesida AI MLC (видеоинструкция)

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

1. Проверьте журналы каждого компонента на наличие возможных ошибок:

Nemesida WAF API:
  • /var/log/uwsgi/nw-api/*.log
Личный кабинет:
  • /var/log/uwsgi/cabinet/*.log
Nemesida AI MLC:
  • /var/log/nwaf/mlc.log
Фильтрующая нода:
  • /var/log/nginx/error.log
  • /var/log/nwaf/nwaf_update.log
  • /var/log/nwaf/mla.log
  • /var/log/nwaf/naf/error.log
  • /var/log/rabbitmq/rabbit@%hostname%.log
  • /var/log/rabbitmq/rabbitmq-server.error.log
Nemesida WAF Scanner:
  • /var/log/nwaf/nws.log

2. Отправьте тестовый запрос на сервер фильтрующей ноды с тестовой сигнатурой nwaftest:

# curl -i http://WAF_SERVER/nwaftest

и убедитесь, что сервер фильтрующей ноды возвращает код ответа 403, а в логе /var/log/nginx/error.log появилась запись о блокировке:

Nemesida WAF: the request ... blocked by rule ID 1 in zone URL, ...

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

3. Перейдите в Личный кабинет и убедитесь, что на странице появилась запись о заблокированном запросе.

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

Активация защиты веб-приложения
После выполнения основной настройки фильтрующей ноды и тестирования ее работы, можно приступить к активации защиты веб-приложения. Как правило, сервер веб-приложения и фильтрующая нода — разные серверы, поэтому поступающие запросы от клиентов не будут автоматически поступать на сервер фильтрующей ноды для анализа. Для активации защиты веб-приложения необходимо настроить работу фильтрующей ноды в качестве промежуточного сервера, который будет принимать и анализировать запросы клиентов, а затем блокировать/перенаправлять их на сервер защищаемого веб-приложения. Одним из методов настройки взаимодействия фильтрующей ноды и защищаемого веб-приложения является «обратный прокси». Для этого выполните следующие действия:

1. Активируйте параметры режима мониторинга (пассивный режим) работы фильтрующей ноды в Личном кабинете:

  • Активация режима мониторинга анализа запросов для IP-адреса:
  • Активация режима мониторинга анализа запросов для виртуального хоста:

Режим мониторинга (пассивный режим) предназначен для предотвращения блокировок запросов на период настройки. Активация режима мониторинга для IP-адреса применяется в случаях, когда необходимо исключить блокировки при обращении с определенного списка IP-адресов (как правило, с IP-адресов, принадлежащих отделу IT, выполняющих настройку компонентов), а активация режима мониторинга для виртуального хоста — исключает блокировки запросов для всех клиентов веб-приложения.

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

3. Переопределите соответствие IP-адреса и доменного имени таким образом, чтобы запросы поступали на фильтрующую ноду (например, с помощью редактирования A-записи DNS).

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

# curl -i http://YOUR_SERVER/nwaftest
Активация Nemesida AI

Поведенческие модели

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

Производить тестирование качества работы модуля машинного обучения рекомендуется после завершения обучения поведенческой модели и активации автоматической блокировки IP-адресов источников нелегитимных запросов.

Для активации модуля машинного обучения Nemesida AI выполните следующие действия в Личном кабинете:

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

Управление ложными срабатываниями после завершения обучения производится с помощью модуля Личный кабинет.

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

Активация выявления DDoS/Brute/Flood атак

Для активации механизма выявления атак методом перебора/флуда/DDoS и активности паразитных ботов модулем машинного обучения Nemesida AI выполните следующие действия в Личном кабинете:

  • Активируйте параметры выявления DDoS-атак и активности паразитных ботов:

  • Активируйте параметры выявления атак методом перебора/флуда: