Palo Altoでは、URLカテゴリを利用して特定のWebサイトへのアクセスを許可・拒否できます。
カスタムURLカテゴリを作成するとき、URLには以下のような書き方があります。
yahoo.co.jp
*.yahoo.co.jp
*.yahoo.co.jp/
一見すると似ていますが、* や / の有無によってURLのマッチング方法が変わります。
今回は、実際にURLカテゴリを作成して、以下の3パターンでアクセス結果を確認してみました。
yahoo.co.jp*.yahoo.co.jp*.yahoo.co.jp/
検証した環境は以下のとおりです。
- PAN-OS:12.1.4-h5
- Azure上の仮想アプライアンス
1.URLカテゴリで yahoo.co.jp を設定した場合
まずは、文頭に「*」や末尾に「/」を設定しない場合のURLカテゴリの挙動を調べてみます。
1-1. URLカテゴリとセキュリティポリシーを作成
・URLカテゴリで URL-yahoo を作成して yahoo.co.jp を設定します。

・セキュリティポリシーで「URL-yahoo」を設定した許可ポリシーを設定します。
また、その下のポリシーとして「All-Deny」を作成しておきます。

1-2. アクセス確認
この状態で「yahoo.co.jp」にアクセスするとページを開くことはできませんでした。

「yahoo.co.jp」にアクセスすると「www.yahoo.co.jp」に変換されてアクセスすることになります。
ですが、今回URLカテゴリで許可したURLとしては「*」なども付けていない「yahoo.co.jp」のURLだけなので、「www.yahoo.co.jp」は許可URLに含まれていないということになり、アクセスすることができませんでした。
2.URLカテゴリで *.yahoo.co.jp を設定した場合
次に、文頭に「*」を追加したURLでURLカテゴリを定義して挙動を確認してみます。
2-1. URLカテゴリを変更
・先ほど作成したURLカテゴリ URL-yahoo を変更して *.yahoo.co.jp として設定します。

2-2. アクセス確認
この状態で「yahoo.co.jp」にアクセスすると、画面表示は崩れていますがページを開くことができました。

また、「news.yahoo.co.jp/pickup」などのURLにおけるサブディレクトリに対してもアクセスすることができました。

3.URLカテゴリで *.yahoo.co.jp/ を設定した場合
次に、文頭に「*」を設定した状態で、さらに末尾に「/」を追加したURLでURLカテゴリを定義して挙動を確認してみます。
3-1. URLカテゴリの変更
・URLカテゴリ URL-yahoo を変更して *.yahoo.co.jp/ として設定します。

3-2. アクセス確認
この状態で「yahoo.co.jp」にアクセスすると、先ほどと同様に画面表示は崩れていますがページを開くことができました。

また、「news.yahoo.co.jp/pickup」などのURLにおけるサブディレクトリに対してもアクセスすることができました。

4.まとめ
URLカテゴリの挙動を試した上記結果のまとめです。
4-1. 「*」について
・「*」がついていない場合、設定しているURL以上のサブドメインまで含まれない。
| URLカテゴリの設定値 | アクセス先 | アクセス可否 |
|---|---|---|
| *.yahoo.co.jp | www.yahoo.co.jp | アクセス可 |
| yahoo.co.jp | www.yahoo.co.jp | アクセス不可 |
すなわち、設定しているURL以上のサブドメインを含みたい場合には「*」を利用します。
4-2. 「/」について
・URLの末尾に「/」をつけた場合とつけない場合で [URLカテゴリの挙動] は一緒
| URLカテゴリの設定値 | アクセス先 | アクセス可否 |
|---|---|---|
| *.hogehoge.com | hogehoge.com/hoge | アクセス可 |
| *.hogehoge.com/ | hogehoge.com/hoge | アクセス可 |
すなわち、/ の有無にかかわらずサブディレクトリはアクセス可能という挙動です。
5.ワイルドカード*の扱いと^について
5-1. *.yahoo.*.jp や *.yahoo.^.jp も設定可能
ちなみにURLカテゴリでは、「*.yahoo.*.jp」というように間のサブドメインをワイルドカードとして設定することもできます。

ただしこの場合、www.yahoo.co.jp にもアクセス可能ですが、www.yahoo.co.co.co.jp というURLにもアクセス可能となってしまうため注意が必要です。
もし、間のサブドメインを1つに限定したい場合には「^」を利用することで解決することができます。

この場合、「www.yahoo.co.co.co.jp」は含まれず、「www.yahoo.co.jp」や「www.yahoo.hogehoge.jp」というようなURLに限定することができます。
5-2. *はトークン内の一部だけに指定することはできない
URLエントリではワイルドカードを使用できますが、*はトークン内の一部だけに指定することはできません。
例えば、example*.com のような設定はできません。
webコンソール上でもエラーとなります。

6.まとめ
今回は、Palo AltoのURLカテゴリで、以下の設定を入れてURLのマッチング動作を確認しました。
yahoo.co.jp
*.yahoo.co.jp
*.yahoo.co.jp/
ポイントをまとめると以下のとおりです。
6-1. * について
* を使用すると、サブドメインを含めてURLを指定できます。
6-2. / について
末尾の / は、URLのマッチング範囲を明確にするために利用できます。
URLの意図しないマッチを防ぐためにも重要です。
6-3. * と ^ について
さらに細かくURLの範囲を指定したい場合は、* だけでなく ^ も利用できます。
*.hogehoge.com
^.hogehoge.com
このように使い分けることで、サブドメインのマッチ範囲を調整できます。
Palo AltoのURLカテゴリを設定するときは、「どのURLを許可・拒否したいのか」を考えて、*、^、/ を使い分けることが重要です。
