こんにちは。s.nishimuraです。
Oracle Cloud Infrastructure Advent Calendar 2025 のDay19の記事として書いています!
WAFポリシーを導入した時に考慮しなければならない設定項目と設定方法について紹介します。
目次
WAFポリシーの特徴について
WAFポリシーは2021年10月からサービスが提供されました。
その前にはエッジ・ポリシー(Global WAF)が2019年2月から提供されています。
ここでは、WAFポリシーにある3つの特徴を紹介します。
- ロードバランサに付加可能なセキュリティ対策リソース
- 多様なセキュリティを提供し、アプリケーションを保護する役割を持つ
- エッジ・ポリシーに比べ、変更時間が短い
WAFポリシーの考慮事項について
今回の記事ではWAFポリシーを「Recommend」で設定した際の考慮事項を紹介します。
考慮事項は以下の4つとなります。
| No. | 項目 | 具体例 |
|---|---|---|
| 1 | 引数の最大長 | リクエスト受信時の引数最大長 |
| 2 | 引数の最大数 | リクエスト受信時の引数の数 |
| 3 | User-Agentヘッダーの有無 | リクエスト受信時のヘッダー情報 |
| 4 | SQLインジェクション対策 | リクエスト受信時の文字列 |
| 5 | WAFポリシー除外対象の有無 | 特定通信元にはWAFポリシーを動作させない |
引数の最大長
引数の最大長はWAFポリシー内の保護ルールに定義されています。
デフォルトは400(Byte)と設定されています。
この項目は、Webサイト上の入力フォームでクエリパラメーターを使用する際に問題となります。
半角文字の場合は400文字、全角文字(UTF-8)の場合は133文字を超えるとアクセスを遮断する保護ルールが発動します。
引数の最大長を変更するための手順は以下となります。
- OCIコンソールのメニューより「アイデンティティとセキュリティ」→「Webアプリケーション・ファイアウォール」を選択
- 変更対象のWAFポリシーを選択
- 左メニューの「保護」をクリックし、「リクエスト保護ルールの管理」ボタンをクリック
- 対象のリクエスト保護ルール上の「編集」ボタンをクリック
- 保護ルールの編集画面から保護機能項目の「アクション」をクリックし、「保護機能設定の表示と編集」をクリック
- 保護機能設定の表示と編集画面にて、保護機能設定の「編集」をクリック
- 「引数の最大長」の値を変更
- 保護機能設定の表示と編集画面にて「変更の保存」ボタンをクリック
- 保護ルールの編集画面にて「変更の保存」ボタンをクリック
- リクエスト保護ルールの管理画面にて「変更の保存」ボタンをクリック
Webサイトやアプリケーション側のリクエスト・パラメータの仕様を押さえておくことが重要です。
引数の最大数
引数の最大長に似ていますが、引数の数もWAFポリシー内で定義されています。
デフォルトは255個となっています。
この項目は、リクエストパラメーターが定義されている引数の最大数より多く
使用するとアクセスを遮断する保護ルールが発動します。
引数の最大数変更手順は引数の最大長と変わりません。
引数の最大長を変更する手順7にて変更する箇所が「引数の最大数」となります。
Webサイトやアプリケーション側のリクエスト・パラメータの数上限の仕様を押さえておくことが重要です。
User-Agentヘッダーの有無
User-Agentヘッダーの有無はWAFポリシー内の保護ルール:920320にて定義されています。
リクエスト時に「User-Agent」ヘッダーが空であるとアクセスを遮断する保護ルールが発動します。
特にAPIによるアクセスが行われる際に考慮漏れの原因となります。
以下はUser-Agentヘッダーを空の状態でWebサイトにリクエストするコマンドです。
コマンドを実行すると、保護ルールに設定されているアクションを実行します。
デフォルトの設定の場合は、HTTPステータスの401が返ってきます。
{"code":"401","message":"Unauthorized"}
<curl実行版>
curl -i <URL> -H "User-Agent:"
<Powershell実行版>
Invoke-WebRequest -Uri "<URL>" -Headers @{ "User-Agent" = "" }
``
アクセス元に対して、User-Agentヘッダーがセット可能か確認することが重要です。
SQLインジェクション対策
SQLインジェクションはWAFポリシー内の保護ルール:9420000に定義されています。
リクエスト時にSQLインジェクションが含まれる文字列があるとアクセスを遮断する保護ルールが発動します。
保護ルール:9420000は他の保護ルールと特殊で、複数の保護機能が包含されています。
また、包含されている保護機能にはそれぞれ重み付けがされています。
上記の画像ではそれぞれの保護機能に重みが4ポイントあり、しきい値である10ポイントを超えると保護ルールが発動します。
保護する機能の重みや閾値を調整することが重要となります。
WAFポリシー除外対象の有無
保護ルールやレート制限を動作しないようにConditionsを定義します。
特にテストや特定環境(APIや連携先システム)からのアクセスがある場合にWAFポリシーを動作させたくない場合に使用します。
特定のIPアドレスからのアクセス時にWAFポリシーを動作させたくない場合は、以下の手順を実施します。
- OCIコンソールのメニューより「アイデンティティとセキュリティ」→「Webアプリケーション・ファイアウォール」を選択
- 変更対象のWAFポリシーを選択
- 左メニューの「保護」をクリックし、「リクエスト保護ルールの管理」ボタンをクリック
レート制限の場合は左メニューの「レート制限」をクリックし、「レート制限ルールの管理」ボタンをクリック - 対象のリクエスト保護ルール・レート制限ルール上の「編集」ボタンをクリック
- 保護ルール・レート制限の編集画面からCondition (option)項目を設定値を入力
5-1. Condition type:リストから「Source IP address」を選択
5-2. Operator:リストから「Not in list」を選択
5-3. Value:CIDRブロック形式でIPアドレスを入力
(IPアドレスが複数ある場合はフォーム内を改行することで複数入力可能です)
- 保護ルール・レート制限の編集画面にて「変更の保存」ボタンをクリック
- リクエスト保護ルール・レート制限の管理画面にて「変更の保存」ボタンをクリック
特定IPアドレスからのWAFポリシー動作要件を確認しましょう。
最後に
今回は導入時に見落しがちなWAFポリシーの設定について考慮事項を説明させていただきました。
WAFポリシーを設定した際に思わぬエラーに遭遇しても焦らないことが大切です。
最後まで見て頂き、ありがとうございました。