0x01 前言

我喜欢使用NetFlow和sFlow对一些网络设备的流量进行采样分析和监控,以前常用ManageEngine NetFlow Analyzer,过去一段时间使用VMware vRealize Network Insight。

但很不幸,他们都是商业软件,在使用上要考量很多因素,所以我决定转而使用发展神速的Elastic套件。

0x02 准备

在继续之前需要了解NetFlow是什么,它来自思科,可以在思科的网络设备中见到它,诸如H3C或华为等产品则是sFlow。笼统来说,他们的功能是一样的:都是在设定的时间间隔对网络流量进行取样并发送至收集器。

在这篇文章里的收集器由filebeat实现,然后输出至elasticsearch,最终交由kibana呈现可视化界面和实现告警等功能。而数据则来自测试的虚拟机,分别有一台Windows和一台centos,另外还有我的pfsense,大致架构如下:

其中一些组件的安装配置在本文不再赘述,有需要的朋友可以自行搜索本站。Exporter我使用flowtraq的二进制安装包,可以尝试使用以下地址下载:

正如上图中所描述的,这需要消耗一些CPU和内存资源,而且只支持NetFlow v5和v9的Collector,这一般来说是没问题的,还需要注意页面底部的License Agreement,必要的时候可以使用softflowd作为exporter。

另外,Windows操作系统还需要安装winpcap:

最重要的,需要有一个elasticsearch集群或一个实例,一个kibana实例,并且它们都工作正常。另外需要准备一台虚拟机用于安装各种beat,当然,我们也可以使用docker,相关文档地址如下:

0x03 部署

0x03.1 filebeat

部署及其简单,连配置文件都不需要,只需要准备elasticsearch地址和kibana地址即可,如果开启了x-pack的认证功能,还需要准备这些信息。以下是相关文档:

配置文件也是简单得不得了,只是启用netflow模块,然后配置监听的IP和端口。还有一些配置项需要根据实际情况进行调整,具体可参考上述的链接。使用以下命令即可完成filebeat的安装:

然后来到以下文件夹,可以发现内置的诸多模块:

如果需要启用某个模块,只需要将”.disable”后缀移除即可,比如:netflow.yml,而这个文件的内容正如本章开头那样,无需任何修改。

紧接着回到上一级目录,编辑filebeat.yml:

请根据实际情况修改以上代码中高亮的部分,最后启动filebeat即可:

如果一切正常,那么可以发现filebeat正监听着UDP 2055端口:

0x03.2 kibana

filebeat其实内置着一些dashboard配置,如果想偷懒,可以导入预设的配置。在这里也建议使用预设的配置,可以以此为基础进行扩展。首先确认kibana运行正常并且已在上一步中正确填写kibana的IP地址、端口与协议,然后在filebeat机器中执行以下命令:

稍等片刻,如果一切正常,返回的信息如下:

最后来到kibana的仪表盘可以发现多了许多条目,搜索后可以发现诸多与netflow有关的仪表盘:

使用开发工具查询模版可以发现有一个与filebeat相关的模版:

感兴趣的朋友可以使用以下命令查看:

此时来到SIEM页面应该是无数据的:

0x03.3 pfSense

在一个优质网络的环境中安装softflowd:

然后进入配置界面:

选择需要采样的interface、配置采集器的IP、端口、采样率等信息后单击页面底部的Save即可保存。稍等十几秒后即可回到kibana查看分析结果:

0x03.4 Centos

首先将二进制文件上传到系统中,然后将其赋予可执行权限并放置在适当的位置:

然后查看使用手册: