5 марта 2024

Статья 4. Установка и настройка PT NAD в многосерверной конфигурации

Цикл статей PT NAD Getting Started
Приветствуем вас в четвёртой статье курса «PT NAD Getting Started» на платформе TS University!

В этой статье мы рассмотрим процесс установки PT NAD на два сервера: основной узел и сенсор. Они названы nad-core и nad-sensor соответственно, так что не составит особого труда определить по скриншоту, на каком именно из серверов выполняются команды.

Перед прочтением этой статьи мы рекомендуем ознакомиться с предыдущей статьей, в которой рассматривался процесс установки PT NAD All-in-one. В ней мы детально разобрали некоторые этапы установки, которые могут быть опущены в этой статье для более лаконичного изложения.

Примечания:
  1. В статье и на всех скриншотах выполнение команд производилось от имени root. При отказе в доступе к некоторым файлам используйте пользователя root или команду sudo (убедитесь перед этим, что пользователь находится в файле /etc/sudoers);
  2. При ошибке во время установки пакетов из-за отсутствия некоторых зависимостей выполните команду apt install -f;
  3. В статье для лаконичности и большей универсальности путь, по которому находится каталог с дистрибутивом, обозначен переменной $DISTR

Перед установкой необходимо заранее примонтировать накопители к каталогам /es на основном сервере и /pcaps на сервере с сенсором. Также должен отсутствовать swap-раздел, иначе он будет либо замедлять работу системы, либо будет отключен и займёт полезное место на диске.

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

Установка и настройка Core с помощью мастера установки

Запускаем скрипт $DISTR/install.sh. В открывшемся окне выбираем опцию Custom server. Затем указываем роли, которые будет выполнять наш сервер: Core и Storage.

В окне дополнительных шагов установки по умолчанию оставим выбранными все опции.
Для завершения установки нам необходимо создать ноды elasticsearch с помощью скрипта $DISTR/ptnad-distrib/scripts/deploy_elastic. В отличие от односерверной инсталляции, на основном сервере не будет работать модуль ptdpi, поэтому при тех же ресурсах сервера мы можем создать по отдельному узлу для каждой роли вместо узла, выполняющего все три роли, который мы были вынуждены использовать при установке All-in-one.

Для выделения ресурсов для главного и клиентского узлов, а также для узла данных используются ключи --master-node, --cliend-node, --data-node соответственно. Отметим, что по сравнению с односерверной конфигурацией при использовании скрипта deploy_elastic появился дополнительный ключ —-ip-address, указывающий адрес, на котором будут висеть все узлы elasticsearch (по умолчанию слушается localhost).
Установка завершена.

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

Установка и настройка Core в ручном режиме

Устанавливаем пакеты OpenJDK и Elasticsearch из каталога $DISTR/repos/additional_packages. По завершении выдаем доступ модулю к каталогу /es и создаем узлы elasticsearch с помощью скрипта $DISTR/ptnad-distrib/scripts/deploy_elastic.
Далее устанавливаем ptdpi с необходимыми зависимостями (здесь и далее на скриншотах будут указаны относительные пути к устанавливаемым пакетам из каталога $DISTR), PostgreSQL, Redis и Nginx.
Устанавливаем модули pyfpta и ptnad. В открывшемся окне выбираем опцию NAD Web Server.
Перезапускаем nginx, устанавливаем модули ptnad-reporter, ptdpi-notifier и ptdpi-ad-worker.
Вносим изменения в конфигурационные файлы Postgresql и Redis. В файле /etc/redis/redis.conf в параметре bind указываем ip основного сервера, устанавливаем в параметре protected-mode значение no и убеждаемся, что для прослушивания указан порт 6379. Перезапускаем redis.

В файле /etc/postgresql/11/nad/postgresql.conf изменяем адрес для прослушивания на ip основного сервера. Порт по умолчанию 5499. В конец файла pg_hba.conf добавляем две строчки, разрешающие подключение к БД обоим серверам — основному и сенсору. Перезапускаем postgresql.
Далее вносим изменения в конфигурационный файл /opt/ptsecurity/etc/nad.settings.yaml и указываем адреса и порты для подключения к базам данных, elasticsearch и веб-серверу.

Также выбираем режим работы сервера:
  • server_url: <ip основного узла>
  • Redis_uri: <ip адрес основного узла>:<порт, указанный в redis. conf>
  • Database_uri: postgres://nad:nad@<ip основного узла>:<порт, указанный в postgresql. conf>/nad
  • Elastic_uri: <ip адрес основного узла>:9200
  • Running_mode: webworker
После завершения редактирования добавляем в автозапуск службы nad-web-server и nad-task-server и перезапускаем их.
Настраиваем подсистему обогащения и хранилище метаданных.

В файле /opt/ptsecurity/etc/ptdpi.settings.yaml в параметрах elastic_host и broker_host указываем ip основного узла. В поле workers добавляем ad к четырем модулям, указанным по умолчанию. Количество шардов и продолжительность хранения метаданных определяется отдельно для каждой системы. В нашем случае достаточно дефолтных значений.

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

Установка и настройка Sensor с помощью мастера установки

Запускаем скрипт install. sh, выбираем опцию Custom server, указываем роль Sensor и имя сенсора. Выбираем для выполнения все предустановочные шаги. От установки драйвера отказываемся, так как в нашем сервере не используются сетевые адаптеры NVIDIA Mellanox.
После завершения установки всех пакетов запускаем конфигуратор командой nad-configure.

Переходим к начальной настройке, указываем один и тот же интерфейс для управления сервером и внутреннего взаимодействия с сервером Core. Далее необходимо указать адрес основного узла, выбрать интерфейс и механизм захвата трафика, указать MTU и скорость захватываемого трафика. После подтверждения вносимых изменений сенсор можно считать настроенным.

Установка и настройка Sensor в ручном режиме

Устанавливаем ptdpi и ptnad. В открывшемся окне выбираем NAD Sensor.
В файле ptdpi.settings.yaml указываем адрес основного узла в поле broker_host, выбираем удаленный тип брокера, оставляем поле workers пустым, так как подсистема обогащения находится на сервере Core, и указываем имя сенсора, которое будет отображаться в интерфейсе продукта (желательно, чтобы оно совпадало с именем хоста).

В файле nad.settings.yaml указываем данные для подключения к базам данных PostgreSQL и Redis (поля redis_uri и database_uri полностью совпадают с настройками на сервере Core — их можно просто оттуда скопировать без изменений) и выбираем режим работы сервера — sensor.
Устанавливаем драйвер. Далее настраиваем DPDK: выбираем интерфейс захвата, выделяем потоки ЦПУ и изолируем их, внося изменения в конфигурацию GRUB.
После отключаем nad-web-server, запускаем nad-task-server и ptdpi.
Настраиваем передачу pcap файлов по NFS. Сперва убеждаемся, что на сервере отсутствует swap-раздел, для хранения сырого трафика создан каталог /pcaps с примонтированным к нему накопителем, а владельцем является ptdpi.

После этого устанавливаем nfs-сервер. В каталоге /pcaps создаем вложенный каталог с именем сенсора. В файл /etc/exports добавляем строку вида /pcaps/<имя сенсора> <адрес основного узла>(ro, insecure, no_subtree_check), что делает каталог с сырым трафиком доступным для удаленного доступа с основного узла.

Перезапускаем nfs-сервер.
В файле ptdpi.settings.yaml указываем путь, по которому будут сохраняться файлы с копией сырого трафика.

Перезапускаем модуль ptdpi.
Необходимо завершить настройку передачи файлов по NFS, поэтому устанавливаем nfs-сервер на основном узле. Затем добавляем в файл /etc/fstab строку вида <ip сенсора>:/pcaps/<имя сенсора> /pcaps/<имя сенсора> nfs ro, defaults, nofail, nosuid, noatime, bg, rsize=32 768,soft, intr 0 0.

И монтируем удаленный каталог к локальному.
Перезапускаем nad-task-server и nad-web-server.
Перезапускаем ptdpi и nad-task-server на сенсоре и устанавливаем ptdpistat.

Проверка работы

После завершения этапов установки и настройки проверяем работу продукта. Для этого подключаемся к веб-серверу по адресу нашего сервера. Откроется окно авторизации. Для первого входа можно воспользоваться учетной записью по умолчанию: логин - administrator, пароль - Administr@t0r.
При успешном входе откроется вкладка с дашбордами. Проверяем наличие захватываемого трафика: дашборды и график в верхней части страницы не должны быть полностью пустыми. Возможно, нужно будет подождать несколько минут, прежде чем обработанный трафик отразится в интерфейсе.
Также мы можем зайти во вкладку Администрирование (иконка разводного ключа в правом верхнем углу) в раздел Сенсоры и убедиться, что сенсор включен и отображается верное название сенсора.

Заключение

Итак, в материалах этой статьи мы с вами подробно обсудили процесс установки PT NAD в многосерверном исполнении, отметили отличия от установки All-in-one.

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

Оставайтесь с нами!