すべてのプロダクト
Search
ドキュメントセンター

Web Application Firewall:ボット管理のための高度なカスタムルールの構成

最終更新日:Aug 26, 2025

ボット管理を有効にした後、特定の条件に一致するリクエストから保護するために、カスタムのアクセス制御ルールと頻度制御ルールを作成できます。 高度なカスタムルールは、クライアント ID、JA3/JA4 指紋、Web/App SDK によって収集された情報など、より広範囲の一致条件を提供します。 統計のための条件付き重複排除もサポートされています。 このトピックでは、カスタムボットルールテンプレートを作成し、それにカスタムルールを追加する方法について説明します。

背景情報

カスタムルールは、次のタイプに分類されます。

カスタムルール

説明

アクセス制御ルール

クライアント IP、リクエスト URL、および一般的なリクエストヘッダーフィールドに基づいて一致条件を定義します。 WAF は、一致条件にヒットするリクエストに対して指定されたアクションを実行します。 たとえば、カスタムルールを使用して、特定のクライアント ID にアクセスするリクエストをブロックしたり、特定の Web UMID またはアプリ UMID を含むリクエストを検証したりできます。

頻度制御ルール

アクセス制御一致条件に基づいてアクセス頻度検出条件を定義します。 WAF は、アクセス頻度が異常な統計オブジェクトに対して指定されたアクションを実行します。 たとえば、同じ IP アドレスまたはセッションからのリクエストが短期間で頻繁に一致条件にヒットする場合、頻度制御を有効にして、指定された期間、その IP アドレスまたはセッションからのリクエストをブロックできます。

ステップ 1:カスタムルールテンプレートを作成する

  1. Web Application Firewall 3.0 コンソール にログインします。 上部のナビゲーションバーで、WAF インスタンスのリソースグループとリージョン(中国本土 または 中国本土以外)を選択します。

  2. テンプレートの作成 をクリックします。 [テンプレートの作成 - 高度なカスタムルール] パネルで、次の設定を構成し、[OK] をクリックします。

    パラメーター

    説明

    テンプレート名

    テンプレートの名前を入力します。

    名前は 1 ~ 255 文字で、中国語、大文字と小文字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を含めることができます。

    ルールの設定

    ルールの作成 をクリックして、現在のテンプレートのカスタムルールを作成できます。 カスタムルールを作成するには、この手順をスキップして、テンプレートの作成後にテンプレートのルールを作成することもできます。

    有効対象

    設定済みの保護オブジェクトおよび保護オブジェクトグループから、このテンプレートを適用するものを選択します。

新しい保護テンプレートはデフォルトで有効になっています。 保護テンプレートリストでは、次の操作を実行できます。

  • テンプレートに関連付けられている 保護対象 / グループ の数を表示します。

  • ステータス を使用して、テンプレートを有効または無効にします。

  • Create Rule をクリックして、テンプレートの新しいルールを作成します。

  • 保護テンプレートを 編集削除、または 複製 します。

  • テンプレート名の横にある 展开图标 アイコンをクリックして、保護テンプレート内のルールに関する情報を表示します。

ステップ 2:カスタムルールを作成する

保護ルールを追加するまで、カスタムルールテンプレートは有効になりません。 ルールの作成 ダイアログボックスで、次のパラメーターを構成し、[OK] をクリックします。

ステップ 1 で保護ルールをすでに追加している場合は、このステップをスキップできます。

パラメーター

説明

Rule Name

ルール名を入力します。

名前には、中国語、大文字と小文字、数字、ピリオド(.)、アンダースコア(_)、ハイフン(-)を含めることができます。

一致条件

一致させたいリクエストの特徴を設定します。

条件の追加 をクリックして条件を追加します。 1 つのルールに最大 10 個の条件を追加できます。 複数の条件を定義した場合、リクエストはすべての条件を満たしてルールにヒットする必要があります。

各条件は、[照合フィールド][ロジック]、および[照合コンテンツ]で構成されます。以下に構成例を示します。

  • 例 1: [照合フィールド]URI[ロジック]Contains[照合コンテンツ]/login.php に設定した場合、/login.php を含むパスへのリクエストはルールにヒットします。

  • 例 2: [一致フィールド]IP に、[ロジック]Belongs to に、[一致コンテンツ]192.1X.XX.XX に設定した場合、クライアント IP アドレス 192.1.XX.XX からのリクエストはルールにヒットします。

Protection Rule Type

Access Control がデフォルトで選択されています。 Throttling をクリックして、頻度制御を有効にします。

頻度制御とは、同じ統計オブジェクト(IP アドレスやセッションなど)からのリクエストがルールに頻繁にヒットした場合、WAF が一定期間、その統計オブジェクトからのすべてのアクセスリクエストに対して指定されたアクションを実行することを意味します。 頻度制御を有効にした後、頻度制御パラメーターを構成する必要があります。

  • 頻度検出条件

    Statistical Object統計期間 (秒) 内にルールにヒットした回数が しきい値 (回) を超えると、そのオブジェクトはブラックリストに追加されます。

    • Statistical Object

      リクエスト頻度の統計を収集するオブジェクトを選択します。 有効な値:

      • IP:同じ IP アドレスからのリクエストの頻度に関する統計を収集します。

      • Custom Header:指定されたヘッダーを含むリクエストの頻度に関する統計を収集します。 たとえば、カスタムヘッダー識別子 Referer の場合、WAF は指定された統計期間内に各 Referer 値のリクエスト数をカウントします。

      • Custom Parameter:URL 内のキーワードと一致し、指定されたパラメーターを含むリクエストの頻度に関する統計を収集します。

      • Custom Cookie:特定の期間内に指定された Cookie を含む HTTP リクエストの頻度に関する統計を収集します。 たとえば、カスタム Cookie を User に設定すると、WAF は統計期間内に各 User 値の出現回数をカウントします。

      • Session:デフォルトでは、WAF はレスポンスに acw_tc を挿入して、異なるクライアントからのアクセスリクエストを識別し、統計を収集します。 WAF は、同じ acw_tc から開始されたリクエストの頻度に関する統計を収集します。

      • Body:リクエスト本文のパラメーター。 WAF は、指定された本文パラメーターを含むリクエストの頻度に関する統計を収集します。

      • App UMID:同じアプリクライアントからのリクエストの頻度に関する統計を収集します。

      • Account:同じアカウントからのリクエストの頻度に関する統計を収集します。

      • Web UMID:同じ Web クライアントからのリクエストの頻度に関する統計を収集します。

    • 統計期間 (秒)

      統計期間を設定します。 単位:秒。

    • しきい値 (回)

      Statistical Object一致条件統計期間 (秒) 内にヒットできる最大回数を設定します。

  • レスポンスコード検出条件

    特定の Status Code を持つレスポンスの数または割合が、構成された Quantity または Percentage (%) を超えると、そのオブジェクトはブラックリストに追加されます。

    • Status Code

      頻度検出に基づいてレスポンスコード検出を有効にするかどうかを選択します。 この機能を有効にすると、保護対象は、頻度検出条件とレスポンスコード条件の両方を満たした場合にのみブラックリストに追加されます。 レスポンスコード検出を有効にする場合は、統計を収集するレスポンスコードを指定する必要があります。

    • Quantity

      統計期間内にレスポンスに表示できる指定された Status Code の最大回数を設定します。

      説明

      Quantity または Percentage (%) のいずれかを設定できます。

    • Percentage (%)

      統計期間内に指定された Status Code を含むことができるレスポンスの最大割合を設定します。

      説明

      Quantity または Percentage (%) のいずれかを設定できます。

  • 統計の重複排除

    重複排除後にオブジェクトが統計ルールにヒットした場合、そのオブジェクトはブラックリストに追加されます。 条件の追加 をクリックして条件を追加します。 1 つのルールに最大 5 つの条件を追加できます。 複数の条件を定義した場合、リクエストはすべての条件を満たしてルールにヒットする必要があります。

    各条件は、[一致フィールド][ロジック]、および[一致コンテンツ]で構成されています。以下に構成例を示します。

    [一致フィールド]URI に、[ロジック]Equals に、[数]5 に設定した場合、重複排除後に一致条件で指定された URI へのアクセスリクエスト数が 5 になると、リクエストはルールにヒットします。

  • ブラックリストアクション条件

    周波数検知条件にヒットした統計オブジェクトをブラックリストに追加します。Timeout Period 内では、WAF は Apply To 内のオブジェクトからのリクエストに対し、指定された Actions を実行します。

    • Apply To

      ブラックリストアクションの範囲を設定します。 有効な値:

      • Current Match Condition:WAF は、現在のルールの 一致条件 を満たすリクエストに対してのみアクションを実行します。

      • Protected Object:WAF は、制限されたオブジェクトからのすべてのリクエストに対してアクションを実行します。

    • Timeout Period

      ブラックリストアクションが有効な期間を設定します。 単位:秒。 有効値の範囲:60 ~ 86400。

Actions

  • ブロック:ルールにヒットするリクエストをブロックし、リクエスト元のクライアントにブロックレスポンスページを返します。

    説明

    WAF はデフォルトのブロックページを使用します。 カスタムレスポンス機能を使用して、ブロックページをカスタマイズできます。 詳細については、「カスタムレスポンスルールを構成してブロックページを設定する」をご参照ください。

  • 観察:このアクションは、ルールに一致するリクエストをブロックせずにログに記録します。 これらのリクエストについて WAF ログをクエリして、ルールの保護パフォーマンスを分析できます(たとえば、通常のクエストがブロックされているかどうかを確認できます)。

    監視モードでは、新しく構成されたルールをテストできます。 ルールが誤検知を引き起こさないことを確認した後、ルールを別のアクションモードに設定できます。

  • JS 検証:WAF は、標準のブラウザーが自動的に実行できる JavaScript コードのスニペットをクライアントに送信します。 クライアントが JavaScript 検証に合格した場合、WAF は特定の期間、クライアントからのすべてのリクエストを許可します。 デフォルトの期間は 30 分です。 クライアントが JavaScript 検証に失敗した場合、WAF はリクエストをブロックします。

  • スライダー:WAF は、スライダー CAPTCHA ページをクライアントに返します。 クライアントがスライダー CAPTCHA 検証に合格した場合、WAF は特定の期間内、クライアントからのリクエストを許可します。 この期間中、クライアントは検証をバイパスできます。 デフォルトでは、期間は 30 分です。 クライアントがスライダー CAPTCHA 検証に失敗した場合、WAF はリクエストをブロックします。

  • 厳密なスライダー:WAF は、スライダー CAPTCHA ページをクライアントに返します。 クライアントが厳格なスライダー CAPTCHA 検証に合格した場合、WAF はリクエストを許可します。 そうでない場合、WAF はリクエストをブロックします。 クライアントは、リクエストを送信するたびに、厳格なスライダー CAPTCHA 検証に合格する必要があります。

  • back-to-origin マーカー:これにより、ヘッダー名とコンテンツ(ルールタイプ、ルール ID、Web UMID など)をカスタマイズできます。 WAF はリクエストを直接処理しません。 代わりに、新しいヘッダーを追加して、ヒット情報をオリジンサーバーに送信します。 この情報をバックエンドのリスク管理システムと統合して、ビジネス側の処理を行うことができます。

ルールタイプ

カスタムルールを分類した後、ルールにヒットしたトラフィックは、トラフィック分析ページの悪意のあるボットと疑わしいボットのトレンドチャートに記録されます。

  • BOT かもしれない:リクエストはクローラーのいくつかの特徴を示していますが、攻撃の痕跡や明確な意図などの直接的な証拠が不足しています。 リクエストの意図をさらに検証する必要があります。

  • 悪意のある BOT:主に不正な目的で使用される自動プログラム。たとえば、自動化された方法を使用して、攻撃の開始、データの盗難、またはターゲットシステムやネットワークでの悪意のある操作を実行します。

詳細設定

  • Canary Release:ルールを適用するさまざまなディメンションのオブジェクトの割合を構成します。

    [グレースケールルール] を有効にした後、グレースケール DimensionCanary Release Proportion を設定する必要があります。 グレースケール Dimension は、[IP]カスタムヘッダCustom Parameterカスタム CookieSessionApp UMID、または Web UMID に設定できます。

    説明

    グレースケールルールは、設定した Dimension に基づいて適用され、リクエストのパーセンテージにランダムに適用されるわけではありません。 たとえば、グレースケールルールに IP ディメンションを選択した場合、グレースケールルールをトリガーするすべての IP リクエストが保護ルールにヒットします。

  • Effective Mode

    • Permanently Effective(デフォルト):保護テンプレートが有効になっている場合、ルールは常に有効です。

    • 期間ごとに有効化する:攻撃者がイベントの前に更新された保護ルールを識別してバイパスするのを防ぐために、イベントの開始時に新しいルールが有効になるように設定できます。 保護ルールを有効にする期間とタイムゾーンを指定できます。

    • 周期ごとに有効化する:このオプションは、アクティビティ中はより厳格な保護ルールが必要で、それ以外の時間はより緩やかなルールが必要な定期的なアクティビティに適しています。 また、このオプションを使用して、トラフィックが少ない期間に新しいルールをデプロイし、その有効性と誤検知のリスクを確認することもできます。 選択したタイムゾーンの毎日、特定の期間に保護ルールが有効になるように設定できます。

新しいルールはデフォルトで有効になっています。ルールリストでは、次の操作を実行できます。

  • ルールIDルール条件 などの情報を表示します。

  • ステータス スイッチを使用して、ルールを有効または無効にします。

  • ルールを 編集 または 削除 します。

一致フィールドの説明

一致フィールド

説明

サポートされているロジック

URI

リクエストの Uniform Resource Identifier(URI)は、リクエストされたリソースへのパスを指定します。 一般的に、URI = URI パス + クエリ文字列 です。

値はスラッシュ(/)で始まる必要があり、ドメイン名を含めることはできません。 たとえば、/login.php です。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

IP

リクエストの送信元 IP アドレス。 これは、リクエストを開始したクライアントの IP アドレスです。

値は次の要件を満たしている必要があります。

  • 1.XX.XX.1 などの IPv4 アドレスと 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff などの IPv6 アドレスがサポートされています。

  • 1.XX.XX.1/16 などの IP アドレス CIDR ブロックがサポートされています。

  • IP アドレスを入力した後、Enter キーを押します。

  • 最大 100 個の IP アドレスを入力できます。

所属しない、所属する

Referer

リクエストの送信元 URL。 リクエストがリダイレクトされたページを示します。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 空である

  • 存在する、存在しない

User-Agent

リクエストを開始したクライアントの識別子。 ブラウザー、レンダリングエンジン、バージョン、その他のブラウザー関連の詳細情報が含まれています。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 空である

  • 存在する、存在しない

クエリ文字列

リクエストのクエリ文字列。 これは、疑問符(?)に続く URL の部分です。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • 存在する、存在しない

Cookie

リクエストの Cookie 情報。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • 存在する、存在しない

  • 空である

Content-Type

リクエストで指定された HTTP コンテンツタイプ。これは、Multipurpose Internet Mail Extensions(MIME)タイプです。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

Content-Length

リクエスト本文の長さ(バイト単位)。 値の範囲は 0 ~ 2,147,483,648 です。

等しい、値がより小さい、値がより大きい

X-Forwarded-For

クライアントの送信元 IP アドレス。 X-Forwarded-For(XFF)は、HTTP プロキシまたはロードバランサーを介して Web サーバーに接続するクライアントの元の IP アドレスを識別するために使用される HTTP リクエストヘッダーフィールドです。 HTTP プロキシまたはロードバランサーによって転送されたリクエストのみがこのフィールドを含みます。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • 存在しない

本文

リクエストの本文。

  • 含む

  • 存在しない

  • 等しい

  • 正規表現と一致する

  • で始まる、で終わる

Http-Method

リクエストのメソッド。GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE、PATCH など。

  • 等しくない、等しい

  • いずれかに等しい、いずれにも等しくない

ヘッダー

リクエストのヘッダー。 カスタムヘッダーフィールドがサポートされています。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • 存在する、存在しない

URI パス

リクエストの URI パス。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

クエリ文字列パラメーター

リクエストパラメーターの名前。 リクエストパラメーターとは、疑問符(?)に続く URL の部分を指します。 たとえば、www.aliyundoc.com/request_path?param1=a&param2=b では、param1param2 がリクエストパラメーターです。

説明

パラメーター名は大文字と小文字が区別されます。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

クライアント ID

クライアント(ブラウザーやアプリケーションなど)の識別子。 WAF は、User-Agent 情報やトラフィックフィンガープリントなどの特徴に基づいてクライアントタイプを識別します。

  • 含む、含まない

  • 等しい、等しくない

  • いずれかに等しい

サーバーポート

サーバーポート。

  • 等しくない、等しい

  • いずれかに等しい、いずれにも等しくない

ファイル拡張子

リクエストされたファイルの拡張子。 たとえば、.png または .php です。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

ファイル名

リクエストパスの末尾にあるファイルの名前。 たとえば、/abc/index.php では、index.php がファイル名です。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

ホスト

リクエストされたドメイン名。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

Cookie 名

Cookie の名前。 たとえば、Cookie acw_tc:111 では、acw_tc が Cookie 名です。

説明

Cookie 名は大文字と小文字が区別されます。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

本文パラメーター

リクエスト本文のパラメーターの名前。 たとえば、リクエスト本文に文字列 a=1&b=2 が含まれている場合、ab がパラメーター名です。 このフィールドを使用する場合は、値が 4 文字より長いことを確認してください。 そうでない場合、WAF はトラフィックを検出できません。

説明

パラメーター名は大文字と小文字が区別されます。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致しない、正規表現と一致する

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である

JA3 指紋

TLS バージョン、暗号スイート、圧縮アルゴリズム、TLS 拡張機能など、TLS ハンドシェイクの主要パラメーターに対して MD5 ハッシュを実行することによって生成される文字列。 この文字列は JA3 指紋と呼ばれ、クライアントの TLS 構成を表します。

JA3 指紋は、Web ブラウザー、モバイルアプリケーション、マルウェアなど、さまざまなタイプの TLS クライアントを識別および区別するために使用できます。

  • 等しい、等しくない

  • いずれかに等しい

JA4 指紋

JA4 指紋には、より多くのコンテキスト情報が含まれており、ブラウザーのバージョンやオペレーティングシステムなどの要素を考慮した追加のアルゴリズムが使用されます。 これにより、JA3 指紋で発生する可能性のある重複の問題を軽減できます。

JA4 指紋は、実際のユーザーと偽装者をより正確に区別できるため、誤検知率が低下します。

  • 等しい、等しくない

  • いずれかに等しい

HTTP/2 指紋

HTTP/2 クライアントの元の指紋に MD5 アルゴリズムを適用することによって生成された HTTP/2.0 指紋。 さまざまなクライアントを分析および識別して、より安全で効率的な通信を可能にするために使用されます。

  • 等しい、等しくない

  • いずれかに等しい

IDC

送信元 IP アドレス属性データに基づいてトラフィックソースを識別します。 サイバーアンダーグラウンドエコノミーチェーンの攻撃者は、多くの場合、低コストのクラウドサーバーを使用して攻撃を開始します。

いずれかに等しい、いずれにも等しくない

Web SDK

Web SDK によって収集されたプローブデータ(Web UMID、キーボード、マウス、またはタッチスクリーンイベントの数など)に基づいて異常トラフィックを識別します。

  • 等しい

  • 値がより大きい、値がより小さい

アプリ SDK

アプリ SDK によって収集されたプローブデータに基づいてきめ細かい制御を可能にします。

  • 含む、含まない

  • 等しい、等しくない

  • 長さがより小さい、長さが等しい、長さがより大きい

  • いずれかに等しい、いずれにも等しくない

  • いずれかを含む、いずれも含まない

  • 正規表現と一致する、正規表現と一致しない

  • で始まる、で終わる

  • 存在する、存在しない

  • 空である