AWS WAF を使用して IP アドレスまたは位置情報に基づいてアクセスを制限する
Louis Hourcade (Amazon Web Services)
概要
AWS WAF は、可用性に影響を与えたり、セキュリティを侵害したり、リソースを過剰に消費させたりする一般的なウェブエクスプロイトやボットからウェブアプリケーションおよび API の保護に役立つウェブアプリケーションファイアウォールです。AWS WAF のウェブアクセスコントロールリスト (ウェブ ACL) を使用すると、トラフィックがアプリケーションに到達する方法を制御できます。ウェブ ACL では、正当なトラフィックを許可し、ボットトラフィックを制御し、一般的な攻撃パターンをブロックするように設計されたルールまたはルールグループをユーザーが追加します。詳細については、AWS WAF の仕組みを参照してください。
次のタイプのルールを AWS WAF ウェブ ACL に関連付けることができます。
マネージドルールグループ – AWS マネージドルールチームと AWS Marketplace 販売者は、事前設定されたルールセットを提供します。一部のマネージドルールグループは、ウェブアプリケーションを保護するために設計されています。他のものは、既知の脅威や一般的な脆弱性に対して広範な保護を提供します。
カスタムルールとカスタムルールグループ – ウェブアプリケーションと API へのアクセスをカスタマイズするルールとルールグループを作成することもできます。例えば、特定の IP アドレスのリストまたは国のリストに基づいてトラフィックを制限できます。
このパターンと関連するコードリポジトリを使用することで、AWS Cloud Development Kit (AWS CDK) を使用してカスタムルールで AWS WAF ウェブ ACL をデプロイできます。これらのルールは、エンドユーザーの IP アドレスまたは位置情報に基づいてウェブアプリケーションリソースへのアクセスを制限します。オプションで、いくつかのマネージドルールグループをアタッチすることもできます。
前提条件と制限
前提条件
アクティブな AWS アカウント
AWS WAF リソースをデプロイするアクセス許可
AWS CDK がアカウントにインストールされ設定済み。
「インストール済み
」Git
機能制限
このパターンは、AWS WAF が利用可能な AWS リージョンでのみ使用できます。利用可能なリージョンについては、「AWS のサービス by Region
」を参照してください。
ツール
AWS のサービス
AWS Cloud Development Kit (AWS CDK) は、AWS クラウドのインフラストラクチャをコードで定義してプロビジョニングするのに役立つソフトウェア開発フレームワークです。
AWS WAF は、保護されたウェブアプリケーションリソースに転送される HTTP と HTTPS リクエストをモニタリングできるウェブアプリケーションファイアウォールです。
コードリポジトリ:
このパターンのコードは、GitHub の IP and geolocation restriction with AWS WAF
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 |
ルールを設定します。 |
| AWS 全般、Python |
| タスク | 説明 | 必要なスキル |
|---|---|---|
AWS 環境のブートストラップ。 | まだ完了していない場合は、AWS CDK アプリケーションをデプロイする前に AWS 環境をブートストラップする必要があります。
| AWS 全般 |
AWS CDK アプリケーションをデプロイします。 |
| AWS 全般 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
ウェブ ACL が正常にデプロイされたことを確認します。 |
| AWS 全般 |
(オプション) ウェブ ACL をリソースに関連付けます。 | Application Load Balancer、API Gateway、CloudFront ディストリビューションなどの AWS リソースに AWS WAF ウェブ ACL を関連付けます。手順については、「Associating or disassociating a web ACL with an AWS resource」を参照してください。例については、AWS CDK ドキュメントの「class CfnWebACLAssociation (construct)」を参照してください。 | AWS 全般 |
| タスク | 説明 | 必要なスキル |
|---|---|---|
スタックを削除します。 |
| AWS 全般 |
関連リソース
API リファレンス (AWS CDK ドキュメント)
aws-cdk-lib.aws_wafv2 module (AWS CDK ドキュメント)
Working with web ACLs (AWS WAF ドキュメント)
Managing your own rule groups (AWS WAF ドキュメント)
Rules (AWS WAF ドキュメント)