Web Application Firewall (WAF) は、すぐに使えるセキュリティを提供します。アセットを WAF に追加すると、事前設定されたコア保護ルールのセットが自動的に適用され、追加設定なしで、SQL インジェクション、クロスサイトスクリプティング (XSS)、コマンドインジェクションなどの一般的な Web アプリケーション攻撃から即座に防御します。このトピックでは、これらのルールの管理方法と微調整方法について説明します。
[Web コア保護ルール]機能は順次展開中です。このトピックでは新バージョンについて説明します。旧バージョンをご利用の場合は、「コアWeb保護ルール (レガシー)」をご参照ください。アップグレードに関するお知らせについては、「[お知らせ] WAF 3.0 基本保護ルール機能のアップグレード」をご参照ください。ご利用のバージョンは、WAF コンソールの ページにある[Web コア保護ルール]セクションの表示内容で確認できます。
|
新バージョン |
セキュリティ保護の経験に基づいた組み込みのルールセットで、SQL インジェクション、XSS、コード実行、Web シェルアップロード、コマンドインジェクションなどの一般的な Web アプリケーション攻撃から防御します。[テンプレートの作成] をクリックして、保護ルールテンプレートを作成します。 |
|
旧バージョン |
セキュリティ保護の経験に基づいた組み込みのルールセットで、SQL インジェクション、XSS、コード実行、Web シェルアップロード、コマンドインジェクションなどの一般的な Web アプリケーション攻撃から防御します。[テンプレートの作成] をクリックして保護テンプレートを作成するか、[ルールグループ管理] をクリックしてルールグループを管理できます。 |
基本概念
-
[Web コア保護ルール]:コア Web 保護内の保護モジュールです。このモジュールは保護テンプレートを通じて有効になります。WAF を有効化すると、システムは自動的にデフォルトの保護テンプレートを作成します。手動で複数の保護テンプレートを作成することもできます。
-
保護テンプレート:保護テンプレートは、その内容と範囲を定義する保護ルールのセットです。保護テンプレートを作成する際は、[Template Information]、[エンジン設定]、[有効範囲] を設定する必要があります。
-
[Template Information]:テンプレートの種類を定義します。これはテンプレート作成後に変更することはできません。テンプレートには 2 種類あります:
テンプレートの種類
説明
ユースケース
デフォルトの保護テンプレート
-
システムは初期のデフォルト保護テンプレートを提供します。
-
このテンプレートは、カスタム保護テンプレートに関連付けられていない保護対象および保護対象グループに自動的に適用されます。また、新しく追加されたオブジェクトにも適用されます。
-
特定のオブジェクトのステータスを「適用外」に設定することで、手動で除外できます。
-
コア保護ルールモジュールでは、デフォルトの保護テンプレートは 1 つのみです。
-
保護対象をカスタム保護テンプレートから削除すると、その保護対象は自動的にデフォルトの保護テンプレートに追加されます。
グローバルに適用される一般的な保護ルールを展開するために使用されます。サービスに特別な保護要件がない場合は、デフォルトの保護テンプレートを使用することを推奨します。追加の設定は不要です。
カスタム保護テンプレート
適用する保護対象または保護対象グループを手動で指定する必要があります。
特定のビジネスニーズに合わせて、きめ細かい保護ルールを展開するために使用されます。
-
-
[エンジン設定]:保護ルールを定義します。セキュリティのベストプラクティスに基づき、WAF はさまざまな種類の攻撃から防御するために、[システム保護ルール]ごとに分類された複数の[検出モジュール]を提供します。[アクション]の[システム保護ルール]を設定できます。[カスタム保護ルール]内のアセットについては、ビジネス要件を満たすために[カスタム保護ルール]を設定することもできます。
-
[有効範囲]:保護テンプレートのターゲットを指定します。有効範囲を設定することで、特定の保護対象または保護対象グループに保護ルールを適用できます。1 つの保護対象または保護対象グループは、1 つの保護テンプレートにのみ関連付けることができます。
-
保護対象:WAF に追加した各ドメインまたはクラウドサービスインスタンスに対して、システムが自動的に保護対象を作成します。
-
保護対象グループ:一元管理のために、複数の保護対象を保護対象グループに追加できます。
-
-
メリット
-
すぐに使える保護:デフォルトのシステムテンプレートには、複数の組み込み保護ルールが含まれています。新しく追加されたアセットはこれらのルールによって自動的に保護され、追加設定なしで日常的なセキュリティニーズに対応します。
-
複数のデコード方法:WAF は、JSON、XML、Form などのデータ形式や、Base64 や HTML エンティティなどのさまざまなエンコード方法の解析とデコードをサポートしています。これにより、複数層のエンコードや圧縮によって隠された悪意のあるトラフィックを確実に検出します。
-
インテリジェントホワイトリストエンジン:WAF は AI を使用して過去のトラフィックから学習し、特定の URL で誤検知を引き起こす保護ルールを特定し、自動的にホワイトリストに追加します。これにより、誤検知を効果的に削減します。
始める前に、Web サービスを WAF に追加し、必要な保護対象が作成されていることを確認してください。追加していない場合は、「オンボーディングの概要」をご参照ください。
きめ細かい保護テンプレートの作成
サービスを WAF に追加すると、システムは自動的にデフォルトの保護テンプレートをすべての保護対象に適用し、保護を有効にします。サービスに特別な保護要件がない場合は、保護テンプレートを作成する必要はありません。異なる保護対象に異なるルールを設定する必要がある場合にのみ、以下の手順に従ってください。
WAF の誤検知または検知漏れに対処する場合は、「誤検知と検知漏れへの対応」をご参照ください。
-
コンソールへ移動:
Web Application Firewall 3.0 コンソールにログインします。上部メニューで、WAF インスタンスのリソースグループとリージョン ([中国本土]または[中国本土以外]) を選択します。左側メニューで、 を選択します。[Web コア保護ルール]セクションで、テンプレートを作成 をクリックします。
-
テンプレート情報[Template Information]:
-
[テンプレート名]:識別しやすい名前を入力します。
-
[デフォルトテンプレート]:システムは初期のデフォルト保護テンプレートを提供し、コア保護ルールモジュールには 1 つのみです。したがって、初期のデフォルトテンプレートが存在する場合、これを「はい」に設定することはできません。
-
はい:[有効範囲] を設定する必要はありません。作成されると、テンプレートはカスタム保護テンプレートに関連付けられていない保護対象および保護対象グループに自動的に適用されます。また、新しく追加されたオブジェクトにも適用されます。特定のオブジェクトのステータスを「適用外」に設定することで、手動で除外できます。
-
いいえ:適用する保護対象または保護対象グループを手動で指定して、[有効範囲]必要があります。
-
-
-
[エンジン設定]:
-
[検出エンジンの自動更新]:この機能はデフォルトで有効になっています。
-
有効:Alibaba Cloud セキュリティチームからのルール更新が、お使いの検出エンジンに自動的に同期されます。WAF は新しいルールを自動的に適用します。ルールの[ルールのステータス]は「有効」または「無効」に設定され、ルールの[アクション]は「監視」または「ブロック」に設定されます。
-
無効:ルールは引き続き同期されますが、[ルールのステータス]は「無効」に、[アクション]は「監視」に設定されます。
-
-
[エンジン構成]:右上隅のエンジン構成 をクリックするか、以下の特定の[設定]の操作 列にある検出モジュール をクリックして、保護ルールを設定します。サポートされている検出モジュールの一覧については、「サポート対象の検出モジュール」をご参照ください。
[システム保護ルール]
システム保護ルールは、Alibaba Cloud の組み込み検出モジュールに基づいており、[超厳格]、[厳格]、[普通]、[ゆるい]の 4 つの厳格度レベルで利用できます。デフォルトでは、[普通]および[ゆるい]レベルのルールが有効になっており、[超厳格]および[厳格]レベルのルールは無効になっています。
システム保護ルールには、以下の設定ができます:
-
[アクション]:ルールに一致したリクエストに対するアクションを選択します。
-
[ブロック]:一致したリクエストをブロックし、クライアントにブロックページを返します。
-
[観察]:一致したリクエストを許可し、ログに記録します。ルールをテストする際は、まず[観察]モードを使用し、WAF ログを分析して誤検知が発生していないことを確認できます。
-
-
[ルールのステータス]:ルールを有効または無効にできます。無効にすると、ルールはリクエストに適用されません。
説明さまざまな保護ルールのヒット詳細は、「セキュリティレポート」で確認できます。
[カスタム保護ルール] (ハイブリッドクラウドモードのみ)
カスタム保護ルールは、ハイブリッドクラウドモードで WAF に追加された保護対象にのみ適用されます。カスタム保護ルールを追加して保護テンプレートで使用する方法については、「ルールライブラリ管理」をご参照ください。
-
-
[適応エンジン]:[スマートプラス白エンジン]機能はデフォルトで無効になっています。有効にすると、WAF は AI を使用して過去のトラフィックから学習し、URL レベルで誤検知を引き起こすルールを特定し、自動的にホワイトリストルールを作成して誤検知を削減します。
自動的に作成されたホワイトリストテンプレートには、AutoTemplate という名前が付きます。詳細については、「ホワイトリスト」をご参照ください。
説明この機能は、従量課金、サブスクリプション Enterprise Edition、およびサブスクリプション Ultimate Edition のインスタンスでのみ利用可能です。
-
-
有効範囲[有効範囲]:
このテンプレートを適用したい保護対象と保護対象グループを選択します。テンプレートの有効範囲は、手順 2 の設定によって異なります:
-
システム作成のデフォルトテンプレートを使用するか、デフォルトとして設定する場合:有効範囲を設定する必要はありません。作成されると、テンプレートはカスタム保護テンプレートに関連付けられていない保護対象および保護対象グループ、および新しく追加されたオブジェクトに自動的に適用されます。特定のオブジェクトのステータスを「適用外」に設定することで、手動で除外できます。
-
デフォルトとして設定しない場合:テンプレートを適用する保護対象および保護対象グループを手動で指定する必要があります。
説明保護対象または保護対象グループの有効ステータスは、テンプレート作成中および作成後の両方で手動で調整できます。
-
誤検知と検知漏れへの対応
WAF が正当なトラフィックをブロック (誤検知) した場合、または攻撃をブロックできなかった (検知漏れ) 場合は、以下の手順に従って原因を特定し、設定を調整してください。
誤検知への対応
-
左側メニューで、 を選択します。
説明Log Service を有効にしている場合は、 に移動して、完全なリクエストログを表示することもできます。
-
時間、保護対象 (アクセスされたドメイン/クラウドサービスインスタンス)、およびアクションでログをフィルタリングして、特定のブロックされたリクエストを特定します。
[セキュリティレポート]ページで、フィルター条件を設定します:[カスタム]の時間範囲を選択し、ターゲットの[ドメイン/インスタンス]を選択し、[アクション]を[ブロック]に設定して、指定した期間の攻撃ブロック傾向と攻撃タイプの分布を表示します。
-
正当なリクエストがブロックされたことを確認した場合は、[ログリスト]でそのリクエストを見つけ、誤検知の無視 列の操作 をクリックしてホワイトリストルールを作成し、リクエストを許可します。
リクエストに共通の特徴があることに気付いた場合 (たとえば、信頼できる IP アドレスが複数の異なる保護ルールをトリガーする場合)、ブロックされた各ログエントリを個別にホワイトリストに登録するよりも、単一のホワイトリストルールに IP アドレスを[一致条件]として追加することを推奨します。詳細については、「ホワイトリスト」をご参照ください。
検知漏れへの対応
攻撃が WAF によってブロックされなかった場合は、以下の一般的な原因と推奨される解決策を検討してください:
-
リクエストが WAF によって処理されていない
-
原因:WAF で設定された SSL 証明書またはリスニングポートが、オリジンサーバーのものと一致していません。
推奨事項:WAF とオリジンサーバーの SSL 証明書とポートの設定が一致していることを確認してください。 -
原因:CNAME オンボーディングの場合、DNS レコードが正しく変更されていないため、トラフィックが WAF に転送されていません。
推奨事項:DNS レコードが WAF から提供された CNAME アドレスを正しく指していることを確認してください。 -
原因:CNAME オンボーディングの場合、攻撃者がオリジンサーバーの IP アドレスに直接アクセスして WAF をバイパスしています。
推奨事項:サーバーのセキュリティグループで、WAF のバックトゥオリジン IP アドレスからのトラフィックのみを許可してください。
-
原因:クラウドサービスオンボーディングの場合、WAF に追加されたクラウドサービスインスタンスが、ドメインのトラフィックが実際にルーティングされるインスタンスではありません。
推奨事項:正しいクラウドサービスインスタンスが WAF に追加されていることを確認してください。
-
-
リクエストは WAF によって処理されたが、対応するルールがない
デフォルトの保護テンプレートは、すべての攻撃タイプに対応できるわけではありません。攻撃の特性に応じて、他の保護モジュールを有効にする必要がある場合があります:
-
ネットワーク層の DDoS 攻撃 (高頻度、大容量) の場合:Anti-DDoS製品を使用します。
-
自動化されたスクリプトやボット攻撃の場合:ボット管理を使用します。
-
特定の特性を持つ攻撃 (固定の User-Agent や URL パスなど) の場合:カスタムルールを使用します。
-
固定の送信元 IP アドレスからの攻撃の場合:IP ブロックリストを使用します。
-
非ビジネスリージョンまたは国からの攻撃の場合:リージョンブロックを使用します。
-
API を標的とする攻撃の場合:API セキュリティを使用します。
定期メンテナンス
-
保護テンプレートの表示:テンプレート名の左にある
アイコンをクリックして、それに含まれるエンジン情報を表示します。 -
保護テンプレートの有効化/無効化:[ステータス]スイッチを使用して、テンプレートを有効または無効にします。
-
保護テンプレートの編集:テンプレートの編集 列にある操作 をクリックして、[Template Information]、[エンジン設定]、または[有効対象]を変更します。
-
保護テンプレートの削除:テンプレートが不要になった場合は、その削除 列にある操作 をクリックし、確認ダイアログボックスで削除 をクリックします。
重要-
カスタム保護テンプレートが削除された場合、それに関連付けられていた保護対象は自動的にデフォルトの保護テンプレートに追加されます。
-
デフォルトの保護テンプレートが、まだ保護対象を含んでいる状態で削除された場合、それらのオブジェクトはコア保護ルールによって保護されなくなります。
-
サポート対象の検出モジュール
コア保護ルールは、Web アプリケーションに対するさまざまな種類の攻撃を識別し、ブロックできる以下の検出モジュールをサポートしています。
|
攻撃タイプ |
説明 |
|
[SQL Injection] |
SQL インジェクション攻撃は、意図しないデータベースコマンドを実行するために、悪意のある SQL コードをクエリに注入するものです。 |
|
[XSS] |
クロスサイトスクリプティング (XSS) 攻撃は、悪意のあるスクリプトを Web ページに埋め込み、他のユーザーがそのページを閲覧したときに実行させるものです。 |
|
[Code Execution] |
コード実行攻撃は、注入された悪意のあるコードをサーバーに実行させて、攻撃者の目的を達成するものです。 |
|
[CRLF Injection] |
CRLF インジェクション攻撃は、キャリッジリターン (CR, \r) とラインフィード (LF, \n) を HTTP ヘッダーに挿入して、HTTP レスポンスを操作したり、HTTP レスポンス分割を行ったりするものです。 |
|
[ローカルファイルインクルード] |
Web アプリケーションのファイルインクルード機能を悪用し、ファイルパスを操作してサーバー上の意図しないローカルファイルを読み込むものです。これにより、設定ファイルや認証情報などの機密データが漏洩する可能性があります。 |
|
[リモートファイルインクルード] |
サーバーで |
|
[Webshell] |
Web シェルは、アップロードまたは注入されると、攻撃者がサーバーをリモートで制御できるようになる悪意のあるスクリプトファイルです。 |
|
[OS コマンドインジェクション] |
OS コマンドインジェクション攻撃は、悪意のあるオペレーティングシステムコマンドをプログラムに埋め込み、サーバーに実行させるものです。 |
|
[スキャン行為] |
Web アプリケーションスキャナーの動作や特性を指します。これらのツールは、Web アプリケーションを自動的にスキャンして、SQL インジェクションや XSS などの潜在的なセキュリティ脆弱性を見つけるために、多数のリクエストを生成・送信し、アプリケーションの応答を分析します。 |
|
[ビジネスロジック脆弱性] |
ビジネスロジックの欠陥は、アプリケーションのビジネスプロセスの実装における脆弱性です。これらの欠陥は、従来の入力検証や出力エンコーディングでは防げないことがよくあります。攻撃者がアプリケーションの通常のワークフローを操作して、不正なアクセスを得たり、他の悪意のあるアクションを実行したりする可能性があります。 |
|
[任意ファイル読み取り] |
任意のファイル読み取りの脆弱性により、攻撃者は通常、HTTP リクエストのファイルパスパラメータを介して、システム上の任意のファイルを読み取ることができます。この脆弱性を悪用することで、攻撃者は設定ファイル、認証情報、個人データなどの機密情報にアクセスできます。 |
|
[任意ファイルダウンロード] |
任意のファイルダウンロードの脆弱性は、任意のファイル読み取りに似ていますが、攻撃者がシステムから任意のファイルをダウンロードできる点が異なります。これは機密情報の漏洩につながる可能性があり、オフライン分析のために攻撃者が完全なシステムバックアップを取得することさえ可能にする場合があります。 |
|
[XML 外部実体攻撃] |
XXE 脆弱性は、XML パーサーが外部エンティティを処理する方法を悪用し、攻撃者がシステムファイルを読み取ったり、サーバーサイドリクエストフォージェリ (SSRF) を実行したり、サービス拒否 (DoS) を引き起こしたりすることを可能にします。この攻撃は通常、悪意のある外部エンティティを含む XML 入力を通じて達成されます。 |
|
[クロスサイトリクエストフォージェリ (CSRF)] |
CSRF 攻撃は、認証済みのユーザーを騙して、Web アプリケーションに不正なリクエストを送信させるものです。通常、攻撃者はユーザーを悪意のあるリンクをクリックさせたり、悪意のあるページを訪問させたりして、ユーザーの名前で設定変更やフォーム送信などのアクションを実行させます。 |
|
[式インジェクション] |
エクスプレッションインジェクション攻撃は、サーバーによって実行される悪意のある式を埋め込むものです。 |
|
[.net 逆シリアル化] |
デシリアライゼーションは、データ (JSON、XML、バイナリなど) をフォーマットからオブジェクトに戻すプロセスです。.NET アプリケーションでは、安全でないデシリアライゼーションは任意のコード実行につながる可能性があります。攻撃者がデシリアライズされたデータを制御できる場合、悪意のあるデータを注入して任意のコードを実行できる可能性があります。 |
|
[Java の逆シリアル化] |
Java デシリアライゼーション攻撃は、悪意のあるオブジェクトをデシリアライズし、その過程でサーバーに悪意のあるコードを実行させるものです。 |
|
[PHP の逆シリアル化] |
PHP デシリアライゼーション攻撃は、悪意のあるオブジェクトをデシリアライズし、その過程でサーバーに悪意のあるコードを実行させるものです。 |
|
[SSRF] |
サーバーサイドリクエストフォージェリ (SSRF) 攻撃は、サーバーサイドのリクエストを偽造し、サーバーに内部または外部のリソースにアクセスさせるものです。 |
|
[パススルー] |
パストラバーサル攻撃は、相対パスシーケンス (../ など) を注入して、公開されるべきでないサーバー上のファイルにアクセスするものです。 |
|
[契約違反] |
プロトコル非準拠とは、プロトコル (HTTP や HTTPS など) を悪意を持って操作し、攻撃を仕掛けたり、セキュリティメカニズムをバイパスしたりすることを指します。 |
|
[任意ファイルのアップロード] |
任意のファイルアップロード攻撃は、悪意のあるファイルをアップロードし、それがサーバーによって実行されるものです。 |