
皆さまこんにちは!
Fortinet製品のプリセールスを担当している能島です。
今回は、FortiOS v7.6.0より新たに追加された機能としてタイトルにもありますとおり、
「IPsecVPNによるリモート接続前のセキュリティポスチャタグ(ZTNAタグ)の強制マッチング」
機能についてご紹介いたします。
こちらの機能をご利用していただくことによって、在宅を含む社外ネットワークから、よりセキュアにリモートアクセスをすることが可能となりますので、新たにリモートアクセス環境を構築される方や、既存のリモートアクセス環境からよりセキュアな環境へと環境改善されたい方にご参考になれば幸いです。
機能概要
上述のようにFortiOS v7.6.0より、IPsecVPNでのリモートアクセス時のトンネルを確立する前に、セキュリティポスチャタグ(ZTNAタグ)を強制する機能が新たに追加されました。
本機能ではFortiClient Cloud側でセキュリティポスチャタグについてあらかじめ設定しておく必要があり、IKEv2 IPsecトンネルでタグが定義されている場合、以下の図のようにそのタグによって解決されるクライアントIPアドレスのみトンネルへの接続を確立することができます。
FortiGate側が認識しているセキュリティポスチャタグ情報とFortiClient Cloudよりクライアント端末(FortiClient)に付与されたセキュリティポスチャタグ情報が一致しないとIPsecトンネルが確立されませんので、不正アクセスを未然に防止することが可能となります。
検証環境
・FortiGate-121G
- バージョン 7.6.2
・FortiClient
- バージョン 7.4.2
・FortiClient Cloud
FortiClient Cloud側の設定
まずはFortiClient Cloud側の設定を解説いたします。
今回は既にFortiClient Cloudをデプロイ済み、そしてFortiClient CloudよりFortiClientインストーラを作成・クライアント端末に導入済み という想定のもとでの解説となります。
1. FortiGateとのファブリック連携の確認
FortiClient CloudとFortiGateがファブリック連携されていることを確認します。
※FortiGate側での設定は後述いたします。
FortiClient CloudのGUIにログインし、左側のメニューから Fabric&Connectors > Fabric Devices > Standalone Devices よりファブリック連携先のFortiGateのモデルが表示されていることを確認します。
「注意」
FortiClient Cloudと連携するFortiGateは、FortiClient Cloudのログインアカウント(FortiCloudアカウント)と同じFortiCloud アカウント内にAssetsとして登録されている必要があります。
FortiClient Cloudへのログインで利用するFortiCloudアカウントとは別のFortiCloudアカウント内に連携予定のFortiGateがAssetsとして登録されている場合は、FortiClient Cloud側がFortiGateのAssets情報を認識できず、連携不可となりますのでご注意ください。
2. セキュリティポスチャタグ(ZTNAタグ)のルールを設定
左側のメニューから Security Posture Tags > Tagging Rules よりセキュリティポスチャタグルールを設定します。
画面右上の「+Add」をクリックし、新規でルールを設定します。
以下のようなセキュリティポスチャタグルールの設定画面が表示されます。
・Name:セキュリティポスチャタグルールの設定名称
・Tag Endpoint As:セキュリティポスチャタグ名として表示される名前(※)
・Enabled:セキュリティポスチャタグルールの有効 / 無効
・Comments:セキュリティポスチャタグルールについての自由記述欄
・Rules:セキュリティポスチャタグルールの設定(タグの識別情報の設定)
※「Tag Endpoint As」でタグ名を新たに設定する場合は、空白欄にそのまま設定名を記入すればOK
今回は以下のように設定しておきます。
クライアント端末のOSのバージョンがWindows 11である場合にのみIPsecトンネルを確立させることができるように設定していきます。
セキュリティポスチャタグルールとして設定するタグの属性を選びます。
上記と同じ画面より、画面中央の「+Add Rule」をクリック。
そうすると、セキュリティポスチャタグの属性としてOSの種類やルールを設定することができます。
【デフォルトの設定項目】
・OS:タグの属性として設定可能なOSの種類
・Rule Type:利用可能なセキュリティポスチャタグ情報(※)
※OSバージョンの他に、証明書やクライアント端末のIPアドレスによるルールも設定可能です。
今回は以下のように設定します。
OSの種類として「Windows」を選択し、セキュリティポスチャタグルールのタイプとして「OS Version」を選択します。
なお以下のように、WindowsのバージョンとしてはWindows 7, 8, 8.1, 10, 11から選択することが可能です。
またWindows Serverからも選択することが可能であり、2008 R2, 2012, 2012 R2, 2016, 2019, 2022が選択対象となります。
さらに「=」のような符号や「≧」のような等号付き不等号を用いることによって、対象のOSバージョンへのみセキュリティポスチャタグルールを適用したり、対象のOSバージョンよりもバージョンが大きい場合に限りセキュリティポスチャタグルールを適用するといったように柔軟な設定を行うことが可能です。
設定完了しましたら、「Save」をクリックします。
以下のように新たにWindows OSバージョン(今回の場合はWindows 11)をタグの属性として設定したセキュリティポスチャタグルールができました。
こちらも設定完了しましたら、「Save」をクリックします。
Security Posture Tags > Tagging Rules より、こちらの画面でも新たに「Windows 11」のセキュリティポスチャタグルールができていることがわかります。
3. セキュリティポスチャタグ(ZTNAタグ)のクライアント端末への適用確認
Security Posture Tags > Tag Monitor より、先ほど設定したセキュリティポスチャタグに一致したクライアント端末の情報を確認することが可能です。
今回は「Nojima-Device」というクライアント端末がOSバージョンとしてWindows 11に該当しておりますので、そちらの端末情報を確認することができます。
こちらでFortiClient Cloud側の設定は完了となります。
FortiClient側のタグ情報の確認
クライアント端末側でFortiClientのコンソール画面を表示します。
そして画面一番上のユーザ画面をクリックすると、ユーザアカウント情報が表示されます。
画面右下の「Security Posture Tags」という項目より、先ほど設定したセキュリティポスチャタグが適用されていることが確認できます。
FortiGate側の設定
最後にFortiGate側の設定を解説いたします。
1. FortiClient Cloudとのファブリック連携
本設定はFortiClient Cloudと連携して行いますので、まずリモートアクセス先として利用するFortiGateとFortiClient Cloudを連携します。
FortiGateのGUIにログインし、左側のメニューから セキュリティファブリック > ファブリックコネクタ > FortiClient EMS をクリックします。
" FortiClient EMSの設定 " ページが表示されます。
以下のようにステータスを 有効 にして、タイプを FortiClient EMS Cloud にしておきます。
Connect viaを FortiCloudアカウント に設定し、接続ステータスとして「接続済み」と表示されていればFortiClient Cloudと連携できております。
2. セキュリティポスチャタグの同期確認
FortiClient Cloudで設定したセキュリティポスチャタグについて、こちらのタグ情報を使用してFortiGate側でIPsecVPNのリモートアクセス設定を行いますので、FortiGate側でもタグ情報が同期されているかどうかを確認する必要がございます。
左側のメニューより、ポリシー&オブジェクト > ZTNA > セキュリティポスチャタグ をクリックします。
そうしますと以下のように、先ほどFortiClient Cloudで設定したセキュリティポスチャタグ「Windows 11」が反映されていることが確認できます。
また「Windows 11」タグにカーソルを合わせますと、以下のように該当するセキュリティポスチャタグの詳細が表示されます。
上記画面の 一致したエンドポイントを表示 という項目をクリックしますと、Windows 11 のセキュリティポスチャタグが付与されているクライアント端末の端末情報を確認することができます。
FortiClient Cloudで確認できたクライアント端末情報とFortiGateに同期されているクライアント端末情報が一致していることがわかります。
3. IPsecVPNトンネルの設定
GUI画面での設定の場合、「VPNトンネルの編集」画面の「認証」項目で、Remote gateway matching という設定項目がありますので、こちらで ZTNA を選択します。
Remote gateway matching 項目で ZTNA を選択しますと、新たに Security posture tags という設定項目が表示されますので、こちらでセキュリティポスチャタグ情報として Windows 11(IP TAG)を選択します。
こちらでIPsecVPNによるリモート接続前のセキュリティポスチャタグ(ZTNAタグ)の強制マッチングに関する設定は完了です。
注意点といたしまして、本設定では鍵交換方式としてIKEv2を利用しますので、既存環境でIKEv1をご利用されている方はIKEv2に変更していただく必要がございます。
なお、CLIでの設定の場合は以下のように設定します。
上記のようにCLIによる設定でも、
config vpn ipsec phase1-interface edit <name> set ike-version 2 set remote-gw-match {any | ipmask | iprange | geography | ztna} set remote-gw-ztna-tags <IPv4 ZTNA posture tags> next end
というように、Remote gateway matching で ZTNA を選択し、セキュリティポスチャタグ情報として FortiClient Cloudで設定したセキュリティポスチャタグを選択します。
4. IPsecVPNによるリモート接続
WIndows 11のクライアント端末(Nojima-Device)でFortiGateに対してIPsecVPNによるリモート接続を行います。
以下のように、接続に成功すると 「Negotiation succeeded!」というポップアップ画面がクライアント端末側で表示されます。
5. 接続確認
FortiGate側のCLIより以下のコマンドを実行し、クライアント端末とFortiGate VPNゲートウェイでトンネルが確立されていることを確認します。
debugを有効にすると、セキュリティポスチャタグが一致した時に以下のようなデバッグ情報が出力されます。
# diagnose debug enable
# diagnose debug application ike -1
また、以下の出力ではダイアルアップトンネルが確立していることを確認できます。
# diagnose debug enable
# diagnose vpn ike gateway list
GUI画面上でも VPN > VPN Tunnels よりIPsecVPNトンネルがアップしていることを確認することができます。
以上が、IPsecVPNによるリモート接続前のセキュリティポスチャタグ(ZTNAタグ)の強制マッチングの設定方法の解説となります。
まとめ
皆さま、いかがでしたでしょうか。
従来のFortiGateの機能として、セキュリティポスチャタグ(ZTNAタグ)をファイアウォールポリシーに適用することで社内サーバへのアクセスを監視して、よりセキュアな環境を構築・運用することは可能でしたが、タグを使用することでそもそもタグ情報が一致しているクライアント端末でないとリモート接続させないようにする設定は今までございませんでした。
FortiOS v7.6.0より本機能が追加されたことで、特定のクライアント端末のみのアクセスを可能にするといった運用も可能となり、証明書認証よりも設定が簡単ですので、ぜひとも本ブログをご参考にしていただき、ネットワークセキュリティの構築運用に活かしていただければと思います。
最後までご覧いただきありがとうございました。
他のおすすめ記事はこちら
著者紹介

SB C&S株式会社
技術本部 技術統括部 第2技術部 1課
能島 圭佑