このトピックでは、Web Application Firewall (WAF) のログクエリと分析結果に基づくアラート設定の例を示します。 カスタムダッシュボードにグラフを追加し、このトピックのパラメーターに基づいてアラートを設定できます。
このトピックでは、Log Serviceの元のアラート機能のアラート設定パラメーターについて説明します。 新しいアラート機能を使用する場合は、このトピックで推奨されているクエリステートメントとパラメーター設定、および「Simple Log Serviceでアラートルールを構成する」で提供されている説明に基づいてアラートを構成できます。
4xx ステータスコードの異常率
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 4xxステータスコードの割合。 ブロックされたリクエストはカウントされません。
クエリ文:
user_id: Alibaba CloudアカウントのID ではなくreal_client_ip: ブロックされたIPアドレス | 選択 user_id, ホストAS "ドメイン名" 、 Rate_2XX AS「2xxステータスコードの割合」、 Rate_3XX AS「3xxステータスコードの割合」、 Rate_4XX AS「4xxステータスコードの割合」、 Rate_5XX AS「5xxステータスコードの割合」、 countallとして「aveQPS」、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall FROM( SELECT user_id, ホスト、 count_if ( status >= 200 and status < 300 ) AS status_2XX, count_if ( status >= 300 and status < 400 ) AS status_3XX, count_if ( status >= 400 and status < 500 およびステータス <> 444 およびステータス <> 405 ) AS status_4XX, count_if ( status >= 500 and status < 600 ) AS status_5XX, カウント (*) AS countall ログから GROUP BY ホスト、 user_id ) ) どこ countall > 120 注文によって Rate_4XX DESC リミット 5
グラフには、
aveQPS
、2xxステータスコードの割合
、3xxステータスコードの割合
、4xxステータスコードの割合
、5xxステータスコードの割合
のフィールドが含まれます。 aveQPSは、ドメイン名の1秒あたりのクエリ (QPS) を示します。 外部の理由ではなく、システムワークロードによって引き起こされたステータスコードの変更を表示するために、WAFによってブロックされたHTTPフラッド攻撃またはweb攻撃によってトリガーされた444および405ステータスコードは、ステータスコードの割合
にはカウントされません。 これらのフィールドの1つ以上を選択して、アラートを設定できます。 たとえば、aveQPS>10 && Percentage of 2xx status code <60
を指定できます。 指定されたドメイン名のQPSが10を超え、指定された期間中にすべてのリクエストのステータスコードが2xxのリクエストの割合が60% 未満の場合、アラートがトリガーされます。時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.countall>3000&& $0. 4xxステータスコード> 80の割合
通知トリガーしきい値: 2
通知間隔:10 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].Domain name} -サービス: WAF -過去5分間のリクエスト :${ 結果 [0].RawResults[0].countall} -2xxステータスコードの割合: ${結果 [0].RawResults[0]. 2xxステータスコードの割合} % -3xxステータスコードの割合: ${結果 [0].RawResults[0]. 3xxステータスコードの割合} % -4xxステータスコードの割合: ${結果 [0].RawResults[0]. 4xxステータスコードの割合} % -5xxステータスコードの割合: ${結果 [0].RawResults[0]. 5xxステータスコードの割合} %
5xxステータスコードの異常率
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 5xxステータスコードの割合
クエリ文:
user_id: Alibaba CloudアカウントのID ではなくreal_client_ip: ブロックされたIPアドレス | 選択 user_id, ホストAS "ドメイン名" 、 Rate_2XX AS「2xxステータスコードの割合」、 Rate_3XX AS「3xxステータスコードの割合」、 Rate_4XX AS「4xxステータスコードの割合」、 Rate_5XX AS「5xxステータスコードの割合」、 countall AS「指定された相対時間範囲内のリクエスト」、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall FROM( SELECT user_id, ホスト、 count_if ( status >= 200 and status < 300 ) AS status_2XX, count_if ( status >= 300 and status < 400 ) AS status_3XX, count_if ( status >= 400 and status < 500 ) AS status_4XX, count_if ( status >= 500 and status < 600 ) AS status_5XX, カウント (*) AS countall ログから GROUP BY ホスト、 user_id ) ) どこ countall > 120 注文によって Rate_5XX DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.countall>3000&& $0. 5xxステータスコードの割合> 80
通知トリガーしきい値: 2
通知間隔:10 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].Domain name} -サービス: WAF -過去5分間のリクエスト :${ 結果 [0].RawResults[0].countall} -2xxステータスコードの割合: ${結果 [0].RawResults[0]. 2xxステータスコードの割合} % -3xxステータスコードの割合: ${結果 [0].RawResults[0]. 3xxステータスコードの割合} % -4xxステータスコードの割合: ${結果 [0].RawResults[0]. 4xxステータスコードの割合} % -5xxステータスコードの割合: ${結果 [0].RawResults[0]. 5xxステータスコードの割合} %
異常なQPS
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: QPSが最も高いトップ5ドメイン名
クエリ文:
user_id: Alibaba CloudアカウントのID ではなくreal_client_ip: ブロックされたIPアドレス | 選択 user_id, ホスト、 Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 countall / 60として "aveQPS" 、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall FROM( SELECT user_id, ホスト、 count_if ( status >= 200 and status < 300 ) status_2XXとして、 count_if ( status >= 300 and status < 400 ) status_3XXとして、 count_if ( status >= 400 and status < 500 およびステータス <> 444 およびステータス <> 405 ) status_4XXとして、 count_if ( status >= 500 and status < 600 ) status_5XXとして、 カウント (*) as countall ログから GROUP BY ホスト、 user_id ) ) どこ countall > 120 注文によって aveQPS DESC リミット 5
時間範囲: 1分 (相対)
頻度:1 分
トリガー条件:
$0.aveQPS>=50
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF -過去1分間の平均QPS: ${結果 [0].RawResults[0].aveQPS} -2xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_2XX}% -3xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_3XX}% -4xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_4XX}% -5xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_5XX}%
QPSの急激な増加
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: QPSの急激な増加
クエリ文:
user_id: Alibaba CloudアカウントのID | 選択 t1.user_id、 t1.now1mQPS、 t1.past1mQPS、 in_ratio, t1.host, t2.Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 aveQPS から ( ( SELECT user_id, ラウンド (c [1] / 60、0) AS now1mQPS、 ラウンド (c [2] / 60、0) AS past1mQPS、 ラウンド ( ラウンド (c [1] / 60, 0) /ラウンド (c [2] / 60, 0) * 100 -100、 0 ) AS in_ratio, host から ( SELECT cとして (t、60) を比較して下さい、 ホスト、 user_id から ( SELECT カウント (*) AS t、 ホスト、 user_id ログから によるグループ化 ホスト、 user_id ) によるグループ化 ホスト、 user_id ) WHERE c [3] > 1.1 と ( c [1] > 180 またはc [2] > 180 ) ) t1 JOIN ( SELECT user_id, ホスト、 Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 countall / 60として「aveQPS」、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 count_if ( status >= 200 and status < 300 ) AS status_2XX, count_if ( status >= 300 and status < 400 ) AS status_3XX, count_if ( status >= 400 and status < 500 およびステータス <> 444 およびステータス <> 405 ) AS status_4XX, count_if ( status >= 500 and status < 600 ) AS status_5XX, カウント (*) AS countall ログから GROUP BY ホスト、 user_id ) ) WHERE countall > 1 ) t2 on t1.host = t2.host ) 注文によって in_ratio DESC リミット 5
時間範囲: 1分 (相対)
頻度:1 分
トリガー条件:
$0.now1mqps>50&& $0.in_ ratio>300
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF -過去1分間の平均QPS: ${結果 [0].RawResults[0].now1mqps} -QPSの急激な増加率: ${結果 [0].RawResults[0].in_ratio}% -2xxステータスコードの割合: ${結果 [0].RawResults[0].rate_2xx}% -3xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_3XX}% -4xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_4XX}% -5xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_5XX}%
QPSの急激な減少
チャート名: QPSの急激な減少
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 t1.user_id、 t1.now1mQPS、 t1.past1mQPS、 de_ratio, t1.host, t2.Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 aveQPS から ( ( SELECT user_id, ラウンド (c [1] / 60、0) AS now1mQPS、 ラウンド (c [2] / 60、0) AS past1mQPS、 ラウンド ( 100ラウンド (c [1] / 60, 0) /ラウンド (c [2] / 60, 0) * 100、 2 ) AS de_ratio, host から ( SELECT cとして (t、60) を比較して下さい、 ホスト、 user_id から ( SELECT カウント (*) AS t、 ホスト、 user_id ログから GROUP BY ホスト、 user_id ) GROUP BY ホスト、 user_id ) WHERE c [3] < 0.9 AND ( c [1] > 180 またはc [2] > 180 ) ) t1 JOIN ( SELECT user_id, ホスト、 Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 countall / 60として「aveQPS」、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ホスト、 count_if ( status >= 200 and status < 300 ) AS status_2XX, count_if ( status >= 300 and status < 400 ) AS status_3XX, count_if ( status >= 400 and status < 500 およびステータス <> 444 およびステータス <> 405 ) AS status_4XX, count_if ( status >= 500 and status < 600 ) AS status_5XX, カウント (*) AS countall ログから GROUP BY ホスト、 user_id ) ) WHERE countall > 1 ) t2 on t1.host = t2.host ) 注文によって de_ratio DESC リミット 5
チャートには、
now1mqps
、past1mqps
、de_ratio
、およびhost
のフィールドが含まれます。 now1mqpsは、現在の分の平均QPSを示す。 past1mqpsは直前の平均QPSを示します。 de_ratioはQPS減少率を示す。 これらのフィールドの1つ以上を選択して、アラートを設定できます。時間範囲: 1分 (相対)
頻度:1 分
トリガー条件:
$0.now1mqps>10&& $0.de_ ratio>50
通知トリガーしきい値: 2
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF (インターナショナル) -過去1分間の平均QPS: ${結果 [0].RawResults[0].now1mqps} -QPSの急激な減少率: ${結果 [0].RawResults[0].de_ratio}% -2xxステータスコードの割合: ${結果 [0].RawResults[0].rate_2xx}% -3xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_3XX}% -4xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_4XX}% -5xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_5XX}%
過去5分間にアクセス制御リスト (ACL) ポリシーによってブロックされたリクエスト
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: ACLポリシーによってブロックされたリクエスト
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 user_id, ホスト、 count_if ( final_plugin = 'waf' そしてfinal_action = 'block' ) 「保護ルールエンジンによってブロックされた要求」として、 count_if ( final_plugin = 'cc' そしてfinal_action = 'block' ) AS「HTTPフラッド保護ポリシーによってブロックされたリクエスト」、 count_if ( final_plugin = 'acl' そしてfinal_action = 'block' ) 「ACLポリシーによってブロックされたリクエスト」として、 count_if ( final_plugin = 'antiscan' そしてfinal_action = 'block' ) 「スキャン保護ポリシーによってブロックされた要求」として、 count_if ( (final_plugin = 'waf') そしてfinal_action = 'block') OR (final_plugin = 'cc') そしてfinal_action = 'block') OR (final_plugin = 'acl') そしてfinal_action = 'block') OR (final_plugin = 'antiscan') そしてfinal_action = 'block') ) totalblockとして グループ化 ホスト、 user_id 持っている ( 「ACLポリシーによってブロックされたリクエスト」>= 0 AND「保護ルールエンジンによってブロックされたリクエスト」>= 0 および「HTTPフラッド保護ポリシーによってブロックされたリクエスト」>= 0 AND「スキャン保護ポリシーによってブロックされたリクエスト」>= 0 AND totalblock > 10 ) 注文によって 「ACLポリシーによってブロックされたリクエスト」DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.totalblock>=500&&($0. ACLポリシーでブロックされたリクエスト>=500)
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF -過去5分間にブロックされたリクエスト: ${結果 [0].RawResults[0].totalblock} -ACLポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. ACLポリシーによってブロックされたリクエスト} -保護ルールエンジンによってブロックされたリクエスト: ${結果 [0].RawResults[0]. 保護ルールエンジンによってブロックされたリクエスト} -HTTPフラッド保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. HTTPフラッド保護ポリシーによってブロックされたリクエスト} -スキャン保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. スキャン保護ポリシーによってブロックされたリクエスト}
保護ルールエンジンによって過去5分間にブロックされたリクエスト
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 保護ルールエンジンによってブロックされたリクエスト
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 user_id, ホスト、 count_if ( final_plugin = 'waf' そしてfinal_action = 'block' ) 「保護ルールエンジンによってブロックされた要求」として、 count_if ( final_plugin = 'cc' そしてfinal_action = 'block' ) AS「HTTPフラッド保護ポリシーによってブロックされたリクエスト」、 count_if ( final_plugin = 'acl' そしてfinal_action = 'block' ) 「ACLポリシーによってブロックされたリクエスト」として、 count_if ( final_plugin = 'antiscan' そしてfinal_action = 'block' ) 「スキャン保護ポリシーによってブロックされた要求」として、 count_if ( (final_plugin = 'waf') そしてfinal_action = 'block') OR (final_plugin = 'cc') そしてfinal_action = 'block') OR (final_plugin = 'acl') そしてfinal_action = 'block') OR (final_plugin = 'antiscan') そしてfinal_action = 'block') ) totalblockとして グループ化 ホスト、 user_id 持っている ( 「ACLポリシーによってブロックされたリクエスト」>= 0 AND「保護ルールエンジンによってブロックされたリクエスト」>= 0 および「HTTPフラッド保護ポリシーによってブロックされたリクエスト」>= 0 AND「スキャン保護ポリシーによってブロックされたリクエスト」>= 0 AND totalblock > 10 ) 注文によって 「保護ルールエンジンによってブロックされたリクエスト」DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.totalblock>=500&&(保護ルールエンジンによってブロックされた $0.Requests>=500)
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF -過去5分間にブロックされたリクエスト: ${結果 [0].RawResults[0].totalblock} -ACLポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. ACLポリシーによってブロックされたリクエスト} -保護ルールエンジンによってブロックされたリクエスト: ${結果 [0].RawResults[0]. 保護ルールエンジンによってブロックされたリクエスト} -HTTPフラッド保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. HTTPフラッド保護ポリシーによってブロックされたリクエスト} -スキャン保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. スキャン保護ポリシーによってブロックされたリクエスト}
過去5分間にHTTPフラッド保護ポリシーによってブロックされたリクエスト
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: HTTPフラッド保護ポリシーによってブロックされたリクエスト
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 user_id, ホスト、 count_if ( final_plugin = 'waf' そしてfinal_action = 'block' ) 「保護ルールエンジンによってブロックされた要求」として、 count_if ( final_plugin = 'cc' そしてfinal_action = 'block' ) AS「HTTPフラッド保護ポリシーによってブロックされたリクエスト」、 count_if ( final_plugin = 'acl' そしてfinal_action = 'block' ) 「ACLポリシーによってブロックされたリクエスト」として、 count_if ( final_plugin = 'antiscan' そしてfinal_action = 'block' ) 「スキャン保護ポリシーによってブロックされた要求」として、 count_if ( (final_plugin = 'waf') そしてfinal_action = 'block') OR (final_plugin = 'cc') そしてfinal_action = 'block') OR (final_plugin = 'acl') そしてfinal_action = 'block') OR (final_plugin = 'antiscan') そしてfinal_action = 'block') ) totalblockとして グループ化 ホスト、 user_id 持っている ( 「ACLポリシーによってブロックされたリクエスト」>= 0 AND「保護ルールエンジンによってブロックされたリクエスト」>= 0 および「HTTPフラッド保護ポリシーによってブロックされたリクエスト」>= 0 AND「スキャン保護ポリシーによってブロックされたリクエスト」>= 0 AND totalblock > 10 ) 注文によって 「HTTPフラッド保護ポリシーによってブロックされたリクエスト」DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.totalblock>=500&&($0. HTTPフラッド保護ポリシーによってブロックされたリクエスト>=500)
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF -過去5分間にブロックされたリクエスト: ${結果 [0].RawResults[0].totalblock} -ACLポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. ACLポリシーによってブロックされたリクエスト} -保護ルールエンジンによってブロックされたリクエスト: ${結果 [0].RawResults[0]. 保護ルールエンジンによってブロックされたリクエスト} -HTTPフラッド保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. HTTPフラッド保護ポリシーによってブロックされたリクエスト} -スキャン保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. スキャン保護ポリシーによってブロックされたリクエスト}
過去5分間にスキャン保護ポリシーによってブロックされたリクエスト
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: スキャン保護ポリシーによってブロックされたリクエスト
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 user_id, ホスト、 count_if ( final_plugin = 'waf' そしてfinal_action = 'block' ) 「保護ルールエンジンによってブロックされた要求」として、 count_if ( final_plugin = 'cc' そしてfinal_action = 'block' ) AS「HTTPフラッド保護ポリシーによってブロックされたリクエスト」、 count_if ( final_plugin = 'acl' そしてfinal_action = 'block' ) 「ACLポリシーによってブロックされたリクエスト」として、 count_if ( final_plugin = 'antiscan' そしてfinal_action = 'block' ) 「スキャン保護ポリシーによってブロックされた要求」として、 count_if ( (final_plugin = 'waf') そしてfinal_action = 'block') OR (final_plugin = 'cc') そしてfinal_action = 'block') OR (final_plugin = 'acl') そしてfinal_action = 'block') OR (final_plugin = 'antiscan') そしてfinal_action = 'block') ) totalblockとして グループ化 ホスト、 user_id 持っている ( 「ACLポリシーによってブロックされたリクエスト」>= 0 AND「保護ルールエンジンによってブロックされたリクエスト」>= 0 および「HTTPフラッド保護ポリシーによってブロックされたリクエスト」>= 0 AND「スキャン保護ポリシーによってブロックされたリクエスト」>= 0 AND totalblock > 10 ) 注文によって 「スキャン保護ポリシーによってブロックされたリクエスト」DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.totalblock>=500&&($0.Requests blocked by scan protection policies>=500)
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF (インターナショナル) -過去5分間にブロックされたリクエスト: ${結果 [0].RawResults[0].totalblock} -ACLポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. ACLポリシーによってブロックされたリクエスト} -保護ルールエンジンによってブロックされたリクエスト: ${結果 [0].RawResults[0]. 保護ルールエンジンによってブロックされたリクエスト} -HTTPフラッド保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. HTTPフラッド保護ポリシーによってブロックされたリクエスト} -スキャン保護ポリシーによってブロックされたリクエスト: ${結果 [0].RawResults[0]. スキャン保護ポリシーによってブロックされたリクエスト}
単一のIPアドレスからの攻撃
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 単一のIPアドレスからの攻撃
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 user_id, real_client_ip、 concat ( 'ACLポリシーによってブロックされたリクエスト:' 、 キャスト (aclblock AS varchar(10)) 、 ' ', 「保護ルールエンジンによってブロックされたリクエスト: 」、 キャスト (wafblock AS varchar(10)) 、 ' ', 'HTTPフラッド保護ポリシーによってブロックされたリクエスト:' 、 キャスト (aclblock AS varchar (10)) ) blockNumとして、 totalblock、 allRequest から ( SELECT user_id, real_client_ip、 count_if ( final_plugin = 'acl' そしてfinal_action = 'block' ) aclblockとして、 count_if ( final_plugin = 'waf' そしてfinal_action = 'block' ) wafblockとして、 count_if ( final_plugin = 'cc' そしてfinal_action = 'block' ) ccblockとして、 count_if ( ( final_plugin = 'acl' そしてfinal_action = 'block' ) または ( final_plugin = 'waf' そしてfinal_action = 'block' ) または ( final_plugin = 'cc' そしてfinal_action = 'block' ) ) totalblockとして、 allRequestとしてカウント (*) ログから GROUP BY user_id, real_client_ip 持っている totalblock > 1 ORDER BY totalblock DESC リミット 5 )
グラフには、
real_client_ip
、blockNum
、totalblock
、allRequest
のフィールドが含まれています。 blockNumには、ACLポリシーでブロックされたリクエスト
、保護ルールエンジンでブロックされたリクエスト
、HTTPフラッド保護ポリシーでブロックされたリクエスト
が含まれます。 real_client_ipは、攻撃が開始されるIPアドレスを示します。 totalblockは、ブロックされたリクエストの総数を示します。 allRequestはリクエストの総数を示します。 これらのフィールドの1つ以上を選択して、アラートを設定できます。時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.totalblock >=500
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -サービス: WAF -過去5分間に攻撃が頻繁に開始されるトップ3のIPアドレス: - ${結果 [0].RawResults[0].real_client_ip} (${結果 [0].RawResults[0].blockNum}) - ${結果 [0].RawResults[1].real_client_ip} (${結果 [0].RawResults[1].blockNum}) - ${結果 [0].RawResults[2].real_client_ip} (${結果 [0].RawResults[2].blockNum})
単一のIPアドレスから攻撃を受けている多数のドメイン名
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 単一のIPアドレスによって攻撃された多数のドメイン名
クエリ文:
user_id: Alibaba CloudアカウントのID upstream_statusではない: 504 upstream_addrではない: '-' とrequest_time_msec < 5000 およびupstream_status :200 ua_browserではなく: bot | 選択 user_id, ホスト、 upstream_time, request_time, requestnum から ( SELECT user_id, ホスト、 ラウンド (avg(upstream_response_time) 、2) * 1000 AS upstream_time、 ラウンド (avg(request_time_msec), 2) AS request_time, requestnumとしてカウント (*) ログから GROUP BY ホスト、 user_id ) どこ requestnum > 30 注文によって request_time DESC リミット 5
グラフには、
real_client_ip
、totalblock
、およびdomainnum
のフィールドが含まれています。 real_client_ipは攻撃IPアドレスを示します。 totalblockは、ブロックされたリクエストの総数を示します。 domainnumは、このIPアドレスによって攻撃されたドメイン名の数を示します。 これらのフィールドの1つ以上を選択して、アラートを設定できます。 たとえば、totalblock>500&& domainnum>5
を指定できます。 IPアドレスから開始された攻撃の総数が500に達し、指定された時間範囲内に攻撃を受けているドメイン名の数が5を超えると、アラートがトリガーされます。時間範囲: 5分 (相対)
頻度:1 分
トリガー条件:
$0.domainnum>=10
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -サービス: WAF -攻撃IPアドレス: ${結果 [0].RawResults[0].real_client_ip} -攻撃されたドメイン名: ${結果 [0].RawResults[0].domainnum} -過去5分間の攻撃リクエスト: ${結果 [0].RawResults[0].totalblock} -できるだけ早い機会にアラートを処理します。
過去5分間の異常な平均レイテンシ
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: 異常な平均レイテンシ
クエリ文:
user_id: Alibaba CloudアカウントのID upstream_statusではない: 504 upstream_addrではない: '-' とrequest_time_msec < 5000 およびupstream_status :200 ua_browserではなく: bot | 選択 user_id, ホスト、 upstream_time, request_time, requestnum から ( SELECT user_id, ホスト、 ラウンド (avg(upstream_response_time) 、2) * 1000 AS upstream_time、 ラウンド (avg(request_time_msec), 2) AS request_time, requestnumとしてカウント (*) ログから GROUP BY ホスト、 user_id ) どこ requestnum > 30 注文によって request_time DESC リミット 5
時間範囲: 5分 (相対)
頻度:5 分
トリガー条件:
$0.request_time>1000&& $0.requestnum>30
通知トリガーしきい値: 2
通知間隔:10 分
コンテンツ:
- [時間]: ${FireTime} - [Uid]:${ 結果 [0].RawResults[0].user_id} -ドメイン名: ${結果 [0].RawResults[0].host} -サービス: WAF (インターナショナル) -[トリガー条件]: ${Condition} -過去5分間で最も長いレイテンシを持つトップ3のドメイン名。 レイテンシの単位: ミリ秒。 -Host1 :${ 結果 [0].RawResults[0].host} Delay_time :${ 結果 [0].RawResults[0].upstream_time} -Host2 :${ 結果 [0].RawResults[1].host} Delay_time :${ 結果 [0].RawResults[1].upstream_time} -Host3 :${ 結果 [0].RawResults[2].host} Delay_time :${ 結果 [0].RawResults[2].upstream_time}
トラフィックの急激な減少
このタイプのアラートには、次のパラメーター設定を推奨します。
チャート名: トラフィックの急激な減少
クエリ文:
user_id: Alibaba CloudアカウントのID 選択 t1.user_id、 t1.now1mQPS、 t1.past1mQPS、 de_ratio, t2.Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 aveQPS から ( ( SELECT user_id, ラウンド (c [1] / 60、0) AS now1mQPS、 ラウンド (c [2] / 60、0) AS past1mQPS、 ラウンド ( 100ラウンド (c [1] / 60, 0) /ラウンド (c [2] / 60, 0) * 100、 2 ) AS de_ratio から ( SELECT cとして (t、60) を比較して下さい、 user_id から ( SELECT カウント (*) AS t、 user_id ログから GROUP BY user_id ) GROUP BY user_id ) WHERE c [3] < 0.9 AND ( c [1] > 180 またはc [2] > 180 ) ) t1 JOIN ( SELECT user_id, Rate_2XX、 Rate_3XX, Rate_4XX、 Rate_5XX、 countall / 60として「aveQPS」、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, ラウンド ( ラウンド (status_2XX * 1.0000 / countall, 4) * 100, 2 ) Rate_2XXとして、 ラウンド ( ラウンド (status_3XX * 1.0000 / countall, 4) * 100, 2 ) Rate_3XXとして、 ラウンド ( ラウンド (status_4XX * 1.0000 / countall, 4) * 100, 2 ) Rate_4XXとして、 ラウンド ( ラウンド (status_5XX * 1.0000 / countall, 4) * 100, 2 ) Rate_5XXとして、 status_2XX, status_3XX, status_4XX, status_5XX, countall から ( SELECT user_id, count_if ( status >= 200 ANDステータス <300 ) AS status_2XX, count_if ( status >= 300 ANDステータス <400 ) AS status_3XX, count_if ( status >= 400 ANDステータス <500 ANDステータス <> 444 ANDステータス <> 405 ) AS status_4XX, count_if ( status >= 500 ANDステータス <600 ) AS status_5XX, カウント (*) AS countall ログから GROUP BY user_id ) ) WHERE countall > 0 ) t2 N t1.us er_id = t2.user_id ) 注文によって de_ratio DESC リミット 5
時間範囲: 1分 (相対)
頻度:1 分
トリガー条件:
$0.de_ ratio>50&& $0.now1mqps>20
通知トリガーしきい値: 1
通知間隔:5 分
コンテンツ:
- [時間]: ${FireTime} - [UID]:${ 結果 [0].RawResults[0].user_id} -サービス: WAF -過去1分間の平均QPS: ${結果 [0].RawResults[0].now1mqps} -[トリガー条件 (トラフィックとQPSの急激な減少率)]:${ condition} -QPSの急激な減少率: ${結果 [0].RawResults[0].de_ratio}% -2xxステータスコードの割合: ${結果 [0].RawResults[0].rate_2xx}% -3xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_3XX}% -4xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_4XX}% -5xxステータスコードの割合: ${結果 [0].RawResults[0].Rate_5XX}%