虹科网络可视化 | 如何使用pfring加速Zeek流量分析?

【虹科网络安全与可视化】

简介

  • zeek

Zeek是一个开源网络流量分析器。许多用户将Zeek用作网络安全监视器(NSM),以支持对可疑或恶意活动的调查。Zeek还支持安全领域以外的各种流量分析任务,包括性能评估和故障排除。

  • pfring

PF_RING是一种新型的网络套接字,和libpcap相比可显着提高数据包捕获速度,如果使用PF_RING ZC(zero copy)驱动程序可实现极高的数据包捕获/传输速度,PF_RING ZC在足够的硬件条件下可实现100G数据包抓取。

 

安装教程

安装pfring

参考:https://blog.csdn.net/HongkeTraining/article/details/107974656

安装zeek

  • 依赖项安装

对于 CentOS7

 sudo yum install cmake make gcc gcc-c++ flex bison libpcap-devel openssl-devel python3 python3-devel swig zlib-devel

(注意:CentOS需要安装cmake3.0以上的版本)

ubuntu/ Debian

sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python3 python3-dev swig zlib1g-dev
  • 原码下载

git clone --recursive https://github.com/zeek/zeek
  • 编译

 cd zeek-X.X.X./configure --with-pcap=/usr/local/libmake && sudo make install

确保Zeek已正确链接到pf_ring-aware libpcap:

ldd /usr/local/zeek/bin/zeek | grep pcap

图片

 

编写配置文件

配置文件位于/usr/local/zeek/etc/node.cfg

编写如下配置文件:

[logger-1]type=loggerhost=localhost[manager]type=managerhost=localhost[proxy-1]type=proxyhost=localhost# 配置worker,可以同时配置多个worker[worker-1]type=workerhost=localhost    interface=ens33  lb_method=pf_ringlb_procs=4pin_cpus=0,1,2,3#[worker-2]#type=worker#host=192.168.0.100#interface=eth0

注:

worker-为实际采集流量的节点

host-流量采集节点IP地址,

interface-接口名称

lb_method-抓包方式

lb_procs-负载均衡队列数目

pin_cpus-绑定cpu数目通常与负载均衡队列数目相同

上述为集群工作模式,可以多个计算节点共同工作,这里我是在本地本地运行,所以woreker和master都配置为localhost了(注意:使用集群只需要在manager上编写配置文件即可,当然worker节点也需要安装Zeek)。worker可以配置为其他节点,但是要求别的manager节点能够免密SSH登录其他worker节点。

SSH免密登录配置方法参考:

https://blog.csdn.net/jeikerxiao/article/details/84105529

 

lb_procs参数详细说明

lb_procs参数表示监控接口负载均衡队列数目,通常有两种情况。

  • 使用RSS网卡多队列技术

RSS(Receive Side Scaling)是一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术。

几乎所有英特尔(和其他供应商)NIC都具有RSS支持,这意味着它们能够对硬件中的数据包进行哈希处理,以便将负载分配到多个RX队列中。在某些情况下,RSS不可用或不够灵活(例如,需要自定义分发功能),可以使用ZC通过软件分发来代替它。

假如我们将接口ens33配置了4个RSS队列,这里将配置lb_procs=4,对应的配置相应的CPU去分别处理四个队列的流量pin_cpus=0,1,2,3。RSS的配置方法参考网络资源。

  • 使用pfring ZC进行流量分发

pfring ZC 具有流量分发的功能,它能高速的将流量从网卡抓取然后使用软件进行分发到不同队列。和RSS类似的功能但是是使用软件方法实现

sudo zbalance_ipc -i zc:eth1 -c 99 -n 8 -m 1 -g 8

-c 99是集群ID

-n 8是队列数

-g 8是zbalance_ipc的cpu绑定

您应该使用zc:xxx 作为接口名称,如下例所示。​​​​​​​

[logger-1]type=loggerhost=localhost[manager]type=managerhost=localhost[proxy-1]type=proxyhost=localhost# 配置worker,可以同时配置多个worker[worker-1]type=workerhost=localhost    interface=zc:99lb_method=pf_ringlb_procs=8pin_cpus=0,1,2,3,4,5,6,7#[worker-2]#type=worker#host=192.168.0.100#interface=eth0


​​​​​​​启动zeek

终端输入如下命令进入zeek控制台:

/usr/local/zeek/bin/zeekctl

首先使用install加载配置,使用start,stop命令开始和关闭zeek。​​​​​​​

[ZeekControl] > install [ZeekControl] > start[ZeekControl] > stop

使用 pfring ZC加速

PF_RING™ZC(零复制)是一种灵活的数据包处理框架,可让您在任何数据包大小下实现1/10 Gbit的线速数据包处理(RX和TX)。在足够的硬件上速度更高。由于其使用了绕过内核协议栈的方法直接从网卡抓取数据包,故大大提升效率。使用ZC需要安装特定的驱动,安装方法:pf_ring 安装以及使用指南

zeek中使用ZC的方法很简单,只需使用zc:<接口名称>的方法即可,配置示例如下:​​​​​​​

[worker-2]type=workerhost=192.168.0.101lb_method=pf_ringinterface=zc:eth0lb_procs=8pin_cpus=0,1,2,3,4,5,6,7

使用 pfring FT 加速

使用pfring FT可以过滤不想关注的流量,从而达到加速的目的, 注意pfring FT 和pfring ZC加速的区别。pfring ZC是在抓取数据包时进行优化加速,pfring FT是在抓取数据包以后使用过滤法方法过滤无用流量,让我们只需对关注的流量进行检测,从而实现加速。并且pfring FT通常与pfringZC一起使用也可以和libpcap一起使用。具体方法如下。

编写pring FT 配置文件/etc/pf_ring/ft-rules.conf

文件内容为:​​​​​​​

[filter]YouTube = discardNetflix = discard

上述是一个简单的过滤规则示例,表示丢弃YouTube ,Netflix 的流量,由于pf_ring FT使用了DPI技术所以可以直接识别并过滤应用层的流量。

zeek配置文件更改

只需在Zeek配置文件中对应的worker配置下添加下面一句即可。

env_vars=PF_RING_FT_CONF=/etc/pf_ring/ft-rules.conf

例如:​​​​​​​

[worker-2]type=workerhost=192.168.0.101lb_method=pf_ringinterface=zc:eth0lb_procs=8pin_cpus=0,1,2,3,4,5,6,7env_vars=PF_RING_FT_CONF=/etc/pf_ring/ft-rules.conf

【虹科网络安全与可视化】

 

 

图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值