背景介绍
由于VPC的Flow log不是实时的, VPC flow log在聚合时间间隔内捕获数据后,需要额外的时间来处理数据并将其发布到 CloudWatch Logs 或 Amazon S3。此额外时间,对于发布到 CloudWatch Logs 约为 5 分钟,对于发布到 Amazon S3 约为 10 分钟。流日志服务在此额外的时间内以最大限度提供。在某些情况下,您的日志可能会延迟超过前面提到的 5 到 10 分钟的额外时间,无法满足一些客户对于流量分析的实时性要求,因此客户会询问我们是否支持一些第三方的流量分析系统来对流量进行实时的监控与分析。
在2021年的2月23日,亚马逊云中国区宣布了VPC Traffic Mirroring的功能落地[1],使用此功能,可以结合一些第三方的流量分析系统,解决客户对于流量分析的实时性需求。在文档[2]中,列出了结合使用Suricata进行流量分析的实例,在此篇文档中进行测试与扩展。
根据文档[3]如下测试步骤,只能在log中看到Vxlan的镜像报文,无法对报文内内容(例如HTTP请求)进行记录与分析:
Step 1: Install the Suricata software on the EC2 instance target
Step 2: Create a traffic mirror target
Step 3: Create a traffic mirror filter
Step 4: Create a traffic mirror session
根据下列配置与测试,能够成功记录客户的HTTP请求。
- 使用下列命令更新Suricata Rule sudo suricata-update
- 通过查看更新后的rule,可以看到http相关的rule检测前会先使用“http $HOME_NET any -> $EXTERNAL_NET any”匹配数据报文的源目IP,$HOME_NET和$EXTERNAL_NET是在Suricata的配置文件/etc/suricata/suricata.yaml中做的定义,因此更改其配置文件,设置$HOME_NET和$EXTERNAL_NET均为any,配置后如下: HOME_NET: "any" EXTERNAL_NET: "any"
- 由于通过Traffic Mirror镜像过来的报文是具有Vxlan封装的,因此需要Suricata对报文进行Vxlan的解封装,更改配置文件/etc/suricata/suricata.yaml使其对报文进行Vxlan的解封装,配置后如下: decoder: vxlan: enabled: true ports: $VXLAN_PORTS # syntax: '8472, 4789'
- 更改配置文件/etc/suricata/suricata.yaml开启HTTP Log,配置后如下:
- http-log: enabled: yes filename: http.log append: yes
- 重启Suricata进程使更改后的配置生效 (需要先kill掉当前suricata进程,删除rm -rf /var/run/suricata.pid文件,然后再次运行命令“suricata -c /etc/suricata/suricata.yaml -k none -i eth0 -D”启动进程),重启进程不会删除之前已经生成的日志.
- 进行测试,在镜像流量的源设备上访问www.baidu.com curl www.baidu.com 在镜像流量的目标设备上(安装了Suricata的设备)查看/var/log/suricata/http.log,可以看到请求被成功记录: 03/15/2021-07:04:00.347144 www.baidu.com[]/[]curl/7.61.1**GET[]HTTP/1.1[]200[]2381 bytes[]172.31.27.94:39626 -> 220.181.38.15
补充说明:
1.Suricata报文处理流程图
2.Suricate使用特征检测的方式来识别异常流量,其特征库存储在文件/var/lib/suricata/rules/suricata.rules中
3.更多关于Suricata的信息,可以参考[4]
参考文档:
[1]https://www.amazonaws.cn/en/n...
[2]https://docs.amazonaws.cn/vpc...
[3]https://docs.amazonaws.cn/vpc...
[4]https://suricata-ids.org/feat...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。