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 という名前になります。詳細については、「ホワイトリスト」をご参照ください。
説明この機能は、従量課金、サブスクリプションエンタープライズ版、およびサブスクリプションアルティメット版のインスタンスでのみ利用できます。
設定 有効範囲:
このテンプレートを適用する保護対象と保護対象グループを選択します。テンプレートの有効範囲は、ステップ 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 レスポンス分割を実行したりするものです。 |
[ローカルファイルインクルード] | サーバーで |
[リモートファイルインクルード] | リモートファイルインクルージョン (RFI) 攻撃は、リモートサーバーからファイルを読み込み、攻撃者がローカルサーバーで悪意のあるコードを実行できるようにするものです。 |
[Webshell] | Web シェルは、アップロードまたは挿入されると、攻撃者がサーバーをリモートで制御できるようになる悪意のあるスクリプトファイルです。 |
[OS コマンドインジェクション] | OS コマンドインジェクション攻撃は、悪意のあるオペレーティングシステムコマンドをプログラムに埋め込み、サーバーに実行させるものです。 |
[スキャン行為] | これは、Web アプリケーションスキャナーの動作と特性を指します。これらのツールは、大量のリクエストを生成・送信してアプリケーションのレスポンスを分析し、SQL インジェクションや XSS などの潜在的なセキュリティ脆弱性を自動的にスキャンします。 |
[ビジネスロジック脆弱性] | ビジネスロジックの欠陥は、アプリケーションのビジネスプロセスの実装における脆弱性です。これらの欠陥は、従来の入力検証や出力エンコーディングでは防げないことがよくあります。これにより、攻撃者はアプリケーションの正常なワークフローを操作して、不正なアクセス権を取得したり、他の悪意のあるアクションを実行したりする可能性があります。 |
[任意ファイル読み取り] | 任意のファイル読み取りの脆弱性により、攻撃者は通常 HTTP リクエストのファイルパスパラメーターを介して、システム上の任意のファイルを読み取ることができます。この脆弱性を悪用することで、攻撃者は設定ファイル、認証情報、個人データなどの機密情報にアクセスできます。 |
[任意ファイルダウンロード] | 任意のファイルダウンロードの脆弱性は、任意のファイル読み取りに似ていますが、攻撃者がシステムから任意のファイルをダウンロードできる点が異なります。これにより、機密情報の漏洩につながる可能性があり、攻撃者がオフライン分析のために完全なシステムバックアップを取得することさえ可能になる場合があります。 |
[XML 外部実体攻撃] | XXE の脆弱性は、XML パーサーが外部エンティティを処理する方法を悪用するもので、攻撃者がシステムファイルを読み取ったり、サーバーサイドリクエスト (SSRF) を実行したり、サービス拒否 (DoS) を引き起こしたりする可能性があります。この攻撃は通常、悪意のある外部エンティティを含む XML 入力を介して行われます。 |
[クロスサイトリクエストフォージェリ (CSRF)] | CSRF 攻撃は、認証済みのユーザーを騙して、Web アプリケーションに不正なリクエストを送信させるものです。通常、攻撃者はユーザーを悪意のあるリンクをクリックさせたり、悪意のあるページを訪問させたりして、ユーザーの名前で設定変更やフォーム送信などのアクションを実行させます。 |
[式インジェクション] | Expression インジェクション攻撃は、サーバーによって実行される悪意のある式を埋め込むものです。 |
[.net 逆シリアル化] | デシリアライゼーションは、データ (JSON、XML、バイナリなど) をオブジェクトに戻すプロセスです。.NET アプリケーションでは、安全でないデシリアライゼーションは任意のコード実行につながる可能性があります。攻撃者がデシリアライズされるデータを制御できる場合、悪意のあるデータを挿入して任意のコードを実行できる可能性があります。 |
[Java の逆シリアル化] | Java デシリアライゼーション攻撃は、悪意のあるオブジェクトをデシリアライズし、その過程でサーバーに悪意のあるコードを実行させるものです。 |
[PHP の逆シリアル化] | PHP デシリアライゼーション攻撃は、悪意のあるオブジェクトをデシリアライズし、その過程でサーバーに悪意のあるコードを実行させるものです。 |
[SSRF] | サーバーサイドリクエストフォージェリ (SSRF) 攻撃は、サーバーサイドのリクエストを偽造し、サーバーに内部または外部のリソースにアクセスさせるものです。 |
[パススルー] | パストラバーサル攻撃は、相対パスシーケンス (../ など) を挿入して、公開されるべきでないサーバー上のファイルにアクセスするものです。 |
[契約違反] | プロトコル違反とは、プロトコル (HTTP や HTTPS など) を悪意を持って操作し、攻撃を仕掛けたり、セキュリティメカニズムをバイパスしたりすることを指します。 |
[任意ファイルのアップロード] | 任意のファイルアップロード攻撃は、悪意のあるファイルをアップロードし、それがサーバーによって実行されるものです。 |