

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

# 专用账户中的测试 GuardDuty 结果
<a name="guardduty_findings-scripts"></a>

使用本文档运行测试器脚本，该脚本针对将部署在您的中的测试资源生成 GuardDuty 结果 AWS 账户。当您想了解和了解某些 GuardDuty 查找类型以及查找结果详细信息如何查找您账户中的实际资源时，可以执行这些步骤。这种体验不同于生成[示例发现结果](sample_findings.md)。有关测试 GuardDuty 结果体验的更多信息，请参阅[注意事项](#considerations-generate-gdu-findings-tester)。

**Topics**
+ [注意事项](#considerations-generate-gdu-findings-tester)
+ [GuardDuty 调查结果测试器脚本可以生成](#gdu-findings-tester-generates)
+ [第 1 步 – 先决条件](#prerequisites-gdu-tester-script)
+ [步骤 2-部署 AWS 资源](#deploy-gdu-tester-script)
+ [第 3 步 – 运行测试程序脚本](#run-gdu-tester-script)
+ [步骤 4-清理 AWS 测试资源](#clean-gdu-tester-script-resources)
+ [排查常见 问题](#troubleshooting-gdu-tester-script-issues)

## 注意事项
<a name="considerations-generate-gdu-findings-tester"></a>

在继续操作之前，请注意以下事项：
+ GuardDuty 建议在专用的非生产 AWS 账户环境中部署测试器。这种方法将确保您能够正确识别测试人员生成的 GuardDuty 结果。此外， GuardDuty 测试人员还会部署各种资源，这些资源可能需要超出其他账户所允许的 IAM 权限。使用专用账户可确保通过明确的账户边界来恰当界定权限范围。
+ 测试器脚本使用不同的 AWS 资源组合生成 100 多个 GuardDuty 调查结果。目前，这并未包括所有 [GuardDuty 查找类型](guardduty_finding-types-active.md)。有关可使用此测试程序脚本生成的调查发现类型列表，请参阅[GuardDuty 调查结果测试器脚本可以生成](#gdu-findings-tester-generates)。
**备注**  
为可视化*攻击序列调查发现类型*，测试程序脚本将仅生成 [AttackSequence:EKS/CompromisedCluster](guardduty-attack-sequence-finding-types.md#attack-sequence-eks-compromised-cluster) 和 [AttackSequence:S3/CompromisedData](guardduty-attack-sequence-finding-types.md#attack-sequence-s3-compromised-data)。如需可视化和了解 [AttackSequence:IAM/CompromisedCredentials](guardduty-attack-sequence-finding-types.md#attack-sequence-iam-compromised-credentials)，您可以在账户中生成 [示例发现结果](sample_findings.md)。
+ 要使 GuardDuty 测试人员按预期工作， GuardDuty 需要在部署测试人员资源的账户中启用。根据将要运行的测试，测试人员评估是否启用了相应的 GuardDuty 保护计划。对于任何未启用的保护计划， GuardDuty 将请求允许启用必要的保护计划，以便在足够长的时间 GuardDuty 内执行将生成结果的测试。稍后， GuardDuty 将在测试完成后禁用保护计划。  
** GuardDuty 首次启用**  
在 GuardDuty 特定地区首次在您的专用账户中启用后，您的账户将自动注册为期 30 天的免费试用。  
GuardDuty 提供可选的保护计划。启用时 GuardDuty，某些保护计划也已启用，并包含在 GuardDuty 30 天免费试用版中。有关更多信息，请参阅 [使用 GuardDuty 30 天免费试用](guardduty-pricing.md#using-guardduty-30-day-free-trial)。  
**GuardDuty 在运行测试器脚本之前，已在您的账户中启用**  
如果 GuardDuty 已启用，则测试器脚本将根据参数检查某些保护计划的配置状态以及生成调查结果所需的其他账户级别设置。  
通过运行此测试程序脚本，某些防护计划可能会在您位于某个区域的专用账户中首次启用。该防护计划的 30 天免费试用期将由此开始计算。有关每个防护计划相关的免费试用期的信息，请参阅[使用 GuardDuty 30 天免费试用](guardduty-pricing.md#using-guardduty-30-day-free-trial)。
+ 只要部署了 GuardDuty 测试器基础架构，您就可能偶尔会收到来自 PenTest 实例的[UnauthorizedAccess:EC2/TorClient](guardduty_finding-types-ec2.md#unauthorizedaccess-ec2-torclient)调查结果。

## GuardDuty 调查结果测试器脚本可以生成
<a name="gdu-findings-tester-generates"></a>

目前，测试程序脚本生成以下与 Amazon EC2、Amazon EKS、Amazon S3、IAM 和 EKS 审计日志有关的调查发现类型：
+ [AttackSequence:EKS/CompromisedCluster](guardduty-attack-sequence-finding-types.md#attack-sequence-eks-compromised-cluster)
+ [AttackSequence:S3/CompromisedData](guardduty-attack-sequence-finding-types.md#attack-sequence-s3-compromised-data)
+ [Backdoor:EC2/C&CActivity.B\$1DNS](guardduty_finding-types-ec2.md#backdoor-ec2-ccactivitybdns)
+ [Backdoor:EC2/DenialOfService.Dns](guardduty_finding-types-ec2.md#backdoor-ec2-denialofservicedns)
+ [Backdoor:EC2/DenialOfService.Udp](guardduty_finding-types-ec2.md#backdoor-ec2-denialofserviceudp)
+ [CryptoCurrency:EC2/BitcoinTool.B\$1DNS](guardduty_finding-types-ec2.md#cryptocurrency-ec2-bitcointoolbdns)
+ [Impact:EC2/AbusedDomainRequest.Reputation](guardduty_finding-types-ec2.md#impact-ec2-abuseddomainrequestreputation)
+ [Impact:EC2/BitcoinDomainRequest.Reputation](guardduty_finding-types-ec2.md#impact-ec2-bitcoindomainrequestreputation)
+ [Impact:EC2/MaliciousDomainRequest.Reputation](guardduty_finding-types-ec2.md#impact-ec2-maliciousdomainrequestreputation)
+ [Impact:EC2/SuspiciousDomainRequest.Reputation](guardduty_finding-types-ec2.md#impact-ec2-suspiciousdomainrequestreputation)
+ [Recon:EC2/Portscan](guardduty_finding-types-ec2.md#recon-ec2-portscan)
+ [Trojan:EC2/BlackholeTraffic\$1DNS](guardduty_finding-types-ec2.md#trojan-ec2-blackholetrafficdns)
+ [Trojan:EC2/DGADomainRequest.C\$1DNS](guardduty_finding-types-ec2.md#trojan-ec2-dgadomainrequestcdns)
+ [Trojan:EC2/DNSDataExfiltration](guardduty_finding-types-ec2.md#trojan-ec2-dnsdataexfiltration)
+ [Trojan:EC2/DriveBySourceTraffic\$1DNS](guardduty_finding-types-ec2.md#trojan-ec2-drivebysourcetrafficdns)
+ [Trojan:EC2/DropPoint\$1DNS](guardduty_finding-types-ec2.md#trojan-ec2-droppointdns)
+ [Trojan:EC2/PhishingDomainRequest\$1DNS](guardduty_finding-types-ec2.md#trojan-ec2-phishingdomainrequestdns)
+ [UnauthorizedAccess:EC2/MaliciousIPCaller.Custom](guardduty_finding-types-ec2.md#unauthorizedaccess-ec2-maliciousipcallercustom)
+ [UnauthorizedAccess:EC2/RDPBruteForce](guardduty_finding-types-ec2.md#unauthorizedaccess-ec2-rdpbruteforce) 
+ [UnauthorizedAccess:EC2/SSHBruteForce](guardduty_finding-types-ec2.md#unauthorizedaccess-ec2-sshbruteforce) 
+ [PenTest:IAMUser/KaliLinux](guardduty_finding-types-iam.md#pentest-iam-kalilinux) 
+ [Recon:IAMUser/MaliciousIPCaller.Custom](guardduty_finding-types-iam.md#recon-iam-maliciousipcallercustom) 
+ [Recon:IAMUser/TorIPCaller](guardduty_finding-types-iam.md#recon-iam-toripcaller) 
+ [Stealth:IAMUser/CloudTrailLoggingDisabled](guardduty_finding-types-iam.md#stealth-iam-cloudtrailloggingdisabled) 
+ [Stealth:IAMUser/PasswordPolicyChange](guardduty_finding-types-iam.md#stealth-iam-passwordpolicychange) 
+ [UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS](guardduty_finding-types-iam.md#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws) 
+ [UnauthorizedAccess:IAMUser/MaliciousIPCaller.Custom](guardduty_finding-types-iam.md#unauthorizedaccess-iam-maliciousipcallercustom) 
+ [UnauthorizedAccess:IAMUser/TorIPCaller](guardduty_finding-types-iam.md#unauthorizedaccess-iam-toripcaller) 
+ [Discovery:Kubernetes/MaliciousIPCaller.Custom](guardduty-finding-types-eks-audit-logs.md#discovery-kubernetes-maliciousipcallercustom) 
+ [Discovery:Kubernetes/SuccessfulAnonymousAccess](guardduty-finding-types-eks-audit-logs.md#discovery-kubernetes-successfulanonymousaccess) 
+ [Discovery:Kubernetes/TorIPCaller](guardduty-finding-types-eks-audit-logs.md#discovery-kubernetes-toripcaller)
+ [Execution:Kubernetes/ExecInKubeSystemPod](guardduty-finding-types-eks-audit-logs.md#execution-kubernetes-execinkubesystempod)
+ [Impact:Kubernetes/MaliciousIPCaller.Custom](guardduty-finding-types-eks-audit-logs.md#impact-kubernetes-maliciousipcallercustom)
+ [Persistence:Kubernetes/ContainerWithSensitiveMount](guardduty-finding-types-eks-audit-logs.md#persistence-kubernetes-containerwithsensitivemount)
+ [Policy:Kubernetes/AdminAccessToDefaultServiceAccount](guardduty-finding-types-eks-audit-logs.md#policy-kubernetes-adminaccesstodefaultserviceaccount) 
+ [Policy:Kubernetes/AnonymousAccessGranted](guardduty-finding-types-eks-audit-logs.md#policy-kubernetes-anonymousaccessgranted) 
+ [PrivilegeEscalation:Kubernetes/PrivilegedContainer](guardduty-finding-types-eks-audit-logs.md#privilegeescalation-kubernetes-privilegedcontainer) 
+ [UnauthorizedAccess:Lambda/MaliciousIPCaller.Custom](lambda-protection-finding-types.md#unauthorized-access-lambda-maliciousIPcaller-custom) 
+ [Discovery:S3/MaliciousIPCaller.Custom](guardduty_finding-types-s3.md#discovery-s3-maliciousipcallercustom)
+ [Discovery:S3/TorIPCaller](guardduty_finding-types-s3.md#discovery-s3-toripcaller)
+ [PenTest:S3/KaliLinux](guardduty_finding-types-s3.md#pentest-s3-kalilinux)
+ [Policy:S3/AccountBlockPublicAccessDisabled](guardduty_finding-types-s3.md#policy-s3-accountblockpublicaccessdisabled)
+ [Policy:S3/BucketAnonymousAccessGranted](guardduty_finding-types-s3.md#policy-s3-bucketanonymousaccessgranted)
+ [Policy:S3/BucketBlockPublicAccessDisabled](guardduty_finding-types-s3.md#policy-s3-bucketblockpublicaccessdisabled)
+ [Policy:S3/BucketPublicAccessGranted](guardduty_finding-types-s3.md#policy-s3-bucketpublicaccessgranted)
+ [Stealth:S3/ServerAccessLoggingDisabled](guardduty_finding-types-s3.md#stealth-s3-serveraccessloggingdisabled)
+ [UnauthorizedAccess:S3/MaliciousIPCaller.Custom](guardduty_finding-types-s3.md#unauthorizedaccess-s3-maliciousipcallercustom)
+ [UnauthorizedAccess:S3/TorIPCaller](guardduty_finding-types-s3.md#unauthorizedaccess-s3-toripcaller)
+ [Backdoor:Runtime/C&CActivity.B\$1DNS](findings-runtime-monitoring.md#backdoor-runtime-ccactivitybdns)
+ [CryptoCurrency:Runtime/BitcoinTool.B\$1DNS](findings-runtime-monitoring.md#cryptocurrency-runtime-bitcointoolbdns)
+ [DefenseEvasion:Runtime/ProcessInjection.Ptrace](findings-runtime-monitoring.md#defenseeva-runtime-processinjectionptrace)
+ [DefenseEvasion:Runtime/ProcessInjection.VirtualMemoryWrite](findings-runtime-monitoring.md#defenseeva-runtime-processinjectionvirtualmemw)
+ [Execution:Runtime/ReverseShell](findings-runtime-monitoring.md#execution-runtime-reverseshell)
+ [Impact:Runtime/AbusedDomainRequest.Reputation](findings-runtime-monitoring.md#impact-runtime-abuseddomainrequestreputation)
+ [Impact:Runtime/BitcoinDomainRequest.Reputation](findings-runtime-monitoring.md#impact-runtime-bitcoindomainrequestreputation)
+ [Impact:Runtime/MaliciousDomainRequest.Reputation](findings-runtime-monitoring.md#impact-runtime-maliciousdomainrequestreputation)
+ [Impact:Runtime/SuspiciousDomainRequest.Reputation](findings-runtime-monitoring.md#impact-runtime-suspiciousdomainrequestreputation)
+ [PrivilegeEscalation:Runtime/ContainerMountsHostDirectory](findings-runtime-monitoring.md#privilegeescalation-runtime-containermountshostdirectory)
+ [PrivilegeEscalation:Runtime/DockerSocketAccessed](findings-runtime-monitoring.md#privilegeesc-runtime-dockersocketaccessed)
+ [Trojan:Runtime/BlackholeTraffic\$1DNS](findings-runtime-monitoring.md#trojan-runtime-blackholetrafficdns)
+ [Trojan:Runtime/DGADomainRequest.C\$1DNS](findings-runtime-monitoring.md#trojan-runtime-dgadomainrequestcdns)
+ [Trojan:Runtime/DriveBySourceTraffic\$1DNS](findings-runtime-monitoring.md#trojan-runtime-drivebysourcetrafficdns)
+ [Trojan:Runtime/DropPoint\$1DNS](findings-runtime-monitoring.md#trojan-runtime-droppointdns)
+ [Trojan:Runtime/PhishingDomainRequest\$1DNS](findings-runtime-monitoring.md#trojan-runtime-phishingdomainrequestdns)

## 第 1 步 – 先决条件
<a name="prerequisites-gdu-tester-script"></a>

要准备测试环境，您需要以下项目：
+ **Git**：根据您使用的操作系统安装 git 命令行工具。

  克隆 [`amazon-guardduty-tester` 存储库](https://github.com/awslabs/amazon-guardduty-tester) 将需要此项目。
+ **AWS Command Line Interface**— 一种开源工具，允许您使用命令行外壳中的命令进行交互。 AWS 服务 有关更多信息，请参阅《AWS Command Line Interface 用户指南》中的 [Get started with AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)**。
+ **AWS Systems Manager**— 要使用与托管节点启动会话管理器会话， AWS CLI 必须在本地计算机上安装会话管理器插件。有关更多信息，请参阅《AWS Systems Manager 用户指南》中的[为 AWS CLI安装 Session Manager 插件](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)**。
+ **节点包管理器（NPM）**：安装 NPM 以安装所有依赖项。
+ **Docker**：您必须已经安装 Docker。有关安装说明，请参阅 [Docker 网站](https://docs.docker.com/get-docker/)。

  要验证是否已安装 Docker，请运行以下命令并确认是否有与以下输出类似的输出：

  ```
  $ docker --version
  Docker version 19.03.1
  ```
+ 在 *AWS Marketplace* 中订阅 [Kali Linux](https://aws.amazon.com/marketplace/pp/prodview-fznsw3f7mq7to) 映像。

## 步骤 2-部署 AWS 资源
<a name="deploy-gdu-tester-script"></a>

本节列出了在专用账户中部署某些 AWS 资源的关键概念和步骤。

### 概念
<a name="concepts-deploy-resource-test-guardduty-findings"></a>

以下列表提供了与有助您部署资源的命令相关的关键概念：
+ **AWS Cloud Development Kit (AWS CDK)**— CDK 是一个开源软件开发框架，用于在代码中定义云基础架构并通过它进行 CloudFormation配置。CDK 支持多种编程语言，从而定义称为构造的可重用云组件。您可以将构造组合成堆栈和应用程序。然后，您可以将 CDK 应用程序部署到 CloudFormation 以配置或更新您的资源。有关更多信息，请参阅[什么是 AWS CDK？](https://docs.aws.amazon.com/cdk/v2/guide/home.html) 在《*AWS Cloud Development Kit (AWS CDK) 开发人员指南》*中。
+ **Bootstrapping** — 这是准备您的 AWS 环境以供使用的过程。 AWS CDK在将 CDK 堆栈部署到 AWS 环境中之前，必须先对环境进行引导。在您的环境中配置由使用的特定 AWS 资源的过程 AWS CDK 是您将在下一节中执行的步骤的一部分-[部署 AWS 资源的步骤](#steps-deploy-resource-test-guardduty-findings)。

  有关引导工作原理的更多信息，请参阅《AWS Cloud Development Kit (AWS CDK) 开发人员指南》中的 [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)**。

### 部署 AWS 资源的步骤
<a name="steps-deploy-resource-test-guardduty-findings"></a>

执行以下步骤以开始部署资源：

1. 除非在`bin/cdk-gd-tester.ts`文件中手动设置了专用账户 “区域” 变量，否则请设置您的 AWS CLI 默认账户和区域。有关更多信息，请参阅《AWS Cloud Development Kit (AWS CDK) 开发人员指南》中的 [Environments](https://docs.aws.amazon.com/cdk/v2/guide/environments.html)**。

1. 运行以下命令来部署资源：

   ```
   git clone https://github.com/awslabs/amazon-guardduty-tester && cd amazon-guardduty-tester
   npm install
   cdk bootstrap
   cdk deploy
   ```

   最后一个命令 (`cdk deploy`) 代表你创建一个 CloudFormation 堆栈。此堆栈的名称是**GuardDutyTesterStack**。

   作为此脚本的一部分， GuardDuty 创建新资源以在您的账户中生成 GuardDuty调查结果。此外还会向 Amazon EC2 实例添加以下标签键值对：

   `CreatedBy`:`GuardDuty Test Script`

   Amazon EC2 实例还包括托管 EKS 节点和 ECS 集群的 EC2 实例。
**实例类型**  
GuardDuty 旨在使用经济实惠的实例类型，这些实例类型可提供成功执行测试所需的最低性能。由于 vCPU 要求，Amazon EKS 节点组需要使用 `t3.medium`；同时，由于 DenialOfService 查找测试所需的网络容量增加，驱动程序节点需要使用 `m6i.large`。对于所有其他测试， GuardDuty 使用`t3.micro`实例类型。有关实例类型的更多信息，请参阅《Amazon EC2 实例类型指南》中的[可用大小](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_sizes)**。

## 第 3 步 – 运行测试程序脚本
<a name="run-gdu-tester-script"></a>

这是一个分为两步的过程，首先需要启动与测试驱动程序的会话，然后运行脚本以生成具有特定资源组合的 GuardDuty 结果。

### A 部分 – 启动与测试驱动程序的会话
<a name="tester-script-start-session-guardduty"></a>

1. 部署资源后，将区域代码保存到当前终端会话中的某个变量中。使用以下命令并*us-east-1*替换为部署资源的区域代码：

   ```
   $ REGION=us-east-1
   ```

1. 测试器脚本只能通过 AWS Systems Manager (SSM) 获得。要在测试器主机实例上启动交互式 shell，请查询主机**InstanceId**。

1. 使用以下命令启动与测试程序脚本的会话：

   ```
   aws ssm start-session 
     --region $REGION 
     --document-name AWS-StartInteractiveCommand 
     --parameters command="cd /home/ssm-user/py_tester && bash -l" 
     --target $(aws ec2 describe-instances 
       --region $REGION 
       --filters "Name=tag:Name,Values=Driver-GuardDutyTester" 
       --query "Reservations[].Instances[?State.Name=='running'].InstanceId" 
       --output text)
   ```

### B 部分 – 生成调查发现
<a name="tester-script-generate-findings-guardduty"></a>

测试程序脚本是一种基于 Python 的程序，可动态构建 bash 脚本以根据您的输入生成调查发现。您可以根据一种或多种 AWS 资源类型、 GuardDuty 保护计划[威胁目的](guardduty_finding-format.md#guardduty_threat_purposes)（战术）或灵活地生成调查结果[GuardDuty 调查结果测试器脚本可以生成](#gdu-findings-tester-generates)。[基础数据来源](guardduty_data-sources.md)

以下列命令示例为参考，然后运行一个或多个命令来生成要探索的调查发现：

```
python3 guardduty_tester.py 
python3 guardduty_tester.py --all 
python3 guardduty_tester.py --s3 
python3 guardduty_tester.py --tactics discovery 
python3 guardduty_tester.py --ec2 --eks --tactics backdoor policy execution 
python3 guardduty_tester.py --eks --runtime only 
python3 guardduty_tester.py --ec2 --runtime only --tactics impact 
python3 guardduty_tester.py --log-source dns vpc-flowlogs 
python3 guardduty_tester.py --finding 'CryptoCurrency:EC2/BitcoinTool.B!DNS'
```

如需有关有效参数的更多信息，您可以运行以下帮助命令：

```
python3 guardduty_tester.py --help
```

### C 部分 – 检查生成的调查发现
<a name="tester-script-review-findings-guardduty"></a>

选择一种您偏好的方法，以便查看账户中生成的调查发现。

------
#### [ GuardDuty console ]

1. 登录 AWS 管理控制台 并打开 GuardDuty 控制台，网址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。

1. 在导航窗格中，选择 **调查发现**。

1. 从调查发现表中，选择要查看详细信息的调查发现。这时将打开调查发现详细信息面板。有关信息，请参阅[了解并生成 Amazon GuardDuty 调查结果](guardduty_findings.md)。

1. 如果要筛选这些调查发现，请使用资源标签键和值。例如，要筛选为 Amazon EC2 实例生成的调查发现，请将 `CreatedBy`:`GuardDuty Test Script` 作为**实例标签键**和**实例标签键**的标签键值对。

------
#### [ API ]
+ 运行[ListFindings](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListFindings.html)以查看特定探测器 ID 的发现结果。您可以指定参数来筛选调查发现。

  要查找您的账户和当前区域的，请查看[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)控制台中的 **“设置**” 页面，或者运行 [https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html)API。`detectorId`

------
#### [ AWS CLI ]
+ 运行以下 AWS CLI 命令查看生成的结果，并用合适*12abc34d567e8fa901bc2d34EXAMPLE*的值替换*us-east-1*和：

  ```
  aws guardduty list-findings --region us-east-1 --detector-id 12abc34d567e8fa901bc2d34EXAMPLE
  ```

  要查找您的账户和当前区域的，请查看[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)控制台中的 **“设置**” 页面，或者运行 [https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html)API。`detectorId`

  要详细了解可用于筛选调查发现的参数，请参阅《AWS CLI 命令参考》中的 [list-findings](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/guardduty/list-findings.html)**。

------

## 步骤 4-清理 AWS 测试资源
<a name="clean-gdu-tester-script-resources"></a>

当测试程序脚本结束时，在[第 3 步 – 运行测试程序脚本](#run-gdu-tester-script)期间进行的账户级别设置和其他配置状态更新都将回到原始状态。

运行测试器脚本后，您可以选择清理 AWS 测试资源。您可以选择通过以下方法之一来完成此操作：
+ 运行如下命令：

  ```
  cdk destroy
  ```
+ 删除名称为的 CloudFormation 堆栈**GuardDutyTesterStack**。有关步骤的信息，请参阅在[CloudFormation 控制台上删除堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

## 排查常见 问题
<a name="troubleshooting-gdu-tester-script-issues"></a>

GuardDuty 已确定常见问题并推荐了故障排除步骤：
+ `Cloud assembly schema version mismatch`— 将 AWS CDK CLI 更新到与所需云装配版本兼容的版本或最新可用版本。有关更多信息，请参阅 [AWS CDK CLI compatibility](https://docs.aws.amazon.com/cdk/v2/guide/versioning.html#cdk_toolkit_versioning)。
+ `Docker permission denied`：将专用账户用户添加到 **docker** 或 **docker-users** 中，以便专用账户可以运行命令。有关步骤的更多信息，请参阅 [Daemon socket option](https://docs.docker.com/reference/cli/dockerd/#daemon-socket-option)。
+ `Your requested instance type is not supported in your requested Availability Zone`：某些可用区不支持特定的实例类型。要确定哪些可用区支持您的首选实例类型并重新尝试部署 AWS 资源，请执行以下步骤：

  1. 选择一种您偏好的方法，确定哪些可用区支持您的实例类型：

------
#### [ Console ]

**识别支持首选实例类型的可用区**

     1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

     1. 使用页面右上角的 AWS 区域选择器，选择要启动实例的区域。

     1. 在导航窗格中的**实例**下，选择**实例类型**。

     1. 从**实例类型**表中，选择一个首选实例类型。

     1. 在**联网**下，查看**可用区**下列出的区域。

        根据此信息，您可能需要选择一个能够部署相关资源的新区域。

------
#### [ AWS CLI ]

     运行以下命令来查看可用区列表。请务必指定您的首选实例类型和区域 (*us-east-1*)。

     ```
     aws ec2 describe-instance-type-offerings --location-type availability-zone  --filters Name=instance-type,Values=Preferred instance type --region us-east-1 --output table
     ```

     有关此命令的更多信息，请参阅《AWS CLI 命令参考》**中的 [describe-instance-type-offerings](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-instance-type-offerings.html)。

     如果您在运行此命令时遇到错误，请确认您使用的是最新版本的 AWS CLI。有关更多信息，请参阅《AWS Command Line Interface User Guide》**中的 [Troubleshooting](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html)。

------

  1. 尝试再次部署 AWS 资源并指定支持您的首选实例类型的可用区。

**重新尝试部署资源 AWS**

     1. 在 `bin/cdk-gd-tester.ts` 文件中设置默认区域。

     1. 要指定可用区，请使用 `amazon-guardduty-tester/lib/common/network/vpc.ts` 文件。

     1. 请将在此文件中的 `maxAzs: 2,` 替换为必须为您的实例类型指定可用区的 `availabilityZones: ['us-east-1a', 'us-east-1c'],`。

     1. 继续完成[部署 AWS 资源的步骤](#steps-deploy-resource-test-guardduty-findings)下剩余的步骤。