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

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

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

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

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

  • 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
# apt install postgresql
Настройте политику 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
Информация об использовании PostgreSQL в Docker-контейнере доступна в соответствующем разделе.

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

  • Создайте базу данных для компонентов 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.0/24            md5
    
Nemesida WAF API
Nemesida WAF API предназначен для взаимодействия компонентов друг с другом, а также приема информации об инцидентах и выявленных уязвимостях для передачи в БД. Для установки компонента:

  • Предоставьте доступ к внешним ресурсам для корректной работы компонента;
  • Установите компонент, следуя руководству по установке.

После завершения настройки перезапустите сервисы:

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

  • Предоставьте доступ к внешним ресурсам для корректной работы компонента;
  • Установите компонент, следуя руководству по установке;
  • Произведите интеграцию компонента с Nemesida WAF API.

После завершения настройки перезапустите сервисы:

# systemctl restart nginx cabinet cabinet_ipinfo cabinet_attack_notification cabinet_cleaning_db cabinet_rule_update memcached
# systemctl status nginx cabinet cabinet_ipinfo cabinet_attack_notification cabinet_cleaning_db cabinet_rule_update memcached
Фильтрующая нода
Фильтрующая нода предназначена для анализа запросов и принятия решения об их блокировке в случае выявления признаков атак или прочих аномалий. Для установки компонента:

  • Предоставьте доступ к внешним ресурсам для корректной работы компонента;
  • Установите компонент, следуя руководству по установке;
  • Произведите интеграцию компонента с Nemesida WAF API.

После завершения настройки перезапустите сервисы:

# systemctl restart nginx rabbitmq-server memcached nwaf_update mla_main api_firewall
# systemctl status nginx rabbitmq-server memcached nwaf_update mla_main api_firewall

Отправьте запрос с тестовой сигнатурой:

# curl -i http://WAF_SERVER/nwaftest

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

Nemesida WAF: the request ... blocked by rule ID 1 in zone URL, ...
Nemesida AI MLC
Модуль машинного обучения состоит из агента машинного обучения Nemesida AI MLA (входит в пакет nwaf-dyn и, как правило, не требует настройки) и модуля машинного обучения Nemesida AI MLC. Для установки компонента:

  • Предоставьте доступ к внешним ресурсам для корректной работы компонента;
  • Установите компонент, следуя руководству по установке;
  • Произведите интеграцию компонента с фильтрующей нодой;
  • Произведите интеграцию компонента с Nemesida WAF API.

После завершения настройки перезапустите сервисы:

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

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

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

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

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

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

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

# curl -i http://YOUR_SERVER/nwaftest
Активация Nemesida AI
Для активации модуля машинного обучения Nemesida AI выполните следующие действия в Личном кабинете:

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

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

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

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

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