AWS WAF と AWS Global Accelerator を併用することで、アプリケーションを悪意のある攻撃から保護するには、どうすればよいですか?

所要時間2分
0

Global Accelerator の背後で Application Load Balancer を使用するとともに、AWS WAF レート制限ルールを使用して、アプリケーションをレイヤー 7 DDoS 攻撃から保護したいと考えています。

簡単な説明

AWS Global Accelerator、Application Load Balancer、AWS WAF を利用することで、分散型サービス拒否 (DDoS) 攻撃からアプリケーションレイヤーを防御できます。

注: Application Load Balancer と WAF を使用したクライアントレート制限に基づいて、アクセラレーター内で送信元 IP の保持を TRUE に設定する必要があります。詳細については、「](https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html)Preserve client IP addresses in AWS Global Accelerator[」を参照してください。

解決方法

AWS WAF レート制限ルールを適用すると、アプリケーションに大量のフラッド攻撃を送信する特定の IP アドレスから、クライアントを自動的に遮断することができます。レートベースのルールでは、スライディング時間枠別に、各 IP アドレスによって送信されたリクエストの数を追跡します。リクエストがレート制限を超えたとき、即時にルールはそのアドレスからのリクエストをブロックし、このブロック状態は送信元 IPアドレスがリクエスト数を減らすまで続きます。

**注:**また、リクエストの送信国などリクエストのコンポーネントの多くを検査してブロックするように、ルールを構成することもできます。

前提条件

  • Global Accelerator、Application Load Balancer、AWS WAF のトラフィックフローの設定が以下のようになっていることを確認してください。
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    注: この設定では、ユーザーはアクセラレーターにリクエストを行うことでアプリケーションにアクセスできます。アクセラレーターが、ユーザートラフィックを Application Load Balancer とそれに関連付けられた WAF にルーティングします。WAF が、貴社で作成するレート制限ルールを使用してユーザーリクエストを評価し、ブロックまたは許可します。
  • GitHub から、loadtestなどのロードテストツールをインストールすることができます。または、必要とされる可視性が得られる任意のロードテストツールを使用してください。

ルールベースのウェブ ACL を作成する

ウェブ ACL で、レート制限を積極的な 100 という値にしたレートベースのルールを作成します。次に、テストケースを使用し、ルールが機能しているかどうかを確認します。

  1. AWS WAF コンソールに移動して、ウェブ ACL ルールを作成します。
  2. カスタム ACL にカスタムルールを追加します。
  3. カスタムルールに名前を付けて、[種類] として [rate-based rule] を設定します。
  4. **[レート制限]**として [100] を設定します。
  5. その他の設定は、すべてそのままにしておきます。次に、[ルールを追加] をクリックします。
  6. ウェブ ACL を保存します。

結果をテストする

このテストでは、HTTP フラッド攻撃のシミュレーションを行います。ロードテストツール上では、受信したリクエストの進行状況がわかります。ある段階から、リクエストは設定したレート制限ルールによってブロックされるため、失敗し始めます。

  1. コンピューターでロードテストツールを実行します。
    注: または、コンソールで AWS CloudShell を開きます (CloudShell がサポートされているリージョンに切り替えるように促すプロンプトが表示される場合があります)。

    # Install globally as root:
    npm install -g loadtest
    # On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
    sudo npm install -g loadtest
  2. 次に示すように、Global Accelerator のURLを入力します。

    # Global Accelerator url
    GA_URL=http://your_Global_Acclerator_URL

    注: your_Global_Accelerator_URL を Global Accelerator の URL に置き換えます。

  3. ターミナル内で以下のコマンドを実行して、大量のリクエストが殺到するフラッド攻撃をロードテストシミュレーションとして開始します。

    注: これは実行に 45 秒かかるはずなので、フローに注意してください。

    loadtest -n 1000 -c 1 --rps 25 $GA_URL

    このコマンドは、1 秒あたり 1 リクエストと 25 リクエストの同時実行数で、合計 1000 リクエストを送信します。1 秒あたりのリクエスト数がこのレートだと、設定した制限には 4 秒目までに達します。

  4. 出力フローを分析します。ある段階でリクエストが失敗し始めていることに注目してください。このエラーは、WAF ルールが送信元 IP アドレスからのすべてのリクエストをブロックしたことを意味します。

    [Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests
AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ