【zeek网络流量分析工具】windows安装zeek
目录
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)
如果找不到,则手动添加:
- 下拉箭头,点击设置

- 添加新配置文件:

- 选择新建空配置文件:

- 填写配置信息
- 启动目录填:~ 或者 \wsl$\Ubuntu\home\你的用户名

填完之后,点击保存。
现在可以在下拉箭头那里看到这个Ubuntu终端了。


3. 在命令提示符/PowerShell 中
输入 wsl 或 bash,回车

12. zeek日志按天归档
- 进入WSL终端
- 查看zeekctl位置
# 检查 zeekctl 是否可用
which zeekctl
# 如果没有,可以尝试安装 (通常已自带)
# sudo apt install zeekctl
- 编辑zeekctl配置文件
sudo nano /opt/zeek/etc/zeekctl.cfg


往下找到LogRotationInterval 设置,将其修改为按天轮转:
# 将默认的 3600(1小时)改为 86400(24小时)
LogRotationInterval = 86400


修改完内容后 ,按 Ctrl + X ,再 按 Y保存 ,再按 Enter键。
生效配置
保存文件后,运行以下命令让配置生效:
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 管理模式生效 ,而我使用的是 命令行直接运行模式 。
两种运行模式的区别
zeekctl 管理模式:
- 通过
zeekctl start启动 - 使用
/opt/zeek/etc/zeekctl.cfg中的配置 - 日志存储在
/opt/zeek/logs/目录 - 支持自动日志轮转和归档
命令行直接运行模式:
- 通过
zeek -i any启动 忽略 zeekctl.cfg 配置- 日志存储在当前工作目录
默认覆盖已有日志文件
所以,我使用的是第二种命令行直接运行模式,直接覆盖已有的日志文件!
好,那我用第一种运行模式试试!
- 启动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
这就是所有内容,如果对你有一点点帮助的话,可以点赞,收藏+关注呀!

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



所有评论(0)