選取您的 Cookie 偏好設定

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

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

使用 根據 IP 地址或地理位置限制存取 AWS WAF - AWS 方案指引

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

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

使用 根據 IP 地址或地理位置限制存取 AWS WAF

由 Louis Hourcade (AWS) 建立

Summary

AWS WAF 是 Web 應用程式防火牆,可協助保護 Web 應用程式和 APIs 免受可能影響可用性、危及安全性或消耗過多資源的常見 Web 漏洞和機器人的影響。中的 Web 存取控制清單 (Web ACLs) AWS WAF 可讓您控制流量到達應用程式的方式。在 Web ACL 中,您可以新增規則或規則群組,這些規則或規則群組旨在允許合法流量、控制機器人流量,以及封鎖常見的攻擊模式。如需詳細資訊,請參閱AWS WAF 運作方式

您可以將下列類型的規則與 AWS WAF Web ACLs建立關聯:

  • 受管規則群組 – AWS 受管規則團隊和 AWS Marketplace 賣方提供預先設定的規則集。某些受管規則群組旨在協助保護特定類型的 Web 應用程式。其他則針對已知威脅或常見漏洞提供廣泛的保護。

  • 自訂規則自訂規則群組 – 您也可以建立規則和規則群組,以自訂對 Web 應用程式和 APIs存取。例如,您可以根據特定 IP 地址清單或國家/地區清單來限制流量。

透過使用此模式和相關聯的程式碼儲存庫,您可以使用 AWS Cloud Development Kit (AWS CDK) 部署具有自訂規則的 AWS WAF Web ACL。 ACLs 這些規則會根據最終使用者的 IP 地址或地理位置來限制對 Web 應用程式資源的存取。您也可以選擇性地連接數個受管規則群組。

先決條件和限制

先決條件

限制

  • 您只能在 AWS WAF 可用的 AWS 區域 中使用此模式。如需區域可用性,請參閱AWS 服務 依區域

工具

AWS 服務

  • AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可協助您在程式碼中定義和佈建 AWS 雲端 基礎設施。

  • AWS WAF 是 Web 應用程式防火牆,可協助您監控轉送至受保護 Web 應用程式資源的 HTTP 和 HTTPS 請求。

程式碼儲存庫

此模式的程式碼可在 GitHub IP 和含儲存庫的地理位置限制 AWS WAF中使用。此程式碼會部署兩個 AWS WAF Web ACLs。第一個是區域性 Web ACL,適用於 Amazon API Gateway 資源。第二個是 Amazon CloudFront 資源的全域 Web ACL。這兩個 Web ACLs都包含下列自訂規則:

  • IPMatch 會封鎖來自不允許 IP 地址的請求。

  • GeoMatch 會封鎖來自不允許國家/地區的請求。

在部署期間,您可以選擇將所有下列受管規則群組連接至您的 Web ACLs:

  • 核心規則集 (CRS) – 此規則群組包含通常適用於 Web 應用程式的規則。它有助於防止各種漏洞遭到利用,包括 OWASP 出版物中所述的一些高風險和常見漏洞,例如 OWASP 前 10 名

  • 管理員保護 – 此規則群組包含的規則可協助您封鎖對公開管理頁面的外部存取。

  • 已知輸入錯誤 – 此規則群組可協助封鎖已知為無效,並與漏洞的利用或探索相關聯的請求模式。

  • Amazon IP 評價清單 – 此規則群組包含以 Amazon 內部威脅情報為基礎的規則。它可協助您封鎖通常與機器人或其他威脅相關聯的 IP 地址。

  • Linux 作業系統受管規則群組 – 此規則群組可協助封鎖與 Linux 漏洞利用相關聯的請求模式,包括 Linux 特定的本機檔案包含 (LFI) 攻擊。

  • SQL 資料庫受管規則群組 – 此規則群組可協助封鎖與利用 SQL 資料庫相關聯的請求模式,例如 SQL 注入攻擊。

史詩

任務描述所需的技能

複製儲存庫。

輸入下列命令,將 IP 和地理位置限制與 AWS WAF 儲存庫複製到本機工作站:

git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git
Git

設定規則。

  1. 在複製的儲存庫中,開啟 app.py 檔案。

  2. 修改下列變數的值以自訂規則:

    aws_acccount = "AWS_ACCOUNT" region = "AWS_REGION" ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"] geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"] aws_managed_rules = True

    其中:

    • aws_account 是目標的 ID AWS 帳戶。

    • region 是 API Gateway 資源 AWS 區域 的 Web ACL 目標。

      注意

      適用於 CloudFront 的 Web ACL 資源是全域的,並將部署在 us-east-1區域中。

    • ip_list 是允許存取的 CIDR 範圍清單。

    • geo_list 是允許存取的國家/地區清單。如需有效值,請參閱 AWS WAF 文件

    • aws_managed_rules 控制是否將受管規則群組新增至 Web ACL。如果此值為 True,則會新增這些值。如果此值為 False,則會排除這些值。

  3. 儲存並關閉 app.py 檔案。

一般 AWS、Python

設定 AWS WAF Web ACLs

任務描述所需的技能

複製儲存庫。

輸入下列命令,將 IP 和地理位置限制與 AWS WAF 儲存庫複製到本機工作站:

git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git
Git

設定規則。

  1. 在複製的儲存庫中,開啟 app.py 檔案。

  2. 修改下列變數的值以自訂規則:

    aws_acccount = "AWS_ACCOUNT" region = "AWS_REGION" ip_list = ["CIDR_RANGE_1", "CIDR_RANGE_2"] geo_list = ["COUNTRY_CODE_1", "COUNTRY_CODE_2"] aws_managed_rules = True

    其中:

    • aws_account 是目標的 ID AWS 帳戶。

    • region 是 API Gateway 資源 AWS 區域 的 Web ACL 目標。

      注意

      適用於 CloudFront 的 Web ACL 資源是全域的,並將部署在 us-east-1區域中。

    • ip_list 是允許存取的 CIDR 範圍清單。

    • geo_list 是允許存取的國家/地區清單。如需有效值,請參閱 AWS WAF 文件

    • aws_managed_rules 控制是否將受管規則群組新增至 Web ACL。如果此值為 True,則會新增這些值。如果此值為 False,則會排除這些值。

  3. 儲存並關閉 app.py 檔案。

一般 AWS、Python
任務描述所需的技能

引導您的 AWS 環境。

如果尚未完成,您需要先啟動 AWS 環境,才能部署 AWS CDK 應用程式。

  1. 在 AWS CDK CLI 中,輸入下列命令來引導us-east-1區域:

    cdk bootstrap aws://<account-id>/us-east-1
  2. 如果您要在 以外的區域部署 API Gateway 的 Web ACLus-east-1,請輸入下列命令來引導目標區域:

    cdk bootstrap aws://<account-id>/<region>
一般 AWS

部署 AWS CDK 應用程式。

  1. 輸入下列命令來部署 AWS CDK 應用程式:

    cdk deploy --all
  2. 等待 AWS CloudFormation 堆疊部署完成。

一般 AWS

引導和部署程式碼

任務描述所需的技能

引導您的 AWS 環境。

如果尚未完成,您需要先啟動 AWS 環境,才能部署 AWS CDK 應用程式。

  1. 在 AWS CDK CLI 中,輸入下列命令來引導us-east-1區域:

    cdk bootstrap aws://<account-id>/us-east-1
  2. 如果您要在 以外的區域部署 API Gateway 的 Web ACLus-east-1,請輸入下列命令來引導目標區域:

    cdk bootstrap aws://<account-id>/<region>
一般 AWS

部署 AWS CDK 應用程式。

  1. 輸入下列命令來部署 AWS CDK 應用程式:

    cdk deploy --all
  2. 等待 AWS CloudFormation 堆疊部署完成。

一般 AWS
任務描述所需的技能

確認 Web ACLs已成功部署。

  1. 登入 AWS Management Console,然後開啟 AWS WAF 主控台

  2. 在導覽窗格中,選擇 Web ACL

  3. 在 清單中 AWS 區域,選擇全域 (CloudFront)

  4. 確認已部署新的 CloudFront Web ACL,並確認它具有您定義的 IP 地址和地理位置規則。此 Web ACL 的預設名稱為 WebACLCloudfront-<ID>

  5. 在 清單中 AWS 區域,選擇您部署堆疊的區域。

  6. 確認已部署 API Gateway 資源的新 Web ACL。確認它具有您定義的 IP 地址和地理位置規則。此 Web ACL 的預設名稱為 WebACLApiGW-<ID>

一般 AWS

(選用) 將 Web ACLs 與資源建立關聯。

將 AWS WAF Web ACLs 與您的 AWS 資源建立關聯,例如 Application Load Balancer、API Gateway 或 CloudFront 分佈。如需說明,請參閱將 Web ACL 與 資源建立關聯或取消關聯AWS。https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html如需範例,請參閱 AWS CDK 文件中的類別 CfnWebACLAssociation (建構)

一般 AWS

驗證部署

任務描述所需的技能

確認 Web ACLs已成功部署。

  1. 登入 AWS Management Console,然後開啟 AWS WAF 主控台

  2. 在導覽窗格中,選擇 Web ACL

  3. 在 清單中 AWS 區域,選擇全域 (CloudFront)

  4. 確認已部署新的 CloudFront Web ACL,並確認它具有您定義的 IP 地址和地理位置規則。此 Web ACL 的預設名稱為 WebACLCloudfront-<ID>

  5. 在 清單中 AWS 區域,選擇您部署堆疊的區域。

  6. 確認已部署 API Gateway 資源的新 Web ACL。確認它具有您定義的 IP 地址和地理位置規則。此 Web ACL 的預設名稱為 WebACLApiGW-<ID>

一般 AWS

(選用) 將 Web ACLs 與資源建立關聯。

將 AWS WAF Web ACLs 與您的 AWS 資源建立關聯,例如 Application Load Balancer、API Gateway 或 CloudFront 分佈。如需說明,請參閱將 Web ACL 與 資源建立關聯或取消關聯AWS。https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html如需範例,請參閱 AWS CDK 文件中的類別 CfnWebACLAssociation (建構)

一般 AWS
任務描述所需的技能

刪除堆疊。

  1. 取消 Web ACL 與任何 AWS 資源的關聯。如需說明,請參閱 AWS WAF 文件

  2. 在 AWS CDK CLI 中,輸入下列命令來刪除 AWS CDK 應用程式。

    cdk destroy --all
一般 AWS

清除資源

任務描述所需的技能

刪除堆疊。

  1. 取消 Web ACL 與任何 AWS 資源的關聯。如需說明,請參閱 AWS WAF 文件

  2. 在 AWS CDK CLI 中,輸入下列命令來刪除 AWS CDK 應用程式。

    cdk destroy --all
一般 AWS

相關資源

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