認証ポータル (PAN-OS9.xまでは「キャプティブポータル」と呼ばれていました) を利用すると、以下のようなことができます。
- 社内LANのクライアントPCが、PA Firewallを経由してインターネットへアクセスしようとした際に、PA FirewallがクライアントPCへ認証画面を表示します。
- 認証が成功したら、クライアントPCはインターネットへアクセスできます。
- 認証が完了しているので、そのユーザーIDをログに表示したり、そのユーザーIDをセキュリティポリシーに適用してアクセス制御したりできます。
想定ネットワーク構成はこちらをご参照ください。
認証プロファイルの設定
認証ポータルの設定には、認証プロファイルが必要となるので、先に設定しておきます。
認証サーバーはRADIUSやLDAPなど様々なものが利用できますが、本記事では、想定ネットワーク構成内のActive Directoryを利用します。
認証プロファイルの設定方法はこちらを参照ください。
サーバー証明書の生成
認証ポータルではSSLが利用されるため、サーバー証明書が必要となります。
外部の証明書発行機関から提供されるサーバー証明書でも使えますが、本ガイドでは簡易的にPAで生成したものを利用することにします。
認証局(CA)証明書の生成
既に生成済みの認証局証明書があれば、そちらを使っても問題ありません。
ここでは、既存の認証局証明書がない場合を想定して、設定していきます。
a)「Device」 → 「証明書の管理」の下のb)「証明書」 → c)「デバイス証明書」→ d)「生成」をクリックします。
a)証明書名に「PA-Certificate-Authority(任意)」と入力します。
b)共有名にも「PA-Certificate-Authority(任意)」と入力します。
c)認証局にチェックを入れます。
d)「生成」をクリックします。
生成が成功したことを示すメッセージが出力されたら、「OK」をクリックします。
認証ポータル用のサーバー証明書の生成
生成した認証局証明書を使って、認証ポータルが使うサーバー証明書を生成します。
もう一度、a)「Device」 → 「証明書の管理」の下のb)「証明書」 → c)「デバイス証明書」→ d)「生成」をクリックします。
a) 証明書名に「trust.acme.com_cert (任意)」と入力します。
b) 共通名は、ネットワーク構成に従い、「trust.acme.com」と入力します。
c) Signed byは生成した認証局「PA-Certificate-Authority」を選択します。
d) 「追加」をクリックして、e)「Host Name」を選択し、「trust.acme.com」を入力します。
f) 「生成」をクリックします。
SSL/TLSサービスプロファイルの設定
SSL / TLSサービスプロファイルを使用して、認証ポータルで使用するサーバー証明書の指定と、許可するSSL/TLSのプロトコルバージョンを指定することができます。
本ガイドでは、SSL/TLSプロトコルバージョンはデフォルトのままとします。
a)「Device」 → 「証明書の管理」の下のb)「SSL/TLSサービスプロファイル」 → c)「追加」をクリックします。
認証ポータル用のSSL/TLSサービスプロファイルを生成します。
a)名前に「Auth_Portal_SSL _Profile(任意)」と入力します。
b)証明書は作成済みの「trust.acme.com_cert」を選択します。
c)「OK」をクリックします。
認証ポータルの設定
設定した証明書や認証プロファイルを使って、認証ポータルが使えるように設定します。
a)「Device」 → b)「ユーザーID」 → c)「認証ポータル 設定」 → d)「歯車」 をクリックします。
a)「認証ポータルの有効化」にチェックを入れます。
b)設定したSSL/TLSサービスプロファイル: 「Auth_Portal_SSL_Profile」を選択します。
c)設定した認証プロファイル: 「Auth-Profile01」を選択します。
d)モードは「リダイレクト」を選択します。
e)ホストのリダイレクトは、PAのTrust側IPに紐づいた「trust.acme.com」を入力します。
f)は任意ですが、最小の1分にしておくことで、認証を繰り返すテストをする場合には便利です。
g)「OK」をクリックします。
インターフェイス管理プロファイルの設定
PA Firewallが認証ポータルのWeb画面を返答するためには、インターフェイス管理プロファイルの設定が必要です。
Trustゾーンに属するインターフェイスだけに認証ポータルを適用したいので、新規にインターフェイス管理プロファイルを生成して、それをTrustゾーンに適用します。
a)「Network」 → b)「インターフェイス管理」 → c)「追加」をクリックします。
名前にd)「TRUST(任意)」、e)「応答ページ」にチェックを入れます。
f)「OK」をクリックします。
a)「Network」 → b)「インターフェイス」のethernet1/2に、設定したインターフェイス管理プロファイル「TRUST」を適用します。
TrustゾーンでのUser-IDの有効化
User-ID連携を行うためには、ゾーンでユーザー識別機能を有効にする必要があります。
a)「Network」 → b)「Zone」 で、設定済みのc)「Trust」ゾーンを開きます。
d)「Enable User Identification」にチェックを入れ、e)「OK」をクリックします。
認証ポリシーの設定
認証ポータルを動作させるには、認証ポリシーの設定が必要です。
TrustからUntrustへの通信の際に認証ポータルが動作するよう、以下のように設定します。
a)「Policies」 → b)「認証」 → c)「追加」をクリックします。
a)「全般」タブ → b)「名前」に「Auth-Portal(任意)」と入力します。
a)「送信元」タブ → b)「追加」をクリックして、c)「Trust」を選択します。
a)「宛先」タブ → b)「追加」をクリックして、c)「Untrust」を選択します。
a)「サービス/URLカテゴリ」タブ → b)「追加」をクリックして、(デフォルトでservice-httpは存在していると思いますので、) c)「service-https」を選択します。
a)「アクション」タブ →「認証の実施」で b)「default-web-form」を選択し、c)「OK」をクリックします。
以下のa)のようになります。
[参考] この環境では、Windows 2019 Server (10.0.2.251) は内部DNSも兼ねていたり、その他にもインターネットとの通信が必要な機能が動いていたりするので、認証ポータルによる認証をさせたくありません。よって、以下のb)のように、10.0.2.251 のポータル認証は除外しています。
認証完了までの間だけSSL復号する設定
クライアントがHTTPSサイトへ向かう際に認証ポータルの認証フォームを返すには、SSL復号が必須となります。
理由は、認証ポータルは、HTTP 302リダイレクトを使うためです。
SSL暗号された状態ではHTTPヘッダも暗号化されているため、HTTP 302リダイレクトが動作しません。
既にSSL復号が設定されている場合はこの設定は不要です。
[参考] SSL復号の詳細については、こちらを参照ください。
もし、何らかの理由で「常にSSL復号はしたくない」という場合は、以下のように、送信元ユーザーに「Unknown」を指定することで、認証ポータルによる認証が完了するまでの間だけ、一時的にSSL復号することができます。
Commitを実施します。
動作確認
クライアントPCからインターネットへのアクセスを試みます。
すると、「trust.acme.com:6082」にリダイレクトされ、以下のような認証ポータル画面が出力されます。
認証が成功すれば、インターネットへのアクセスができるようになります。
また、認証が完了しているので、ログ上にUser-IDが表示されるようになります。
コメント欄 質問や感想、追加してほしい記事のリクエストをお待ちしてます!