このトピックでは、コア保護モジュールのオリジナルバージョンについて説明します。新しい WAF コンソールにアップグレードした場合、またはコア保護モジュールを初めて使用する場合は、「コア保護ルールモジュールの構成」をご参照ください。アップグレードの詳細については、「WAF 3.0 の基本保護ルールモジュールアップグレードのお知らせ」をご参照ください。
Web Application Firewall (WAF) のコア保護ルールは、SQL インジェクション、クロスサイトスクリプティング (XSS)、コード実行、ウェブシェルアップロード、コマンドインジェクションなどの一般的な攻撃から Web サービスを防御します。このトピックでは、モジュールのコンポーネントについて説明し、カスタムルールグループと保護テンプレートの作成方法を順を追って説明します。
仕組み
コア保護モジュールは、それぞれ異なる役割を持つ 3 つの検出モジュールを使用してリクエストをインターセプトします。
| 検出モジュール | デフォルトの状態 | 機能 |
|---|---|---|
| ルールエンジン | 有効 | 事前定義されたシグネチャとリクエストを照合して、既知の攻撃パターンをブロックします。ルールグループ (Loose、Medium、または Strict) を使用して、検出感度を制御します。 |
| セマンティックエンジン | 有効 | リクエストのコンテンツとコンテキストを分析して、未知の攻撃を特定し、SQL インジェクション攻撃から防御します。 |
| インテリジェント O&M | 無効 | 過去のトラフィックから学習して誤検知を引き起こすルールを特定し、影響を受ける URL を自動的にホワイトリストに追加します。 |
デコード
検査前に、モジュールは 23 の形式でリクエストデータをデコードします。これには、JSON、XML、Multipart などの構造化形式や、攻撃者が検出をバイパスするために使用する Unicode、HTML エンティティエンコーディングなどの難読化されたエンコーディングが含まれます。
ルールグループの選択
WAF は 3 つの組み込みルールグループを提供します。誤検知の許容範囲と検出カバー率の必要性に合わせて、いずれかを選択してください。
| ルールグループ | 使用するタイミング |
|---|---|
| Loose ルールグループ | アプリケーションが Medium グループで頻繁に誤検知を生成する場合、または SQL ライクなクエリ文字列を生成するツール (phpMyAdmin や Adminer など) を実行している場合。検出感度が低く、誤検知が少なくなります。 |
| Medium ルールグループ (デフォルト) | 標準的な Web アプリケーション。バランスの取れた検出カバー率と妥当な誤検知率。不明な場合はここから開始してください。 |
| Strict ルールグループ | 高セキュリティ環境で、最大の検出カバー率が偶発的な誤検知のリスクを上回る場合。 |
より厳格なグループに切り替える際は、まず[監視]モードで実行して正当なトラフィックをブロックするルールを特定してから、アクションを[ブロック]に設定してください。
カスタムルールグループを作成して、サービスに適用するルールを正確に選択することもできます。
保護テンプレートとその適用方法
各保護テンプレートは、ルールグループ構成とモジュールごとのアクション設定 (ブロックまたは監視) をバンドルし、保護対象または保護対象グループに割り当てられます。
| デフォルト保護テンプレート | カスタム保護テンプレート | |
|---|---|---|
| 作成者 | システム (自動提供) | ユーザー (手動) |
| ルールエンジンアクション | Medium ルールグループを使用したブロック | 構成可能 — 任意のデフォルトまたはカスタムルールグループ、任意のアクション |
| セマンティックエンジンアクション | 完全な SQL ステートメント検出が有効な監視 | 構成可能 — アクションと完全な SQL ステートメント検出のオン/オフ |
| インテリジェント O&M | 無効 | 構成可能 — インテリジェントホワイトリストのオン/オフ |
| 適用先 | カスタムテンプレートに割り当てられていないすべての保護対象とグループ | 選択した特定の保護対象またはグループ |
前提条件
開始する前に、以下を確認してください。
WAF 3.0 インスタンス (従量課金)
(カスタムルールグループの場合) 従量課金 WAF インスタンス、または Enterprise または Ultimate エディションを実行しているサブスクリプション WAF インスタンス
WAF に保護対象として追加された Web サービス — 詳細については、「保護対象および保護対象グループの設定」をご参照ください。
カスタムルールグループの作成
スクラッチからルールグループを構築するか、組み込みグループのいずれかに基づいて構築します。
WAF 3.0 コンソールにログインします。上部のナビゲーションバーで、WAF インスタンスのリソースグループとリージョンを選択します。利用可能なリージョンは、中国本土と中国本土以外です。
左側のナビゲーションウィンドウで、保護設定 > コアWeb保護 を選択します。
[コア保護ルール] セクションで、[ルールグループ] をクリックします。
[ルールグループ] ページで、[ルールグループの作成] をクリックします。
「[ルールグループの基本情報を設定]」ステップで、パラメーターを入力し、[次へ] をクリックします。
重要ルールグループの基本情報は、作成後に変更できません。
パラメーター 説明 ルールグループ名 文字、数字、ピリオド ( .)、アンダースコア (_)、ハイフン (-) が使用できます。保護テンプレートの選択 [新規作成]:ベーステンプレートはありません。 ルールは手動で追加します。 [自動更新] は無効になり、有効にできません。 [デフォルトルールグループの使用]:Loose、Medium、または Strict ルールグループから開始します。 [自動更新] が利用できます。 自動更新 有効にすると、選択したデフォルトルールグループに追加、またはそこから削除されたルールは、このカスタムルールグループに自動で同期されます。 この設定は、ルールグループの作成後に変更することはできません。また、[保護テンプレートの選択] が [デフォルトルールグループの使用] に設定されている場合にのみ利用できます。 「保護ルールの設定」ステップで、[ルールの追加] をクリックします。「[ルールの追加]」ダイアログボックスで、追加するルールを選択します。ルールを ルール ID、CVE ID、リスクレベル、保護ルールの種類、または [アプリケーションの種類] でフィルター処理します。[追加] をクリックして選択したルールを追加するか、[すべて追加] をクリックしてフィルター処理されたすべての結果を追加します。ルールを追加後に削除するには、ルール ID または CVE ID(または利用可能なパラメーターでフィルター処理)で検索し、該当するルールを選択して [削除] をクリックします。最初からやり直すには、[すべてクリア] をクリックします。
ステップ 5 で[デフォルトルールグループを使用]を選択した場合、そのグループのルールはすでに含まれています — さらにルールを追加する場合を除き、このステップはスキップしてください。ルールは更新時間の降順でリストされます。
[次へ] をクリックします。完了 ステップで、[完了] をクリックします。
ルールグループを作成したら、ルールグループリストから管理します。
[組み込みルール数] 列の数値をクリックして、グループ内のルールを表示します。
ルールグループを管理するには、[操作] 列で [編集]、[コピー]、または[削除]をクリックします。
基本情報は作成後に編集できません。コピーされたルールグループは、デフォルトで <original name>-copy という名前になり、どの保護対象とも関連付けられません。保護テンプレートに関連付けられたルールグループは削除できません — まずコア保護ルールから関連付けを解除してください。カスタム保護テンプレートの作成
左側のナビゲーションウィンドウで、[保護設定] > [コア Web 保護] を選択します。
[コア保護ルール] セクションまでスクロールし、[テンプレートの作成] をクリックします。
初めてコア保護テンプレートを作成する場合は、ページの上部にある[コア保護ルール]カードの[今すぐ設定]をクリックすることもできます。
[テンプレートの作成 - コア保護ルール] パネルで、パラメーターを設定し、[OK] をクリックします。[セマンティックエンジン] セマンティックエンジンは、SQLインジェクション攻撃を検出するためにデフォルトで有効になっています。次の設定を構成します。[プロトコルコンプライアンス] HTTP リクエストをチェックして、WAF をバイパスするために悪用される可能性のあるプロトコルレイヤーのフォーマットに関する問題(たとえば、不正な形式のファイルアップロードリクエスト)を検出します。この機能は、従量課金 WAF インスタンスおよび Enterprise または Ultimate エディションを実行しているサブスクリプションインスタンスで利用できます。[インテリジェント O&M] [インテリジェントホワイトリスト] が有効になっている場合、WAF は履歴トラフィックから学習して誤検知を引き起こすルールを特定し、影響を受ける URL を自動的にホワイトリストに追加します。ホワイトリストルールは、ホワイトリストセクションの [AutoTemplate] テンプレートの下に作成されます — 「ホワイトリストルールの表示」をご参照ください。この機能は、従量課金 WAF インスタンスおよび Enterprise または Ultimate エディションを実行しているサブスクリプションインスタンスで利用できます。[適用先] [保護対象] タブおよび [保護対象グループ] タブで、このテンプレートに関連付ける項目を選択します。各保護対象またはグループは、一度に 1 つのコア保護ルールテンプレートのみに関連付けることができます。このテンプレートをデフォルトとして設定した場合、カスタムテンプレートに割り当てられていないすべてのオブジェクトが事前に選択されます。それ以外の場合、デフォルトでオブジェクトは選択されません。
新しく作成された保護テンプレートは、デフォルトで有効になっています。
テンプレート情報
パラメーター 説明 テンプレート名 英字、数字、ピリオド ( .)、アンダースコア (_)、ハイフン (-) が使用できます。デフォルトテンプレートとして保存 このテンプレートを保護モジュールのデフォルトとして設定します。モジュールごとに 1 つのデフォルトテンプレートのみが許可されます。デフォルトテンプレートは、新しく追加されたオブジェクトを含む、カスタムテンプレートに割り当てられていないすべての保護対象とグループに自動的に適用されます。 ルール構成
パラメーター 説明 操作 ブロック: 一致するリクエストをブロックし、ブロッキングページを返します。デフォルトでは、WAF は組み込みのブロッキングページを返します。「カスタムレスポンス」機能を使用して、カスタムページを設定できます。監視: 一致するリクエストをブロックせずにログに記録します。このモードを使用して、ルールを適用する前に検証します。ログは[セキュリティレポート] ページで照会できます — WAF ログサービスを有効にする必要があります。 ルールグループタイプ [デフォルト]: テンプレートを組み込みルールグループ (Loose、Medium、または Strict) に関連付けます。[カスタム]: リストからカスタムルールグループを選択します。「カスタムルールグループの作成」をご参照ください。 パラメーター 説明 [アクション] ブロックまたは監視 — 上記のルールエンジンアクションと同じ動作です。 完全な SQL ステートメントの検出 (デフォルトで有効) 有効にすると、WAF は完全な SQL ステートメントを含むリクエスト (例: /query.php?sql=select name from users where 1=1%23) もインターセプトします。アプリケーションが phpMyAdmin や Adminer などのデータベースツールを使用している場合は、これを無効にします。不完全な SQL (例:/query.php?name='and 1=1%23) は、この設定に関係なく常に検査されます。
テンプレートを作成したら、テンプレートリストから管理します。
[保護対象オブジェクト/グループ] 列: 関連付けられたオブジェクトの数を表示します。
[ステータス] 列: テンプレートの オン/オフ を切り替えます。
[操作] 列: [ルールの作成]、[編集]、[削除]、または [コピー] をクリックします。
展開アイコン (テンプレート名の左側): テンプレート内の保護ルールを表示します。
インテリジェントホワイトリストが有効な場合(
アイコンで示されます):[操作] で [配信レコード] をクリックして、ホワイトリストの配信レコードを表示します。無効な場合(
アイコンで示されます):テンプレート一覧から直接、インテリジェントホワイトリストを切り替えます。
「[コア保護ルール]」セクションの[ルール グループ]をクリックして、ルール グループと保護テンプレートの関連付けを表示します。
ブロックする前のルール検証
新しいルールグループまたはテンプレートを初めて適用する際は、アクションを [監視] に設定します。監視モードでは、WAF は一致したリクエストをブロックすることなくログに記録するため、本番トラフィックに対してどのルールが発動するかを確認できます。
一致したリクエストを確認するには、「セキュリティレポート」ページの [コア保護ルール] タブを確認します。ルールが正当なトラフィックをブロックしていないことを確認した後、操作を [ブロック] に切り替えます。
「[Core Web Protection]」ページでは、[Rule ID]によるコア保護ルールの検索はサポートされていません。ルールが通常のトラフィックを誤ってブロックした場合は、[ホワイトリスト]モジュールを使用して、そのルール向けにホワイトリストルールを設定します。詳細については、「特定のリクエストを許可するためのホワイトリストモジュールの保護ルールの設定」をご参照ください。
次のステップ
[セキュリティレポート] ページの [コア保護ルール] タブで、特定の保護ルールのヒットレコードを表示できます。 攻撃イベントレコードエリアで特定の ルール ID の [詳細の表示] をクリックすると、攻撃のすべての詳細が表示されます。
WAF 3.0 の保護対象、モジュール、および保護パイプラインの概要については、「保護構成の概要」をご参照ください。
API 経由で保護テンプレートを作成するには、「CreateDefenseTemplate」をご参照ください。
API 経由でコア保護ルールを作成するには、「CreateDefenseRule」をご参照ください。