
Zeek 是一个命令行网络安全监控工具,可以安装在您本地数据中心或第三方云主机的服务器上。Zeek 监控并记录了许多不同的数据点,例如连接、接收和发送的数据包以及 TCP 会话属性。使用此工具,您可以跟踪整个网络中的事件以更好地确保其安全性。
让我们在 Ubuntu Server 22.04 实例上安装 Zeek,这样您的安全团队就可以开始检查进出网络的流量。
安装 Zeek 需要什么
安装 Zeek 所需的唯一东西是 Ubuntu Server 22.04 或更新版本的运行实例以及具有 sudo 权限的用户。
如何安装 Zeek
首先要做的是登录到您的 Ubuntu 服务器实例。成功登录后,使用以下命令安装三个简单的依赖项:
sudo apt-get install curl wget gnupg2 -y
接下来,更改为 root 用户:
sudo -s
接下来,我们必须添加官方 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-get update
使用以下命令安装 Zeek:
apt-get install zeek -y
在安装过程中,系统会询问您希望如何配置 Postfix。除非您已经在系统上启动并运行邮件服务器,否则我建议将其配置为仅限本地。您将必须登录到服务器并检查管理员用户的邮件帐户以查看任何报告,这是使用命令邮件完成的。
如果邮件命令不存在,请使用以下命令安装它:
apt-get install mailutils -y
在我们继续之前,请确保将 Zeek 安装路径添加到您的 $PATH 中:
echo “export PATH=$PATH:/opt/zeek/bin” >> ~/.bashrc
使用以下命令获取 bash 文件:
source ~/.bashrc
如何配置 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
192.168.1.0/16 Private IP space
保存并关闭文件。接下来,打开主配置文件:
nano /opt/zeek/etc/node.cfg
我们会将 Zeek 从默认的独立模式切换到集群模式。首先要做的是通过在每行的开头放置 # 来注释掉以下行:
[zeek]
type=standalone
host=localhost
interface=eth0
将以下内容添加到文件底部,将 SERVER 替换为您的托管服务器的 IP 地址,将 IFACE 替换为您的网络接口名称:
[zeek-logger]
type=logger
host=SERVER
#
[zeek-manager]
type=manager
host=SERVER
#
[zeek-proxy]
type=proxy
host=SERVER
#
[zeek-worker]
type=worker
host=SERVER
interface=IFACE
#
[zeek-worker-lo]
type=worker
host=localhost
interface=lo
保存并关闭文件。使用以下命令检查配置:
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
部署完所有内容后,使用以下命令检查状态:
zeekctl status
你应该看到类似这样的输出:
Name Type Host Status Pid Started
zeek-logger logger 192.168.1.191 running 6366 06 Feb 13:18:44
zeek-manager manager 192.168.1.191 running 6427 06 Feb 13:18:49
zeek-proxy proxy 192.168.1.191 running 6488 06 Feb 13:18:54
zeek-worker worker 192.168.1.191 running 6570 06 Feb 13:19:00
zeek-worker-lo worker localhost running 6567 06 Feb 13:19:00
Zeek 将其日志存储在 /opt/zeek/logs/current 中。您会找到代理、集群、packet_filtering、conn、loaded_scripts、reporter、stats、stderr、stdout、telemetry 和 weird 的日志。查看这些日志的最佳方式是使用 tail 命令查看实时更新的日志,如下所示:
tail -f /opt/zeek/logs/current/conn.log
该日志文件将显示与服务器的所有实时连接。
您可以尝试的另一个方便的技巧是使用 Zeek 查看 tcpdump 信息。首先,使用以下命令捕获一些数据包:
sudo tcpdump -i IFACE -s 0 -w mypackets.trace
其中 IFACE 是主机上网络设备的名称。运行几分钟后,使用 CTRL+C 结束命令,然后使用以下命令分析流量:
zeek -r mypackets.trace
Zeek 会将日志文件转储到当前工作目录中。您应该看到以下日志文件:conn.l
og、dns.log、mypackets.trace、packet_filter.log、reporter.log 和 weird.log。假设您随后想要针对捕获的数据包运行 Zeek 的内置脚本之一。为此,你可以发出这样的东西:
zeek -r mypackets.trace /opt/zeek/share/zeek/policy/frameworks/files/extract-all-files.zeek
您可以检查 /opt/zeek/share/zeek 以了解它提供的不同内置脚本。
Zeek 是一个非常强大的网络监控工具。您会希望快速了解各种内置脚本,甚至学习如何构建自己的脚本。在达到该点之前,您可以继续查看标准日志文件并捕获进入和离开服务器的包。











