AWS WAF のよくある質問

全般

AWS WAF はお客様が定義する条件に基づきウェブリクエストを許可、ブロック、または監視 (カウント) するルールを設定し、ウェブアプリケーションを攻撃から保護するのを支援する Web アプリケーションファイアウォールです。それらの条件には IP アドレス、HTTP ヘッダー、HTTP 本文、URI 文字列、SQL インジェクション、およびクロスサイトスクリプトが含まれます。

基礎となるサービスがウェブサイトへのリクエストを受け取ると、ルールに対して検査するためにそれらのリクエストを AWS WAF へ転送します。リクエストがルールで定義された条件を満たすと、AWS WAF は基礎となるサービスに対し、定義したアクションに基づいてリクエストのブロックまたは許可のいずれかを指示します。

AWS WAF は Amazon CloudFront、Application Load Balancer (ALB)、Amazon API Gateway、および AWS AppSync と緊密に統合されています。これらは AWS のお客様がウェブサイトおよびアプリケーション用のコンテンツを配信するために一般的に使用するサービスです。AWS WAF を Amazon CloudFront で使用する場合、ルールは世界中のエンドユーザーに近い場所にあるすべての AWS エッジロケーションで実行されます。これはパフォーマンスを犠牲にしてセキュリティを確保しているという意味ではありません。ブロックされたリクエストはお客様のウェブサーバーに到達する前に停止させられます。Application Load Balancer、Amazon API Gateway、AWS AppSync などのリージョンサービスで AWS WAF を使用する場合、ルールはリージョンで実行され、インターネット向けリソースと内部リソースを保護するために使用できます。

はい、AWS WAF は AWS 外のカスタムオリジンをサポートする Amazon CloudFront と統合されています。

AWS WAF は SQL インジェクションやクロスサイトスクリプティング (XSS) といった一般的な攻撃手法からウェブサイトを保護するのに役立ちます。さらに、特定のユーザーエージェント、特定の IP アドレス、また特定のリクエストヘッダーを含むトラフィックを、ブロックまたはレート制限するルールを作成することもできます。 例については、AWS WAF デベロッパーガイドをご覧ください。

AWS WAF Bot Control によって、アプリケーションへの一般的で普及しているボットトラフィックの可視性とコントロールが得られます。ボットコントロールを使用すると、スクレーパー、スキャナー、クローラーなどの普及しているボットを簡単に監視、ブロック、レート制限したり、ステータスモニターや検索エンジンなどの一般的なボットを許可したりできます。ボットコントロールマネージドルールグループを、WAF の他のマネージドルールまたは独自のカスタム WAF ルールと一緒に使用して、アプリケーションを保護することができます。デベロッパーガイドの AWS WAF Bot Control のセクションを参照してください。

はい。アカウントで行った AWS WAF API コールの履歴を取得するには、CloudTrail の AWS マネジメントコンソールで AWS CloudTrail を有効にします。詳細は、AWS CloudTrail のホームページまたは AWS WAF デベロッパーガイドを参照してください。

はい。IPv6 のサポートにより、AWS WAF は IPv6 と IPv4 の両方のアドレスから受け取る HTTP/S リクエストを調査することができます。

はい。ドキュメントに従って、新規および既存の WebACL に対して新しい IPv6 一致条件を設定することができます。

はい。該当する場合には、抽出されたリクエストで IPv6 アドレスが表示されます。

はい。IPv6 と IPv4 の両方のトラフィックに対して既存のすべての機能を使用できます。サービスのパフォーマンス、スケーラビリティ、可用性には識別可能な変化は生じません。

AWS WAF は Amazon CloudFront、Application Load Balancer (ALB)、Amazon API Gateway、および AWS AppSync にデプロイできます。Amazon CloudFront の一部として、エッジロケーションでリソースやコンテンツを保護するコンテンツ配信ネットワーク (CDN) の一部を構成できます。Application Load Balancer の一部として、ALB の背後にあるオリジンウェブサーバーを保護することができます。Amazon API Gateway の一部として、REST API の保護に役立ちます。AWS AppSync の一部として、GraphQL API の安全と保護に役立ちます。

AWS リージョンサービス表を参照してください。

はい、AWS では HIPAA 準拠プログラムを拡張し、AWS WAF を HIPAA 対応サービスとして追加しました。AWS と事業提携契約 (BAA) を締結している場合は、AWS WAF を使用して、一般的なウェブの脆弱性からウェブアプリケーションを保護できます。詳細については、HIPAA への準拠を参照してください。

AWS WAF では、お客様が作成するウェブアクセスコントロールリスト (ウェブ ACL) の数、ウェブ ACL ごとに追加するルールの数、および受信するウェブリクエストの数に基づいて課金されます。初期費用は必要ありません。AWS WAF の料金は、Amazon CloudFront の料金Application Load Balancer (ALB) の料金Amazon API Gateway の料金、または AWS AppSync の料金に加えて課金されます。

レートベースのルールは、AWS WAF で設定できるルールの一種であり、5 分間隔で継続的に更新される後続のクライアント IP によって許可されるウェブリクエストの数を指定できます。IP アドレスが設定された制限を超えた場合、新しいリクエストはリクエストレートが設定されたしきい値を下回るまでブロックされます。

レートベースのルールは通常のルールと似ていますが、レートベースのしきい値を設定する機能が追加されています。たとえば、レートベースのルールのしきい値が 2,000 に設定されている場合、このルールは直前の 5 分間に 2,000 件を超えるリクエストのあったすべての IP をブロックします。レートベースのルールには、通常のルールで使用できる他の AWS WAF 条件も含めることができます。

レートベースのルールの料金は通常の AWS WAF ルールと同じで、1 か月あたり WebACL ごとに 1 ルールあたり 1 USD です

お客様がレートベースのルールを使用して対処できる一般的なユースケースを次に示します。

  • IP アドレスが設定されたしきい値のレートを超過したときに、その IP アドレスをブロックしたりカウントしたりしたい (最後の 5 分あたりのウェブリクエストで設定可能)
  • 設定されたしきい値のレートを超過したために現在ブロックされている IP アドレスを知りたい
  • ブロックリストに追加された IP アドレスが、設定されたしきい値のレートに違反しなくなったときに自動的に削除されるようにしたい
  • 特定の高トラフィックのソース IP 範囲を、レートベースのルールによるブロックを免除したい

はい。レートベースのルールは、既存の AWS WAF 一致条件と互換性があります。これにより、一致条件をさらに絞り込んで、レートベースの軽減を特定の参照元 (またはユーザーエージェント) からのトラフィックやウェブサイトの特定の URL に限定したり、その他のカスタムの一致条件を追加することができます。

はい。この新しいタイプのルールは、ウェブレイヤーの DDoS 攻撃、ブルートフォースのログイン試行、不正なボットなどのユースケースから保護するように設計されています。

レートベースのルールは、通常の AWS WAF ルールで現在利用可能なすべての可視化機能をサポートしています。さらに、レートベースのルールの結果としてブロックされた IP アドレスも表示できます。

はい。例を示します。ウェブサイトのログインページへのリクエストを制限するとします。これを行うには、レートベースのルールに次の文字列一致条件を追加します。

  • リクエストのフィルターする部分は「URI」です。
  • 一致の種類は「で始まる」です。
  • 一致する値は「/login」です (これはウェブリクエストの URI 部分のログインページを識別するものである必要があります)

さらに、レート制限を 5 分あたり 15,000 リクエストと指定します。このレートベースのルールをウェブ ACL に追加すると、残りのサイトに影響を与えることなく、IP アドレスごとのログインページへのリクエストが制限されます。

はい。これを行うには、レートベースルール内でリクエストを許可する個別の IP 一致条件を設定してください。

IP アドレスと国ルックアップデータベースの対応精度はリージョンによって異なります。最近のテストによると、IP アドレスと国の対応の全体的精度は 99.8% です。

AWS WAF のマネージドルール

マネージドルールは、OWASP、ボット、Common Vulnerabilities and Exposures (CVE) など、アプリケーションの脆弱性に類する一般的な脅威からアプリケーションを保護するための事前設定ルールを簡単にデプロイする方法です。AWS WAF の AWS マネージドルールは AWS によって管理されますが、AWS Marketplace のマネージドルールはサードパーティーのセキュリティセラーによって管理されます。

AWS WAF コンソールから、または AWS Marketplace から、Marketplace セキュリティセラーが提供するマネージドルールをサブスクライブできます。登録済みのすべてのマネージドルールを AWS WAF ウェブ ACL に追加することができます。

はい。カスタム AWS WAF ルールとともにマネージドルールを使用できます。独自のルールをすでに追加している既存の AWS WAF ウェブ ACL にマネージドルールを追加することができます。

マネージドルール内のルールの数は、制限数にカウントされません。ただし、ウェブ ACL に追加された各マネージドルールは 1 つのルールとしてカウントされます。

ウェブ ACL へのマネージドルールの追加やウェブ ACL からの削除は、いつでも可能です。マネージドルールをウェブ ACL から切り離すと、マネージドルールは無効になります。

AWS WAF ではマネージドルールの「カウント」アクションを設定できます。このアクションでは、マネージドルール内のルールと一致するウェブリクエストの数をカウントします。マネージドルールを有効にすると、カウントされたウェブリクエストの数からブロックされるウェブリクエストの数を推定することができます。

AWS WAF 設定

はい、リクエストがブロックされた時にカスタムエラーページが表示されるように CloudFront を設定できます。詳細については、CloudFront デベロッパーガイドをご覧ください

初期設定後、ルールの追加や変更が世界中に伝達されるまで通常 1 分程度かかります。

AWS WAF にはお客様のウェブサイトが保護されていることを確認する 2 つの方法があります。CloudWatch では 1 分間のメトリクス、AWS WAF API またはマネジメントコンソールでは Sampled Web Requests がご利用いただけます。これらの方法により、どのリクエストがブロック、許可またはカウントされたか、またどのルールが特定のリクエストにマッチしたかを参照できます (例、このウェブリクエストは IP アドレスの条件によりブロックされた等)。詳細については、「AWS WAF デベロッパーガイド」を参照してください。

AWS WAF ではルールの「カウント」アクションを設定できます。これは、ルールの条件に合ったウェブリクエストの数をカウントします。ルールを有効にすると、どれだけのウェブリクエストがブロックまたは許可されるかをカウントされたウェブリクエストの数から推定することができます。

リアルタイムメトリクスは Amazon CloudWatch に保存されます。Amazon CloudWatch ではイベントを失効させる期間をお客様が設定できます。Sampled Web Requests は最大 3 時間保存されます。

はい。AWS WAF はアプリケーションを保護するのに役立ち、HTTP または HTTPS で転送されるウェブリクエストを検査できます。

AWS WAF 不正対策 - Account Takeover Prevention

Account Takeover Prevention (ATP) は、アプリケーションのログインページへのトラフィックを監視し、不正な認証情報を使用してユーザーアカウントへ不正にアクセスするのをを検出するマネージドルールグループです。ATP を使用することで、クレデンシャルスタッフィング攻撃、大量のログインを試みるブルートフォース攻撃、その他の異常なログイン行動を防止することができます。アプリケーションへのログインが試みられると、ATP は送信されたユーザー名とパスワードがウェブ上のどこかで漏洩していないかどうかをリアルタイムでチェックします。ATP は、不正行為者による異常なログイン試行をチェックし、経時的に行われるリクエストを関連付けることで、ブルートフォース攻撃やクレデンシャルスタッフィング攻撃の検出と軽減を支援します。また、ATP はオプションで JavaScript と iOS/Android SDK を提供しており、アプリケーションに統合することで、アプリケーションにログインしようとするユーザーデバイスに関する追加のテレメトリを受け取り、ボットによる自動化ログイン試行に対するアプリケーションの保護を改善できます。

ユーザーデバイスとアプリケーション間のトラフィックは、Amazon CloudFront、Application Load Balancer、Amazon API Gateway、AWS AppSync など、アプリケーションに先駆けて使用する AWS のサービス用に設定した SSL/TLS プロトコルによって保護されます。ユーザーの認証情報が AWS WAF に到達すると、AWS WAF は認証情報を検査した後、直ちにハッシュ化して破棄し、認証情報が AWS のネットワークから出ないようにします。アプリケーションで使用する AWS のサービスと AWS WAF 間の通信は、送信時および静止時に暗号化されます。

Bot Control は、リソースを消費したり、メトリクスを歪めたり、ダウンタイムを引き起こしたり、その他の望ましくないアクティビティを実行したりする一般的で普及しているボットのトラフィックを可視化して制御できるようにします。Bot Control は、様々なヘッダーフィールドやリクエストのプロパティを既知のボットシグネチャーと照合し、スクレイパー、スキャナー、クローラーなどの自動化されたボットを検出および分類します。

Account Takeover Prevention (ATP) は、不正な認証情報を使用した不正行為者による異常なログイン試行を可視化および制御し、不正行為につながる可能性のある不正アクセスから保護できるようにします。ATP は、アプリケーションのログインページを保護するために使用されます。

Bot Control と ATP は、それぞれ単独で使用することも、一緒に使用することもできます。Bot Control の管理ルールグループと同様に、ATP のデフォルトのルールアクションを使用して一致するリクエストをブロックするか、AWS WAF の緩和機能を使用して ATP の動作をカスタマイズすることができます。

AWS WAF コンソールで、新しいウェブ ACL を作成するか、すでに AWS WAF を使用している場合は、既存のウェブ ACL を修正します。ウィザードを使って、どのリソースを保護するか、どのルールを追加するかなどの基本的な設定を行うことができます。ルールの追加を求められたら、[Add Managed Rules] (マネージドルールの追加) を選択し、マネージドルールの一覧から [Account Creation Fraud Prevention] (アカウント不正作成防止) をクリックします。ATP を設定するには、アプリケーションのログインページの URL を入力し、ユーザー名とパスワードのフォームフィールドが、リクエストの本文のどこにあるのかを指定します。

JavaScript と Mobile SDK を利用すれば、アプリケーションにログインしようとしているユーザーのデバイスに関する追加テレメトリを受け取り、ボットによる自動化ログイン試行に対するアプリケーションの保護を改善できます。SDK のいずれかを使用する必要はありませんが、保護を強化するために使用することをお勧めします。

ATP はユーザーの認証情報が漏洩したと判断した場合、一致を示すラベルを生成します。デフォルトでは、AWS WAF は悪意がある、または異常と判断されたログイン試行を自動的にブロックします (例えば、異常なレベルのログイン試行の失敗、不正行為の繰り返し、ボットからのログイン試行など)。ラベルに作用する AWS WAF ルールを書くことで、AWS WAF が一致に対してどのように応答するかを変更することができます。

AWS WAF 不正対策 - アカウント作成不正防止

アカウント作成不正防止 (ACFP) はサインアップや登録ページに対する偽アカウント作成攻撃を検出し、軽減することができる有料のマネージドルールグループです。ACFP を使用すると、プロモーションやサインアップの悪用、ロイヤルティやリワードの悪用、フィッシングを防ぐことができます。新規アカウントの登録時に、ACFP は送信された各認証情報 (ユーザー名とパスワードなど)、使用されているメールドメイン、電話番号や入力された住所フィールドなどの情報をリアルタイムで検証し、これらの情報のいずれかが盗用、または悪評とみなされた場合はサインアップの試みをブロックします。さらに、ACFP には不正リスク予測が含まれており、機械学習ベースの検出モデルに関する深い知識がなくても使用できます。ACFP は、アプリケーションに統合できる推奨 JavaScript および iOS/Android SDK も提供しています。これにより、ユーザーに対する追加の遠隔測定が可能になり、ボットによる自動ログインの試みからアプリケーションをより適切に保護できます。

Account Takeover は、既存アカウントへの不正アクセスを目的としてアプリケーションのサインインページを攻撃します。一方、アカウント作成不正は、これらの偽のアカウントを通じて不正行為を行うことを目的として、アプリケーションのサインアップページを標的にします。ATP は、攻撃者が何百回ものログイン試行を自動化し、盗んだ認証情報を複数のサイトでテストするクレデンシャルスタッフィングやブルートフォース攻撃の防止に重点を置いています。一方、ACFP は、プロモーションやサインアップの悪用、ロイヤルティやリワードの悪用、フィッシングなどの自動不正の防止に重点を置いています。ACFP と ATP は、それぞれ単独で使用することも、一緒に使用することもできます。

AWS WAF コンソールで、新しいウェブ ACL を作成するか、すでに AWS WAF を使用している場合は、既存のウェブ ACL を修正します。ウィザードを使って、どのリソースを保護するか、どのルールを追加するかなどの基本的な設定を行うことができます。ルールの追加を求められたら、[Add Managed Rules] (マネージドルールの追加) を選択し、マネージドルールの一覧から [Account Takeover Prevention] をクリックします。ACFP を設定するには、アプリケーションのアカウント作成および登録ページの URL を入力します。さらに、ユーザー名、パスワード、住所、電話番号のフォームフィールドがリクエストの本文内のどこにあるかを指定することもできます。

オプションですが、強くお勧めします。SDK 統合により、ブラウザのバージョン、プラグイン、キャンバスデータなどの追加情報が提供され、ACP ルールの有効性が向上します。SDK 統合を使用しない場合は、チャレンジアクションを使用して強制的に実施します。チャレンジアクションはシングルページアプリケーション (SPA) やネイティブモバイルアプリではうまく機能しないため、これらのアプリケーションでは SDK の統合が必須です。HTML ページなど、ページの更新に耐えられる他のアプリの場合、SDK の統合はオプションです。ウェブアプリケーション用の JS SDK、ネイティブモバイルアプリケーション用の Android および iOS SDK をサポートしています。

ACFP がアプリケーションをどのように保護しているかは、コンソールの不正ダッシュボード、WAF のフルロギング、および CloudWatch メトリックスで確認することができます。

ダッシュボード: ACFP と ATP で分析されたリクエストを監視するための一元化されたダッシュボード。CloudWatch メトリクス: ACFP ルールグループのすべてのルールアクションは CloudWatch メトリクスを送信し、顧客はアラートや通知の作成に使用できます。

WAF ロギング: ACFP によって分析されたすべてのリクエストは WAF ログに記録されるため、既存のロギングソリューションを使用して ACFP マネージドルールのログをクエリおよび分析できます。ACFP は、ルールアクション、ラベル情報、リスクスコアなどの詳細を記録し、ACFP の有効性を追跡するために使用できます。