View a markdown version of this page

Shield 高级攻击流日志 - AWS WAF, AWS Firewall Manager, AWS Shield Advanced,以及 AWS Shield 网络安全总监

引入全新的主机体验 AWS WAF

现在,您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息,请参阅使用控制台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Shield 高级攻击流日志

使用流日志,您可以在 Shield Advanced 受保护的资源中捕获有关流向网络接口的流量的信息。流日志数据将发布到 Amazon S3、Amazon Lo CloudWatch gs 或 Amazon Data Firehose,启用流日志后,您可以在那里检索和查看数据。

注意

在美国东部(弗吉尼亚北部)地区的 Shield Advanced 中、控制台和使用时,您必须查看受保护资源的 CloudWatch 指标和日志 AWS CLI。使用时 AWS CLI,请通过包括以下参数为您的命令指定美国东部(弗吉尼亚北部)区域:--region us-east-1

注意

CloudWatch 使用流日志时,即使日志直接发布到 Amazon S3,也会收取日志费用。有关更多信息,请参阅 Amazon Pricing 中 “日志” 选项卡下的 “销售日志” CloudWatch 。

启用将流日志发布到 Amazon S3 的功能

要将流日志发布到 Amazon S3,您必须为日志传输操作和 Shield 服务配置 IAM 权限。

发布流日志的 IAM 权限

IAM 主体(例如,IAM 角色或用户)必须具有足够的权限才能将流日志发布到 Amazon S3 存储桶。IAM 策略必须包含以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:us-east-1:accountID:delivery:*", "arn:aws:logs:us-east-1:accountID:delivery-source:*", "arn:aws:logs:us-east-1:accountID:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }

在上述政策中,accountID替换为您的 AWS 账户 ID 和 bucket-name Amazon S3 存储桶的名称。

Shield 服务特定的权限

除了特定于目标的权限外,还 AWS Shield 需要明确授权才能从您的资源发送日志。这提供了额外的安全层。Shield 授权对提供日志的保护资源AllowVendedLogDeliveryForResource执行操作:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "shield:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:shield::accountID:protection/*" } ] }

accountID替换为您的 AWS 账户 ID。

启用流日志传输

工作日志交付由三个元素组成。使用以下步骤使用配置每个元素 AWS CLI。

  1. 创建一个DeliverySource,它是一个逻辑对象,代表发送日志的资源。运行如下命令:

    aws logs put-delivery-source \ --name delivery-source-name \ --resource-arn "arn:aws:shield::accountID:protection/protectionID" \ --log-type FLOW_LOGS \ --region us-east-1

    delivery-source-name替换为交付来源的名称、accountID您的 AWS 账户 ID 和 Sh protectionID ield 高级保护 ID。

    确保发出此命令的用户具有服务级别权限shield:AllowVendedLogDeliveryForResource

  2. 创建一个DeliveryDestination,它是一个逻辑对象,代表实际的传送目的地。运行如下命令:

    aws logs put-delivery-destination \ --name delivery-destination-name \ --output-format json \ --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::bucket-name" \ --region us-east-1

    替换delivery-destination-name为配送目的地的名称和 bucket-name Amazon S3 存储桶的名称。

  3. 创建Delivery,用于将传送源与传送目标连接起来。运行如下命令:

    aws logs create-delivery \ --delivery-source-name delivery-source-name-from-step1 \ --delivery-destination-arn "arn-returned-in-step2" \ --region us-east-1

    delivery-source-name-from-step1替换为步骤 1 中的交付来源arn-returned-in-step2名称和步骤 2 中返回的 ARN。

流日志文件

在攻击期间,您的 Shield 防护中的流日志每隔 5 分钟就会发布到 Amazon S3 存储桶。日志文件每五分钟写入一次,每个日志文件都包含前五分钟记录的 IP 地址流量的流日志记录。

日志文件的最大文件大小为 75 MB。如果日志文件在 5 分钟期间内达到文件大小限制,流日志会停止向其中添加流日志记录,将其发布到 Amazon S3 存储桶,然后创建一个新的日志文件。

日志文件已压缩。如果使用 Amazon S3 控制台打开文件,Amazon S3 会解压日志记录并显示它们。如果您下载日志文件,则必须对其进行解压才能查看记录。

单个日志文件包含包含多条记录的交错条目。要查看保护的所有日志文件,请查找按保护名称、区域和您的账户 ID 汇总的条目。

流日志记录语法

流日志记录是一个以空格分隔的字符串,包含以下字段。

字段 说明
version 流日志版本号。
protection_arn AWS 保护 ARN,用于标识 Shield Advanced 中受保护的资源。
srcaddr 数据包的源 IP 地址。
dstaddr 数据包的目标 IP 地址。
srcport 数据包的源端口。
dstport 数据包的目标端口。
protocol 数据包的协议。
packets 聚合窗口内的数据包数量。
bytes 聚合窗口内的字节数。
starttime 聚合窗口的开始时间。
endtime 聚合窗口结束时间。
action Shield Advanced 采取的行动。
tcp_flags 数据包中的 TCP 标志字段。
sampling_rate 数据包处理期间使用的采样率。
location AWS 入口位置。
srccountry Two-letter 代表入口流量国家/地区的国家/地区代码。