前面的文章,说明了raspiberry系统和硬件相关内容,参考家庭网络防御系统搭建-树莓派raspberry PI硬件和系统准备。本文将介绍NDR系统中的zeek安装过程。
corelight vs zeek
使用zeek获取网络的transaction log有两种方式,一种是使用corelight提供的安装包,一种是使用zeek源码安装包,如下是两种方式的区别。
corelight 是基于zeek商业化的版本,针对家庭的环境提供了部署在raspiberry的版本,下载链接见这里。使用该版本的优点是corelight打通了日志采集,日志传输,日志解析和日志展示,即针对日志展示平台做了初步的集成,相当于开箱即用型,更多的内容介绍,请参考corelight的官方视频Raspberry Pi Sensors for Home Networks。如果是仅仅学习zeek的相关内容,建议使用coreligt的raspiberry版本,非常方便。但是问题在于需要到corelight以及humio的网站申请账号,比较麻烦。
由于本专栏的内容是将zeek日志发送到securityonion等siem平台,因此采用zeek源码直接在raspiberry上编译和安装。zeek是开源的版本,能够运行在绝大多数的系统上,因此也是包括raspiberry,但是源码安装的最大问题就是编译时间非常长。zeek开源版本的下载地址,这里。
安装配置
zeek安装
由于raspberry的功能一般都是比较简洁,因此在安装zeek这种应用之前需要安装大量的依赖。由于安装的系统可能并不是最新,因此建议先更新raspberry,命令如下:
sudo apt update && upgrade -y
安装zeek所需要的依赖,命令如下:
sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python3 python3-dev swig zlib1g-dev -y
可选的安装依赖也建议安装,命令如下:
sudo apt-get install python3-git python3-semantic-version libkrb5-dev libjemalloc-dev google-perftools -y
sudo apt-get install libgoogle-perftools4 perl curl libtcmalloc-minimal4 libgoogle-perftools-dev -y
sudo apt-get install libtcmalloc-minimal4 -y
sudo apt-get install libmaxminddb-dev -y
sudo apt-get install sendmail sendmail-cf m4 -y
可选的安装依赖有的会在zeek的运行过程中被调用,例如zeek会使用sendmail给管理员的邮箱发送一些日志的统计信息。
编译大概需要5个小时的时间,将zeek安装到/opt/zeek目录,编译安装命令如下:
git clone --recursive https://github.com/zeek/zeek
cd zeek
./configure --prefix=/opt/zeek --build-type=release && make && sudo make install
网卡设置
由于zeek需要解析镜像到指定网卡的流量,因此需要把接收流量的网卡设置成为混杂模式,使其能够接受镜像的流量,如下:
ifconfig eth0 promisc
ifconfig
查看是否处于混杂状态,如下:
可以看到网卡处在混杂状态,能够接收交换机镜像过来的非本机的流量。
启动zeek
进入到安装目录/opt/zeek/bin,一般建议使用zeekctl来管理zeek实例,参考这里,进入zeekctl,执行help命令,可以看到每个参数的含义,如下:
进入控制台,可以执行start,restart, deploy等命令即可,启动,重启zeek实例,建议使用deploy命令。
zeek日志介绍
执行deploy命令之后,就会在/opt/zeek/logs/current目录产生日志,每隔一段时间,zeek会将当前的日志按日期进行存储,如下图:
上图中出现了几种日志类型,zeek主要的日志类型解释如下:
- conn.log:TCP和UDP流相关信息,主要是五元组,时间戳,协议,发送和接收数据包数量等信息。
- ssh.log:除了ssh协议,zeek支持记录的其他协议log日志还包括http,ftp,dns,smtp,dhcp,smb,ntp,rdp等多种常见协议信息。每种协议所记录的信息因各个协议的不同而不同,对于ssh.log中和安全相关的重要信息包括,ssh客户端和服务端的名称以及hassh以及hasshServer等信息。
- files.log:具备文件传输功能的协议包括http,ftp,smtp,smb等,zeek会记录传输文件的名称,类型以及大小等信息,至于会不会将对应的文件还原到硬盘上,需要进行配置。
- software.log:该文件是根据流量识别对应的上层应用,是DPI的范畴,对于zeek来说,这块识别的层次目前主要集中在应用层协议和对应的默认应用。
- capture_loss.log :主要是TCP连接丢包的统计。
- notice.log :这块主要是zeek脚本插件产生的日志和告警的集合。
- wired.log:协议解析器出错的日志记录。
- dpd.log:DPD日志是wired的一种场景,主要记录Dynamic protocol detection解析的一些问题。
这几种日志中和安全关系比较密切的包括conn.log,ssh.log等协议相关的文件,files.log,notice.log等,会在安全分析和威胁狩猎的过程中多次使用到。
zeek其他重要文件
我的zeek安装在/opt/zeek目录下,该目录下还有几个其他重要类型的目录,如下:
其中bin目录是zeek以及zeekctl控制端相关的可执行程序目录,如下:
etc目录是zeek相关配置文件目录,刚安装的zeek不需要过多的配置,后续按需进行配置即可。logs目录是各种日志的目录,如上。share目录是zeek所提供的各种zeek脚本插件的目录,在学习zeek的过程中,该目录的文件是最重要的文件,如下:
后续会涉及到zeek脚本的各种使用,此处先了解即可。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。