前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用pfring加速Zeek流量分析

如何使用pfring加速Zeek流量分析

原创
作者头像
虹科网络可视化与安全
修改2021-04-19 11:08:34
1.7K0
修改2021-04-19 11:08:34
举报
文章被收录于专栏:网络安全与可视化

简介

zeek

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

pfring

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

安装教程

安装pfring

参考:pf_ring 安装以及使用指南

安装zeek

依赖项安装

对于 CentOS7

代码语言:javascript
复制
 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

代码语言:javascript
复制
sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python3 python3-dev swig zlib1g-dev

原码下载

代码语言:javascript
复制
git clone --recursive https://github.com/zeek/zeek

编译

代码语言:javascript
复制
cd zeek-X.X.X
./configure --with-pcap=/usr/local/lib
make && sudo make install

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

代码语言:javascript
复制
ldd /usr/local/zeek/bin/zeek | grep pcap

编写配置文件

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

编写如下配置文件:

代码语言:javascript
复制
[logger-1]
type=logge
host=localhost
[manager]
type=manage
host=localhost
[proxy-1]
type=proxy
host=localhost

# 配置worker,可以同时配置多个worke

代码语言:javascript
复制
[worker-1]
type=worke
host=localhost    
interface=ens33  
lb_method=pf_ring
lb_procs=4
pin_cpus=0,1,2,3
#[worker-2]
#type=worke
#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免密登录配置方法。

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是为了处理大流量而设计的一种负载均衡机制,使用该方法可以大大提升流量的处理能力。

RSS配置方法参考。

使用pfring ZC进行流量分发

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

代码语言:javascript
复制
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:cluster id作为接口名称,如下例所示。

代码语言:javascript
复制
[logger-1]
type=logge
host=localhost
[manager]
type=manage
host=localhost
[proxy-1]
type=proxy
host=localhost

# 配置worker,可以同时配置多个worke
[worker-1]
type=worke
host=localhost    
interface=zc:99
lb_method=pf_ring
lb_procs=8
pin_cpus=0,1,2,3,4,5,6,7
#[worker-2]
#type=worke
#host=192.168.0.100
#interface=eth0

启动zeek

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

代码语言:javascript
复制
/usr/local/zeek/bin/zeekctl

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

代码语言:javascript
复制
[ZeekControl] > install 
[ZeekControl] > start
[ZeekControl] > stop

使用 pfring ZC加速

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

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

代码语言:javascript
复制
[worker-2]
type=worke
host=192.168.0.101
lb_method=pf_ring
interface=zc:eth0
lb_procs=8
pin_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

文件内容为:

代码语言:javascript
复制
[filter]
YouTube = discard
Netflix = discard

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

zeek配置文件更改

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

代码语言:javascript
复制
env_vars=PF_RING_FT_CONF=/etc/pf_ring/ft-rules.conf

例如:

代码语言:javascript
复制
[worker-2]
type=worke
host=192.168.0.101
lb_method=pf_ring
interface=zc:eth0
lb_procs=8
pin_cpus=0,1,2,3,4,5,6,7
env_vars=PF_RING_FT_CONF=/etc/pf_ring/ft-rules.conf

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • zeek
      • pfring
      • 安装教程
        • 安装pfring
          • 安装zeek
            • ubuntu/ Debian
              • 原码下载
                • 编译
                  • 编写配置文件
                    • lb_procs参数详细说明
                      • 启动zeek
                      • 使用 pfring ZC加速
                      • 使用 pfring FT 加速
                        • zeek配置文件更改
                        相关产品与服务
                        负载均衡
                        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档