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

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

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

Установка 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

проверить zeek

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

sudo apt install zeek

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

установить 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

Настройка 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 Local Network

Сохраните файл и выйдите из редактора после завершения работы.

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

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

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

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

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

# 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

проверить конфигурацию zeek

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

zeekctl deploy

развернуть zeek

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

zeekctl status

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

проверить состояние zeek

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

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

Проверьте каталог журналов 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: Журнал Secure Shell (SSH) для отслеживания соединений SSH.
  • ssl.log: Журнал Secure Socket Layer (SSL), который также содержит журнал HTTPS.

журналы zeek

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

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’, ‘запрос‘, и ‘ответы‘.

журнал

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

zeek-cut id.orig_h query answers

журнал zeek-cut

Setting up Zeek output to JSON

Zeek supports multiple log formats, including TSV and JSON. In this section, you’ll learn how to generate a Zeek log in JSON format. Then, you’ll learn how to parse JSON logs with the ‘jq’ command line so you can easily read your logs.

Open Zeek configuration ‘/opt/zeek/share/zeek/site/local.zeek’ with the following ‘nano’ editor.

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

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

@load policy/tuning/json-logs

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

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

zeekctl deploy

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

развернуть 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 с помощью jq

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

jq . -c dns.log

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

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

jq show specific key-value

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *