Zeek是一个被动的开源网络流量分析器。它主要是一种安全监视器,可深入检查链接上的所有流量以查找可疑活动的迹象。使用Zeek最直接的好处是生成大量日志文件。这些日志不仅包括对网络上每个连接的全面记录,还包括应用程序层记录,例如所有HTTP会话及其请求的URI,密钥标头,MIME类型和服务器响应;带回复的DNS请求;SSL证书;SMTP会话的关键内容;以及更多。默认情况下,Zeek将所有这些信息写入结构合理的制表符分隔的日志文件中,这些文件适用于使用外部软件进行后处理。
另外,在名称上,3.0版本之前是叫bro,之后改为zeek,相关的命令也都有变动
官方文档:About Zeek — Book of Zeek (v4.1.1)
安装zeek有两种方法:1是下载一个二进制程序包(类似windows的exe安装程序),运行安装;2是下载zeek的源码,编译源码进行安装。
都需要先安装好依赖。
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
重置生效
source /etc/profile
1.首先设置检测设备网卡
编辑文件
vi /opt/zeek/etc/node.cfg
设置要监视的正确网卡
我得这里时ens192 所以改为interface=ens192
2.添加监测环境的本地网络
编辑文件networks.cfg
vi /opt/zeek/etc/networks.cfg
原来得注释掉,然后新增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 |
更多详见Log Files — Book of Zeek (v4.1.1)
设置zeek日志格式为json
目录/opt/zeek/share/zeek/site下local.zeek文件中,追加下面一句话
#Output to JSON
@load policy/tuning/json-logs.zeek
然后启动zeek:zeekctl start 或者重启zeekctl deploy
然后在查询日志
成功转换为json格式