Обновлено 17 сенPDF

Автоматическая установка FlowCollector на Astra Linux 1.8

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

1. Аппаратные и программные требования

  • Операционная система: Astra Linux 1.8 Использование других версий или дистрибутивов не гарантирует корректную работу ПО.
  • Процессор: Intel Xeon, AMD EPYC, не менее 10 физических ядер.
  • Оперативная память: не менее 8 ГБ
  • Дисковое пространство: не менее 100 ГБ
  • Сетевые интерфейсы:
    • Для режима зеркалирования (DPDK): минимум 2 физических интерфейса:
      • Управляющий интерфейс
      • Интерфейс для обработки трафика (должен поддерживаться DPDK).
        Интерфейс резервируется полностью для FlowCollector, его использование для других целей невозможно.
    • Для режима NetFlow: минимум 1 сетевой интерфейс.
  • Рекомендуемые сетевые адаптеры: Mellanox (mlx5 или mlx6), Intel X520-DA2
  • Права пользователя: Требуется пользователь с правами sudo для запуска установочных скриптов.

1.1. Выбор и подготовка режима интеграции

Режим зеркалирования (Port Mirror, DPDK)

  • Рекомендуется для производительных конфигураций и скоростей обработки выше 30 Gbps.
  • Требует выделения отдельного физического интерфейса для обработки трафика (режим DPDK).
  • На сетевом оборудовании необходимо настроить зеркалирование трафика (port-mirror) с использованием GRE-туннеля и необходимого коэффициента (например, 1:1000).
  • После настройки зеркалирования интерфейс будет полностью использоваться FlowCollector.
Пример настройки зеркалирования трафика

# Port mirroring
port-mirroring
mirror-once;
input {
    rate 1000;
    run-length 0;
}

instance {
    flowcollector {
        input {
            rate 250;
            run-length 0;
        }
        family inet {
            output {
                interface gr-0/0/0.15 {
                    next-hop 172.20.5.2;
            }
        }
    }

gr-0/0/0.15
description --Tunnel-to-flowcollector;
tunnel {
    source IP;
    destination IP;
}
family inet {
    address 172.20.5.1/30;
}

firewall filter flowcollector-input

term default {
    then {
        port-mirror-instance flowcollector;
        accept;
    }
}

ae0.2020
description UPSTREAM;
vlan-id 2020;
family inet {
    filter {
        input flowcollector-input;
    }
    sampling {
        input;
    }
    address 10.12.0.2/30;
}

Режим потоковых данных

Используется для семплирования трафика. Поддерживает несколько потоковых протоколов:

  • NetFlow v10 (IPFIX)
  • NetFlow v9
  • sFlow
  • IMON

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

1.2. Подготовка сетевого оборудования

Для режима DPDK:

  • Настройте зеркалирование пакетов на уровне сетевого оборудования в сторону выделенного интерфейса.
  • Проверьте, что драйвер выбранного сетевого адаптера поддерживается DPDK.

Для режима потоковых данных:

  • Настройте отправку семплированных пакетов на соответствующий сетевой интерфейс.

1.3. Подготовка аппаратной платформы

  • Установите рекомендованную для запуска ОС: Astra Linux 1.8
    *В случае использования других ОС - успешный запуск ПО не гарантирован
  • Используйте рекомендованные CPU: Intel Xeon, AMD EPYC, не менее 10 физических ядер. *В случае использования CPU сторонних производителей - успешный запуск ПО не гарантирован
  • Используйте рекомендованные сетевые карты: Mellanox (mlx5 или mlx6) или Intel (X520-DA2)

2. Установка FlowCollector с помощью скрипта

2.1 Выполнение скрипта установки

Скрипт выполняет подключение репозитория Servicepipe, установку FlowCollector и первоначальное конфигурирование системы.

Для запуска необходимо выполнить команду:

curl -o "./setup-fc.sh" "https://public-repo.svcp.io/setup_script/setup-fc.sh" && \
    sudo chmod +x "./setup-fc.sh" && \
    ./setup-fc.sh

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

2.2 Подключение репозитория

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

Для подключения требуется ввести логин и пароль к репозиторию. Учетные данные предоставляются индивидуально для каждого заказчика. Получить их возможно запросив у вендора (Servicepipe или партнёра).

2.3 Выбор конфигурации для установки

После подключения репозитория скрипт предложит выбрать конфигурацию FlowCollector.

Установка включает четыре компонента:

  • FlowCollector — основной пакет FlowCollector.
  • Spider — веб-интерфейс.
  • Пакет мониторинга — компоненты для сбора и отображения данных мониторинга.
  • Grafana — система визуализации данных мониторинга.

Укажите необходимый вариант и подтвердите установку.

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

2.4 Первичная настройка системы

В зависимости от выбранной конфигурации после установки пакетов выполняется первоначальная настройка компонентов.

Сначала выполняется установка ClickHouse. Задайте пароль для пользователя default.

После установки, скрипт рассчитывает количество HugePages, выполняет инициализацию ClickHouse и предлагает указать имя пользователя и пароль.

Укажите имя создаваемой базы данных MongoDB, имя пользователя и пароль.

Укажите имя базы данных PostgreSQL, имя пользователя и пароль.

Далее выполняется инициализация NATS.

После создания и включения необходимых системных сервисов выполняется переход к первоначальной настройке SP-Spider.

При настройке SP-Spider используются ранее заданные параметры подключения к PostgreSQL. Затем предлагается создать системного пользователя для веб-интерфейса.

На завершающем этапе выполняется настройка Grafana. Укажите имя базы данных PostgreSQL, имя пользователя и пароль.

3. Первый вход в систему

Для входа в Веб-интерфейс FlowCollector следует ввести в адресной строке браузера IP-адрес сервера и порт по шаблону: ip:3333.

Появится окно авторизации (см. рисунок ниже). В окне авторизации следует указать следующие логин и пароль по умолчанию: superadmin/superadmin

После авторизации появится уведомление Работа с интерфейсом невозможна. Это связано с тем, что в данный момент нет настроенной ноды.

Нажать кнопнку Настройки. Откроется окно настроек.

В меню Ноды нажать на Добавить ноду. В открывшемся окне указать:

  • Оп.система — Ubuntu 18+
  • Модуль — FlowCollector
  • Metrics host — flowcollector

Перейти в настройки MongoDB и указать параметры подключения:

Нажать на кнопку Применить. Перейти в раздел ClickHouse.

Нажать на кнопку Применить. Перейти в раздел Подключение.

В открывшемся окне указать SSH-данные для подключения к ноде FlowCollector (IP-адрес, логин, пароль). Нажмите Проверить, чтобы проверить подключение. Если данные указаны верно и нода доступна, её статус изменится на Доступна. После успешной проверки нажмите Применить. В открывшемся окне нажать Добавить ноду.

Для отображения графиков и статистики необходимо указать ссылку на Graphite. Перейдите в раздел Окружение. В разделе FlowCollector указать Graphite URL.

Нажать на профиль в правом верхнем углу экрана и в открывшихся настройках установить новый пароль.

Обновить страницу. Веб-интерфейс готов к использованию.

4. Настройка конфигурации FlowCollector

Конфигурация разделена на логические блоки для удобства восприятия.

Внимание!

  • Перед началом работы рекомендуется изучить комментарии к каждому параметру.
  • Для режима DPDK необходимо раскомментировать секцию dpdk-nic.
  • Для режима потоковых данных необходимо раскомментировать секцию Потоки.

Открыть файл конфигурации для редактирования:

sudo nano /opt/spfc/etc/analyzer.yaml

4.1 Параметры логирования

log:
  level: debug                     # Уровень логирования: trace, debug, info, warn/warning, error, fatal

Примечание
Уровни логирования trace и debug могут быть отключены в определённых типах сборки.

4.2 Привязка логических ядер

Секция lcore-mapping определяет распределение логических ядер между процессами FlowCollector. Если секция не задана, используется автоматическое распределение.

Доступны режимы:

  • auto — автоматическое распределение с указанием количества логических ядер для каждой активности;
  • manual — ручное распределение с указанием количества логических ядер для каждой активности;
  • corebound — привязка активностей к конкретным идентификаторам логических ядер.

Для параметра dpdk-rx рекомендуется указывать количество ядер, равное степени 2.

# lcore-mapping:
  # mode: auto                      # Режим привязки: auto, manual, corebound.
                                    # Опционально. По умолчанию — auto

  # schema:
    # auto:                         # Количество логических ядер для каждой активности
      # detection: 4                # Обнаружение аномалий
      # event-processing: 2         # Обработка событий
      # metrics: 2                  # Обработка метрик
      # dpdk-rx: 1                  # Приём трафика DPDK
      # dpdk-worker: 4              # Обработка трафика DPDK
      # flow-rx: 1                  # Приём потоков
      # flow-worker: 2              # Обработка потоков
      # reports: 2                  # Формирование отчётов
      # free: 2                     # Свободные логические ядра

    # manual:                       # Количество логических ядер для каждой активности
      # detection: 4                # Обнаружение аномалий
      # event-processing: 2         # Обработка событий
      # metrics: 2                  # Обработка метрик
      # dpdk-rx: 1                  # Приём трафика DPDK
      # dpdk-worker: 4              # Обработка трафика DPDK
      # flow-rx: 1                  # Приём потоков
      # flow-worker: 2              # Обработка потоков
      # reports: 2                  # Формирование отчётов
      # free: 2                     # Свободные логические ядра

    # corebound:                    # Привязка активностей к конкретным идентификаторам
                                    # логических ядер. Используются номера от 1 до N-1
      # detection: 1-4              # Логические ядра для обнаружения аномалий
      # event-processing: 5,6       # Логические ядра для обработки событий
      # metrics: 7,8                # Логические ядра для обработки метрик
      # dpdk-rx: 9                  # Логические ядра для приёма трафика DPDK
      # flow-rx: 14                 # Логические ядра для приёма потоков
      # worker: 10,11,12,13,15,16   # Логические ядра для обработки данных
      # reports: 17,18              # Логические ядра для формирования отчётов
      # free: 20-22,23              # Свободные логические ядра

4.3 Параметры обнаружения

Параметры обнаружения аномалий задаются в секции detections.

  detections:
#   enable: true                     # Включение обнаружения. По умолчанию — true
#   average-period: 5000ms           # Период для расчёта текущей скорости. По умолчанию — 5000ms
#   interval: 5000ms                 # Интервал пересчёта текущей скорости. По умолчанию — 5000ms
#   min-destination-ip: 10           # Минимальное количество IP-адресов назначения под атакой
                                      # в управляемом объекте для правил типа global. По умолчанию — 0
#   min-destination-ip-subnet: 10    # Минимальное количество IP-адресов назначения под атакой
                                      # в подсети для правил типа subnet. По умолчанию — 0
#   confirm-period: 0                # Период подтверждения аномалии. По умолчанию — 0 секунд
#   action-expiry-timeout: 60        # Время продолжения действия после исчезновения аномалии.
                                      # По умолчанию — 60 секунд

Для параметров длительности можно использовать единицы ns, us, ms, s, m, h, d.

4.4 Параметры метрик

metrics:
  enable: false                      # Включение сбора метрик. По умолчанию — false

  # disable-vector-metrics: false    # Отключение метрик векторов атак для MO, subnet и IP.
                                     # По умолчанию — false

  collectd:
    endpoint: unix://var/run/collectd-unixsock
                                     # Точка подключения collectd

  # carbon:
  #   endpoint: 127.0.0.1:2003       # Точка подключения Carbon

  hostname: analyzer-test            # Первый ключ имени метрики
  plugin: analyzer                   # Второй ключ имени метрики
  export-timeout: 5                  # Период отправки метрик. По умолчанию — 5 секунд
  # buffer-size: 50000               # Количество буферов по 4096 байт.
                                     # По умолчанию — 25000

4.5 Настройки BGP и GoBGP

GoBGP и FlowSpec
gobgp:
  enable: false                     # Включение GoBGP. По умолчанию — false
  host: localhost                   # Хост API GoBGP. По умолчанию — localhost
  port: 50051                       # Порт API GoBGP. По умолчанию — 50051
  # thread-number: 1                # Количество потоков API GoBGP. По умолчанию — 1
  enable-subnet-splitting: false    # Включение разделения CIDR на подсети
  min-subnet-length: 16             # Длина маски для разделения. По умолчанию — 16
  enable-flow-spec: false           # Включение FlowSpec
  max-rules-number: 100             # Максимальное количество правил FlowSpec.
                                     # По умолчанию — 100
  drop-on-restart: true             # Удаление существующих маршрутов и правил FlowSpec
                                     # в GoBGP при перезапуске. По умолчанию — true

Если значение min-subnet-length меньше или равно длине маски CIDR, разделение на подсети не выполняется.

4.6 Аргументы DPDK EAL

dpdk-args:                            # По умолчанию значение не задано

# --vdev=net_pcap0,rx_iface_in=eth0   # Пример использования сетевого интерфейса в режиме PCAP:

# --vdev=net_af_packet0,iface=tap0,framecnt=512,qpairs=1 --in-memory --no-pci    # Пример использования сетевого интерфейса с dpdk-testpmd:

# -a <port>                           # Пример использования сетевого интерфейса:

4.7 Параметры HTTP API FlowCollector

http-api:
  enable: false                     # Включение HTTP API. По умолчанию — false
  # endpoint:                       # Локальные точки подключения
  #   - unix://path/to/socket
  #   - inet://127.0.0.1:8082
  #   - 127.0.0.1

4.8 Параметры FIB

Секция fib определяет параметры таблиц маршрутизации для IPv4 и IPv6.

# fib:
#   v4:
#     max-routes: 65535             # Максимальное количество маршрутов. По умолчанию — 65535
#     table8: 1024                  # Количество групп tbl8. По умолчанию — 1024
#   v6:
#     max-routes: 65535             # Максимальное количество маршрутов. По умолчанию — 65535
#     table8: 1024                  # Количество групп tbl8. По умолчанию — 1024

4.9 Источники трафика

DPDK NIC
dpdk-nic:
  enable: true                      # Включение DPDK NIC. true — включено, false — выключено.
                                    # По умолчанию — true

  # rate: 1                         # Коэффициент выборки. Каждый `rate`-й пакет отправляется
                                    # в FlowCollector. Реальное количество пакетов рассчитывается
                                    # как количество полученных пакетов × rate.
                                    # По умолчанию — 1

  # enable-eth-ports: 0xff          # Маска включённых Ethernet-портов.
                                    # Опционально. По умолчанию — max(uint64)

  # port-rx-queue-number: 1         # Количество очередей Rx на сетевой интерфейс.
                                    # Опционально. По умолчанию — 1

  # throttling-rate: 1              # Коэффициент регулирования (1:throttling-rate).
                                    # Опционально. По умолчанию — 1

  # mtu: 9000                       # MTU Ethernet-портов DPDK.
                                    # Опционально. По умолчанию используется значение драйвера,
                                    # обычно 1500

  # packet-pool:                    # Параметры пула пакетов DPDK
  #   size: 8191                    # Размер пула. По умолчанию — (64*1024)-1
  #   cache-size: 128               # Размер кэша. По умолчанию — 128

  # arp:                            # Параметры ARP
  #   enable: false                 # Включение ARP. true — включено, false — выключено.
                                    # По умолчанию — false

  #   devices:                      # Список устройств для обработки. По умолчанию не задан.
                                    # Если указаны одновременно devices и default-ip, используется значение default-ip.
                                    # Если ARP включён, но не заданы ни devices, ни default-ip, возникает ошибка
  #     -
  #       mac: 00:00:00:00:00:00   # MAC-адрес устройства
  #       ip:                       # Список IP-адресов устройства
  #         - 127.0.0.1
  #         - 192.168.0.0

  #   default-ip: 127.0.0.1         # IP-адрес машины, на которой работает анализатор.
                                    # По умолчанию — 127.0.0.1

  # sources:                        # Список источников трафика DPDK для сопоставления с группами
  #   -
  #     group: all                  # Имя группы. Если не указано, используется автоматически сгенерированный идентификатор группы

  #     disable: false              # Отключение обработки источника.
                                    # Если не указано, используется false

  #     local:                      # Локальная точка. Пустое значение local: {} означает любую
  #       host: 192.168.0.1         # IP-адрес. Если не указан, используется любой

  #     remote:                     # Удалённая точка. Пустое значение remote: {} означает любую
  #       host: 192.168.0.2         # IP-адрес. Если не указан, используется любой

Если параметры local и remote не заданы, используется сырое зеркалирование трафика.

Потоки

Секция flow определяет параметры приёма потоков IPFIX, NetFlow v9, sFlow и IMon.

flow:
  enable: false                     # Включение обработки потоков. true — включено, false — выключено.
                                    # По умолчанию — false

  # memory-pool:                    # Параметры пула памяти для сообщений о потоках
  #   number: 16383                 # Размер пула. По умолчанию — 1024*64-1
  #   cache-size: 128                # Размер кэша. По умолчанию — 128
IPFIX
flow:
  ipfix:
    enable: false                   # Включение IPFIX. true — включено, false — выключено.
                                    # По умолчанию — false

    # rate: 1                       # Коэффициент выборки. Каждый `rate`-й пакет отправляется
                                    # в FlowCollector. Реальное количество пакетов рассчитывается
                                    # как количество полученных пакетов × rate.
                                    # По умолчанию — 1

    endpoint:                       # Локальные точки подключения для приёма сообщений IPFIX
      - udp://127.0.0.1:4739
      # - tcp://192.168.0.1:4739

    # sources:                      # Список источников трафика IPFIX для сопоставления с группами
    #   -
    #     group: all                # Имя группы. Если не указано, используется автоматически
                                    # сгенерированный идентификатор группы
    #     protocol: tcp             # Протокол. Доступные значения: udp, tcp.
                                    # Если не указан, используется любой протокол
    #     ifIndex: 12               # Индекс входного интерфейса.
                                    # Если не указан, используется любой интерфейс
    #     disable: false            # Отключение обработки источника.
                                    # Если не указано, используется false
    #     local:                    # Локальная точка. Пустое значение local: {} означает любую
    #       host: 192.168.0.1       # IP-адрес. Если не указан, используется любой
    #       port: 20000             # Порт. Если не указан, используется любой
    #     remote:                   # Удалённая точка. Пустое значение remote: {} означает любую
    #       host: 192.168.0.2       # IP-адрес. Если не указан, используется любой
    #       port: 30000             # Порт. Если не указан, используется любой
NetFlow v9
flow:
  netflow9:
    enable: false                   # Включение NetFlow v9. true — включено, false — выключено.
                                    # По умолчанию — false

    # rate: 1                       # Коэффициент выборки. Каждый `rate`-й пакет отправляется
                                    # в FlowCollector. Реальное количество пакетов рассчитывается
                                    # как количество полученных пакетов × rate.
                                    # По умолчанию — 1

    endpoint:                       # Локальные точки подключения для приёма сообщений NetFlow v9
      - 127.0.0.1:2055

    # sources:                      # Список источников трафика NetFlow v9 для сопоставления с группами
    #   -
    #     group: all                # Имя группы. Если не указано, используется автоматически
                                    # сгенерированный идентификатор группы
    #     protocol: tcp             # Протокол. Доступные значения: udp, tcp.
                                    # Если не указан, используется любой протокол
    #     local:                    # Локальная точка. Пустое значение local: {} означает любую
    #       host: 192.168.0.1       # IP-адрес. Если не указан, используется любой
    #       port: 20000             # Порт. Если не указан, используется любой
    #     remote:                   # Удалённая точка. Пустое значение remote: {} означает любую
    #       host: 192.168.0.2       # IP-адрес. Если не указан, используется любой
    #       port: 30000             # Порт. Если не указан, используется любой
sFlow
flow:
  sflow:
    enable: false                   # Включение sFlow. true — включено, false — выключено.
                                    # По умолчанию — false

    endpoint:                       # Локальные точки подключения для приёма сообщений sFlow
      - 127.0.0.1:6343
      # - 192.168.0.1:6343

    # sources:                      # Список источников трафика sFlow для сопоставления с группами
    #   -
    #     group: all                # Имя группы. Если не указано, используется автоматически
                                    # сгенерированный идентификатор группы
    #     ifIndex: 12               # Индекс входного интерфейса.
                                    # Если не указан, используется любой интерфейс
    #     disable: false            # Отключение обработки источника.
                                    # Если не указано, используется false
    #     local:                    # Локальная точка. Пустое значение local: {} означает любую
    #       host: 192.168.0.1       # IP-адрес. Если не указан, используется любой
    #       port: 20000             # Порт. Если не указан, используется любой
    #     remote:                   # Удалённая точка. Пустое значение remote: {} означает любую
    #       host: 192.168.0.2       # IP-адрес. Если не указан, используется любой
    #       port: 30000             # Порт. Если не указан, используется любой
IMon
flow:
  imon:
    enable: false                   # Включение IMon. true — включено, false — выключено.

    endpoint:                       # Локальные точки подключения для приёма сообщений IMon
      - 127.0.0.1:2055
      # - 192.168.0.1:6343

    # sources:                      # Список источников трафика IMon для сопоставления с группами
    #   -
    #     group: all                # Имя группы. Если не указано, используется автоматически
                                    # сгенерированный идентификатор группы
    #     ifIndex: 12               # Индекс входного интерфейса.
                                    # Если не указан, используется любой интерфейс
    #     disable: false            # Отключение обработки источника.
                                    # Если не указано, используется false
    #     local:                    # Локальная точка. Пустое значение local: {} означает любую
    #       host: 192.168.0.1       # IP-адрес. Если не указан, используется любой
    #       port: 20000             # Порт. Если не указан, используется любой
    #     remote:                   # Удалённая точка. Пустое значение remote: {} означает любую
    #       host: 192.168.0.2       # IP-адрес. Если не указан, используется любой
    #       port: 30000             # Порт. Если не указан, используется любой

4.10 Анонсы и действия

BGP-анонсы
announce:
  enable: false                     # Включение отправки BGP-анонсов

  nexthops:
    - name: transit                 # Имя next-hop
      ip: 192.168.10.1              # IP-адрес next-hop

    - name: blackhole
      ip: 192.168.20.1

      # communities: 666
      # communities:
      #   - 666:666
      #   - 777:777

  timeout: 20                       # Период отправки анонсов для нативного BGP

Для BGP communities поддерживаются следующие форматы:

<целое_число>:<целое_число>
<целое_число>
0x<шестнадцатеричное_число>
Глобальное действие

Глобальное действие применяется при обнаружении аномалии, если для соответствующего правила не задано отдельное действие.

action:
  nexthop: transit                  # IP-адрес next-hop или его имя из announce.nexthops

  # communities: 666:666
  # communities:
  #   - 666:666
  #   - 777:777
Вычитание трафика local и subnet аномалий
subtract-local-subnet-traffic: true   # По умолчанию — true.

Если параметр имеет значение true, трафик, вызвавший аномалию уровня local или subnet, вычитается из скорости соответствующих счетчиков subnet и global объекта.

4.11 Отправка событий

Notification Service
notification-service:
  enable: false                     # Включение отправки событий. По умолчанию — false

  http:
    enable: false                   # Включение отправки событий по HTTP
    host: localhost                 # Хост удалённого сервиса
    # port: 8081                    # Порт. По умолчанию — 8081
    # path: /                       # Путь

  nats:
    enable: false                   # Включение отправки событий через NATS
    host: localhost                 # Хост NATS
    # port: 4222                    # Порт. По умолчанию — 4222
    # path: /
    # subject: analyzer.notification  # Subject потока
    # persistance: true             # Сохранение сообщений. По умолчанию — true
Аннотации Graphite
graphite-annotations:
  enable: false                     # Включение отправки событий как аннотаций Graphite
  host: localhost                   # Хост удалённого сервиса
  # port: 80                        # Порт. По умолчанию — 80
  # path: /events                   # Путь

4.12 Параметры IpLookupTable

ip-lookup-table:
  mode: overlap                     # Режим отслеживания CIDR

Значение overlap разрешает перекрывающиеся подсети в разных управляемых объектах, nooverlap — запрещает.

4.13 Параметры отчётов

reports:
  enable: false                     # Включение формирования отчётов. По умолчанию — false
  host: localhost                   # Хост сервиса для экспорта отчётов
  # port: 9080                      # Порт. По умолчанию — 9080
  path: /report                     # Путь для экспорта отчётов
  # export-timeout: 20              # Период экспорта. По умолчанию — 20 секунд
  # max-src-addrs: 10000            # Максимальное количество адресов источника
  # max-dst-addrs: 10000            # Максимальное количество адресов назначения
  # max-src-ports: 1000             # Максимальное количество портов источника
  # max-dst-ports: 1000             # Максимальное количество портов назначения

4.14 Хранение данных

PCAP-дампы
pcapng-dumper:
  enable: false                     # Включение записи дампов. По умолчанию — false
  # dumps-path: /var/dump/          # Путь для записи дампов
  max-sessions-number: 8            # Максимальное количество одновременных сессий дампа
  max-packets-number: 10000         # Максимальное количество пакетов в одном дампе
  keep-alive: 10                    # Максимальное время без пакетов для ручного дампа
Параметры FlowWriter
save-flow:
  enable: false                     # Включение сохранения потоков
  enable-all-mo: true               # Сохранение потоков для всех MO
  enable-save-all: false            # Сохранение всего полученного трафика
  table-name: "default.flows"       # Имя таблицы для записи потоков.
  db-host: "localhost"              # Хост базы данных
  db-port: 9000                     # Порт базы данных
  db-username: "default"            # Пользователь базы данных
  db-password: ""                   # Пароль пользователя
  rollup-section: "flows_rollup"    # Секция ClickHouse с правилами свёртки. По умолчанию — flows_rollup
  save-records-number: 10000        # Количество записей потоков в одном блоке
  flush-records-timeout: 60         # Интервал сброса записей

4.15 Параметры SNMP

FlowCollector отслеживает интерфейсы следующих типов:

  • ethernet-csmacd(6);
  • prop-virtual(53);
  • tunnel(131).
snmp:
  enable: false                     # Включение SNMP. По умолчанию — false

  agents:
    - peer: example.org:161         # Хост агента и, при необходимости, порт
      version: 1                    # Версия SNMP: 1, 2c или 3
      request-timeout: 60s          # Частота запросов. По умолчанию — 60s
      response-timeout: 1s          # Таймаут ожидания ответа. По умолчанию — 1s
      # local-address: 192.168.0.1  # Локальный адрес для привязки.
      # local-port: 11111           # Локальный порт для привязки.
      community: public             # Community для SNMP v1 и v2c
      # security-name: secret       # Security name для SNMP v3
      # security-auth-key: secret-key  Ключ авторизации для для SNMP v3
      # alias: example              # Псевдоним для метрик

4.16 Сохранение данных SNMP

save-snmp:
  enable: false                     # Включение сохранения данных SNMP
  table-name: "default.snmp"        # Имя таблицы для записи данных SNMP
  db-host: "localhost"              # Хост базы данных
  db-port: 9000                     # Порт базы данных
  db-username: "default"            # Пользователь базы данных
  db-password: ""                   # Пароль пользователя
  rollup-section: "snmp_rollup"     # Секция ClickHouse с правилами свёртки

4.17 База ASN

Секция asn определяет файлы базы данных ASN, используемые FlowCollector.

# asn:
#   enable: false                   # Включение базы ASN. По умолчанию — false
#   paths:
#     - "/opt/spfc/etc/asn/RU-GeoIP-ASN-Blocks-IPv6.csv"
#     - "/opt/spfc/etc/asn/RU-GeoIP-ASN-Blocks-IPv4.csv"

Если параметр paths не задан, используются стандартные пути:

/opt/spfc/etc/asn/RU-GeoIP-ASN-Blocks-IPv6.csv
/opt/spfc/etc/asn/RU-GeoIP-ASN-Blocks-IPv4.csv

4.18 Параметры лицензии

# license:
#   path: "/opt/spfc/etc/analyzer.lic"   # Путь к файлу лицензии

Если путь не задан, FlowCollector пытается загрузить файл лицензии из /opt/spfc/etc/analyzer.lic.

4.19 Глобальные правила обнаружения

Секция rules позволяет задавать глобальные правила обнаружения аномалий.

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

# rules:
#   -
#     type:                         # Типы объектов, к которым применяется правило.
                                    # Опционально.
                                    # По умолчанию — global, subnet, local
#       - global                    # Весь управляемый объект
#       - subnet                    # Отдельная подсеть
#       - local                     # Отдельный IP-адрес

#     units:                        # Единицы измерения трафика, к которым применяется правило.
                                    # Опционально.
                                    # По умолчанию — bytes, packets
#       - bytes
#       - packets

#     vectors:                      # Векторы атак, к которым применяется правило.
                                    # Опционально.
                                    # По умолчанию — все доступные векторы

      # - dns-flood                 # IPv4/IPv6-пакеты UDP или TCP
                                    # с портом назначения 53

      # - ip-fragment-flood         # Фрагментированные IPv4/IPv6-пакеты

      # - ip-private-flood          # IPv4-пакеты с IP-адресом источника
                                    # из диапазонов 10.0.0.0/8, 172.16.0.0/12
                                    # и 192.168.0.0/16

      # - icmp-flood                # IPv4/IPv6-пакеты ICMP

      # - tcp-flood                 # IPv4/IPv6-пакеты TCP

      # - tcp-null-flood            # IPv4/IPv6-пакеты TCP без установленных флагов

      # - tcp-cwr-flood             # IPv4/IPv6-пакеты TCP с флагом CWR
                                    # (Congestion Window Reduced, 0x80)

      # - tcp-ece-flood             # IPv4/IPv6-пакеты TCP с флагом ECE
                                    # (ECN-Echo, 0x40)

      # - tcp-urg-flood             # IPv4/IPv6-пакеты TCP с флагом URG
                                    # (Urgent Pointer field significant, 0x20)

      # - tcp-ack-flood             # IPv4/IPv6-пакеты TCP с флагом ACK
                                    # (Acknowledgment field significant, 0x10)

      # - tcp-psh-flood             # IPv4/IPv6-пакеты TCP с флагом PSH
                                    # (Push Function, 0x08)

      # - tcp-rst-flood             # IPv4/IPv6-пакеты TCP с флагом RST
                                    # (Reset the connection, 0x04)

      # - tcp-syn-flood             # IPv4/IPv6-пакеты TCP с флагом SYN
                                    # (Synchronize sequence numbers, 0x02)

      # - tcp-fin-flood             # IPv4/IPv6-пакеты TCP с флагом FIN
                                    # (No more data from sender, 0x01)

      # - udp-flood                 # IPv4/IPv6-пакеты UDP

      # - total-traffic             # Любые IPv4/IPv6-пакеты

      # - invalid-protocol-flood    # IPv4/IPv6-пакеты с идентификатором протокола 0

      # - chargen-amp               # IPv4/IPv6-пакеты UDP с портом источника 19

      # - dns-amp                   # IPv4/IPv6-пакеты UDP с портом источника 53

      # - ntp-amp                   # IPv4/IPv6-пакеты UDP с портом источника 123

      # - snmp-amp                  # IPv4/IPv6-пакеты UDP с портом источника 161

      # - snmptrap-amp              # IPv4/IPv6-пакеты UDP с портом источника 162

      # - ldap-amp                  # IPv4/IPv6-пакеты UDP с портом источника 389

      # - mssql-amp                 # IPv4/IPv6-пакеты UDP с портом источника 1434

      # - ibm-cics-amp              # IPv4/IPv6-пакеты UDP с портом источника 1435

      # - ssdp-amp                  # IPv4/IPv6-пакеты UDP с портом источника 1900

      # - apple-remote-desktop-amp  # IPv4/IPv6-пакеты UDP с портом источника 3283

      # - ws-discovery-amp          # IPv4/IPv6-пакеты UDP с портом источника 3702

      # - memcached-amp             # IPv4/IPv6-пакеты UDP с портом источника 11211

      # - udp-zero-payload-flood    # IPv4/IPv6-пакеты UDP с размером полезной нагрузки 0

      # - udp-big-packets-flood     # IPv4/IPv6-пакеты UDP с размером полезной нагрузки
                                    # не менее 1400 байт

      # - http-flood                # IPv4/IPv6-пакеты TCP с портом назначения 80

      # - https-flood               # IPv4/IPv6-пакеты TCP с портом назначения 443

      # - gre-flood                 # IPv4/IPv6-пакеты GRE

      # - port-any                  # IPv4/IPv6-пакеты TCP или UDP,
                                    # полученные на любом порту

      # - port-custom               # IPv4/IPv6-пакеты TCP или UDP,
                                    # полученные на порту, заданном в секции port

#     limit-threshold: 100M         # Абсолютное пороговое значение.
                                    # Условие срабатывания: last >= limit.
                                    # Опционально

#     limit-diff: 50KB/s            # Порог абсолютного изменения.
                                    # Условие срабатывания:
                                    # last > previous и last - previous >= limit.
                                    # Опционально

#     limit-reldiff: 250%           # Порог относительного изменения.
                                    # Условие срабатывания:
                                    # last > previous и last / previous >= limit.
                                    # Опционально

#     priority: 0                   # Приоритет правила.
                                    # Целое число. Опционально.
                                    # По умолчанию — 0

#     action:                       # Действие для правила.
                                    # Опционально. По умолчанию используется
                                    # глобальное действие
#       nexthop: transit

#     flow-spec-rules-names:        # Список правил FlowSpec.
                                    # Можно указать имя правила, заданного
                                    # в этом файле вне секции rules, или правила
                                    # с таким же именем из основной конфигурации.
                                    # Опционально. По умолчанию — пустое значение
#       - "rule1"

#     port:                         # Параметры для векторов port-any и port-custom
#       protocols: tcp              # Протоколы для отслеживания: tcp, udp.
                                    # Можно указать несколько значений через запятую.

#       port-numbers: 0             # Порты для вектора port-custom.
                                    # Можно указать отдельные порты и диапазоны
                                    # в формате port1,...,portK-portK+M,...,portN.

Для параметров limit-threshold, limit-diff и limit-reldiff можно использовать модификаторы значений.

Если в правиле задан параметр units, доступны следующие модификаторы:

МодификаторЗначениеПример
K×1000100K
M×1 000 000100M
G×1 000 000 0001G
T×1 000 000 000 0001T
%/100250%

Если units не задан, значения применяются к байтам и пакетам.

Единицу измерения также можно указать непосредственно в значении:

МодификаторЕдиница измеренияПример
p, p%пакеты100p, 50p%
b, b%биты100b, 50b%
B, B%байты100B, 50B%
b, Kb, Mb, Gbбит/с50Mb/s
B, KB, MB, GBбайт/с50MB/s
p, Kp, Mp, Gpпакет/с100Kp/s

Для значений скорости можно использовать как краткую запись, так и запись с /s, например Mb или Mb/s, MB или MB/s, Kp или Kp/s.

Если единица измерения указана непосредственно в значении, она имеет приоритет над параметром units. Например, при units: packets значение limit-diff: 50KB интерпретируется в байтах.

4.20 Управляемые объекты

Управляемые объекты можно задавать в основном конфигурационном файле или в отдельных файлах конфигурации.

# managed-objects:
#   - name: MO_001                  # Имя управляемого объекта

#     cidrs:                        # Список CIDR, относящихся к управляемому объекту
#       - 192.168.2.1/32

#     asns:                         # Список ASN, относящихся к управляемому объекту
#       - 201706

#     rules:                        # Правила обнаружения аномалий для управляемого объекта
#       - type:                     # Типы объектов, к которым применяется правило
#           - global                # Весь управляемый объект
#           - subnet                # Отдельная подсеть
#           - local                 # Отдельный IP-адрес

#         units:                    # Единицы измерения трафика
#           # - bytes
#           - packets

#         vectors:                  # Векторы атак, к которым применяется правило
#           - mssql-amp

#         limit-threshold: 1        # Абсолютное пороговое значение