PaloAlto

【PaloAlto】特定URL(FQDN)をワイルドカードでアクセス制御する”Custom URL List”

UTM で URL (FQDN) をアクセス制御する 2 つの方式

PaloAlto や FortiGate では FQDN での制御を行う方式が 2 つあります。

1 つは PaloAlto 自体が DNS サーバにクエリを投げ、動的に IP を取得し、その IP アドレスを使って制御する方式です。

もう 1 つは SSL/TLS handshake の最初のパケット ClientHello にある SNI (Server Name Indication) の FQDN を検査する方式です。

SNI については以下を参照下さい。

【図解】SANs(サブジェクト代替名)とSNI(server_name indication),ワイルドカードの違い
SNI と SANs の違い SNI は TLS ネゴシエーションの中の最初の...

この 2 つの方式のメリット・デメリットは以下の通りです。

メリットデメリット
DNS 取得方式全プロトコルで適用可能ワイルドカードが使えない
IP アドレス変更時は更新時間の差異が発生
SNI 検査方式ワイルドカードの利用が可能http,httpsのみで適用可能

FQDN でアクセス制御というと 1 つ目の方式が有名なためか、DNS は正規表現やワイルドカードのドメイン名の名前解決ができませんので、「ワイルドカードは使えない」と勘違いしてしまいがちです。

最近は https を使った通信がほとんどであり、2つ目の SNI 検査方式はとても重宝されます。

FortiGate の SNI 検査方式は以下に紹介しましたが、

【FortiGate】URLフィルタで特定URL(FQDN)のみ許可 ~除外と許可,シンプルとワイルドカード/正規表現の違い~
UTM で URL (FQDN) をアクセス制御する 2 つの方式 PaloA...

今回は PaloAlto での SNI 検査方式の設定手順を紹介します。

PaloAltoでの設定手順

1. 「カスタムURLリスト」オブジェクトを作成

上部ペイン [Object] ⇒ 左ペイン [カスタムオブジェクト] ⇒ [URL カテゴリ] をクリックし、下部の [追加] をクリック

以下の画面が出るので [名前] を付け (ここでは myurl) タイプには [URL List] を選択します。そして下部の [追加] ボタンをクリックします。

一行ずつ許可したい URL (FQDN) を書きます。下部の緑枠に注意。ワイルドカードを使うことができます。図にはありませんが、「*.yahoo.co.jp」とすれば、サブドメインが全て許可されます。(*yahoo.co.jp としてしまうと hogehogeyahoo.co.jp といったドメインも許可されるためお薦めできません。)

オブジェクトが作成されたことを確認します。

2. セキュリティポリシーへ適用

先ほど作成したオブジェクトを使って、セキュリティポリシーを作成します。

[全般] タブ

特筆すべき点はありません。

[送信元] タブ

ポリシーの対象とする送信元アドレスを設定します。ここでは 10.1.1.0/24 としています。

[宛先]タブ

ここは any で構いません。( [サービス/ URL カテゴリ] で URL を絞るため)

[アプリケーション] タブ

こちらも同様、any で構いません。

[サービス/URLカテゴリ] タブ

こちらの URL カテゴリで、先ほど作成したオブジェクトを適用します。

[アクション] タブ

こちらも特筆すべきはありません。アクションを Allow にします。

動作確認

上記で作成したポリシーのみを入れて、動作テストしてみます。

www.yahoo.co.jp へのアクセス

開発者ツールを開きながらアクセスすると、以下のようになりました。

左側が Yahoo サイト。レイアウトが崩れています。

右側が開発者ツール画面。赤文字がアクセス不可となったファイル。ドメインを見ると s.yimg.jp となっています。埋め込まれているリンクが別ドメインのものは弾かれてしまいますので、開発者ツールを見ながら、追加でドメインを追加していくとよいでしょう。

www.youtube.com へのアクセス

こちらは比較的良好ですが、同様に一部取得に失敗しています (i.ytimg.com)

その他のサイト ja.wikipedia.org

完全に NG です。

FortiGate との挙動の違い

FortiGate の URL フィルタの場合は、ある通信に対してセキュリティポリシーを上から見ていき、「マッチする行」を [URL フィルタ] 以外の箇所で検査するのに対し、PaloAlto は [カスタム URL リスト] を含めて検査します。

なので、例えば以下のポリシーを作ったとします。(URL は Forti の場合は URL フィルタ、Palo の場合は Custm URL フィルタを示します。)

送信元 IP宛先 IP宛先 PortURLアクション
policy#110.1.1.0/24any80, 443www.yahoo.co.jp
www.youtube.com
許可
policy#2anyanyany-許可

ここで、10.1.1.1 の端末は ja.wikipedia.org へのアクセスはどうなるでしょうか?

FortiGate の場合は「policy#1 にマッチする」と判断されますが、URL フィルタでマッチしないため、パケットは破棄されます。

一方、PaloAlto の場合は「policy#1 にマッチしない」と判断され、次の policy#2 の検査に進みます。そのため、パケットは許可されます。

コメント

タイトルとURLをコピーしました