F5 WAF の設定理解 - Parameter entity 編
F5 WAF の設定理解 - Parameter entity 編
F5 WAF の設定項目を個別に理解していこうという試みです.最も分かり易そうな URL Entity については前回のエントリで解説したので,今回は続編として Parameter Entity を扱います.
テストで使用した Version は 15.1.2 です.
現状の Parameter entity の設定を確認する
GUI 左の Security タブから,Application Security -> Parameters -> Parameters List を開きます
上から順に見ていきましょう.
一つ目
Parameter Name : *
この entity の名前から判りますが,これは wildcard parameter です.これは全てのパラメータにマッチする pure wildcard です.pure wildcard ではない,ただの wildcard parameter は例えば
Parameter Name : pok*mon
のような定義で,これは "pokemon" や "pokeeemon" や "pokmon" といったパラメータにマッチします.
二つ目と三つ目は見ての通りワイルドカード記号が使われていないので wildcard parameter ではなく explicit parameter です.
Parameter Name : hoge
Parameter Name : hoge
なぜ同じ名前のパラメータが定義可能なのかというと,二つの entity は Parameter Level が異なるからです.
二つ目のは URL Parameter で,三つ目のは Global Parameter です.ちなみに一つ目の pure wildcard も Global ですね.
URL Parameter は紐づけられた URL に来たリクエストのみに対してマッチします.この URL Parameter は URL: /test に来たリクエストに対してのみマッチすることができます.Global Parameter は URL に関係なく該当するパラメータが見つかればマッチします.
URL entity の設定によってどのようにリクエストハンドリングに影響するのか理解する
先ほど確認した設定を前提として以下のようなリクエストが来たとします.
https://qiita.com/test?hoge=攻撃っぽい文字列
Parameter Entity の該当検査には優先順位があり,以下の順でパラメターにマッチする entity の有無が検査されます.
- URL Parameter の Explicit Entity
- URL Parameter の Wildcard Entity
- Global Parameter の Explicit Entity
- Global Parameter の Wildcard Entity
この例のリクエストであれば URL Parameter の Explicit で該当が見つかりますね.したがって,URL Parameter "hoge" に設定されている様々な定義に応じてパラメータ値の検査が実施されます.
次の例
https://qiita.com/test?fuga=攻撃っぽい文字列
今度は,URL Parameter に該当する entity がないので Global Parameter を確認.最終的には pure wildcard でマッチされ,pure wildcard に設定されている様々な定義に応じてパラメータ値の検査が実施されます.
URL Entity の記事でも説明しましたが,どの entity にもマッチしない ( pure wildcard が無い設定で起こりうる ) パラメータが検知された場合,blocking mask 上の illegal parameter が Block On になっており,且つ WAF ポリシーの enforcement mode が blocking であれば,そのリクエストはブロックされます.どのスクリーンで確認できるのかは,URL Entity の記事 (https://qiita.com/Eoli_Tanuki/items/8f3d4d33d2361f2092be) でスクリーンショットを貼っているのでそちらを参照してください.
Parameter Entity の設定詳細を確認する
リクエストに含まれるパラメータが entity にマッチしたあとの流れを見てみます.URL Parameter "hoge" の設定詳細です.
一つづつ見ていきます.
Location
パラメータがリクエストのどこで (any, query string, form data, path, header, cookie) 出現して良いのかを定義することができます.
Perform Staging
ポリシーラーニングに関する設定です.今回は詳解しません.
Is Mandatory Parameter
リクエストに必ず含まれている必要がある場合に enable にします.例えば,フォームを POST する URL に於いて期待されるパラメータ群を mandatory として定義しておく事で,一つでもパラメータが足りない場合に violation にすることができます.
Allow Empty Value
パラメータの値が空である場合に violation とするかどうかです.
Allow Repeated Occurrence
同じパラメータ名が複数回出現することを許容するのかどうかです.
Mask Value in Log
これを enable にするとログデータ上ではパラメータ値が **** のようにマスク表示されて読み取れなくなります.
パスワードなどを乗せるパラメータで有効にしておくと良いでしょう.
Parameter Value Type
パラメータの値がどのようなデータであるか設定できます.選択できる項目は以下です.
- Array
- Dynamic Content Value
- Ignore Value
- JSON Value
- Static Content Value
- User-Input Value
- Auto Detect
- XML Value
この例の URL Parameter では User-Input value がセットされているので,ユーザー入力から何らかのデータを受け取ることを想定しているということです.
User-Input value を選択した場合にはさらに以下の追加設定項目があります(他の Value Type を選択した場合は,それに応じた追加設定項目があります).
Data Type
ユーザー入力からのデータがどのような物なのか設定する.
- Alpha-Numeric
- File Upload
- Decimal
- Integer
- Boolean
- Email
- Phone
ここで選択しているのは Alpha-Numeric なので,さらに以下の追加設定項目があります.
Minimum Length
パラメータ値の最小サイズ
Maximum Length
パラメータ値の最大サイズ
Regular Expression
パラメータ値が正規表現にマッチするかどうか
Base64 Decoding
Base64 でデコードするのかどうか
Enum
よくわからん.
Value Meta Characters
パラメータ値に対してメタ文字の検査をするかどうか.検査する場合,ポリシー全体で決めた許可・非許可のメタ文字のルールに,このパラメータでのみ適用される例外ルールを作ることもできる.
Attack Signatures
パラメータ値に対してシグネチャの検査をするかどうか.検査する場合,ポリシー全体で決めたシグネチャのルールに,このパラメータでのみ適用される例外ルールを作ることもできる.
以上のように,一つの Parameter Entity 上には様々な詳細を設定することができます.有効化されている検査項目のいずれかで violation が検知された場合,先ほど述べたのと同様に,その violation が blocking mask で Block On になっており,且つポリシーの enforcement mode が blocking である場合,そのリクエストはブロックされます.
最後に
細かく設定しようと思えば,ものすごく細かい設定が可能です...
F5 WAF の Parameter entity 設定まわりについて整理しました.
次は,何にしようかな.
Author And Source
この問題について(F5 WAF の設定理解 - Parameter entity 編), 我々は、より多くの情報をここで見つけました https://qiita.com/Eoli_Tanuki/items/881cc7273a6604c4b1a3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .