这种情况下就需要部署zeek集群了。如图所示,zeek集群分为Frontend、Worker、Proxy、Manager(还有一个logger)几个角色。他们的分工如下:
一般在企业网络应用全流量检测方案,需要汇聚层交换机与TAP分流器配合,把流量拆分后发送给旁路的流量检测设备。所以有经济能力的用户可以购买TAP分流器实现Frontend节点的功能。
那没钱的话怎么办呢,zeek官方推荐在Worker节点上安装PF_RING依赖对网卡的流量基于进程进行负载。在后文部署集群时会有相关步骤。
虚拟机配置:两台虚拟机使用4个CPU、4GB内存和两块网卡,一块网卡使用NAT网络,另一块网卡使用Host-Only网卡并启用混杂模式。
操作系统安装完成后,我们开始安装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/share
git
clone https://github.com/ntop/PF_RING.git
cd
PF_RING/userland/lib
--prefix=/usr/share/pfring
make
install
cd
../libpcap
--prefix=/usr/share/pfring
make
install
cd
../tcpdump-4.99.1/
--prefix=/usr/share/pfring
make
install
cd
../../kernel
make
&& make install
modprobe
pf_ring enable_tx_capture=0 min_num_slots=32768
PF_RING安装完成后,我们开始安装zeek,编译zeek的过程大约需要40-60分钟。开始编译后需要耐心等待。
cd /usr/share
git clone --recursive https:
//github.com/zeek/zeek
./configure --prefix=
/usr/
share/zeek --
with
-pcap=
/usr/
share/pfring
make && make install
编译完成后会在/usr/share/zeek/bin目录下生成zeek的一系列二进制文件工具。这里就需要将bin目录添加到$PATH环境变量中进行使用了,但是添加环境变量要想永久生效就必须修改/etc/profile或者其他文件。我不想改,所以我用了update-alternatives命令。由于文件比较多,这里用到了一小段Python代码
cd /usr/share/zeek/bin
python3
import os
exes = 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-2
mkdir
-p /usr/share/pfring
sftp
manager
get
/root/.ssh/id_rsa.pub /root/.ssh/manager.pub
get
/usr/share/pfring/lib/libpcap.so.1 /usr/share/pfring/lib/libpcap.so.1
exit
cat
/root/.ssh/manager.pub >> /root/.ssh/authorized_keys
接下来编辑zeek集群相关配置文件,修改内容如下:
vim /usr/share/zeek/etc/zeekctl.cfg
ZeekPort=26600
vim /usr/share/zeek/etc/node.cfg
[logger-1]
type=logger
host=192.168.56.104
#
[manager]
type=manager
host=192.168.56.104
#
[proxy-1]
type=proxy
host=192.168.56.104
#
[worker-1]
type=worker
host=192.168.56.104
interface=enp0s8
lb_method=pf_ring
lb_procs=4
pin_cpus=0,1,2,3
#
[worker-2]
type=worker
host=192.168.56.105
interface=enp0s8
lb_method=pf_ring
lb_procs=4
pin_cpus=3,2,1,0
文件编辑完成后,我们使用zeekctl命令部署集群。
zeekctl
check
zeekctl
deploy
查看集群状态,如果部署过程中没有报错,并且使用zeekctl status命令输出以下内容,说明集群部署成功!
zeekctl
status
Name
Type
Host
Status
Pid
Started
logger-1
logger
192
.168
.56
.104
running
36871 02
Aug
20
:07
:18
manager
manager
192
.168
.56
.104
running
36921 02
Aug
20
:07
:19
proxy-1
proxy
192
.168
.56
.104
running
36970 02
Aug
20
:07
:21
worker-1-1
worker
192
.168
.56
.104
running
37067 02
Aug
20
:07
:22
worker-1-2
worker
192
.168
.56
.104
running
37064 02
Aug
20
:07
:22
worker-1-3
worker
192
.168
.56
.104
running
37066 02
Aug
20
:07
:22
worker-1-4
worker
192
.168
.56
.104
running
37065 02
Aug
20
:07
:22
worker-2-1
worker
192
.168
.56
.105
running
6207 02
Aug
20
:07
:22
worker-2-2
worker
192
.168
.56
.105
running
6206 02
Aug
20
:07
:22
worker-2-3
worker
192
.168
.56
.105
running
6204 02
Aug
20
:07
:22
worker-2-4
worker
192
.168
.56
.105
running
6211 02
Aug
20
:07
:22
https://github.com/zeek/zeekctl
https://github.com/zeek/zeek
原文始发于微信公众号(Desync InfoSec):zeek集群部署介绍
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论