zeek集群部署介绍

admin 2023年8月3日19:29:47评论50 views字数 3793阅读12分38秒阅读模式
什么是
为了更直白的说明什么是zeek,我们举几个国内产品的例子。有过HVV防守经历的人应该都见过一些流量检测设备,比如奇zeek集群架构
为什么会使用zeek的集群模式?如果接入的流量小于1G,那么zeek是有能力分析的,当流量增大时,zeek是不支持多线程的。因此无法同时处理那么多的数据包。

这种情况下就需要部署zeek集群了。如图所示,zeek集群分为Frontend、Worker、Proxy、Manager(还有一个logger)几个角色。他们的分工如下:

zeek集群部署介绍
zeek集群部署介绍
Manager
zeek集群的管理节点,集群的配置文件在管理节点上进行配置和下发,管理节点除了负责同步集群配置,还负责其他节点的部署、进程启停。
zeek集群部署介绍
Logger
zeek会记录所有解析出的网络行为,流量较大的时候日志量也是巨大的。这种情况下我们需要有单独的节点来存储日志。如果不指定Logger节点,默认情况下Manager节点负责存储zeek集群日志。
zeek集群部署介绍
Proxy
代理节点用于分担流量,在集群中某个节点承载的流量过大时通过Proxy节点进行负载分担。
zeek集群部署介绍
Worker
工作节点是zeek集群中负责解析流量的节点。也就是zeek的核心功能。
zeek集群部署介绍
Frontend
Frontend指集群的最前端,负责将巨大的流量分发给各个Worker节点进行处理。zeek集群是不提供Frontend节点的,需要zeek用户自行解决Frontend角色分发流量的部分。

一般在企业网络应用全流量检测方案,需要汇聚层交换机与TAP分流器配合,把流量拆分后发送给旁路的流量检测设备。所以有经济能力的用户可以购买TAP分流器实现Frontend节点的功能。

那没钱的话怎么办呢,zeek官方推荐在Worker节点上安装PF_RING依赖对网卡的流量基于进程进行负载。在后文部署集群时会有相关步骤。

zeek集群部署介绍
部署zeek集群
zeek集群部署介绍
环境说明:这里我是用Virtualbox虚拟机软件,安装2台ubuntu server 22.04操作系统的虚拟机来搭建zeek集群。我们称为zeek-1和zeek-2。其中zeek-1安装Manager节点、Proxy节点、Logger节点和Worker节点。zeek-2只安装Worker节点。

虚拟机配置:两台虚拟机使用4个CPU、4GB内存和两块网卡,一块网卡使用NAT网络,另一块网卡使用Host-Only网卡并启用混杂模式。

zeek集群部署介绍

操作系统安装完成后,我们开始安装zeek,由于我们需要使用PF_RING,所以只能通过编译安装的形式进行。首先我们使用apt命令安装以下依赖程序。(受国内网络环境影响,需提前将apt软件源替换为国内镜像源)

apt update && apt install -y gcc g++ make cmake vim net-tools zip unzip bison flex libssl-dev zlib1g-dev swig python3-dev python3 python3-pip

我们先安装PF_RING,将它安装在/usr/share/pfring目录下

cd /usr/sharegit clone https://github.com/ntop/PF_RING.gitcd PF_RING/userland/lib./configure --prefix=/usr/share/pfringmake installcd ../libpcap./configure --prefix=/usr/share/pfringmake installcd ../tcpdump-4.99.1/./configure --prefix=/usr/share/pfringmake installcd ../../kernelmake && make installmodprobe pf_ring enable_tx_capture=0 min_num_slots=32768

PF_RING安装完成后,我们开始安装zeek,编译zeek的过程大约需要40-60分钟。开始编译后需要耐心等待。

cd /usr/sharegit clone --recursive https://github.com/zeek/zeek./configure --prefix=/usr/share/zeek --with-pcap=/usr/share/pfringmake && make install

编译完成后会在/usr/share/zeek/bin目录下生成zeek的一系列二进制文件工具。这里就需要将bin目录添加到$PATH环境变量中进行使用了,但是添加环境变量要想永久生效就必须修改/etc/profile或者其他文件。我不想改,所以我用了update-alternatives命令。由于文件比较多,这里用到了一小段Python代码

cd /usr/share/zeek/binpython3import osexes = os.listdir()setupCmd = "update-alternatives --install /usr/bin/{link} {name} /usr/share/zeek/bin/{path} 610250"for item in exes:    os.system(setupCmd.format(link=item, name=item, path=item))

运行完成后,zeek的二进制工具就都可以在任意目录下直接使用了。接下来我们完成zeek集群部署前的工作,使zeek-1能够使用SSH密钥登录zeek-2

在manager节点zeek-1执行ssh-keygen登录worker节点zeek-2mkdir -p /usr/share/pfringsftp managerget /root/.ssh/id_rsa.pub /root/.ssh/manager.pubget /usr/share/pfring/lib/libpcap.so.1 /usr/share/pfring/lib/libpcap.so.1exitcat /root/.ssh/manager.pub >> /root/.ssh/authorized_keys

接下来编辑zeek集群相关配置文件,修改内容如下:

vim /usr/share/zeek/etc/zeekctl.cfgZeekPort=26600vim /usr/share/zeek/etc/node.cfg[logger-1]type=loggerhost=192.168.56.104#[manager]type=managerhost=192.168.56.104#[proxy-1]type=proxyhost=192.168.56.104#[worker-1]type=workerhost=192.168.56.104interface=enp0s8lb_method=pf_ringlb_procs=4pin_cpus=0,1,2,3#[worker-2]type=workerhost=192.168.56.105interface=enp0s8lb_method=pf_ringlb_procs=4pin_cpus=3,2,1,0

文件编辑完成后,我们使用zeekctl命令部署集群。

zeekctl checkzeekctl deploy

查看集群状态,如果部署过程中没有报错,并且使用zeekctl status命令输出以下内容,说明集群部署成功!

zeekctl statusName         Type    Host             Status    Pid    Startedlogger-1     logger  192.168.56.104   running   36871  02 Aug 20:07:18manager      manager 192.168.56.104   running   36921  02 Aug 20:07:19proxy-1      proxy   192.168.56.104   running   36970  02 Aug 20:07:21worker-1-1   worker  192.168.56.104   running   37067  02 Aug 20:07:22worker-1-2   worker  192.168.56.104   running   37064  02 Aug 20:07:22worker-1-3   worker  192.168.56.104   running   37066  02 Aug 20:07:22worker-1-4   worker  192.168.56.104   running   37065  02 Aug 20:07:22worker-2-1   worker  192.168.56.105   running   6207   02 Aug 20:07:22worker-2-2   worker  192.168.56.105   running   6206   02 Aug 20:07:22worker-2-3   worker  192.168.56.105   running   6204   02 Aug 20:07:22worker-2-4   worker  192.168.56.105   running   6211   02 Aug 20:07:22
参考链接
https://docs.zeek.org/en/current/about.html

https://github.com/zeek/zeekctl

https://github.com/zeek/zeek

原文始发于微信公众号(Desync InfoSec):zeek集群部署介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月3日19:29:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   zeek集群部署介绍https://cn-sec.com/archives/1931533.html

发表评论

匿名网友 填写信息