Elastic Stack收集NetFlow或sFlow数据
NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。当汇集起来时,它更加易于管理和易读。Netflow由Cisco创造。
同NetFlow一样,sFlow是一种向采集器发送报告的推送技术。所不同的是,NetFlow是一种基于软件的技术,而sFlow则采用内置在硬件中的专用芯片。这种做法消除了路由器或交换机的CPU和内存的负担。
Flow名称 | 代表厂商 | 主要版本 | 备注 |
---|---|---|---|
NetFlow | Cisco | V1、V5、V7、V8、V9 | 应用最广 |
sFlow | Foundry、HP、Alcatel、NEC、Extreme等 | V4、V5 | 实时性较强,具备突出的第二~七层信息描述能力 |
NetStream | 华为 | V5、V8、V9 | 与NetFlow较为类似 |
IPFIX | IETF标准规范 | RFC 3917 | 以NetFlow V9为蓝本 |
CFlowd | Juniper | V5、V8 | 厂商跟进力度不高 |
本文使用ELK协议栈中Filebeat内置的netflow.yml模块,以思科路由器为例,把flow输出到Elasticsearch,并在Kibana中查阅。
安装Filebeat
[root@cncs ~]# yum install filebeat -y
配置开机自启动和开启服务
[root@cncs ~]# systemctl enable filebeat
[root@cncs ~]# systemctl start filebeat
修改Filebeat总体配置
指定Elasticsearch和Kibana参数
[root@cncs ~]# vim /etc/filebeat/filebeat.yml
setup.kibana:
host: "10.18.224.112:5601"
output.elasticsearch:
hosts: ["10.18.224.112:9200"]
# 自定义索引
indices:
- index: "filebeat-netflow_%{+yyyy.MM.dd}"
when.equals:
event.module: "netflow"
启用netflow模块
[root@cncs ~]# filebeat modules enable netflow
Enabled netflow
[root@cncs ~]# filebeat modules list
Enabled:
netflow
Disabled:
activemq
......
修改netlfow模块的配置
netflow模块配置文件netflow.yml位于/etc/Filebeat/modules.d/目录下
[root@cncs ~]# vim /etc/filebeat/modules.d/netflow.yml
- module: netflow
log:
enabled: true
var:
netflow_host: 0.0.0.0
netflow_port: 9996
指定思科netflow输出端口udp/9996
可以用test命令测试配置有没有问题
[root@cncs ~]# filebeat test config
Config OK
防火墙开放
[root@cncs ~]# firewall-cmd --permanent --add-port=9996/udp
[root@cncs ~]# firewall-cmd --reload
[root@cncs ~]# firewall-cmd --list-all
使用setup命令加载Kibana dashboards
[root@cncs ~]# filebeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
Loaded machine learning job configurations
Loaded Ingest pipelines
[root@cncs ~]# service filebeat restart
Restarting filebeat (via systemctl): [ OK ]
Kibana网页端初步设置