zeek介绍

Zeek是一个被动的开源网络流量分析器。它主要是一种安全监视器,可深入检查链接上的所有流量以查找可疑活动的迹象。使用Zeek最直接的好处是生成大量日志文件。这些日志不仅包括对网络上每个连接的全面记录,还包括应用程序层记录,例如所有HTTP会话及其请求的URI,密钥标头,MIME类型和服务器响应;带回复的DNS请求;SSL证书;SMTP会话的关键内容;以及更多。默认情况下,Zeek将所有这些信息写入结构合理的制表符分隔的日志文件中,这些文件适用于使用外部软件进行后处理。
另外,在名称上,3.0版本之前是叫bro,之后改为zeek,相关的命令也都有变动
官方文档:https://docs.zeek.org/en/current/about.html

安装部署

安装zeek

安装zeek有两种方法:1是下载一个二进制程序包(类似windows的exe安装程序),运行安装;2是下载zeek的源码,编译源码进行安装。
都需要先安装好依赖。

  1. 安装依赖项

sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev

二进制包安装:

下载
wget https://download.opensuse.org/repositories/security:zeek/CentOS_7/security:zeek.repo
安装
yum install zeek

编译源码安装:

解压后执行
./configure; make; sudo make install
如果cmake版本过低,需要先卸载cmake,然后升级安装最新版本cmake

升级cmake步骤
卸载旧版本cmake
yum remove cmake -y
下载cmake
wget https://cmake.org/files/v3.5/cmake-3.5.0.tar.gz
解压
tar -xvf cmake-3.5.0.tar.gz
cd cmake-3.5.0
编译
./configure —prefix=/usr/local/cmake
安装
make && make install
设置软连接
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
查询版本
cmake -version

安装后保存位置

/opt/zeek

修改配置文件

将bin目录添加在环境变量中:
export PATH=$PATH:/opt/zeek/bin
image.png
重置生效
source /etc/profile

1.首先设置检测设备网卡
编辑文件
vi /opt/zeek/etc/node.cfg
image.png
设置要监视的正确网卡
image.png
我得这里时ens192 所以改为interface=ens192
2.添加监测环境的本地网络
编辑文件networks.cfg
vi /opt/zeek/etc/networks.cfg
image.png
原来得注释掉,然后新增ip/24,注意一定要使用子网掩码得方式。

3.在 $PREFIX/etc/zeekctl.cfg 文件中,修改 MailTo 邮件地址成期望的收件人以及修改 LogRotationInterval 成期望的日志归档频率(这一条的修改是可选的)(目前没有需求,使用默认方式)

启动

命令,进入zeek终端
zeekctl
由于是第一次使用,执行ZeekControl配置的初始化安装
[ZeekControl] > install
然后启动Zeek实例:
[ZeekControl] > start
暂停Zeek实例:
[ZeekControl] > stop
重启Zeek实例:
zeekctl deploy

输出

输出位置在/opt/zeek/logs/current下

日志文件

下面列出了 Zeek 生成的日志文件,包括日志文件的简要说明和每个日志类型字段说明的链接。

网络协议

日志文件 描述 字段说明
conn.log TCP/UDP/ICMP 连接 Conn::Info
dce_rpc.log 分布式计算环境/RPC DCE_RPC::Info
dhcp.log DHCP 租用 DHCP::Info
dnp3.log DNP3 请求和回复 DNP3::Info
dns.log DNS 活动 DNS::Info
ftp.log FTP活动 FTP::Info
http.log HTTP 请求和回复 HTTP::Info
irc.log IRC 命令和响应 IRC::Info
kerberos.log Kerberos KRB::Info
modbus.log Modbus 命令和响应 Modbus::Info
modbus_register_change.log 跟踪对 Modbus 保持寄存器的更改 Modbus::MemmapInfo
mysql.log MySQL MySQL::Info
ntlm.log NT 局域网管理器 (NTLM) NTLM::Info
ntp.log 网络时间协议 NTP::Info
radius.log RADIUS 身份验证尝试 RADIUS::Info
rdp.log 研发计划 RDP::Info
rfb.log 远程帧缓冲区 (RFB) RFB::Info
sip.log SIP::Info
smb_cmd.log SMB 命令 SMB::CmdInfo
smb_files.log SMB 文件 SMB::FileInfo
smb_mapping.log SMB 树 SMB::TreeInfo
smtp.log SMTP 事务 SMTP::Info
snmp.log SNMP 消息 SNMP::Info
socks.log SOCKS 代理请求 SOCKS::Info
ssh.log SSH 连接 SSH::Info
ssl.log SSL/TLS 握手信息 SSL::Info
syslog.log 系统日志消息 Syslog::Info
tunnel.log 隧道协议事件 Tunnel::Info

更多详见https://docs.zeek.org/en/current/script-reference/log-files.html

设置json格式日志

设置zeek日志格式为json
目录/opt/zeek/share/zeek/site下local.zeek文件中,追加下面一句话
#Output to JSON
@load policy/tuning/json-logs.zeek
image.png
然后启动zeek:zeekctl start 或者重启zeekctl deploy
然后在查询日志
image.png
成功转换为json格式