このトピックでは、一般的な種類のHTTPフラッド攻撃と、WAFが提供する保護ポリシーを使用して攻撃を防御する方法について説明します。
概要
攻撃の種類に基づいて、使用する保護ポリシーを決定できます。
ボリュームと高レートのHTTPフラッド攻撃
ボリュームHTTPフラッド攻撃では、ゾンビサーバーは通常のサーバーよりも高い頻度でリクエストを送信します。 このような攻撃を防ぐためには、リクエスト元のリクエストレートを制限することが最も効果的です。 WAFは、この目的のためにレート制限機能を提供します。 この機能は、[カスタム保護ポリシー] ページから設定できます。 詳細については、「カスタム保護ポリシーの設定」をご参照ください。
次の図に示すように、ルールを設定できます。 このルールは、ドメイン名の下の任意のパスに対して30秒間隔で1,000を超えるリクエストを開始するすべてのIPアドレスをブロックします。 ブロッキング期間は10時間続きます。 このルールは、中小規模のWebサイトを保護するために使用されます。
保護パスの変更、しきい値の調整、保護要件に最適なアクションの選択を行うことができます。 たとえば、ログインエンドポイントでの資格情報の詰め込みを防ぐには、[マッチング] フィールドをURLに、[マッチングコンテンツ] を /login.php
に設定し、60秒以内にパスにアクセスするための20を超えるリクエストを送信するIPアドレスをブロックします。
HTTPフラッド保護ポリシーを設定するときは、次の点に注意してください。
ActionドロップダウンリストのCaptchaおよびStrict Captchaは、リクエストが人間またはオートメーションスクリプトからのものであるかどうかを確認することを目的としています。 これらの2つのアクションを使用して、ネイティブアプリやAPIではなく、共通およびHTML5 webページを保護できます。 ネイティブアプリとAPIを保護するには、Actionをblockに設定します。
[アクセス制御 /スロットリング] タブで、HTTPフラッド保護によって誤ってブロックされる可能性のあるAPIまたはIPアドレスのホワイトリストポリシーを設定できます。 詳細については、「アクセス制御 /スロットリングのホワイトリストの設定」をご参照ください。
HTTPフラッド保護セクションで、ネイティブアプリまたはAPIの保護-緊急モードを選択しないでください。
WAF Enterpriseエディションのインスタンスを購入した場合は、カスタム統計オブジェクト、IPアドレス、およびセッションを使用してレート制限を設定できます。 IPアドレスをブロックすると、NATに影響する可能性があります。 ユーザーを統計オブジェクトとして識別するCookieまたはパラメーターを使用できます。 次の例では、ユーザーを識別するために使用されるcookieに基づいてリクエストレートが計算され、リクエストの検証にはCaptchaが使用されます。 cookieの形式がuid=12345
であるとします。
中国以外の地域や公共の雲からの攻撃
HTTPフラッド攻撃の大部分は、中国以外のリージョン、オンプレミスのデータセンター、およびパブリッククラウドから発生します。
Webサイトが中国国内のユーザーをターゲットにしている場合、中国以外のリージョンからのリクエストをブロックして、この種の攻撃を軽減できます。 WAFは、この目的のためにエリアベースのIPブラックリスト機能を提供します。 詳細については、「ブラックリストの設定」をご参照ください。
Alibaba Cloud、Tencent Cloud、オンプレミスのデータセンターのCIDRブロックなど、共通IPライブラリのクローラIPアドレスをブロックする必要がある場合は、[ボット管理] タブの [ボット脅威インテリジェンス] 機能を使用できます。
多くのクローラーはECSインスタンスにデプロイされています。 ユーザーは、パブリッククラウドまたはオンプレミスデータセンターのソースIPアドレスを使用してサービスにアクセスしません。
例: 次のボット脅威インテリジェンスルールを使用して、Tencent CloudのクローラIPアドレスからのアクセスをブロックできます。 詳細については、「ボット脅威インテリジェンスルールの設定」をご参照ください。
不正パケット
HTTPフラッド攻撃の悪意のあるリクエストは特別に作成され、不正なパケットが含まれます。 不正なパケットには、次の機能があります。
User-Agent文字列が異常または不正な場合: 自動化ツール (Pythonなど) の特性を持つ、フォーマットが正しくない (
Mozilla ///
など) 、または通常のリクエスト (www.example.com
など) で使用できません。 異常または不正なUser-Agent文字列が検出された場合は、リクエストをブロックします。Unusual User-Agent文字列: WeChatユーザーをターゲットとするプロモーションHTML5ページは、WeChatを介してアクセスすることになっています。 User-Agent文字列が、Microsoft Internet Explorer 6.0などのWindowsデスクトップブラウザーからリクエストが送信されていることを示している場合は異常です。 異常なUser-Agent文字列が検出された場合は、リクエストをブロックします。
異常リファラーフィールド: リクエストにリファラーフィールドがない場合、または不正なWebサイトのアドレスを識別するリファラーフィールドがある場合は、リクエストをブロックします。 ただし、ユーザーが初めてホームページまたはWebサイトにアクセスした場合、リクエストにリファラーフィールドが含まれていない場合があります。 リダイレクトを使用してのみURLにアクセスできる場合は、リファラーフィールドに基づいてURLをブロックするかどうかを決定できます。
Abnormal cookie: リファラーフィールドと同様に、通常のリクエストには、ユーザーが初めてWebサイトにアクセスする場合を除き、リクエストされたWebサイトを識別するcookieが含まれます。 HTTPフラッド攻撃の悪意のあるリクエストには、通常、cookie情報は含まれません。 Cookieなしでアクセス要求をブロックできます。
HTTPヘッダーの欠落: 通常のリクエストには認証ヘッダーが含まれますが、悪意のあるリクエストには含まれません。
不正なリクエストメソッド: APIが以前にPOSTリクエストを受信しただけでGETリクエストに圧倒された場合、これらのGETリクエストをブロックできます。
リクエストの機能を分析し、[カスタム保護ポリシー] ページから保護タイプをACLに設定して、悪意のあるリクエストをブロックできます。 詳細については、「カスタム保護ポリシーの設定」をご参照ください。
設定例:
例1: Cookieを含まないリクエストをブロックします。
例2: 承認ヘッダーを含まないリクエストをブロックします。
API の悪用
重要なAPIを攻撃から保護するために、データリスク管理機能を使用することを推奨します。 これらの API には、ログイン、登録、投票、SMS 検証の API が含まれます。
データリスク管理は、JavaScriptスニペットをWebサイトに挿入し、ユーザーの行動と環境変数に関する情報を収集して、リクエストが人間からのものか自動化スクリプトからのものかを判断します。 データリスクコントロールは、リクエストレートや送信元 IP アドレスではなく、CAPTCHA に基づいて判断をします。 この関数は、低周波攻撃を非常に効果的に軽減します。
データリスク管理は、悪意のある要求を識別するために、すべての通常の要求に必要な認証パラメータを含む要求をチェックします。 この機能は、APIやネイティブアプリなど、JavaScriptがサポートされていない環境には適していません。 誤検知を防ぐために、テスト環境でデータリスク管理を有効にする前にテストすることをお勧めします。 または、監視モードを使用して、予防モードを有効にする前にエンジニアに連絡することもできます。
詳細については、「データリスク管理の設定」をご参照ください。
悪質なスキャン
悪意なスキャンが多数ある場合、サーバーのパフォーマンスに重大な脅威をもたらします。 レート制限とは別に、スキャン保護機能を使用してセキュリティを強化することもできます。 スキャン保護は次の設定をサポートします。
高頻度Web攻撃を開始するIPのブロック: 高頻度web攻撃を開始するクライアントIPアドレスを自動的にブロックします。
ディレクトリトラバーサル防止: 複数のディレクトリトラバーサル攻撃を短時間で開始するクライアントIPアドレスを自動的にブロックします。
スキャンツールのブロック: 一般的なスキャンツールまたはAlibaba Cloudの悪意のあるIPライブラリで定義されているIPアドレスからのアクセスリクエストを自動的にブロックします。
Collaborative Defense: Alibaba Cloud悪意のあるIPライブラリで定義されたIPアドレスからのアクセス要求を自動的にブロックします。
詳細については、「スキャン保護の設定」をご参照ください。
アプリ攻撃
上記の対策に加えて、SDKを使用して保護を強化することもできます。
SDK をアプリに統合化した後、すべての受信リクエストはサーバーに送信される前に検証されます。 デバイス情報とリクエスト署名を組み合わせて、リクエストが正当なアプリからのものかどうかを判断します。 公式アプリから送信されていないリクエストは自動的にブロックされます。 これにより、有効なリクエストのみが処理されます。 無効なリクエストのパターンを分析する必要はありません。
SDKを使用するには、アプリ保護を有効にする必要があります。 詳細については、「アプリケーション保護の設定」をご参照ください。
悪意のあるクローラー
クレジットレポート、アパートのレンタル、航空券、電子書籍などのサービスを提供する情報提供Webサイトの場合、悪意のあるクローラーは帯域幅の使用量とサーバーの作業負荷を大幅に増加させ、データ漏洩を引き起こす可能性さえあります。 上記の対策で悪意のあるクローラーを防ぐことができない場合は、より効果的な保護のためにボット管理機能を有効にして使用することを推奨します。 詳細については、「ボット管理のホワイトリストの設定」をご参照ください。