を使用して IP アドレスまたは位置情報に基づいてアクセスを制限する AWS WAF - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用して IP アドレスまたは位置情報に基づいてアクセスを制限する AWS WAF

Louis Hourcade (Amazon Web Services)

概要

AWS WAF は、可用性に影響を与えたり、セキュリティを侵害したり、リソースを過剰に消費させたりする一般的なウェブエクスプロイトやボットからウェブアプリケーションおよび API の保護に役立つウェブアプリケーションファイアウォールです。のウェブアクセスコントロールリスト (ウェブ ACLs) AWS WAF を使用すると、トラフィックがアプリケーションに到達する方法を制御できます。ウェブ ACL では、正当なトラフィックを許可し、ボットトラフィックを制御し、一般的な攻撃パターンをブロックするように設計されたルールまたはルールグループをユーザーが追加します。詳細については、「 AWS WAF の仕組み」を参照してください。

AWS WAF ウェブ ACLs には、次のタイプのルールを関連付けることができます。

  • マネージドルールグループ – AWS マネージドルールチームと AWS Marketplace 販売者は、事前設定されたルールセットを提供します。一部のマネージドルールグループは、ウェブアプリケーションを保護するために設計されています。他のものは、既知の脅威や一般的な脆弱性に対して広範な保護を提供します。

  • カスタムルールカスタムルールグループ – ウェブアプリケーションと API へのアクセスをカスタマイズするルールとルールグループを作成することもできます。例えば、特定の IP アドレスのリストまたは国のリストに基づいてトラフィックを制限できます。

このパターンと関連するコードリポジトリを使用することで、 を使用してカスタムルールで AWS WAF ウェブ ACLs AWS Cloud Development Kit (AWS CDK)をデプロイできます。これらのルールは、エンドユーザーの IP アドレスまたは位置情報に基づいてウェブアプリケーションリソースへのアクセスを制限します。オプションで、いくつかのマネージドルールグループをアタッチすることもできます。

前提条件と制限

前提条件

制限事項

  • このパターンは、 AWS リージョン AWS WAF が利用可能な でのみ使用できます。利用可能なリージョンについては、「AWS のサービス by Region」を参照してください。

ツール

AWS のサービス

  • AWS Cloud Development Kit (AWS CDK) は、コードで AWS クラウド インフラストラクチャを定義およびプロビジョニングするのに役立つソフトウェア開発フレームワークです。

  • AWS WAF は、保護されたウェブアプリケーションリソースに転送される HTTP と HTTPS リクエストをモニタリングできるウェブアプリケーションファイアウォールです。

コードリポジトリ

このパターンのコードは、GitHub の IP and geolocation restriction with AWS WAF リポジトリで入手できます。コードは 2 つの AWS WAF ウェブ ACLs。1 つ目は、Amazon API Gateway リソース向けのリージョナルウェブ ACL です。2 つ目は、Amazon CloudFront リソースのグローバルウェブ ACL です。どちらのウェブ ACL にも、次のカスタムルールが含まれています。

  • IPMatch は、許可されていない IP アドレスからのリクエストをブロックします。

  • GeoMatch は、許可されていない国からのリクエストをブロックします。

デプロイ中に、オプションで以下のすべてのマネージドルールグループをウェブ ACL にアタッチできます。

  • コアルールセット (CRS) – ルールグループには、ウェブアプリケーションに一般的に適用可能なルールが含まれています。これにより、OWASP Top 10 などの OWASP の出版物に記載されている、リスクが高く一般的に発生するいくつかの脆弱性を含む、さまざまな脆弱性の悪用に対する保護を支援します。

  • 管理者保護 – このルールグループには、公開されている管理ページへの外部アクセスをブロックするために役立つルールが含まれています。

  • 既知の不正な入力 – このルールグループは、無効であることが判明しているリクエストパターンおよび脆弱性の悪用または発見に関連付けられているリクエストパターンのブロックを支援します。

  • Amazon IP 評価リスト – このルールグループには、Amazon 内部脅威インテリジェンスに基づくルールが含まれています。これは、通常ボットやその他の脅威に関連付けられている IP アドレスのブロックを支援します。

  • Linux オペレーティングシステムマネージドルールグループ – このルールグループは、Linux 固有のローカルファイルインクルージョン (LFI) 攻撃など、Linux の脆弱性の悪用に関連するリクエストパターンのブロックを支援します。

  • SQL データベースマネージドルールグループ – このルールグループは、SQL インジェクション攻撃などの SQL データベースの悪用に関連するリクエストパターンのブロックを支援します。

エピック

タスク説明必要なスキル

リポジトリのクローン作成

次のコマンドを入力して、IP and geolocation restriction with 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 リージョン のウェブ ACL のターゲットです。

      注記

      CloudFront リソースのウェブ ACL はグローバルであり、us-east-1 リージョンにデプロイされます。

    • ip_list は、アクセスが許可されている CIDR 範囲のリストです。

    • geo_list は、アクセスが許可されている国のリストです。有効な値については、AWS WAF のドキュメントを参照してください。

    • aws_managed_rules は、マネージドルールグループがウェブ ACL に追加されるかどうかを制御します。この値が True の場合、追加されます。この値が False の場合、除外されます。

  3. app.py ファイルを保存して閉じます。

AWS 全般、Python
タスク説明必要なスキル

AWS 環境をブートストラップします。

まだ完了していない場合は、 AWS CDK アプリケーションをデプロイする前に AWS 環境をブートストラップする必要があります。

  1. AWS CDK CLI で、次のコマンドを入力してus-east-1リージョンをブートストラップします。

    cdk bootstrap aws://<account-id>/us-east-1
  2. API Gateway のウェブ ACL を us-east-1 以外のリージョンにデプロイする場合は、次のコマンドを入力してターゲットリージョンをブートストラップします。

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

AWS CDK アプリケーションをデプロイします。

  1. 次のコマンドを入力して AWS CDK アプリケーションをデプロイします。

    cdk deploy --all
  2. AWS CloudFormation スタックのデプロイが完了するまで待ちます。

AWS 全般
タスク説明必要なスキル

ウェブ ACL が正常にデプロイされたことを確認します。

  1. にサインインし AWS マネジメントコンソール、AWS WAF コンソールを開きます。

  2. ナビゲーションペインで [Web ACLs] (ウェブ ACL) を選択します。

  3. のリストで AWS リージョン、グローバル (CloudFront) を選択します。

  4. 新しい CloudFront ウェブ ACL がデプロイされたことを確認し、定義した IP アドレスと位置情報ルールが含まれていることを確認します。このウェブ ACL のデフォルト名は WebACLCloudfront-<ID> です。

  5. のリストで AWS リージョン、スタックをデプロイしたリージョンを選択します。

  6. API Gateway リソースの新しいウェブ ACL がデプロイされたことを確認します。定義した IP アドレスと位置情報ルールが含まれていることを確認します。このウェブ ACL のデフォルト名は WebACLApiGW-<ID> です。

AWS 全般

(オプション) ウェブ ACL をリソースに関連付けます。

Application Load Balancer、API Gateway、CloudFront ディストリビューションなどの AWS リソースに AWS WAF ウェブ ACLs を関連付けます。手順については、「Associating or disassociating a web ACL with an AWS resource」を参照してください。例については、 AWS CDK ドキュメントの「クラス CfnWebACLAssociation (コンストラクト)」を参照してください。

AWS 全般
タスク説明必要なスキル

スタックを削除します。

  1. ウェブ ACL と AWS リソースの関連付けを解除します。手順については、AWS WAF ドキュメントを参照してください。

  2. AWS CDK CLI で、次のコマンドを入力して AWS CDK アプリケーションを削除します。

    cdk destroy --all
AWS 全般

関連リソース