

**引入全新的主机体验 AWS WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

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

# Shield 高级攻击流日志
<a name="ddos-flow-logs"></a>

使用流日志，您可以在 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 。](https://aws.amazon.com/cloudwatch/pricing/)

## 启用将流日志发布到 Amazon S3 的功能
<a name="ddos-flow-logs-enable"></a>

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

### 发布流日志的 IAM 权限
<a name="ddos-flow-logs-iam-permissions"></a>

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 服务特定的权限
<a name="ddos-flow-logs-shield-permissions"></a>

除了特定于目标的权限外，还 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。

## 启用流日志传输
<a name="ddos-flow-logs-delivery"></a>

工作日志交付由三个元素组成。使用以下步骤使用配置每个元素 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`。

1. 创建一个`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 存储桶的名称。

1. 创建`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。

## 流日志文件
<a name="ddos-flow-logs-files"></a>

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

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

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

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

## 流日志记录语法
<a name="ddos-flow-logs-record-syntax"></a>

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


| 字段 | 说明 | 
| --- | --- | 
| 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 代表入口流量国家/地区的国家/地区代码。 | 