Zeek(原名 Bro)是一个开源的强大的网络流量分析框架。

核心功能:

功能 说明
流量分析 解析网络流量,提取所有连接记录
协议解析 支持 HTTP、DNS、FTP、SSH、SSL 等数十种协议
日志生成 生成结构化的日志文件(JSON 或 TSV 格式)
入侵检测 通过脚本检测异常行为和安全威胁
文件提取 从流量中提取传输的文件

在你系统的原生终端安装:(必须是系统级权限,不能是虚拟环境!

  • Windows → 用 WSL2(Ubuntu 终端)
  • Linux → 直接系统终端
  • macOS → 直接终端(brew install zeek)

1. 安装WSL2终端

在 PowerShell(管理员)中运行 wsl.exe --install,然后重启

2. 安装 WSL Linux 发行版

查看可用的发行版:wsl.exe --list --online
在这里插入图片描述

3. 安装ubuntu

根据个人选择,这里选择Ubuntu版本的,执行

wsl.exe --install -d Ubuntu

安装完成后会提示你设置用户名和密码。

在这里插入图片描述

4. 更新系统包

运行下面的命令更新:

sudo apt update
sudo apt upgrade -y

在这里插入图片描述
在这里插入图片描述

5. 安装 Zeek

sudo apt install -y zeek

在这里插入图片描述
这个错误是因为 Zeek 没有在默认的 Ubuntu 软件源中,需要先手动添加它的官方仓库。

1. 添加zeek官方软件源

# 1. 切换到 root 用户(避免权限问题)
sudo -s

# 2. 安装必要的工具
apt-get install curl wget gnupg2 -y

# 3. 下载并添加 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

# 4. 添加 Zeek 软件源
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_22.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list

# 5. 更新软件包列表
apt-get update

在这里插入图片描述

2. 安装zeek

更新完成后,可以用下面的命令安装 Zeek 了:

apt-get install zeek -y

安装过程中,如果弹出关于 Postfix 邮件服务的配置窗口,选择 “Local only” 选项即可。

在这里插入图片描述

然后会弹出一个关于 Postfix 邮件服务器配置的界面。因为我们用 Zeek 并不需要发送邮件,直接使用系统默认的主机名。
保持文本框内容不变,按键盘的 Tab 键选中下方的 按钮,按 Enter 键确认。

在这里插入图片描述

虽然报错了,但没有大问题。 Zeek 已经成功安装了,只是 Postfix(邮件服务)配置出了问题。这不影响 Zeek 的正常使用。

在这里插入图片描述

6. 配置环境变量

为了方便在任何位置都能直接使用 zeek 命令,需要将它添加到系统的环境变量中:

# 查找 zeek 命令的位置
find /opt -name zeek 2>/dev/null
# 或
ls -la /opt/zeek/bin/

# 将 Zeek 的 bin 目录添加到 PATH
echo 'export PATH=/opt/zeek/bin:$PATH' >> ~/.bashrc

# 使配置生效
source ~/.bashrc

# 退出 root 用户,回到普通用户环境
exit

请添加图片描述

7. 验证安装

现在验证一下 Zeek 是否安装成功:

zeek --version

请添加图片描述

8. 分析真实流量

必须在 WSL 终端里运行 Zeek,不能在 Windows 本地终端(cmd/powershell)运行。

捕获所有网卡上的流量

  • 打开WSL Ubuntu终端
  • 直接运行抓包命令(必须加 sudo)
sudo zeek -i any
  • 执行后,WSL 里会生成文件conn.log,这就是真实网络流量日志。
  • 生成的 conn.log 在运行上面命令的当前目录中(打开 WSL,默认在 用户家目录:/home/你的用户名/conn.log
  • 运行后在当前目录出现下面的文件:
    • conn.log
    • dns.log
    • ntp.log
    • packet_filter.log
    • reporter.log
    • weird.log
  • 查看conn.log
    • cat conn.log (查看全部内容)
    • tail -f conn.log (实时查看)
      在这里插入图片描述

Zeek 在抓包过程中就会生成日志文件
按 Ctrl + C 抓包即停止。

捕获指定网卡上的流量

在 WSL2 中,eth0 就是连接 Windows 主机的虚拟网卡。

# 注意:WSL 中网卡名称可能不同,先用 ip addr 查看
ip addr
# 或
ifconfig -a

# 1. 指定单个网卡(最常用)
sudo zeek -i eth0

# 2. 指定多个网卡(Zeek 会合并分析)
sudo zeek -i eth0 -i eth1

# 3. 使用 any(所有网卡,但不推荐用于生产)
sudo zeek -i any

# 4. 从 pcap 文件读取(最稳定)
zeek -r capture.pcap

常见 WSL 网卡名称:

  • eth0 (WSL2)
  • eth1 (WSL2)
  • lo (本地回环)

9. 导出到 Windows 桌面

在 Windows 文件管理器地址栏输入:\\wsl$,回车
在这里插入图片描述

进入你的ubuntu,找到/home → 你的用户名 → conn.log
在这里插入图片描述
在这里插入图片描述
直接复制粘贴到windows桌面即可。

10. 验证zeek是否在抓包

# WSL终端1:启动 Zeek
sudo zeek -i eth0

# WSL终端2:生成一些测试流量
ping baidu.com

# Zeek 会生成日志文件,新开终端查看
ls -la *.log
tail -f conn.log  # 查看连接日志

11. 进入WSL终端的方法

1. 直接搜索

  • 点击 开始 菜单

  • 直接输入你安装的发行版名称:Ubuntu、Debian或其他你安装的发行版

  • 点击搜索结果中的应用图标
    在这里插入图片描述

2. 使用 Windows 终端

win+R,输入cmd,点击终端标签页旁边的 下拉箭头 (▼)

选择你安装的 Linux 发行版(如 Ubuntu)

如果找不到,则手动添加:

  1. 下拉箭头,点击设置
    在这里插入图片描述
  2. 添加新配置文件:
    在这里插入图片描述
  3. 选择新建空配置文件:
    在这里插入图片描述
  4. 填写配置信息
  • 启动目录填:~ 或者 \wsl$\Ubuntu\home\你的用户名
    在这里插入图片描述
    填完之后,点击保存。

现在可以在下拉箭头那里看到这个Ubuntu终端了。

在这里插入图片描述
在这里插入图片描述

3. 在命令提示符/PowerShell 中

输入 wslbash,回车
在这里插入图片描述
在这里插入图片描述

12. zeek日志按天归档

  1. 进入WSL终端
  2. 查看zeekctl位置
# 检查 zeekctl 是否可用
which zeekctl

# 如果没有,可以尝试安装 (通常已自带)
# sudo apt install zeekctl

  1. 编辑zeekctl配置文件
sudo nano /opt/zeek/etc/zeekctl.cfg

在这里插入图片描述

在这里插入图片描述

往下找到LogRotationInterval 设置,将其修改为按天轮转:

# 将默认的 3600(1小时)改为 86400(24小时)
LogRotationInterval = 86400

在这里插入图片描述
在这里插入图片描述
修改完内容后 ,按 Ctrl + X ,再 按 Y保存 ,再按 Enter键。

  1. 生效配置
    保存文件后,运行以下命令让配置生效:
sudo zeekctl deploy

在这里插入图片描述
另:查看 Zeek 状态

sudo zeekctl status

在这里插入图片描述
6. 运行zeek之后,此时不会覆盖写原文件,而是追加写。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
此时按Ctrl+C,关闭zeek之后,conn.log内容:
在这里插入图片描述
在这里插入图片描述
然后我们再把zeek打开来捕获流量,看是否会追加写。
在这里插入图片描述
在这里插入图片描述

额…好吧,并没有追加,反而被覆盖了原内容 。。。

然后又去zeekctl.log中找到了日志存放位置:LogDir = /opt/zeek/logs

在这里插入图片描述

但是去这个文件夹中查看,发现并没有生成conn.log.*之类的文件

在这里插入图片描述

  • stderr.xxx.log.gz Zeek 运行的错误输出(错误信息)
  • stdout.xxx.log.gz Zeek 运行的标准输出(普通信息)

解惑:为什么配置了按天归档而不生效?

因为日志轮转配置只对 zeekctl 管理模式生效 ,而我使用的是 命令行直接运行模式 。

两种运行模式的区别
  1. zeekctl 管理模式:
  • 通过 zeekctl start 启动
  • 使用 /opt/zeek/etc/zeekctl.cfg 中的配置
  • 日志存储在 /opt/zeek/logs/ 目录
  • 支持自动日志轮转和归档
  1. 命令行直接运行模式
  • 通过 zeek -i any 启动
  • 忽略 zeekctl.cfg 配置
  • 日志存储在当前工作目录
  • 默认覆盖已有日志文件

所以,我使用的是第二种命令行直接运行模式,直接覆盖已有的日志文件!

好,那我用第一种运行模式试试!

  1. 启动zeek
# 部署并启动 Zeek(首次使用)
sudo zeekctl deploy

# 或使用 start 命令
sudo zeekctl start

# 查看zeek状态
sudo zeekctl status

在这里插入图片描述
2. 查看当前日志目录

# 查看当前日志目录
ls -la /opt/zeek/logs/current/

# 应该看到多个日志文件,如conn.log (连接日志)

在这里插入图片描述
再查看conn.log详细内容:
在这里插入图片描述
/home/用户名/目录下的conn.log内容不相同:
在这里插入图片描述
此时的这个conn.log的时间还停留在上次我们运行完最后一次:zeek -i any命令之后
在这里插入图片描述

说明第二种模式的日志并没有记录在/opt/zeek/logs/目录下,而是直接在/home/用户名/目录下生成的conn.log。且是每一次运行zeek后覆盖写,运行期间追加写。

然后我们用第一种模式,把zeekctl关掉。

# 停止 Zeek
sudo zeekctl stop

# 或停止并清理
sudo zeekctl shutdown

在这里插入图片描述

好的,我们再次查看一下log下面的文件夹里的文件看看:

ls /opt/zeek/logs/
ls /opt/zeek/logs/2026-04-03/
ls /opt/zeek/logs/current/

/opt/zeek/logs/2026-04-03/此时有了conn.log旧数据,而/opt/zeek/logs/current/刚才还有,现在zeekctl停止后为空,说明刚才的文件全部归档到了/opt/zeek/logs/2026-04-03/目录了。
在这里插入图片描述

13. 一点补充

温馨提示:

  • 如果只想要zeek运行一次的流量数据,直接运行sudo zeek -i xxx命令,连接日志在当前文件夹/home/用户名/下的conn.log下。
  • 如果想要流量记录归档,则需要使用sudo zeekctl deploy或者sudo zeekctl start命令启动zeek,然后用sudo zeekctl stop关闭zeek。

日志位置
使用 zeekctl 时,日志存储在:

  • 当前日志 : /opt/zeek/logs/current/
  • 归档日志 : /opt/zeek/logs/YYYY-MM-DD/

另1:zeekctl常用管理命令

# 查看 Zeek 状态
sudo zeekctl status

# 重新加载配置
sudo zeekctl reload

# 查看日志目录
sudo zeekctl logs

# 执行日志轮转
sudo zeekctl cron

# 检查配置
sudo zeekctl check

另2:验证运行状态:

# 查看进程状态
sudo zeekctl status

# 查看日志输出
tail -f /opt/zeek/logs/current/conn.log

# 查看系统进程
ps aux | grep zeek

这就是所有内容,如果对你有一点点帮助的话,可以点赞,收藏+关注呀!

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐