本教程适用于以下操作系统版本

  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 22.04 (Jammy Jellyfish)

本页内容

  • 准备工作
  • 开始之前
  • 添加 Zeek 软件源
  • 安装 Zeek
  • 配置 Zeek 服务器
  • 测试 Zeek 状态
  • 结语

Zeek 是一款免费、开源且全球领先的安全监控工具,可用作网络入侵检测系统和网络流量分析器。安全专业人员使用它来检测可疑特征并跟踪 DNS、HTTP 和 FTP 活动。Zeek 通过将网络活动记录到单独的文件中来工作。该文件包含 MIME 类型、服务器响应、DNS 请求、HTTP 会话、请求的 URI、SSL 证书等所有重要信息。

本教程将向你展示如何在 Ubuntu 22.04 上安装 Zeek 网络安全工具。

准备工作

  • 一台运行 Ubuntu 22.04 的服务器,内存至少 2 GB。
  • 服务器已配置 root 密码。

开始之前

首先,你必须将所有系统软件包更新到最新版本。可以通过运行以下命令来更新所有软件包。

apt update -y
apt upgrade -y

更新完所有系统软件包后,使用以下命令安装一些必需的软件包。

apt install curl gnupg2 wget -y

添加 Zeek 软件源

默认情况下,Ubuntu 默认软件源中不包含 Zeek 软件包。因此你需要将 Zeek 软件源添加到 APT。

首先,使用以下命令下载并添加 Zeek 的 GPG 密钥。

curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_22.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg

接下来,使用以下命令添加 Zeek 软件源。

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

接下来,使用以下命令更新软件源缓存。

apt update -y

安装 Zeek

现在只需运行以下命令即可安装 Zeek 工具。

apt install zeek -y

安装过程中,系统会提示你选择邮件服务器,如下所示:

在 Ubuntu 22.04 系统中安装配置 Zeek 网络安全监控工具

选择 local only 并按 Enter 键。系统会要求你提供邮件服务器的主机名。

在 Ubuntu 22.04 系统中安装配置 Zeek 网络安全监控工具

输入你的主机名并按 Enter 键以完成安装。

接下来,你需要将 Zeek 的安装路径添加到系统变量中。可以使用以下命令添加。

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

接下来,使用以下命令使系统变量生效。

source ~/.bashrc

现在可以使用以下命令验证 Zeek 版本:

zeek --version

你将看到如下输出。

zeek version 5.1.1

配置 Zeek 服务器

首先,编辑 Zeek 网络配置文件并定义你的网络。

nano /opt/zeek/etc/networks.cfg

以下是默认的网络配置。你可以在文件末尾添加更多网络。

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

保存并关闭文件,然后编辑 Zeek 主配置文件。

nano /opt/zeek/etc/node.cfg

注释掉以下行:

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

然后,在文件末尾添加以下配置。

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

保存文件,然后使用以下命令验证 Zeek 配置。

zeekctl check

你将看到如下输出。

Hint: Run the zeekctl "deploy" command to get started.
zeek-logger scripts are ok.
zeek-manager scripts are ok.
zeek-proxy scripts are ok.
zeek-worker scripts are ok.
zeek-worker-lo scripts are ok.

现在可以使用以下命令部署 Zeek。

zeekctl deploy

你将看到如下输出。

checking configurations ...
installing ...
creating policy directories ...
installing site policies ...
generating cluster-layout.zeek ...
generating local-networks.zeek ...
generating zeekctl-config.zeek ...
generating zeekctl-config.sh ...
stopping ...
stopping workers ...
stopping proxy ...
stopping manager ...
stopping logger ...
starting ...
starting logger ...
starting manager ...
starting proxy ...
starting workers ...

测试 Zeek 状态

至此,Zeek 已安装并配置完成。现在可以使用以下命令查看 Zeek 状态。

zeekctl status

你将看到如下输出。

Name         Type    Host             Status    Pid    Started
zeek-logger  logger  209.23.10.179    running   58935  19 Jan 05:37:02
zeek-manager manager 209.23.10.179    running   58985  19 Jan 05:37:03
zeek-proxy   proxy   209.23.10.179    running   59035  19 Jan 05:37:05
zeek-worker  worker  209.23.10.179    running   59107  19 Jan 05:37:06
zeek-worker-lo worker  localhost        running   59104  19 Jan 05:37:06

Zeek 将其日志存储在 /opt/zeek/logs/current/ 目录中。你可以使用以下命令查看所有日志文件。

ls -l /opt/zeek/logs/current/

你将看到如下输出。

total 72
-rw-r--r-- 1 root zeek  1735 Jan 19 05:37 broker.log
-rw-r--r-- 1 root zeek  2166 Jan 19 05:37 cluster.log
-rw-r--r-- 1 root zeek   187 Jan 19 05:37 packet_filter.log
-rw-r--r-- 1 root zeek  6158 Jan 19 05:37 conn.log
-rw-r--r-- 1 root zeek 31212 Jan 19 05:37 loaded_scripts.log
-rw-r--r-- 1 root zeek   666 Jan 19 05:37 reporter.log
-rw-r--r-- 1 root zeek   601 Jan 19 05:37 stats.log
-rw-r--r-- 1 root zeek     0 Jan 19 05:37 stderr.log
-rw-r--r-- 1 root zeek   204 Jan 19 05:37 stdout.log
-rw-r--r-- 1 root zeek   266 Jan 19 05:37 telemetry.log
-rw-r--r-- 1 root zeek   960 Jan 19 05:37 weird.log

要查看 Zeek 集群日志,运行以下命令。

tail /opt/zeek/logs/current/cluster.log

你将看到如下输出。

1674106627.672399	zeek-proxy	got hello from zeek-worker-lo (62498247-62ce-5763-b201-a0f0e52b71f9)
1674106627.744144	zeek-proxy	got hello from zeek-worker (0c8c7207-f1a1-540d-aee0-2b55cf76e69f)
1674106627.674594	zeek-manager	got hello from zeek-worker-lo (62498247-62ce-5763-b201-a0f0e52b71f9)
1674106627.752439	zeek-manager	got hello from zeek-worker (0c8c7207-f1a1-540d-aee0-2b55cf76e69f)
1674106627.672635	zeek-worker-lo	got hello from zeek-proxy (b0734910-55c0-5aa5-b5fb-abdf7c083d3e)
1674106627.674358	zeek-worker-lo	got hello from zeek-manager (b4a3890a-a470-5a1d-b2c7-fc48fd683ff9)
1674106627.666564	zeek-worker-lo	got hello from zeek-logger (405e0618-3699-5b85-ac39-0af2743c0aab)
1674106627.708986	zeek-worker	got hello from zeek-manager (b4a3890a-a470-5a1d-b2c7-fc48fd683ff9)
1674106627.699878	zeek-worker	got hello from zeek-proxy (b0734910-55c0-5aa5-b5fb-abdf7c083d3e)
1674106627.706099	zeek-worker	got hello from zeek-logger (405e0618-3699-5b85-ac39-0af2743c0aab)

要查看 Zeek 连接日志,运行以下命令。

tail /opt/zeek/logs/current/conn.log

你将看到如下输出。

1674106667.717311	Camkki2oVKl4J9dgpd	209.23.10.179	47762	209.23.10.179	56180	tcp	-	-	-	-	OTH	FF	0	CccC	0	0	0	0	-
1674106667.742276	CZ7aKU3nUfkjSSN5x6	209.23.10.179	56182	209.23.10.179	47762	tcp	-	-	-	-	OTH	FF	0	CcCc	0	0	0	0	-
1674106667.742332	Cd58V813jeHygHXQS2	209.23.10.179	56176	209.23.10.179	47762	tcp	-	-	-	-	OTH	FF	0	CcCc	0	0	0	0	-
1674106668.621860	CZlcm316EidXbp4aMj	209.23.10.179	41430	209.23.10.179	47761	tcp	-	-	-	-	OTH	FF	0	Cc	0	0	0	0	-

结语

恭喜!你已成功在 Ubuntu 22.04 服务器上安装 Zeek 安全监控工具。希望本文能帮助你理解网络架构并调查任何恶意活动。如有任何疑问,欢迎向我提问。