Инструменты пользователя

Инструменты сайта


linux:firewall:conntrack

Conntrack

Компонент netfilter, обеспечивающий отслеживание состояния соединения и классификацию пакетов по принадлежности к соединениям, что обеспечивает stateful-фильтрацию.

Сведения

Классифицирует каждый пакет либо как открывающий новое соединение, либо относящийся к уже установленному. При этом, понятие «состояние соединения» искусственно вводится даже для протоколов не использующих его (UDP, ICMP).
Отслеживание связанных соединений, ICMP-ответы на TCP и UDP, FTP сессии с несколькими соединениями и т.д.
Механизм анализирует все пакеты, кроме помеченных NOTRACK в таблице raw, функция удобна например во время DDoS-атаки, что бы не тратить ресурсы на отслеживание с этих хостов.

Критерий состояния соединения

Критерий conntrack позволяет классифицировать пакеты на основании их отношения к соединениям.
Возможные состояния (–ctstate):

  • NEW - соединение еще не открыто т.е. пакет первый в соединении.
  • ESTABLISHED - пакет относится к уже установленному соединению, обычно принимаются без доп фильтрации (как и RELATED)
  • RELATED - пакет открывает новое соединение, логически связанное с уже установленным соединением.
  • INVALID - пакет по смыслу должен принадлежать к уже установленному соединению, но оно не зарегистрировано, обычно используют DROP.
  • UNTRACKED - отслеживание отключено для этого пакета.
  • DNAT - применена операция подмены адреса назначения.
  • SNAT - применена операция подмены адреса источника.

Возможные состояния (–ctstatus):

  • EXPECTED - соединение ожидалось по результатам анализа других соединений (пассивный FTP).
  • CONFIRMED - подтвержденное состояние, инициатор начал передачу пакетов.
  • SEEN_REPLY - соединение по которому поступил ответ (имеет место передача в обоих направлениях).
  • ASSURED - соединение можно считать полностью установленным (присваивается после передачи определенного кол-ва данных, увеличивается тайм-аут).
  • NONE - не соответствует ни одному из перечисленных.

conntrack пришел на замену старому критерию state (использование его уже не рекомендуется).

Маркировка соединений

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

Статистика по соединениям

Критерий connbytes позволяет контролировать кол-во байт или пакетов, переданных по каждому конкретному соединению (возможность квот или приоритетов загрузки).

Количество соединений

Критерий connlimit позволяет ограничивать число одновременно открытых TCP-соединений с каждого хоста или подсети.

Модули

Часть функционала содержится в модулях, некоторые из них нужно включать вручную, например nf_conntrack_ftp, модуль для распознавания связанных ftp соединений.
Просмотреть список модулей в системе:

# lsmod

Включить модуль nf_conntrack_ftp:

# modprobe nf_conntrack_ftp

Утилиты (conntrack-tools)

Комплект conntrack-tools содержит две утилиты:

  • conntrack - позволяет наблюдать таблицы состояний соединений и взаимодействовать с ними.
  • conntrackd - демон, обеспечивающий синхронизацию таблиц состояний с другими хостами, используется в кластерах высокой доступности.
linux/firewall/conntrack.txt · Последнее изменение: 2022/11/19 05:14 — admin