Zeek(原Bro)部署与基础命令指南
一、安装部署
1. Ubuntu/Debian 安装
# 添加Zeek仓库
echo'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_22.04/ /' | sudotee /etc/apt/sources.list.d/security:zeek.list
curl-fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_22.04/Release.key | gpg --dearmor | sudotee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
# 安装Zeek
sudo apt update
sudo apt install zeek
2. CentOS/RHEL 安装
# 添加EPEL仓库
sudo yum install epel-release
# 添加Zeek仓库
sudocurl-o /etc/yum.repos.d/zeek.repo https://download.opensuse.org/repositories/security:/zeek/CentOS_8/security:zeek.repo
# 安装Zeek
sudo yum install zeek
3. 源码编译安装
# 安装依赖
sudo apt install cmake makegcc g++ flex bison libpcap-dev libssl-dev python3-dev swig zlib1g-dev
# 下载源码
git clone --recursive https://github.com/zeek/zeek.git
cd zeek
# 编译安装
./configure --prefix=/opt/zeek --build-type=release
make
sudomake install
# 添加环境变量
echo'export PATH=/opt/zeek/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
二、基础配置
1. 配置网络接口
# 查看网络接口
ip addr show
# 编辑Zeek配置
sudovim /opt/zeek/etc/node.cfg
[zeek]
type=standalone
host=localhost
interface=eth0 # 更改为你的监控接口
2. 配置网络范围
sudovim /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
3. 启动Zeek
# 检查配置
sudo /opt/zeek/bin/zeekctl check
# 部署配置
sudo /opt/zeek/bin/zeekctl deploy
# 启动Zeek
sudo /opt/zeek/bin/zeekctl start
# 查看状态
sudo /opt/zeek/bin/zeekctl status
# 停止Zeek
sudo /opt/zeek/bin/zeekctl stop
三、基础命令
1. Zeekctl 管理命令
# 查看所有可用命令
zeekctl help
# 安装配置
zeekctl install
# 重启Zeek
zeekctl restart
# 查看日志
zeekctl diag
# 查看进程状态
zeekctl ps
2. 直接运行Zeek
# 实时监控接口
zeek -i eth0 local
# 分析pcap文件
zeek -r capture.pcap local
# 运行特定脚本
zeek -i eth0 /opt/zeek/share/zeek/policy/frameworks/notice/notice.zeek
# 指定输出目录
zeek -i eth0 -C-w /var/log/zeek/
3. 日志管理
# 查看日志位置
ls /var/log/zeek/
# 主要日志文件:
# conn.log - 连接日志
# http.log - HTTP流量
# dns.log - DNS查询
# ssl.log - SSL/TLS连接
# notice.log - 安全事件通知
# 使用zeek-cut查看日志
cat /var/log/zeek/conn.log | zeek-cut ts id.orig_h id.orig_p id.resp_h id.resp_p proto duration
# 实时监控日志
tail -f /var/log/zeek/conn.log
四、实用示例
1. 基本网络监控
# 创建自定义监控脚本
cat > my_monitor.zeek << 'EOF'
event zeek_init()
{
print "Zeek脚本启动 - 开始监控";
}
event connection_established(c: connection)
{
print fmt("新连接建立: %s:%s -> %s:%s",
c$id$orig_h, c$id$orig_p,
c$id$resp_h, c$id$resp_p);
}
EOF
# 运行自定义脚本
zeek -i eth0 my_monitor.zeek
2. 检测恶意IP
# 创建恶意IP检测脚本
cat > bad_ip.zeek << 'EOF'
global bad_ips: set[addr] = {
192.168.1.100,
10.0.0.5
} &redef;
event connection_established(c: connection)
{
if (c$id$orig_hin bad_ips || c$id$resp_hin bad_ips)
{
NOTICE([$note=Scan::Address_Scan,
$conn=c,
$msg=fmt("检测到与恶意IP的通信: %s",
c$id$orig_hin bad_ips ? c$id$orig_h : c$id$resp_h)]);
}
}
EOF
五、故障排除
1. 常见问题解决
# 检查权限问题
sudo zeekctl check
# 查看错误日志
cat /var/log/zeek/stderr.log
# 测试网络接口
sudo tcpdump -i eth0 -c5
# 验证Zeek安装
zeek --version
zeek --help
2. 性能调优
# 调整工作进程数
sudovim /opt/zeek/etc/node.cfg
# 添加:lb_procs=4
# 调整日志轮转
sudovim /opt/zeek/etc/zeekctl.cfg
# 修改:LogRotationInterval = 3600
六、自动化脚本
1. 部署脚本示例
#!/bin/bash
# zeek_auto_deploy.sh
set-e
echo"正在安装依赖..."
apt update
apt install -y cmake makegcc g++ flex bison libpcap-dev libssl-dev python3-dev
echo"下载Zeek源码..."
cd /tmp
git clone --recursive https://github.com/zeek/zeek.git
cd zeek
echo"编译安装..."
./configure --prefix=/opt/zeek
make-j$(nproc)
make install
echo"配置环境变量..."
echo'export PATH=/opt/zeek/bin:$PATH' >> /etc/profile.d/zeek.sh
source /etc/profile.d/zeek.sh
echo"配置Zeek..."
cp /opt/zeek/etc/zeekctl.cfg.sample /opt/zeek/etc/zeekctl.cfg
cp /opt/zeek/etc/node.cfg.sample /opt/zeek/etc/node.cfg
# 自动检测接口
INTERFACE=$(ip route | grep default | awk '{print $5}')
sed-i"s/interface=eth0/interface=$INTERFACE/" /opt/zeek/etc/node.cfg
echo"启动Zeek..."
/opt/zeek/bin/zeekctl deploy
/opt/zeek/bin/zeekctl start
echo"部署完成!"
七、监控与维护
1. 系统服务配置
# 创建systemd服务
sudocat > /etc/systemd/system/zeek.service << 'EOF'
[Unit]
Description=Zeek Network Security Monitor
After=network.target
[Service]
Type=forking
ExecStart=/opt/zeek/bin/zeekctl start
ExecStop=/opt/zeek/bin/zeekctl stop
ExecReload=/opt/zeek/bin/zeekctl restart
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable zeek
sudo systemctl start zeek
主要日志文件说明:
conn.log - 所有网络连接记录
http.log - HTTP请求和响应
dns.log - DNS查询和响应
ssl.log - SSL/TLS握手信息
files.log - 传输的文件信息
notice.log - 安全告警和通知