VPC Flow Logs

VPC Flow Logs记录了VPC内进出网卡的流量,日志保存在S3或CloudWatch Logs。如果保存在S3则使用Athena来查询;如果保存在CloudWatch Logs则使用CloudWatch Logs Insights来查询

Flow Logs一般用于以下任务:

  • 诊断复杂的安全组设置
  • 监控实例上的进出流量

Flow Log的开启和关闭都不会影响VPC的网络性能。Flow Log可以开启在VPC、子网或ENI级别,如果开启在子网或VPC级别,下面的每个ENI都会被监控。

VPC Flow Logs的格式如下:

image-20220911074053536

VPC Flow Log测试

进入VPC页面,选择VPC,点击Create flow log:

image-20220911113744229

另一个创建的入口是在VPC下的Flow logs页面进行创建:

image-20220911113403216

输入flow log的名称;flow log有两种行为——AcceptReject,可以只记录某种行为,也可以全部记录:

image-20220911113636514

创建Cloudwatch Log group和IAM Role

提前创建一个Cloudwatch Log Group(例如vpc-flow-log)用于接收Flow Log;


创建IAM Role,用于授权写到CloudWatch Log,参考: https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-cwl.html#flow-logs-iam-role

这个Role的信任关系里,设置为vpc-flow-logs.amazonaws.com:

image-20220911114026101


继续VPC Flow Logs的开启过程,日志的格式可以选择默认,也可以自定义,只选择关注的字段:

image-20220911113658515

点击创建。

创建完成后,进入到CloudWatch Logs页面:

image-20220911114138016

日志格式如下:

image-20220911114253969

Logs Insights里分析日志:

image-20220911114408409

Logs Insights使用特定的查询语言来分析日志:

image-20220911114343888

在子网中创建Flow Logs

上面提到,Flow Log可以开启在VPC、子网或ENI级别。如果开启在子网或VPC级别,下面的每个ENI都会被监控。子网中开启的入口如下:

image-20220911115228110

在ENI上创建Flow Logs

image-20220911115435664

如果ENI所在的子网或VPC已经开启了Flow Logs,那么ENI上也自动已开启

限制

VPC Flow Logs不会记录以下类型的流量:

  • VPC内的DNS流量
  • EC2 metadata的访问
  • DHCP流量

其他的网络工具

Wireshark/tcpdump

traceroute

telnet

nslookup

ping(在使用的时候注意要放开ICMP协议,仅放开所有tcp流量的访问是没用的)