Сетевой мониторинг · 6 min read · Sep 12, 2025

Как установить инструмент мониторинга сетевой безопасности Zeek на Ubuntu 24.04

Zeek (ранее Bro) — это бесплатная и открытая платформа для мониторинга сетевой безопасности. Это мощный пассивный анализатор сетевого трафика, который исследует подозрительную или вредоносную активность. Zeek может использоваться как монитор сетевой безопасности (NSM) и поддерживает широкий спектр анализа трафика, от области безопасности до измерения производительности и устранения неполадок.

В этом руководстве вы узнаете, как установить инструмент мониторинга сетевой безопасности Zeek на сервер Ubuntu 24.04. Вы также узнаете, как запустить Zeek в режиме кластера, как парсить журналы Zeek с помощью команды ‘zeek-cut’ и как генерировать и парсить журналы Zeek в формате JSON с помощью утилиты ‘jq’.

Предварительные требования

Перед тем как начать, убедитесь, что у вас есть следующее:

  • Сервер Ubuntu 24.04
  • Непривилегированный пользователь с правами администратора

Установка Zeek

Zeek — это инструмент мониторинга сетевой безопасности для операционных систем на базе Unix. Его можно установить несколькими способами. В этом примере вы установите Zeek на сервер Ubuntu 24.04 с помощью менеджера пакетов APT из службы сборки OpenSUSE.

Сначала выполните команду ниже, чтобы добавить репозиторий Zeek в вашу систему Ubuntu.

echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list

Теперь загрузите и добавьте GPG-ключ для репозитория Zeek с помощью команды ниже.

curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_24.04/Release.key | \  
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null

После добавления GPG-ключа и репозитория Zeek выполните команду ‘ apt ‘ ниже, чтобы обновить ваши пакеты Ubuntu.

sudo apt update

Теперь вы можете выполнить команду ‘ apt ‘ ниже, чтобы проверить пакет ‘ zeek ‘. Вы увидите несколько версий Zeek.

sudo apt search zeek  
sudo apt-cache policy zeek

check zeek

Далее установите Zeek с помощью следующей команды ‘ apt ‘. В этом примере вы установите Zeek LTS.

sudo apt install zeek

Введите ‘ Y ‘, чтобы подтвердить установку.

install zeek

После завершения установки добавьте директорию ‘ /opt/zeek/bin ‘ в системный PATH через файл ‘ ~/.bashrc ‘. Затем перезагрузите файл ‘ ~/.bashrc ‘, чтобы применить ваши изменения. Теперь вы можете запускать командную строку Zeek через ваш терминал.

echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc  
source ~/.bashrc

Наконец, выполните команду ‘ zeek ‘ ниже, чтобы проверить версию Zeek и основные команды и параметры.

zeek --version  
zeek --help

Вы увидите вывод, подобный следующему:

zeek help

Настройка Zeek

После установки Zeek вам нужно настроить, как Zeek будет работать в вашей инфраструктуре. Вы можете выбрать запуск Zeek в автономном или кластерном режиме. Для крупных развертываний вы можете использовать кластерный режим, где компоненты Zeek установлены на отдельных серверах. Для этой тестовой цели мы настроим и запустим Zeek в кластерном режиме, используя один сервер.

Проверьте IP-адрес вашего сервера с помощью следующей команды ‘ ip ‘. В этом примере у нас есть IP-адрес сервера Ubuntu ‘ 192.168.10.60 ‘.

ip a

Откройте сетевую конфигурацию Zeek ‘ /opt/zeek/etc/networks.cfg ‘ с помощью редактора ‘ nano ‘.

sudo nano /opt/zeek/etc/networks.cfg

Введите вашу подсеть сети целевых серверов, как показано ниже.

192.168.10.0/24 Локальная сеть

Сохраните файл и выйдите из редактора, когда закончите.

Теперь откройте конфигурацию узла Zeek ‘ /opt/zeek/etc/node.cfg ‘ с помощью ‘ nano ‘.

sudo nano /opt/zeek/etc/node.cfg

Закомментируйте следующие строки, чтобы отключить автономный режим Zeek. По умолчанию Zeek работает в автономном режиме с настройками по умолчанию ‘ localhost ‘ и сетевым интерфейсом ‘ eth0 ‘.

#[zeek]  
#type=standalone  
#host=localhost  
#interface=eth0

Вставьте следующую конфигурацию, чтобы запустить Zeek в кластерном режиме на одном сервере. Убедитесь, что вы изменили IP-адрес на IP-адрес вашего сервера Ubuntu. Как видно ниже, кластерный режим Zeek будет иметь несколько компонентов, таких как logger, manager, proxy и workers.

# logger  
[zeek-logger]  
type=logger  
host=192.168.10.60  
  
# manager  
[zeek-manager]  
type=manager  
host=192.168.10.60  
  
# proxy  
[zeek-proxy]  
type=proxy  
host=192.168.10.60  
  
# worker  
[zeek-worker]  
type=worker  
host=192.168.10.60  
interface=eth0  
  
# worker localhost  
[zeek-worker-lo]  
type=worker  
host=localhost  
interface=lo

Когда закончите, сохраните файл и выйдите из редактора.

Далее выполните команду ‘ zeekctl ‘ ниже, чтобы проверить синтаксис Zeek. Если у вас правильная конфигурация, вы увидите вывод ‘ скрипты в порядке ‘.

zeekctl check

check zeek config

Теперь выполните команду ‘ deploy ‘, чтобы развернуть вашу установку Zeek. С этим будут запущены логгер, менеджер, прокси и рабочие узлы Zeek.

zeekctl deploy

deploy zeek

Вы можете проверить каждый компонент Zeek с помощью команды ниже.

zeekctl status

В приведенном ниже выводе вы можете увидеть, что каждый компонент Zeek работает. Это означает, что развертывание кластера Zeek на одном узле прошло успешно.

check zeek status

Использование zeek-cut для парсинга журналов Zeek

Теперь, когда вы установили и развернули Zeek, файлы журналов вашей сети будут создаваться в директории ‘ /opt/zeek/logs/current ‘. Там будет несколько файлов журналов Zeek, на которые вам нужно обратить внимание. В этом разделе вы узнаете, как использовать утилиту ‘zeek-cut’ для генерации журналов в формате TSV (разделенные табуляцией значения).

Проверьте директорию журналов Zeek ‘ /opt/zeek/logs/current ‘ с помощью команды ‘ls’ ниже.

ls -ah /opt/zeek/logs/current/

Вы увидите несколько файлов журналов, таких как:

  • conn.log: Журнал соединений для TCP и UDP. Этот файл журнала предоставляет наиболее полезную информацию, такую как временная метка, продолжительность соединения, служба и многое другое
  • dns.log: Файл журнала DNS (система доменных имен)
  • http.log.log: Журнал протокола передачи гипертекста (HTTP)
  • ssh.log: Журнал защищенного соединения (SSH) для отслеживания соединений SSH.
  • ssl.log: Журнал безопасного сокета (SSL), который также содержит журнал HTTPS

Теперь перейдите в директорию ‘ /opt/zeek/logs/current ‘ и выполните команду ‘ cat ‘, чтобы показать журналы Zeek и передать вывод с помощью команды ‘ zeek-cut ‘, чтобы парсить вывод в формате TSV (разделенные табуляцией значения).

cd /opt/zeek/logs/current/  
  
cat dns.log | zeek-cut id.orig_h query answers  
cat dns.log | zeek-cut query answers id.orig_h

В этом примере мы покажем вам значения из полей ‘ id.orig_h ‘, ‘ query ‘ и ‘ answers ‘.

zeek log

Вы также можете использовать команду ‘ zeek-cut ‘, как показано ниже, чтобы обработать журналы TSV и получить аналогичный вывод.

zeek-cut id.orig_h query answers < dns.log

zeek-cut log

Настройка вывода Zeek в JSON

Zeek поддерживает несколько форматов журналов, включая TSV и JSON. В этом разделе вы узнаете, как сгенерировать журнал Zeek в формате JSON. Затем вы узнаете, как парсить журналы JSON с помощью командной строки ‘jq’, чтобы вы могли легко читать ваши журналы.

Откройте конфигурацию Zeek ‘/opt/zeek/share/zeek/site/local.zeek’ с помощью следующего редактора ‘nano’.

sudo nano /opt/zeek/share/zeek/site/local.zeek

Раскомментируйте следующую строку, чтобы включить вывод журнала в формате JSON.

@load policy/tuning/json-logs

Сохраните файл и выйдите из редактора.

Теперь выполните команду ‘ zeekctl ‘ ниже, чтобы применить и развернуть ваши изменения. И как только процесс завершится, формат журнала JSON будет сгенерирован Zeek.

zeekctl deploy

Вы можете увидеть следующий вывод во время развертывания Zeek.

deploy zeek

Далее выполните команду ‘ cat ‘, чтобы проверить файл журнала Zeek. Вы увидите, что журнал Zeek теперь в формате JSON.

cat /opt/zeek/logs/current/dns.log

Парсинг формата JSON Zeek с помощью jq

Установите пакет ‘ jq ‘ с помощью команды ‘apt’ ниже.

sudo apt install jq -y

После завершения установки перейдите в директорию ‘/opt/zeek/logs/current’ с помощью команды ‘cd’.

cd /opt/zeek/logs/current/

Чтобы парсить журналы в формате JSON, выполните команду ‘jq’ ниже.

jq . dns.log

json log parsing with jq

Если вы хотите получить компактный вывод, используйте опцию ‘-c’, как показано ниже:

jq . -c dns.log

Наконец, вы также можете указать файлы журналов JSON с помощью команды ‘jq’ ниже.

jq -c '[."id.orig_h", ."query", ."answers"]' dns.log

jq show specific key-value

Заключение

Поздравляем! Вы завершили установку инструмента мониторинга сети Zeek на сервере Ubuntu 24.04. Вы узнали, как развернуть Zeek в кластерном режиме на одном узле/сервере, парсить журналы Zeek с помощью утилиты ‘ zeek-cut ‘ для генерации формата TSV (разделенные табуляцией значения), генерировать журналы Zeek в формате JSON и парсить журналы JSON с помощью утилиты ‘jq’. Теперь вы можете перейти к следующему шагу, отправив ваши журналы JSON или журналы Zeek в централизованную систему журналирования, такую как Graylog и стек ELK/EFK.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.