Служба отслеживания соединений

Служба отслеживания соединений «Conntrack» в ARMA Стена предназначена для отслеживания сетевых соединений и используется для работы межсетевого экрана, NAT и других сетевых функций, требующих информации о состоянии соединений.

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

Conntrack ведёт таблицу состояний соединений, содержащую информацию о каждом активном соединении, включая IP-адреса, порты, протоколы и состояние сессии.

ARMA Стена имеет возможность синхронизации отслеживаемых соединений между системами кластера. За эту работу отвечает служба «conntrackd», которая работает вне ядра. В конфигурации ARMA Стена эта служба доступна как «conntrack-sync» (см. раздел «Синхронизация отслеживаемых соединений»).

Основные возможности:

  • отслеживание TCP, UDP, ICMP и других протоколов;

  • хранение состояния соединений;

  • управление временем жизни соединений;

  • масштабирование таблицы соединений;

  • настройка поведения для различных протоколов;

  • интеграция с firewall и NAT.

Служба отслеживания соединений «Conntrack» в ARMA Стена включена по умолчанию.

Основные настройки

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

  1. Указать размер таблицы ожидаемых соединений:

set system conntrack expect-table-size <exp-size>

где <exp-size> – размер таблицы ожидаемых соединений. Возможно указать значение в диапазоне от «1» до «50000000». По умолчанию используется значение «2048».

  1. Включить учёт трафика по соединениям:

set system conntrack flow-accounting
  1. Задать размер хеш-таблицы отслеживаемых соединений:

set system conntrack hash-size <hash-size>

где <hash-size> – размер хэш-таблицы отслеживаемых соединений. Возможно указать значение в диапазоне от «1024» до «50000000». По умолчанию используется значение «524288».

  1. Создать правило для исключения определённого трафика из механизма отслеживания соединений:

set system conntrack ignore <ipv4 | ipv6> rule <rules-number> <filter-params>

где:

  • <ipv4 | ipv6> – для какого стека действует правило.

  • <rules-number> – уникальный номер правила. Возможно указать значение в диапазоне от «1» до «999999».

  • <filter-params> – параметры, исходя из которых будет выполняться исключение из отслеживания.

Для автоматического дополнения вводимых команд и параметров применяется клавиша «Tab». При частичном вводе команды и нажатии «Tab» система предлагает возможные варианты завершения.

admin@ngfwos# set system conntrack ignore ipv4 rule 100
Possible completions:
   description          Description
 > destination          Destination parameters
   inbound-interface    Interface to ignore connections tracking on
   protocol             Protocol
 > source               Source parameters
 > tcp                  TCP options to match
  1. Задать параметры логирования событий для механизма отслеживания соединений:

set system conntrack log <logging-params> <value>

где:

  • <logging-params> – параметр логирования;

  • <value> – значение параметра.

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

  • «event» – задаёт, какие события conntrack логируются. Возможно указать следующие типы событий:

    • «new» – создание нового соединения;

    • «update» – изменение состояния соединения;

    • «destroy» – удаление соединения.

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

    • «tcp»;

    • «udp»;

    • «icmp»;

    • «other».

  • «log-level» – уровень логирования. Возможно указать следующие уровни:

    • «info»;

    • «debug».

  • «queue-size» – размер внутренней очереди сообщений. Возможно указать значение в диапазоне от «100» до «999999».

  • «timestamp» – включить временные метки, основанные на потоке данных.

  1. Включить модуль для отслеживания соединений определенного протокола:

set system conntrack modules <protocol>

где <protocol> – протокол для отслеживания. Возможно указать следующие протоколы:

  • «ftp»;

  • «h323»;

  • «log»;

  • «nfs»;

  • «pptp»;

  • «sip»;

  • «sqlnet»;

  • «tftp».

Примечание

Модули используются для корректной обработки сложных протоколов, открывающих дополнительные соединения, и включены в системе ARMA Стена по умолчанию. В отдельных случаях, при использовании conntrack, SIP-телефония может работать некорректно из-за особенностей обработки отдельных потоков (SIP/RTP). Если в работе SIP-телефонии наблюдаются проблемы, отключите SIP-модуль с помощью следующей команды конфигурационного режима:

delete system conntrack modules sip

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

delete system conntrack

Если в системе ARMA Стена настроена и используется СОВ, для корректной работы SIP рекомендуется использовать режим pass-flow для глобальной конфигурации действий с пакетами и потоками (см. раздел «Команды настройки Suricata»).

  1. Задать размер таблицы отслеживания соединений:

set system conntrack table-size <table-size>

где <table-size> – размер таблицы. Возможно указать значение в диапазоне от «1» до «50000000». По умолчанию используется значение «4194304».

  1. Задать параметры отслеживания TCP-соединений:

set system conntrack tcp <tcp-track-params> <value>

где <tcp-track-params> – параметры отслеживания. Возможно настроить следующие параметры:

  • «half-open-connections» – максимальное количество полуоткрытых TCP-соединений (состояние SYN_SENT / SYN_RECV). Возможно указать значение в диапазоне от «1» до «2147483647». По умолчанию используется значение «512».

  • «loose» – включить режим «гибкого» отслеживания TCP-соединений. Возможно указать значения «enable» и «disable». По умолчанию используется значение «enable».

  • «max-retrans» – максимальное количество ретрансляций TCP-пакетов без ACK, прежде чем conntrack посчитает соединение некорректным. Возможно указать значение в диапазоне от «1» до «255». По умолчанию используется значение «3».

  1. Задать время жизни записей в таблице отслеживаемых соединений:

set system conntrack timeout <timeout-params> <value>

где <timeout-params> – параметры тайм-аута для записей в таблице. Возможно настроить следующие параметры:

  • «custom» – задать пользовательское правило для тайм-аута.

    Для автоматического дополнения вводимых команд и параметров применяется клавиша «Tab». При частичном вводе команды и нажатии «Tab» система предлагает возможные варианты завершения:

    admin@ngfwos# set system conntrack timeout custom ipv4 rule 10
    Possible completions:
        description          Description
      > destination          Destination parameters
        inbound-interface    Interface to apply custom connection timers on
        protocol             Customize protocol specific timers, one protocol configuration per rule
      > source               Source parameters
    
  • «icmp» – ICMP тайм-аут в секундах. Возможно указать значение в диапазоне от «1» до «21474836». По умолчанию используется значение «10».

  • «other» – общее время ожидания соединения в секундах. Возможно указать значение в диапазоне от «1» до «21474836». По умолчанию используется значение «60».

  • «tcp» – тайм-аут для различных стадий TCP-соединений. Возможно указать значение в диапазоне от «1» до «2147483647» для следующих стадий:

    • «close» – закрытие соединения (по умолчанию 10 секунд);

    • «close-wait» – ожидание закрытия со стороны приложения (по умолчанию 20 секунд);

    • «established» – активное соединение (по умолчанию 600 секунд);

    • «fin-wait» – соединение закрывается, FIN отправлен (по умолчанию 30 секунд);

    • «last-ack» – последний ACK перед закрытием (по умолчанию 30 секунд);

    • «syn-recv» – сервер получил SYN и ответил (по умолчанию 30 секунд);

    • «syn-sent» – клиент отправил SYN, начало соединения (по умолчанию 60 секунд);

    • «time-wait» – ожидание перед окончательным закрытием (по умолчанию 60 секунд).

  • «udp» – тайм-аут для UDP-соединений. Возможно указать значение в диапазоне от «1» до «2147483647» для следующих параметров UPD-соединений:

    • «other» – общий тайм-аут UDP в секундах (по умолчанию 30 секунд);

    • «stream» – время ожидания для «потокового» UDP-соединения в секундах (по умолчанию 60 секунд).

Мониторинг состояния

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

show conntrack statistics
  1. Вывести таблицу службы отслеживания состояния для протокола IP:

show conntrack table ipv4|ipv6

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