Web Application Firewall (WAF) は、導入後すぐに利用できるセキュリティを提供します。アセットを WAF に追加すると、事前設定済みのコア保護ルールセットが自動的に適用され、SQL インジェクション、クロスサイトスクリプティング (XSS)、コマンドインジェクションなどの一般的な Web アプリケーション攻撃から、追加設定なしで即座に防御します。このトピックでは、これらのルールの管理方法と微調整方法について説明します。
[Web コア保護ルール]機能は順次展開中です。このトピックでは新バージョンについて説明します。旧バージョンをご利用の場合は、「コアWeb保護ルール (旧バージョン)」をご参照ください。アップグレードのお知らせについては、「[お知らせ] WAF 3.0 基本保護ルール機能のアップグレード」をご参照ください。ご利用のバージョンは、WAF コンソールの ページの[Web コア保護ルール]セクションの表示内容で確認できます。
新バージョン | [Web コア保護ルール]モジュールの右側には、テンプレートの作成 ボタンのみが表示されます。このデザインは、IP ブラックリスト やカスタムルール などの他のモジュールと一貫しています。 |
旧バージョン | [Web コア保護ルール]モジュールの右側には、テンプレートの作成 とルールグループの管理 の2つのボタンが表示されます。 |
基本概念
[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という名前です。詳細については、「ホワイトリスト」をご参照ください。
説明この機能は、従量課金、Subscription Enterprise Edition、および Subscription 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によって処理されているが、対応するルールがない
デフォルトの保護テンプレートは、すべての攻撃タイプに対応できるわけではありません。攻撃の特性に応じて、他の保護モジュールを有効にする必要がある場合があります。
CC 攻撃 (低〜中頻度の HTTP フラッド) の場合:CC 攻撃対策またはレート制限のあるカスタムルールを使用します。
ネットワーク層の 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 インジェクション攻撃は、HTTP ヘッダーにキャリッジリターン (CR, \r) とラインフィード (LF, \n) を挿入して、HTTP レスポンスを操作したり、HTTP レスポンス分割を行ったりするものです。 |
[ローカルファイルインクルード] | サーバーで allow_url_include オプションが有効になっている場合、攻撃者は include()、require()、include_once()、require_once() などの PHP 関数を悪用して、URL を介して動的にファイルをインクルードできます。ファイルのソースが厳密に検証されていない場合、任意のファイル読み取りやコマンド実行につながる可能性があります。 |
[リモートファイルインクルード] | リモートファイルインクルージョン (RFI) 攻撃は、リモートサーバーからファイルをインクルードし、攻撃者がローカルサーバー上で悪意のあるコードを実行できるようにするものです。 |
[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 など) を悪意を持って操作して攻撃を仕掛けたり、セキュリティメカニズムをバイパスしたりすることを指します。 |
[任意ファイルのアップロード] | 任意ファイルアップロード攻撃は、悪意のあるファイルをアップロードし、それがサーバーによって実行されるものです。 |