背景介绍
因为 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…