選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

自動稽核允許從公有 IP 地址存取 AWS 的安全群組 - AWS 方案指引

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

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

自動稽核允許從公有 IP 地址存取 AWS 的安全群組

由 Eugene Shifer (AWS) 和 Stephen DiCato (AWS) 建立

Summary

作為安全最佳實務,重要的是將 AWS 資源的暴露量降至最低,只暴露在絕對必要的範圍內。例如,提供一般公有需求的 Web 伺服器需要允許從網際網路傳入存取,但對其他工作負載的存取應限制在特定網路,以減少不必要的暴露。Amazon Virtual Private Cloud (Amazon VPC) 中的安全群組是一種有效的控制,可協助您限制資源存取。不過,評估安全群組可能是一項繁瑣的任務,尤其是在多帳戶架構中。 AWS Config 規則AWS Security Hub 控制項可協助您識別安全群組,允許從公有網際網路 (0.0.0.0/0) 存取特定網路通訊協定,例如 Secure Shell (SSH)、HTTP、HTTP 和 Windows 遠端桌面通訊協定 (RDP)。不過,如果服務在非標準連接埠上執行,或存取僅限於特定公有 IP 地址,則這些規則和控制項不適用。例如,當 Web 服務與 TCP 連接埠 8443 而非標準 TCP 連接埠 443 相關聯時,可能會發生這種情況。當開發人員能夠從其家用網路存取伺服器時,也可能發生這種情況,例如用於測試目的。

若要解決此問題,您可以使用基礎設施做為此模式中提供的程式碼 (IaC) 解決方案,來識別安全群組,允許從任何非私有 (RFC 1918 不合規) IP 地址存取您 AWS 帳戶 或 AWS 組織中的任何工作負載。AWS CloudFormation 範本會佈建自訂 AWS Config 規則、 AWS Lambda函數和必要的許可。您可以將它部署為單一帳戶中的堆疊,或部署為整個組織的堆疊集,透過 進行管理 AWS Organizations。

先決條件和限制

先決條件

  • 作用中 AWS 帳戶

  • 使用 GitHub 的經驗

  • 如果您要部署到單一 AWS 帳戶:

    • 建立 CloudFormation 堆疊的許可

    • 在目標帳戶中AWS Config 設定

    • (選用) 在目標帳戶中設定 Security Hub

  • 如果您要部署到 AWS 組織:

    • 建立 CloudFormation 堆疊集的許可

    • 使用 AWS Organizations 整合設定 Security Hub

    • 在您部署此解決方案的帳戶中AWS Config 設定

    • 將 指定 AWS 帳戶 為 AWS Config 和 Security Hub 的委派管理員

限制

  • 如果您要部署到未啟用 Security Hub 的個別帳戶,您可以使用 AWS Config 來評估問題清單。

  • 如果您要部署到沒有 AWS Config 和 Security Hub 委派管理員的組織,您必須登入個別成員帳戶才能檢視問題清單。

  • 如果您使用 AWS Control Tower 來管理和管理組織中的帳戶,請使用 Customizations for AWS Control Tower (CfCT) 在此模式中部署 IaC。使用 CloudFormation AWS Control Tower 主控台會建立來自護欄的組態偏離,並要求您重新註冊組織單位 (OUs) 或受管帳戶。

  • 有些 AWS 服務 完全無法使用 AWS 區域。如需區域可用性,請參閱AWS 服務 依區域。如需特定端點,請參閱服務端點和配額頁面,然後選擇服務的連結。

架構

部署至個別 AWS 帳戶

下列架構圖顯示單一 中 AWS 資源的部署 AWS 帳戶。您可以透過 CloudFormation 主控台直接使用 CloudFormation 範本來佈建資源。如果啟用 Security Hub,您可以在 AWS Config 或 Security Hub 中檢視結果。如果 Security Hub 未啟用,您只能在 中檢視結果 AWS Config。

將 IaC 範本部署為單一 AWS 帳戶中的 CloudFormation 堆疊。

該圖顯示以下工作流程:

  1. 您可以建立 CloudFormation 堆疊。這會部署 Lambda 函數和 AWS Config 規則。規則和函數都會設定 AWS Identity and Access Management (IAM) 許可,這是在 AWS Config 和 日誌中發佈資源評估所需的許可。

  2. 此 AWS Config 規則以偵測評估模式運作,並每 24 小時叫用 Lambda 函數。

  3. Lambda 函數會評估安全群組並傳送更新至 AWS Config。

  4. Security Hub 會收到所有 AWS Config 調查結果。

  5. 您可以檢視 Security Hub 或 中的調查結果 AWS Config,取決於您在帳戶中設定的服務。

部署至 AWS 組織

下圖顯示透過 AWS Organizations 和 管理的多個帳戶間部署模式 AWS Control Tower。您可以透過 CfCT 部署 CloudFormation 範本。評估結果集中在委派管理員帳戶中的 Security Hub 中。圖表的 AWS CodePipeline 工作流程區段顯示 CfCT 部署期間發生的背景步驟。

在 AWS 組織中,將 IaC 範本部署為 CloudFormation 堆疊集。

該圖顯示以下工作流程:

  1. 在 管理帳戶中,您將 IaC 範本的壓縮 (ZIP) 檔案上傳至 CfCT 部署的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

  2. CfCT 管道會解壓縮 檔案、執行 cfn-nag (GitHub) 檢查,並將範本部署為 CloudFormation 堆疊集。

  3. 根據您在 CfCT 資訊清單檔案中指定的組態,CloudFormation StackSets 會將堆疊部署到個別帳戶或指定的 OUs。這會在目標帳戶中部署 Lambda 函數和 AWS Config 規則。規則和函數都會使用 IAM 許可設定,這些許可是在 AWS Config 和 日誌中發佈資源評估所需的許可。

  4. 此 AWS Config 規則以偵測評估模式運作,並每 24 小時叫用 Lambda 函數。

  5. Lambda 函數會評估安全群組並傳送更新至 AWS Config。

  6. AWS Config 會將所有調查結果轉送至 Security Hub。

  7. Security Hub 調查結果會在委派的管理員帳戶中彙總。

  8. 您可以在委派管理員帳戶中檢視 Security Hub 中的彙總調查結果。

工具

AWS 服務

  • AWS CloudFormation 可協助您設定 AWS 資源、快速且一致地佈建資源,以及在整個 AWS 帳戶 和 生命週期中管理資源 AWS 區域。

  • AWS Config 提供 中資源的詳細檢視 AWS 帳戶 及其設定方式。它可協助您識別資源彼此的關係,以及其組態如何隨時間變化。An AWS Config rule 會定義您的理想資源組態設定,並可 AWS Config 評估您的 AWS 資源是否符合規則中的條件。

  • AWS Control Tower 可協助您設定和管理 AWS 多帳戶環境,並遵循規範最佳實務。自訂 for AWS Control Tower (CfCT) 可協助您自訂 AWS Control Tower 登陸區域,並保持符合 AWS 最佳實務。此解決方案的自訂是透過 CloudFormation 範本 AWS Organizations 和服務控制政策 (SCPs實作。

  • AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。

  • AWS Organizations 是一種帳戶管理服務,可協助您將多個 合併 AWS 帳戶 到您建立並集中管理的組織。

  • AWS Security Hub 提供安全狀態的完整檢視 AWS。它還可協助您根據安全產業標準和最佳實務來檢查 AWS 環境。

其他工具

  • Python 是一種一般用途的電腦程式設計語言。

程式碼儲存庫

此模式的程式碼可在 GitHub Detect 易受攻擊的安全群組儲存庫中使用。

最佳實務

我們建議您遵守下列資源中的最佳實務:

史詩

任務描述所需的技能

決定您的部署策略。

檢閱解決方案和程式碼,以判斷您 AWS 環境的部署策略。判斷您要部署到單一帳戶或 AWS 組織。

應用程式擁有者、一般 AWS

複製儲存庫。

輸入下列命令來複製偵測易受攻擊的安全群組儲存庫:

git clone https://github.com/aws-samples/detect-public-security-groups.git
應用程式開發人員、應用程式擁有者

驗證 Python 版本。

  1. 導覽至複製儲存庫中的最上層目錄:

    cd detect-public-security-groups
  2. 開啟 Security-Group-Public-Assessment.yaml

  3. SgPublicAccessCheckLambdaFunction 資源中,確認 Python 版本與您的目標相容 AWS 區域。根據預設,此函數會使用 Python 3.12。如需詳細資訊,請參閱 AWS Lambda 新增對 Python 3.12 的支援。如有必要,請更新 Python 版本。

  4. 儲存並關閉 Security-Group-Public-Assessment.yaml

AWS 管理員、應用程式開發人員

檢閱 CloudFormation 範本

任務描述所需的技能

決定您的部署策略。

檢閱解決方案和程式碼,以判斷您 AWS 環境的部署策略。判斷您要部署到單一帳戶或 AWS 組織。

應用程式擁有者、一般 AWS

複製儲存庫。

輸入下列命令來複製偵測易受攻擊的安全群組儲存庫:

git clone https://github.com/aws-samples/detect-public-security-groups.git
應用程式開發人員、應用程式擁有者

驗證 Python 版本。

  1. 導覽至複製儲存庫中的最上層目錄:

    cd detect-public-security-groups
  2. 開啟 Security-Group-Public-Assessment.yaml

  3. SgPublicAccessCheckLambdaFunction 資源中,確認 Python 版本與您的目標相容 AWS 區域。根據預設,此函數會使用 Python 3.12。如需詳細資訊,請參閱 AWS Lambda 新增對 Python 3.12 的支援。如有必要,請更新 Python 版本。

  4. 儲存並關閉 Security-Group-Public-Assessment.yaml

AWS 管理員、應用程式開發人員
任務描述所需的技能

部署 CloudFormation 範本。

將 CloudFormation 範本部署到您的 AWS 環境中。執行以下任意一項:

  • 如果您要部署至單一 AWS 帳戶,請遵循建立堆疊中的指示。

  • 如果您要部署到非 管理的組織 AWS Control Tower,請遵循建立堆疊集中的指示。

  • 如果您要部署到由 管理的組織 AWS Control Tower,請參閱建置您自己的自訂中的說明。

應用程式開發人員、AWS 管理員、一般 AWS

驗證部署。

CloudFormation 主控台中,確認堆疊或堆疊集已成功部署。

AWS 管理員、應用程式擁有者

部署 CloudFormation 範本

任務描述所需的技能

部署 CloudFormation 範本。

將 CloudFormation 範本部署到您的 AWS 環境中。執行以下任意一項:

  • 如果您要部署至單一 AWS 帳戶,請遵循建立堆疊中的指示。

  • 如果您要部署到非 管理的組織 AWS Control Tower,請遵循建立堆疊集中的指示。

  • 如果您要部署到由 管理的組織 AWS Control Tower,請參閱建置您自己的自訂中的說明。

應用程式開發人員、AWS 管理員、一般 AWS

驗證部署。

CloudFormation 主控台中,確認堆疊或堆疊集已成功部署。

AWS 管理員、應用程式擁有者
任務描述所需的技能

檢視 AWS Config 規則調查結果。

在 Security Hub 中,執行下列動作來檢視個別問題清單:

  1. 開啟 Security Hub 主控台

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

  3. 新增篩選條件方塊中,新增下列篩選條件:

    • 合規狀態FAILED

    • 標題SgPublicAccessCheck

  4. 選擇套用

在 Security Hub 中,執行下列動作以檢視依 分組的問題清單總數 AWS 帳戶:

  1. 開啟 Security Hub 主控台

  2. 在導覽窗格中,選擇 Insights

  3. 選擇 Create insight (建立洞見)

  4. 選取洞見的分組屬性:

    1. 選擇搜尋方塊以顯示篩選條件選項。

    2. 選擇 Group by (分組依據)

    3. 選取 AwsAccountId

    4. 選擇套用

  5. 新增篩選條件方塊中,新增下列篩選條件:

    • 標題SgPublicAccessCheck

    • 合規狀態FAILED

  6. 選擇 Create insight (建立洞見)

  7. 輸入 Insight 名稱,然後選擇建立洞見

在 中 AWS Config,若要檢視問題清單,請遵循 AWS Config 文件中檢視合規資訊和評估結果中的指示。

AWS 管理員、AWS 系統管理員、雲端管理員

檢閱問題清單

任務描述所需的技能

檢視 AWS Config 規則調查結果。

在 Security Hub 中,執行下列動作來檢視個別問題清單:

  1. 開啟 Security Hub 主控台

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

  3. 新增篩選條件方塊中,新增下列篩選條件:

    • 合規狀態FAILED

    • 標題SgPublicAccessCheck

  4. 選擇套用

在 Security Hub 中,執行下列動作以檢視依 分組的問題清單總數 AWS 帳戶:

  1. 開啟 Security Hub 主控台

  2. 在導覽窗格中,選擇 Insights

  3. 選擇 Create insight (建立洞見)

  4. 選取洞見的分組屬性:

    1. 選擇搜尋方塊以顯示篩選條件選項。

    2. 選擇 Group by (分組依據)

    3. 選取 AwsAccountId

    4. 選擇套用

  5. 新增篩選條件方塊中,新增下列篩選條件:

    • 標題SgPublicAccessCheck

    • 合規狀態FAILED

  6. 選擇 Create insight (建立洞見)

  7. 輸入 Insight 名稱,然後選擇建立洞見

在 中 AWS Config,若要檢視問題清單,請遵循 AWS Config 文件中檢視合規資訊和評估結果中的指示。

AWS 管理員、AWS 系統管理員、雲端管理員

故障診斷

問題解決方案

CloudFormation 堆疊集建立或刪除失敗。

部署 AWS Control Tower 時,它會強制執行必要的護欄,並取得 AWS Config 對彙總器和規則的控制。這包括防止透過 CloudFormation 進行任何直接變更。若要正確部署或移除此 CloudFormation 範本,包括所有相關資源,您必須使用 CfCT。

CfCT 無法刪除 CloudFormation 範本。

如果即使在資訊清單檔案進行必要變更並移除範本檔案之後,CloudFormation 範本仍存在,請確認資訊清單檔案包含 enable_stack_set_deletion 參數,且值設定為 false。如需詳細資訊,請參閱 CfCT 文件中的刪除堆疊集

相關資源

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。