
Zeek поддержка для хеширования потоков Community ID.
Этот пакет для Zeek обеспечивает поддержку хеширования потоков Community ID — стандартизированного способа маркировки сетевых потоков в сетевых мониторах. При загрузке пакет добавляет строковое поле community_id в conn.log.
Примечание
Zeek 6 и более поздние версии включают поддержку Community ID. При использовании этих версий Zeek этот пакет больше не нужен. Подробности см. в документации.
Этот пакет реализует BiF для реализации логики хеширования и, таким образом, требует бинарной компиляции, поэтому он также является плагином Zeek. Вот пример результирующего conn.log:
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path conn
#open 2018-01-31-13-06-56
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p proto service duration orig_bytes resp_bytes conn_state local_orig local_resp missed_bytes history orig_pkts orig_ip_bytes resp_pkts resp_ip_bytes tunnel_parents community_id
#types time string addr port addr port enum string interval count count string bool bool count string count count count count set[string] string
1071580904.891921 CPcWB54kqKkvkdNEXe 128.232.110.120 34855 66.35.250.204 80 tcp - 0.311104 496 1731 SF - - 2227 ShADadfF 6 816 6 2051 - 1:LQU9qZlK+B5F3KDmev6m5PMibrg=
#close 2018-01-31-13-06-56
Пакет поддерживает Community ID в notice.log Zeek для уведомлений
с контекстом соединения. Если вы хотите использовать эту функцию,
поместите следующую строку в ваш local.zeek или аналогичную
локальную конфигурацию сайта:
@load zeek-community-id/notice
Эта строка не оказывает никакого эффекта, если сам пакет Community ID не
загружен. Такой подход с дополнительным скриптом гарантирует, что пользователи, которым не нужен
ID в их notice.log, не получат этот лог, загромождённый
дополнительным столбцом, который всегда не используется.
Спецификация Community ID в настоящее время предполагает поддержку ряда протокольных констелляций, для которых Zeek не отслеживает состояние на уровне потока, поскольку его анализаторы не знали бы, что делать с таким трафиком. Для таких потоков Zeek никогда не запускает связанные с соединением события, используемые пакетом, поэтому в conn.log все равно не будет вывода. (Если бы существовали протоколы, которые Zeek отслеживает на уровне потоков, но плагин не поддерживает, сообщаемый ID был бы пустым.) В настоящее время мы поддерживаем TCP и UDP поверх IPv4 или IPv6, а также ICMPv4 и ICMPv6. Мы не поддерживаем другие транспортные протоколы (такие как SCTP) или общие потоки пар IP-адресов для неподдерживаемых протоколов транспортного уровня.
Имя пакета — zeek-community-id; имя плагина —
Corelight::CommunityID. Вы можете увидеть параметры конфигурации пакета
в соответствующем скрипте Zeek.
Пакет Community ID работает с любой версией Zeek, начиная с 2.6.4. Поскольку кодовая база Zeek с тех пор претерпела существенные изменения, пакет предоставляет ветки совместимости, которые поддерживают конкретные диапазоны версий Zeek, обеспечивая баланс между читаемостью кода и простотой установки и управления ветками.
На ветках zeek/x.y и master теги git обозначают выпуски Community ID.
Например, 3.1.0 — это первый выпуск на ветке zeek/3.1,
и он работает с любым Zeek в серии 3.1. Следующий выпуск Community
ID для серии Zeek 3.1 будет называться 3.1.1 и также
находиться в этой ветке, за ним последуют 3.1.2 и т. д. (Следовательно, это не
семантическое версионирование.)
Каждая ветка также объявляет окно совместимости версий Zeek в
zkg.meta, поэтому пакет не установится при сочетании с несовместимой версией Zeek.
Например, ветка master в настоящее время требует как минимум
Zeek 3.2.0, без верхней границы.
Вот сводка соответствия версий Zeek, тегов git и веток git:
| Zeek version | Git tag | Git branch |
|---|---|---|
| 2.6.4 - 3.0.x | 3.0.y | zeek/3.0 |
| 3.1.x | 3.1.y | zeek/3.1 |
| 3.2.x - master | 3.2.y | master |
Пакет включает btest, которые проверяют загрузку плагина и прогоняют
включённые тестовые pcaps через Zeek для проверки эталонного вывода
консоли Zeek. Вы можете запустить их, выполнив btest -c btest.cfg в каталоге
tests.
По вопросам и отзывам, пожалуйста, обращайтесь в список рассылки Zeek или в Zeek Slack. Приветствуются вопросы и pull request'ы на Github.