Amazon CloudFront と AWS WAF を使用し、ウェブアプリケーションをウェブの脅威から保護したいと考えています。
簡単な説明
一般的なアプリケーション層への攻撃には、SQL インジェクションやクロスサイトスクリプティング (XSS) などがあります。これらの攻撃からウェブアプリケーションを保護するには、AWS WAF でCloudFront を構成し、エッジロケーションでの HTTP/HTTPS リクエストを検査します。この方法では、悪意のあるトラフィックがオリジンサーバーに到達する前にブロックできます。詳細については、「AWS WAF での CloudFront ディストリビューション保護の一般的なユースケース」を参照してください。
解決策
前提条件:
- トラフィックを Amazon Elastic Compute Cloud (Amazon EC2) またはその他の AWS リージョナルエンドポイントにルーティングする Application Load Balancer。
- アプリケーションのコンテンツがデプロイされており、実行中であること。
- CloudFront と AWS WAF を設定するために必要な権限。
CloudFront を設定する
CloudFront を設定し、セキュリティシールドとして機能させるには、次の手順を実行します。
- CloudFront コンソールを開きます。
- ディストリビューションを作成します。
- [オリジンのドメイン] フィールドにウェブサイトのアドレスを入力します。
- [ビューワープロトコルポリシー] で [HTTP を HTTPS にリダイレクト] を選択します。
- [ディストリビューションを作成] を選択します。
注: 静的コンテンツと動的コンテンツをエッジロケーションにキャッシュすると、オリジンに到達するリクエストの数を削減できるため、コストを削減し、パフォーマンスを改善できます。
AWS WAF を設定する
AWS WAF を設定し、セキュリティガードとして動作させるには、次の手順を実行します。
- AWS WAF コンソールを開きます。
- ウェブ ACL (ウェブアクセスリスト) を作成します。
- 目的の AWS リージョンを選択し、
- 名前を付けます (例: "MyWebsiteProtection")。
- [ルールの追加] を選択し、[レートベースのルールを追加] を選択します。
次のレート制限ルールを入力します。
過剰なリクエストを行う IP アドレスをブロックする設定を行います (例: 5 分あたり 2,000 回のリクエスト)。
- [ルールの追加] を選択し、[マネージドルールを追加] を選択します。
AWS マネージドルールのコアルールセット (CRS) を追加します。CRS には、SQL インジェクションや XSS などの一般的な攻撃に対する保護が含まれています。
注: エッジロケーションは AWS WAF ルールを適用し、悪意のあるトラフィックを、そのソースに近い場所で阻止します。
- [次へ] を選択し、[ウェブ ACL の作成] を選択します。
注: コンソールの任意の場所から AWS WAF 機能にアクセスできる、最新版エクスペリエンスを使用できるようになりました。詳細については、「最新版コンソールエクスペリエンスでの AWS WAF の開始方法」を参照してください。
AWS WAF を CloudFront に接続する
AWS WAF と CloudFront を正常に連携させるには、次の手順を実行します。
- AWS WAF コンソールを開きます。
- 目的のウェブ ACL を選択します。
- [関連する AWS リソース] を選択します。
- [AWS リソースの追加] を選択します。
- 目的の CloudFront ディストリビューションを選択します。
- [追加] を選択します。詳細については、「Amazon CloudFront で AWS WAF を使用する」を参照してください。
モニタリングを設定する
注: ログ記録を有効にすると、追加コストが発生します。CloudWatch は無料利用枠を提供していますが、無料利用枠の制限を超えた場合、料金が発生します。現在の価格については、「Amazon CloudWatch の料金」を参照してください。
CloudFront でモニタリングを設定するには、次の手順を実行します。
- CloudFront コンソールを開きます。
- 目的のディストリビューションを選択します。
- [ログ] に移動します。
- [標準ロギング] を有効にします。
AWS WAF でモニタリングを設定するには、次の手順を実行します。
- AWS WAF コンソールを開きます。
- 目的のウェブ ACL を開きます。
- [ログとメトリクス] を選択します。
- ログ記録を有効にします。詳細については、「CloudFront とエッジ関数を記録する」を参照してください。
関連情報
Shield Advanced を使用してアプリケーションレイヤーでの DDoS 対策を自動化する
Amazon CloudFront と AWS WAF を使用してウェブサイトを高速化し、保護する