在專用帳戶中測試 GuardDuty 調查結果 - Amazon GuardDuty

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在專用帳戶中測試 GuardDuty 調查結果

使用本文件執行測試指令碼,根據將部署在您的 中的測試資源產生 GuardDuty 調查結果 AWS 帳戶。當您想要了解和了解特定 GuardDuty 調查結果類型,以及調查結果詳細資訊如何尋找帳戶中的實際資源時,您可以執行這些步驟。此體驗與產生 不同範例問題清單。如需測試 GuardDuty 調查結果體驗的詳細資訊,請參閱考量事項

考量事項

在繼續之前,請考量下列考量事項:

  • GuardDuty 建議在專用非生產 中部署測試器 AWS 帳戶。此方法將確保您能夠正確識別測試人員產生的 GuardDuty 問題清單。此外,GuardDuty 測試儀會部署各種資源,這些資源可能需要超出其他帳戶中允許的 IAM 許可。使用專用帳戶可確保許可可以具有明確的帳戶界限來適當範圍。

  • 測試人員指令碼會產生超過 100 個具有不同 AWS 資源組合的 GuardDuty 調查結果。目前,這不包含所有 GuardDuty 調查結果類型。如需您可以使用此測試人員指令碼產生的調查結果類型清單,請參閱 GuardDuty 問題清單測試人員指令碼可以產生

    注意

    測試人員指令碼只會AttackSequence:S3/CompromisedData針對攻擊序列問題清單類型產生 。若要視覺化並了解 AttackSequence:IAM/CompromisedCredentials,您可以在範例問題清單帳戶中產生 。

  • 若要讓 GuardDuty 測試儀如預期般運作,您必須在部署測試儀資源的帳戶中啟用 GuardDuty。根據將執行的測試,測試人員會評估是否啟用適當的 GuardDuty 保護計劃。對於任何未啟用的保護計畫,GuardDuty 會請求許可,以啟用必要的保護計畫足夠長的時間,讓 GuardDuty 執行將產生調查結果的測試。稍後,GuardDuty 會在測試完成後停用保護計劃。

    第一次啟用 GuardDuty

    當 GuardDuty 第一次在特定區域中於您的專用帳戶中啟用時,您的帳戶將自動註冊 30 天免費試用。

    GuardDuty 提供選用的保護計劃。在啟用 GuardDuty 時,某些保護計畫也會啟用,並包含在 GuardDuty 30 天免費試用中。如需詳細資訊,請參閱使用 GuardDuty 30 天免費試用

    在執行測試器指令碼之前,您的帳戶中已啟用 GuardDuty

    當 GuardDuty 啟用時,測試人員指令碼會根據參數檢查產生問題清單所需的特定保護計畫和其他帳戶層級設定的組態狀態。

    透過執行此測試器指令碼,某些保護計畫可能會首次在區域中的專用帳戶中啟用。這將啟動該保護計畫的 30 天免費試用。如需與每個保護計畫相關聯的免費試用資訊,請參閱 使用 GuardDuty 30 天免費試用

  • 只要部署 GuardDuty 測試器基礎設施,您偶爾可能會收到 PenTest 執行個體的UnauthorizedAccess:EC2/TorClient調查結果。

GuardDuty 問題清單測試人員指令碼可以產生

目前,測試人員指令碼會產生下列與 Amazon EC2、Amazon EKS、Amazon S3、IAM 和 EKS 稽核日誌相關的問題清單類型:

步驟 1 - 先決條件

若要準備測試環境,您需要下列項目:

  • Git – 根據您使用的作業系統安裝 git 命令列工具。這是複製amazon-guardduty-tester儲存庫的必要項目。

  • AWS Command Line Interface – 開放原始碼工具,可讓您在命令列 Shell 中使用命令 AWS 服務 來與 互動。如需詳細資訊,請參閱《 AWS Command Line Interface 使用者指南》中的開始使用 AWS CLI

  • AWS Systems Manager – 若要使用 以受管節點啟動 Session Manager 工作階段 AWS CLI ,您必須在本機電腦上安裝 Session Manager 外掛程式。如需詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的安裝 Session Manager 外掛程式。 AWS CLI

  • Node Package Manager (NPM) – 安裝 NPM 以安裝所有相依性。

  • Docker – 您必須安裝 Docker。如需安裝說明,請參閱 Docker 網站

    若要驗證 Docker 是否已安裝,請執行下列命令,並確認有類似下列輸出的輸出:

    $ docker --version Docker version 19.03.1
  • 在 中訂閱 Kali Linux 映像AWS Marketplace

步驟 2 - 部署 AWS 資源

本節提供關鍵概念的清單,以及在專用帳戶中部署特定 AWS 資源的步驟。

概念

下列清單提供與 命令相關的重要概念,可協助您部署 資源:

  • AWS Cloud Development Kit (AWS CDK) – CDK 是一種開放原始碼軟體開發架構,可用於在程式碼中定義雲端基礎設施,並透過其佈建 AWS CloudFormation。CDK 支援數種程式設計語言,以定義可重複使用的雲端元件,稱為建構。您可以將它們組合成堆疊和應用程式。然後,您可以將 CDK 應用程式部署到 , AWS CloudFormation 以佈建或更新資源。如需詳細資訊,請參閱《 AWS Cloud Development Kit (AWS CDK) 開發人員指南》中的什麼是 AWS CDK?

  • Bootstrapping – 這是準備您的 AWS 環境以供 使用的程序 AWS CDK。將 CDK 堆疊部署到 AWS 環境之前,必須先啟動環境。佈建 所使用的環境中特定 AWS 資源的程序, AWS CDK 是您將在下一節 - 中執行的步驟的一部分部署 AWS 資源的步驟

    如需引導運作方式的詳細資訊,請參閱《 AWS Cloud Development Kit (AWS CDK) 開發人員指南》中的引導

部署 AWS 資源的步驟

執行下列步驟以開始部署資源:

  1. 除非在 bin/cdk-gd-tester.ts 檔案中手動設定專用帳戶區域變數,否則請設定您的 AWS CLI 預設帳戶和區域。如需詳細資訊,請參閱《 AWS Cloud Development Kit (AWS CDK) 開發人員指南》中的環境

  2. 執行下列命令來部署資源:

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

    最後一個命令 (cdk deploy) 會代表您建立 AWS 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 執行個體類型指南》中的可用大小

步驟 3 - 執行測試人員指令碼

這是一個兩步驟程序,首先需要使用測試驅動程式啟動工作階段,然後執行指令碼以產生具有特定資源組合的 GuardDuty 問題清單。

  1. 部署 資源後,請將區域碼儲存到目前終端機工作階段中的變數。使用以下命令,並將 us-east-1 取代為您部署資源的區域碼:

    $ REGION=us-east-1
  2. 測試人員指令碼只能透過 AWS Systems Manager (SSM) 使用。若要在測試器主機執行個體上啟動互動式 shell,請查詢主機 InstanceId

  3. 使用以下命令開始測試者指令碼的工作階段:

    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)

測試人員指令碼是以 Python 為基礎的程式,可動態建置 bash 指令碼,以根據您的輸入產生問題清單。您可以靈活地根據一或多個 AWS 資源類型、GuardDuty 保護計劃、 威脅目的 (策略)基礎資料來源、 或 產生問題清單GuardDuty 問題清單測試人員指令碼可以產生

使用下列命令範例做為參考,並執行一或多個命令來產生您要探索的調查結果:

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

選擇偏好的方法來檢視帳戶中產生的調查結果。

GuardDuty console
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/guardduty/:// 開啟 GuardDuty 主控台。

  2. 在導覽窗格中,選擇調查結果

  3. 從問題清單資料表中,選取要檢視其詳細資訊的問題清單。這會開啟調查結果詳細資訊面板。如需相關資訊,請參閱 了解和產生 Amazon GuardDuty 調查結果

  4. 如果您想要篩選這些問題清單,請使用資源標籤索引鍵和值。例如,若要篩選為 Amazon EC2 執行個體產生的調查結果,請使用執行個體標籤金鑰和執行個體標籤金鑰CreatedByGuardDuty Test Script tag key:value pair。

API
AWS CLI
  • 執行下列 AWS CLI 命令來檢視產生的調查結果,並使用適當的值取代 us-east-112abc34d567e8fa901bc2d34EXAMPLE

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

    若要尋找detectorId您帳戶和目前區域的 ,請參閱 https://https://console.aws.amazon.com/guardduty/ 主控台中的設定頁面,或執行 ListDetectors API。

    如需可用來篩選調查結果的參數的詳細資訊,請參閱 AWS CLI 命令參考中的清單尋找

步驟 4 - 清除 AWS 測試資源

當測試人員指令碼結束時,在步驟 3 - 執行測試人員指令碼返回原始狀態期間進行的帳戶層級設定和其他組態狀態更新。

執行測試人員指令碼之後,您可以選擇清除 AWS 測試資源。您可以選擇使用下列其中一種方法來執行此操作:

常見問題的疑難排解

GuardDuty 已識別常見問題,並建議疑難排解步驟:

  • Cloud assembly schema version mismatch – 將 AWS CDK CLI 更新至與所需雲端組件版本相容的版本,或更新至最新的可用版本。如需詳細資訊,請參閱 AWS CDK CLI 相容性

  • Docker permission denied – 將專用帳戶使用者新增至 dockerdocker-users,讓專用帳戶可以執行命令。如需步驟的詳細資訊,請參閱協助程式通訊端選項

  • Your requested instance type is not supported in your requested Availability Zone – 某些可用區域不支援特定執行個體類型。若要識別哪些可用區域支援您偏好的執行個體類型,並再次嘗試部署 AWS 資源,請執行下列步驟:

    1. 選擇偏好的方法來判斷哪些可用區域支援您的執行個體類型:

      Console
      識別支援偏好執行個體類型的可用區域
      1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/ec2/:// 開啟 Amazon EC2 主控台。

      2. 使用頁面右上角的區域 AWS 選擇器,選擇您要啟動執行個體的區域。

      3. 在導覽窗格中的執行個體下,選擇執行個體類型

      4. 執行個體類型表格中,選擇偏好的執行個體類型。

      5. 聯網下,檢視可用區域下列出的區域

        根據此資訊,您可能需要選擇可以部署資源的新區域。

      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

      執行此命令時,如果您收到錯誤,請確定您使用的是最新版本的 AWS CLI。如需詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的故障診斷一節。

    2. 嘗試再次部署 AWS 資源,並指定支援您偏好執行個體類型的可用區域。

      重新嘗試部署 AWS 資源
      1. bin/cdk-gd-tester.ts 檔案中設定預設區域。

      2. 若要指定可用區域,請開啟 amazon-guardduty-tester/lib/common/network/vpc.ts 檔案。

      3. 在此檔案中,maxAzs: 2,將 取代為 ,您必須在availabilityZones: ['us-east-1a', 'us-east-1c'],其中指定執行個體類型的可用區域。

      4. 繼續執行 下的其餘步驟部署 AWS 資源的步驟