Установка Сессионного модуля

Функциональность

  • Поддержка: TCP, UDP, SCTP, ICMP, ICMPv6.
  • Принудительный разрыв соединений (active-close) без генерации исходящего трафика и без терминирования внутри модуля.
  • Анализ этапов установки соединения (Handshake).
  • Обработка и фильтрация Client-Hello и Server-Hello.
  • Контроль TLS SNI (Server Name Indication) и TLS ALPN (Application-Layer Protocol Negotiation).
  • Проверка списка поддерживаемых шифров (Cipher List).
  • Проверка и валидация контрольных сумм.
  • Обнаружение и обработка IP-фрагментации с функцией дефрагментации.
  • Поиск JA3 и JA4-отпечатков для анализа шифрованного трафика.
  • Поиск TLS Cipher Suites для анализа безопасности и совместимости.

Интеграция

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

Инструкция по установке

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

Настройка dosgate_uh.conf

Редактирование конфигурационного файла

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

  • Ubuntu:
nano /etc/dosgate-uh.conf
  • Альт Линукс/РЕД ОС:
vi /etc/dosgate-uh.conf

Глобальная конфигурация

Глобальные параметры определяют политику обработки сетевого трафика:

global:
  traffic-policy:  
    good: accept   # Разрешение корректного трафика
    bad: drop      # Отклонение подозрительного трафика
    violate: drop  # Отклонение нарушающего трафика

Конфигурация сетевых устройств

Для эффективного управления очередями приема и передачи пакетов необходимо настроить параметры сетевых интерфейсов:

net:
  ens224:
    rx:
      queues:
        count: 8  # Количество очередей приема
        len: 512  # Длина каждой очереди
  ens256:
    tx:
      queues:
        count: 8  # Количество очередей приема
        len: 512  # Длина каждой очереди

Настройки захвата трафика

Функция захвата трафика позволяет записывать сетевые пакеты в файлы для последующего анализа:

capture:
  path: /var/cache/dosgate-uh/capture      # Директория для сохранения
  filename: cap_${DEV}_${ID}_${NUM}.pcap   # Шаблон имен файлов
  age: 3600                                # Максимальное время хранения файла (в секундах)
  count: 10                                # Максимальное количество файлов
  size: 10M                                # Максимальный размер файла

Конфигурация сбора и экспорта статистики

Статистика помогает отслеживать состояние системы в реальном времени и экспортировать данные в систему мониторинга:

stats:
  period: 10                             # Период сбора статистики (в секундах)
  push:
    type: collectd                       # Метод передачи данных
    plugin: unixsock                     # Используемый плагин
    target: /var/run/collectd-unixsock   # Целевой сокет
    stats: all                           # Объем передаваемых данных
    hostname: dosgate-uh01               # Идентификатор хоста
    queue-len: 0                         # Длина очереди отправки
    period:
      collect: 5                         # Интервал сбора данных (в секундах)
      send: 10                           # Интервал отправки данных (в секундах)

Настройка отслеживания подключений

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

conntrack:
  limit: 10000000       # Максимальное количество отслеживаемых соединений
  reclaim:
    soft: 80            # Порог мягкого освобождения соединений (в % от лимита)
    hard: 95            # Порог жесткого освобождения соединений (в % от лимита)

Путь к каталогу с реестром профиля приложения

По умолчанию: /var/lib/dosgate-uh/profiles

application:
  registry: /var/lib/dosgate-uh/profiles
  monitor-fs: true

Настройка экспорта фреймов

Обеспечение работы функции экспорта фреймов, которая выполняется в рамках действия dosgate action -j EXPORT:

frame-export:
  enabled: true         # Включение функции экспорта фреймов
  export-objects: all   # Экспорт всех объектов 

Установка пакета

  • Ubuntu:
sudo apt-get update
sudo apt-get install dosgate-uh=1.3.0-1
  • Альт Линукс:
sudo apt-get update
sudo apt-get install dosgate-uh=1.2.2-1
  • РЕД ОС:
yum install dosgate-uh-1.2.2-1

Обработка статистики в collectd

1) Создать файл /etc/collectd/dosgate-uh-types.db

  • Ubuntu/Альт Линукс/РЕД ОС:
sudo touch /etc/collectd/dosgate-uh-types.db

2) Указать в нем следующую конфигурацию:

xsk_rx_frames frames:COUNTER:0:U
xsk_rx_bytes bytes:COUNTER:0:U
xsk_tx_frames frames:COUNTER:0:U
xsk_tx_bytes bytes:COUNTER:0:U
xsk_rx_drop drop:COUNTER:0:U
xsk_tx_error error:COUNTER:0:U
xsk_frame_alloc bytes:COUNTER:0:U
xsk_frame_alloc_error bytes:COUNTER:0:U
xsk_frame_free bytes:COUNTER:0:U
xsk_partial_writes bytes:COUNTER:0:U
xsk_full_reads bytes:COUNTER:0:U
xsk_opterr bytes:COUNTER:0:U
xsk_fill_frames frames:COUNTER:0:U
xsk_comp_frames frames:COUNTER:0:U
xsk_kick_tx bytes:COUNTER:0:U
xsk_rounds bytes:COUNTER:0:U
xsk_poll bytes:COUNTER:0:U
xsk_poll_nb bytes:COUNTER:0:U
xsk_rx_inv_desc bytes:COUNTER:0:U
xsk_tx_inv_desc bytes:COUNTER:0:U
xsk_rx_ring_full bytes:COUNTER:0:U
xsk_fill_ring_empty bytes:COUNTER:0:U
cap_frames frames:COUNTER:0:U
cap_bytes bytes:COUNTER:0:U
cap_rotates bytes:COUNTER:0:U
cap_errors bytes:COUNTER:0:U
proc_frames frames:COUNTER:0:U
proc_bytes bytes:COUNTER:0:U
proc_dg_error bytes:COUNTER:0:U
proc_frame_error bytes:COUNTER:0:U
proc_frame_verify_error bytes:COUNTER:0:U
proc_frame_mod_error bytes:COUNTER:0:U
proto_buf_alloc bytes:COUNTER:0:U
proto_buf_alloc_error bytes:COUNTER:0:U
proto_buf_destroy bytes:COUNTER:0:U
proto_map_alloc bytes:COUNTER:0:U
proto_map_alloc_error bytes:COUNTER:0:U
proto_map_destroy bytes:COUNTER:0:U
proto_stack_alloc bytes:COUNTER:0:U
proto_stack_alloc_error bytes:COUNTER:0:U
proto_stack_destroy bytes:COUNTER:0:U
tcp_open bytes:COUNTER:0:U
tcp_close bytes:COUNTER:0:U
tcp_seq_late bytes:COUNTER:0:U
tcp_seq_early bytes:COUNTER:0:U
tcp_large_syn bytes:COUNTER:0:U
tcp_invalid_checksum bytes:COUNTER:0:U
stream_block_alloc bytes:COUNTER:0:U
stream_block_alloc_error bytes:COUNTER:0:U
stream_block_free bytes:COUNTER:0:U
stream_shard_alloc bytes:COUNTER:0:U
stream_shard_alloc_error bytes:COUNTER:0:U
stream_shard_free bytes:COUNTER:0:U
ct_allocated bytes:COUNTER:0:U
ct_destroyed bytes:COUNTER:0:U
ct_alloc_error bytes:COUNTER:0:U
ct_reclaim_soft bytes:COUNTER:0:U
ct_reclaim_soft_scanned bytes:COUNTER:0:U
ct_reclaim_soft_reclaimed bytes:COUNTER:0:U
ct_reclaim_hard bytes:COUNTER:0:U
ct_reclaim_hard_scanned bytes:COUNTER:0:U
ct_reclaim_hard_reclaimed bytes:COUNTER:0:U
ct_collsisions bytes:COUNTER:0:U
ct_collision_reclaimed bytes:COUNTER:0:U
ct_collision_errors bytes:COUNTER:0:U
ct_overlimit bytes:COUNTER:0:U
ct_closed bytes:COUNTER:0:U
ct_timeout bytes:COUNTER:0:U
ct_frames_status_good bytes:COUNTER:0:U
ct_frames_status_bad bytes:COUNTER:0:U
ct_frames_status_violate bytes:COUNTER:0:U
ct_frames_error bytes:COUNTER:0:U
ct_frames_invalid bytes:COUNTER:0:U
tls_create bytes:COUNTER:0:U
tls_free bytes:COUNTER:0:U
tls_records bytes:COUNTER:0:U
tls_handshake bytes:COUNTER:0:U
tls_appdata bytes:COUNTER:0:U
tls_version_error bytes:COUNTER:0:U
tls_length_error bytes:COUNTER:0:U
tls_content_error bytes:COUNTER:0:U
tls_version_missmatch_error bytes:COUNTER:0:U
tls_system_error bytes:COUNTER:0:U
dtls_create bytes:COUNTER:0:U
dtls_free bytes:COUNTER:0:U
dtls_records bytes:COUNTER:0:U
dtls_handshake bytes:COUNTER:0:U
dtls_appdata bytes:COUNTER:0:U
dtls_tls12_cid bytes:COUNTER:0:U
dtls_tls13_uh bytes:COUNTER:0:U
dtls_version_error bytes:COUNTER:0:U
dtls_length_error bytes:COUNTER:0:U
dtls_content_error bytes:COUNTER:0:U
dtls_system_error bytes:COUNTER:0:U
dtls_epoch_error bytes:COUNTER:0:U
dtls_seq_error bytes:COUNTER:0:U
mem_pbuf_alloc bytes:COUNTER:0:U
mem_pbuf_alloc_error bytes:COUNTER:0:U
mem_pbuf_free bytes:COUNTER:0:U
mem_pbuf_data_alloc bytes:COUNTER:0:U
mem_pbuf_data_alloc_error bytes:COUNTER:0:U
mem_pbuf_data_free bytes:COUNTER:0:U
mem_seg_alloc bytes:COUNTER:0:U
mem_seg_alloc_error bytes:COUNTER:0:U
mem_seg_free bytes:COUNTER:0:U
mem_hash_alloc bytes:COUNTER:0:U
mem_hash_alloc_error bytes:COUNTER:0:U
mem_hash_free bytes:COUNTER:0:U
offenders_alloc bytes:COUNTER:0:U
offenders_alloc_error bytes:COUNTER:0:U
offenders_destroy bytes:COUNTER:0:U
offenders_first bytes:COUNTER:0:U
offenders_known bytes:COUNTER:0:U
offenders_error bytes:COUNTER:0:U
offenders_reg_error bytes:COUNTER:0:U
offenders_queued bytes:COUNTER:0:U
offenders_queue_overflow bytes:COUNTER:0:U
offenders_lost bytes:COUNTER:0:U
offenders_exported bytes:COUNTER:0:U
offenders_handler_miss bytes:COUNTER:0:U
offenders_handler_expired bytes:COUNTER:0:U
offenders_handler_send bytes:COUNTER:0:U
offenders_handler_send_error bytes:COUNTER:0:U
offenders_child_restart_request bytes:COUNTER:0:U
offenders_child_restart bytes:COUNTER:0:U
push_msg_alloc bytes:COUNTER:0:U
push_msg_alloc_error bytes:COUNTER:0:U
push_msg_free bytes:COUNTER:0:U
push_created bytes:COUNTER:0:U
push_create_error bytes:COUNTER:0:U
push_started bytes:COUNTER:0:U
push_socket_error bytes:COUNTER:0:U
push_config_error bytes:COUNTER:0:U
push_connect_start bytes:COUNTER:0:U
push_connect_error bytes:COUNTER:0:U
push_connect_timeout bytes:COUNTER:0:U
push_connect_success bytes:COUNTER:0:U
push_timeout bytes:COUNTER:0:U
push_send_error bytes:COUNTER:0:U
push_send_msgs bytes:COUNTER:0:U
push_enqueued bytes:COUNTER:0:U
push_enqueue_error bytes:COUNTER:0:U
push_rounds bytes:COUNTER:0:U
push_rounds_empty bytes:COUNTER:0:U
defrag_in bytes:COUNTER:0:U
defrag_valid bytes:COUNTER:0:U
defrag_dup bytes:COUNTER:0:U
defrag_invalid bytes:COUNTER:0:U
defrag_out bytes:COUNTER:0:U
defrag_reclaim_soft bytes:COUNTER:0:U
defrag_reclaim_hard bytes:COUNTER:0:U
defrag_scan_confirmed bytes:COUNTER:0:U
defrag_scan_new bytes:COUNTER:0:U
defrag_reclaim_new bytes:COUNTER:0:U
defrag_confirm_new bytes:COUNTER:0:U
defrag_full bytes:COUNTER:0:U
defrag_error bytes:COUNTER:0:U
defrag_frag_alloc bytes:COUNTER:0:U
defrag_frag_alloc_error bytes:COUNTER:0:U
defrag_frag_free bytes:COUNTER:0:U
defrag_entry_alloc bytes:COUNTER:0:U
defrag_entry_alloc_error bytes:COUNTER:0:U
defrag_entry_free bytes:COUNTER:0:U
defrag_key_error bytes:COUNTER:0:U
defrag_key_id_error bytes:COUNTER:0:U

3) Редактирование конфигурационного файла collectd

Открыть файл конфигурации collectd:

  • Ubuntu:
nano collectd.conf
  • Альт Линукс/РЕД ОС:
vi collectd.conf

Добавить строку:

TypesDB "/etc/collectd/dosgate-uh-types.db"

4) Перезапустить collectd

  • Ubuntu/Альт Линукс/РЕД ОС:
sudo systemctl restart collectd

Запуск dosgate-uh

Для управления службой dosgate-uh выполните следующие команды:

1) Запуск службы

sudo systemctl start dosgate-uh

2) Проверить статус службы

sudo systemctl status dosgate-uh

3) Включить автозапуск службы

sudo systemctl enable dosgate-uh

Направление трафика в dosgate_uh

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

Настройка правила через веб-интерфейс

1) Открыть нужный профиль в DosGate.

2) Создать новое правило:

  • В поле "Совпадение" указать условия, по которым будет фильтроваться трафик (например, IP-адреса, порты, протоколы):

  • В поле "Действие" выбрать "UH" (это действие перенаправит трафик в сессионный-модуль).

  • Далее, выбрать вариант обработки трафика:

  • Выбрать существующий UH или создать новый:

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

  • При необходимости оставить комментарий к правилу и нажать зеленую кнопку "Добавить".

3) По завершении настройки нажать желтую кнопку "Применить", после чего трафик будет автоматически перенаправлен в UH.

Настройка правила через CLI

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

dgctl -u profile://<arena-name>/<profile-name> -c insert -- -m protocol tcp -m dst 192.168.100.1 -m dport 443 -j PASS uh app tls 1

Параметры команды:

  • <arena-name> — имя арены в соответствии с файлом конфигурации /etc/dosgate.conf.
  • <profile-name> — имя профиля, используемого для обработки трафика.
  • -m protocol tcp(опционально) указание протокола. По умолчанию можно направлять весь трафик.
  • -m dst 192.168.100.1(опционально) фильтрация по IP-адресу получателя.
  • -m dport 443(опционально) фильтрация по целевому порту.
  • -j PASS — действие, разрешающее передавать пакеты через модуль.
  • uh app tls — параметры, указывающие на применение профиля tls для обработки.
  • 1 - ID политики приложения в файле policy

При необходимости направить весь трафик без дополнительных условий, создать правило без параметров -m:

dgctl -u profile://<arena-name>/<profile-name> -c insert -- -j PASS uh app tls 1

Диагностика и устранение проблем при запуске dosgate-uh

Модуль dosgate-uh является частью программного комплекса dosgate, обеспечивающего сессионную защиту. В отличие от основного модуля dosgate, его производительность и функциональные возможности зависят от используемого сетевого драйвера и версии ядра операционной системы.

Предварительные действия перед внесением изменений

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

1) Перенаправление продуктивного трафика
Перед внесением изменений убедиться, что трафик направляется в обход DosGate.

2) Остановка сервисов
Полностью остановить работающие службы dosgate и dosgate-uh:

   sudo systemctl stop dosgate
   sudo systemctl stop dosgate-uh

3) Отключение XDP-программ
Для всех задействованных интерфейсов отключить XDP-программы:

   sudo ip link set dev <interface_name> xdp off

где <interface_name> — имя сетевого интерфейса.

Действия перед запуском после внесения изменений

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

rm -rf /sys/fs/bpf/dosgate
dgadm --batch=uh -y

Отключение "zero-copy" для dosgate-uh

В случае возникновения проблем с обработкой трафика попробуйте отключить режим "zero-copy" в файле конфигурации /etc/dosgate-uh.conf:

net:
  enp59s0f0:
    nozc: 1
  tx:
    ....

При деактивации "zero-copy" рекомендуется активировать функцию "Offenders".
Эта опция позволяет блокировать IP-адреса вредоносных ботов на уровне dosgate-core, снижая нагрузку на dosgate-uh, особенно при использовании ресурсоемких алгоритмов. Следует учитывать, что отключение "zero-copy" приводит к снижению производительности dosgate-uh примерно в 2,1 раза.

Перевод dosgate в generic-режим

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

daemon:
    xdp-mode: generic

После внесения изменений необходимо перезапустить сервис dosgate:

sudo systemctl restart dosgate