本記事について
本記事では、Fortinet 社のファイアウォール製品である FortiGate において SSL-VPN 機能を設定する方法について説明します。なお、クライアント認証方法として LDAP(AD サーバ)を使用する場合を対象としています。
動作確認環境
本記事の内容は以下の機器にて動作確認を行った結果に基づいて作成されています。
- FortiGate-60F
- バージョン 7.4.3
- FortiClient VPN 7.2.4.0972
SSL-VPN とは – テレワーク環境として利用可能
SSL-VPN とは、外部端末から組織の内部ネットワークに安全に接続することを実現する、クライアント-サーバ型の VPN です。クライアントとサーバ間の通信は SSL 暗号化されるためセキュリティ性の高い通信を行うことができます。コロナ禍以降に普及したテレワークのための VPN 接続環境としてこの SSL-VPN が使われているケースが良くあります。
クライアントでは SSL-VPN サーバに接続するためにクライアントソフトを使用します。SSL-VPN サーバアプライアンス毎に専用のクライアントソフトが提供されていることが一般的であり、FortiGate の場合は「FortiClient VPN」というクライアントソフトが提供されています。
FortiClient VPN については無償版が提供されているため、ここでは無償版を使用することとします。
SSL-VPN のトンネルモードと Web モード
SSL-VPN ではクライアントソフトを使用すると上で説明しましたが、クライアントソフトを使わずに Web ブラウザを使用して接続する Web モードも存在します。ただし、クライアントソフトを使用するトンネルモードが主流であり Web モードが使用されるケースは経験上見たことがありません。
SSL-VPN 接続時のクライアント認証方法
SSL-VPN サーバはクライアントが接続を試みた際にクライアントの認証を行います。
認証方法としては以下のようなものがあります。
- ローカルユーザ認証(FortiGate で設定したユーザでの認証)
- LDAP 認証(AD サーバのユーザで認証)
- クライアント証明書による認証(2要素認証)
- FortiToken を利用したワンタイムパスワード(2要素認証)
- Eメールを利用したワンタイムパスワード(2要素認証)
本記事では②の LDAP 認証をする場合について説明します。
サーバ証明書について
SSL-VPN サーバにはサーバ証明書がインストールされている必要があります。FortiGate にはデフォルトでサーバ証明書が含まれているため、それを SSL-VPN で使用できます。ただしデフォルトのサーバ証明書を使用した場合クライアントが SSL-VPN 接続時にクライアント側の画面にサーバ証明書に関する警告が表示されます。
警告を表示させたくない場合は別途サーバ証明書を用意し FortiGate にインストールする必要があります。
本記事ではデフォルトのサーバ証明書を使用することとしています。
想定するシナリオ
ここでは以下画像のネットワーク構成を想定します。外部ネットワークに存在する端末から内部ネットワークに存在する端末に接続するために FortiGate で SSL-VPN の設定を行います。クライアント認証方法については内部ネットワークに存在する AD サーバのユーザを利用することとします。
SSL-VPN の設定は以下の順で行っていきます。
- LDAP サーバの設定
- ユーザグループの設定
- クライアント用 IP アドレスプールの設定
- SSL-VPN ポータルの作成
- SSL-VPN 設定
- ファイアウォールポリシーの設定
GUI での SSL-VPN 設定項目の表示
GUI では、デフォルトでは SSL-VPN 設定項目は表示されない設定となっています。
SSL-VPN 設定項目を表示するためには以下の手順で表示機能の設定を行います。
GUI にログインし左側のメニューから「システム > 表示機能設定」をクリックします。
表示機能設定画面にて「コア機能 > SSL-VPN」のトグルを有効にし、画面下の「適用」をクリックします。
左側のメニューから「VPN」をクリックして展開し、SSL-VPN 関連の設定項目が表示されていることを確認します。
以上で SSL-VPN 設定項目の表示設定は完了です。
Version 7.4.4 からは CLI での設定が必要
バージョン7.4.4 の場合、デフォルトでは GUI での表示機能設定の中に「SSL-VPN」の項目が表示されず GUI から設定変更ができません。このため SSL-VPN 表示を有効にするためには CLI のコマンドで設定する必要があります。
config system settings
set gui-sslvpn enable
end
上記コマンドで SSL-VPN 表示を有効にした後は GUI の表示機能設定画面に「SSL-VPN」の項目が表示されます。ただし無効に戻すと GUI の表示機能設定画面から「SSL-VPN」の項目が消えます。
LDAP サーバの設定
認証で使用する AD サーバを LDAP サーバとして設定します。
GUI にログインし左側のメニューから「ユーザ&認証 > LDAPサーバ」をクリックします。
LDAPサーバ画面左上の「新規作成」をクリックします。
LDAPサーバ設定画面が表示されるため各項目を設定していきます。
- 「名前」には任意の LDAP サーバ表示名を入力します
- 「サーバIP/名前」には AD サーバの IP アドレスまたは FQDN(要名前解決) を入力します
- 「サーバポート」はデフォルトの 389 のままとします
- 「コモンネーム識別子」は「sAMAccountName」と入力します
- 「識別名」は AD ドメインに合わせて「DC=xxxx,DC=xxxx,…」の形式で入力します
- 例:ドメインが fortiadtest.com の場合は「DC=fortiadtest,DC=com」とします
- 「Exchangeサーバ」はデフォルトの OFF のままとします
- 「バインドタイプ」は「レギュラー」を選択します
- 「ユーザ名」には AD サーバの管理権限を持つユーザ名を「ユーザ名@ドメイン」の形式で入力します
- ⑧「ユーザ名」で入力したユーザのパスワードを入力します
- 「セキュアな接続」は AD 側で暗号化設定していない限りデフォルトの無効のままとします
以上の設定ができたら次の接続テストを行います。
「コモンネーム識別子」は「sAMAccountName」の代わりに「cn」を使用するケースもあるようです。「cn」にした場合、認証時のユーザ名は AD ユーザの「表示名」を使用する必要があります。一方「sAMAccountName」にした場合は AD ユーザの「ユーザーログオン名」を使用する必要があります。
「接続をテスト」をクリックし、「接続ステータス」として「成功」と表示されることを確認します。
次に「識別名」右にある「ブラウズ」をクリックし、AD のツリー情報が表示されることを確認します。
次にユーザ認証のテストを行います。
- 「ユーザクレデンシャルをテスト」をクリックします
- 認証のために使用する AD ユーザの「ユーザ名」と「パスワード」を入力します
- 「テスト」をクリックします
- 「接続ステータス」「ユーザクレデンシャル」の両方に「成功」と表示されることを確認します
以上の確認ができたらLDAPサーバの編集画面で「OK」をクリックして設定を確定します。
LDAPサーバ画面に戻るため、設定した LDAP サーバが追加されていることを確認します。
以上で LDAP サーバの設定は完了です。
ユーザグループの設定
AD サーバのユーザの中で、SSL-VPN 接続を許可するユーザのグループを設定します。
GUI にログインし左側のメニューから「ユーザ&認証 > ユーザグループ」をクリックします。
ユーザグループ画面の左上の「新規作成」をクリックします。
ユーザグループ設定画面が表示されるため各項目を設定します。
- 「名前」には任意のグループ名を入力します
- 「タイプ」は「ファイアウォール」を選択します
- 「メンバー」はデフォルトのまま何も変更しません
続いてリモートグループ欄では「追加」をクリックします。
以下のような画面が表示されます。作成するユーザグループに追加する AD ユーザを選択します。
- 「リモートサーバ」ではLDAPサーバの設定で作成したプロファイルを選択します
- 左側に AD サーバのツリー情報が表示されるため「+」をクリックして展開し、対象のユーザが含まれるノードをクリックします
- 右側に選択したノードに含まれるユーザ及びセキュリティグループが表示されるため、ユーザグループに含めたいユーザまたはセキュリティグループを右クリックし、「選択したものを追加」をクリックします
- 例では「BusyoA」セキュリティグループを選択しています
その後、対象のユーザに緑のチェックマークが付いたことを確認し「OK」をクリックします。
ユーザグループ設定画面にて「リモートグループ」欄に設定が追加されたことを確認し「OK」をクリックします。
ユーザグループ画面にて設定したグループが追加されていることを確認します。
以上でユーザグループの設定は完了です。
クライアント用 IP アドレスプールの設定
クライアントが SSL-VPN 接続するとクライアントの仮想アダプタに対して IP アドレスが割り当てられます。
デフォルトでも特定の IP 範囲からアドレスが割り当てられますが、IP アドレスの枯渇や組織の内部セグメントと重複する恐れもあるのでここでは手動で IP アドレスプールを設定します。
IP アドレスプールは IP 範囲タイプのアドレスオブジェクトとして設定します。
ここでは例としてアドレスオブジェクトを以下のように設定します。
- 「インターフェース」は「any」とします
- 「タイプ」は「IP範囲」とします
SSL-VPN ポータルの作成
SSL-VPN ポータルは、クライアントの SSL-VPN 接続時の動作を定義するプロファイルです。上で設定したユーザグループと紐づけて使用します。
デフォルトでいくつかの SSL-VPN ポータルが存在しますが、ここでは要件に合わせて手動で新規作成します。
作成手順は以下の通りです。
GUI にログインし左側のメニューから「VPN > SSL-VPNポータル」をクリックします。
SSL-VPN ポータル画面で「新規作成」をクリックします。
SSL-VPN ポータル設定画面が表示されるため各項目を設定します。
- 「名前」には任意のポータル名を入力します
- 基本的にデフォルトの OFF のままにします
- 「トンネルモード」を有効にします
- スプリットトンネリングでは基本的にはデフォルトの「ポリシーの宛先に基づいて有効」とします
- この設定にすることで、クライアントでは SSL-VPN 接続中は組織の内部ネットワーク宛の通信のみ SSL-VPN トンネルを通して通信を行する動作になります
- 基本的には設定変更の必要はありません
- 「送信元IPプール」では本記事の「クライアント用 IP アドレスプールの設定」で作成したアドレスオブジェクトを指定します
- ここで指定したアドレス範囲からクライアントにアドレスが割り当てられます
続きの項目も設定していきます。
- 「トンネルモードクライアントオプション」ではクライアントの権限等の設定です。要件がある場合は有効化します
- 「ホストチェック」ではクライアントにてアンチウィルスソフトが動作している場合のみ接続を許可する等の設定ができます。要件がある場合は有効化します
- 「特定のOSバージョンに制限」ではクライアントの Windows や MAC OS のバージョンごとに接続の許可・拒否を設定できます。要件がある場合は有効化します
- 「FortiClientダウンロード」が有効な場合、クライアントは FortiGate から FortiClient インストーラをダウンロードできます。デフォルトで有効ですが必要に応じて無効化します
- 「FortiClientダウンロード」は Web モードに関する設定で、Tunnel モードには関係ありません。Web モードはデフォルトで無効になっています
以上の設定ができたら「OK」をクリックします。
SSL-VPN ポータル画面にて設定が追加されたことを確認します。
以上で SSL-VPN ポータルの設定は完了です。
SSL-VPN 設定
ここまでで本題の SSL-VPN 機能を設定するための材料がそろったため SSL-VPN 設定を行います。
設定手順は以下の通りです。
GUI にログインし左側のメニューから「VPN > SSL-VPN設定」をクリックします。
SSL-VPN 設定画面にて各項目を設定していきます。
「SSL-VPN status」を「有効」にします。※デフォルトで有効です
続きの項目も設定していきます。
- 「リッスンするインターフェース」ではクライアントからの SSL-VPN 接続要求を着信するインターフェースを指定します
- 「リッスンするポート」ではクライアントからの SSL-VPN 接続要求を受け付けるポートを指定します。デフォルトでは 443 となっているため、別のポートに変更します。例では 8443 としています
- 「サーバ証明書」では使用するサーバ証明書を選択します。例ではデフォルトの証明書である「Fortinet_Factory」を使用します
- リダイレクト設定はデフォルトの無効とします
- 「アクセスを制限」では送信元IPによって接続制限ができます。必要な場合は有効化します
- 「アイドルログアウト」はデフォルトで有効になっています。必要な場合は設定変更します
- 「クライアント証明書を要求」はクライアント証明書のチェックを行う場合は有効にします
続いてトンネルモードクライアントの設定を行います。
- 「アドレス範囲」はデフォルトでは自動割り当てになっていますがここでは「カスタムIP範囲を指定」を選択し、「IP範囲」では本記事の「クライアント用 IP アドレスプールの設定」で作成したアドレスオブジェクトを指定します
- DNSサーバとWINSサーバはデフォルト設定のままとします
次の「認証/ポータルマッピング」欄では「新規作成」をクリックします。
以下の画面が表示されるため「ユーザ/グループ」には本記事の「ユーザグループの設定」で作成したユーザグループを指定し、「ポータル」には本記事の「SSL-VPN ポータルの作成」で作成したポータルを指定します。
続いて「すべてのその他のユーザ/グループ」をクリックして選択状態にし「編集」をクリックします。
先ほどと同じように「ポータル」には本記事の「SSL-VPN ポータルの作成」で作成したポータルを指定します。
以上の設定ができたら画面下部の「適用」をクリックします。
以上で SSL-VPN 機能の設定は完了です。
ファイアウォールポリシーの設定
最後に、SSL-VPN クライアントから組織の内部ネットワークへの通信を許可するファイアウォールポリシーを設定します。
ポリシーの設定内容は以下のようにします。
- 「着信インターフェース」には「SSL-VPN tunnel interface (ssl.root)」を指定します
- 「送信元」には SSL-VPN クライアント用の IP アドレスプールと、SSL-VPN 用のユーザグループの2つを指定します
- その他の項目については通常のファイアウォールポリシー設定と同様に設定します
上画像の設定例ではサービスを ALL にしていますが、必要な場合は通信要件に合わせてサービスを限定してください。
クライアントからの接続方法
以上で FortiGate での設定は完了となります。次にクライアントからの接続方法について説明します。
FortiClient VPN のダウンロードとインストール
FortiClient VPN のインストーラは以下のページからダウンロードできます。
画面を下にスクロールしていくと、FortiClient VPN の欄があるため、そこで対象の OS 用のダウンロードボタンをクリックします。
ダウンロードしたインストーラを実行してインストールを行います。
Windows の場合はインストーラ画面にしたがいクリックしていくだけで簡単にインストール可能です。
FortiClient VPN の起動と接続
FortiClient VPN のインストールができたらソフトを起動し以下の手順で接続を行います。
以下の画面が表示されるため「VPN設定」をクリックします。
以下の画面が表示されるため各項目を設定していきます。
- 「VPN」では「SSL-VPN」を選択します
- 「接続名」には任意の接続プロファイル名を入力します
- 「説明」は任意に入力します
- 「リモートGW」には FortiGate の SSL-VPN をリッスンするインターフェースのアドレスを入力します。また「ポートの編集」にチェックを入れ、FortiGate の SSL-VPN をリッスンするポートを入力します
- チェック無しのままとします
- 認証は「ユーザ名入力」とします。「ユーザ名を保存」を選択すると、ユーザ名が保存され接続時にユーザ名の入力を省略できます
- 「クライアント証明書」は今回の例では使用しないため「なし」にします
以上の設定ができたら「保存」をクリックします。
以下の画面となるため、VPN名称で先ほど設定した VPN 接続プロファイル名を指定し、ログイン用のユーザ名とパスワードを入力して「接続」をクリックします。
今回の例では FortiGate でデフォルトのサーバ証明書を使用しているため以下の警告画面が表示されます。この画面では「はい」をクリックします。
上の警告画面は、FortiClient VPN 画面の裏側に隠れて表示されるため気付かないことがあります。FortiClient VPN の画面で以下のように「ステータス: 40%」で止まっている場合、上の警告画面が表示されている可能性があるため警告画面が表示されていないか確認してみてください。
SSL-VPN 接続に成功すると、以下のような Windows のポップアップが表示されます。また同時に FortiClient VPN の画面は最小化されますが、タスクトレイの中にアイコンが表示されているため、このアイコンをダブルクリックして画面を表示します。
FortiClient VPN 画面では、割り当てられた IP アドレスやユーザ名等を確認できます。
以上で FortiClient VPN での接続は完了です。
SSL-VPN 関連の状態確認コマンド
get vpn ssl monitor
現在接続中のユーザ情報を確認できます。
FortiGate-60F # get vpn ssl monitor
SSL-VPN Login Users:
|Index|User|Group|Auth Type|Timeout|Auth-Timeout|From|HTTP in/out|HTTPS in/out|Two-factor Auth|
|0|user01|SSL-VPN_BusyoA|16(1)|292|28622|100.1.1.2|0/0|0/0|0|
SSL-VPN sessions:
|Index|User|Group|Source IP|Duration|I/O Bytes|Tunnel/Dest IP|
|0|user01|SSL-VPN_BusyoA|100.1.1.2|178|262603/2729260|10.254.0.2|
diagnose vpn ssl statistics
現在接続中のユーザ数等の統計情報を確認できます。
FortiGate-60F # diagnose vpn ssl statistics
SSLVPN statistics (root):
------------------
Memory unit: 1
System total memory: 2010992640
System free memory: 1181990912
SSLVPN memory margin: 201099264
SSLVPN state: normal
Max number of users: 1
Max number of tunnels: 1
Max number of connections: 2
Current number of users: 1
Current number of distinct users: 1
Current number of tunnels: 1
Current number of connections: 1
以下の値は、FortiGate が再起動されてからの最大同時接続数を示します。上限数ではないためご注意ください。
Max number of users: 1
Max number of tunnels: 1
Max number of connections: 2
【参考】CLI での SSL-VPN 関連コンフィグ
LDAP サーバ設定
本記事での想定シナリオにおける設定後のコンフィグは以下の通りです。
config user ldap
edit "fortiadtest.com"
set server "10.1.1.100"
set cnid "sAMAccountName"
set dn "DC=fortiadtest,DC=com"
set type regular
set username "administrator@fortiadtest.com"
set password ENC cGxfbBOEfhCB60p+8PTWi8FAP/mjDtWoRy5kfLzGVZXtW1YwS1wO7eTPd2gSRgx46KbfRzUbbt8AkuHnjq4mekfdNJUA5YdyRFbrbTQoh2jgFn9JWnJq6fyPyfqfyhDiq+UGyJuH+gwlTTeUr9b8I1PLaLOmB/Y73K4O7Usl7R3W6+KC788M/Jn4Wd1GgMeHhN/voA==
next
end
ユーザグループ設定
本記事での想定シナリオにおける設定後のコンフィグは以下の通りです。
config user group
edit "SSL-VPN_BusyoA"
set member "fortiadtest.com"
config match
edit 1
set server-name "fortiadtest.com"
set group-name "CN=BusyoA,CN=Users,DC=fortiadtest,DC=com"
next
end
next
end
SSL-VPN ポータル設定
本記事での想定シナリオにおける設定後のコンフィグは以下の通りです。
config vpn ssl web portal
edit "Sample-Portal-01"
set tunnel-mode enable
set ip-pools "SSL-VPN_IPPOOL"
next
end
SSL-VPN 機能設定
本記事での想定シナリオにおける設定後のコンフィグは以下の通りです。
config vpn ssl settings
set banned-cipher SHA1 SHA256 SHA384
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSL-VPN_IPPOOL"
set port 8443
set source-interface "wan1"
set source-address "all"
set source-address6 "all"
set default-portal "Sample-Portal-01"
config authentication-rule
edit 1
set groups "SSL-VPN_BusyoA"
set portal "Sample-Portal-01"
next
end
end
参考資料
【おすすめ】FortiGate の設計構築中なら以下の記事も役立つかもです
- 基礎知識
- HA (冗長構成) 設定
- FortiGate HA モードの Active-Passive と Active-Active の違いを解説します
- FortiGate HA(冗長構成)の概要と設定ガイド【詳しく解説】※note記事
- FortiGate HA 構成時のコンフィグ同期の仕様について解説します
- FortiGate HA 構成時の NTP,Syslog,SNMP 等の送信元インターフェースを解説 [ha-direct 設定]
- FortiGate HA 構成時の仮想 MAC アドレスについて解説します
- FortiGate HA ハートビート送信間隔と障害判定しきい値の設定ガイド
- FortiGate HA 構成時のバックアップ及びリストア実施ガイド
- FortiGate HA 構成でのモニタインターフェースダウン時の通信断時間について解説
- FortiGate HA 構成に関するQ&A 【良くありそうな疑問集】
- VDOM (バーチャルドメイン) 設定
- トランスペアレントモード設定
- システム系設定
- 管理者アカウント設定
- 時刻・NTP 設定
- ロギング・Syslog 送信設定
- SNMP 設定
- DHCP サーバ機能設定
- Proxy サーバ機能設定
- アラートメール送信
- ネットワーク系設定
- インターフェース設定
- ルーティング設定
- DNS 設定
- NAT 及び NAPT 設定
- ファイアウォール系設定
- アドレス設定
- サービス設定
- ファイアウォールポリシー設定
- ゾーンを使用したポリシー設定
- VPN 系設定
- Tips
Amazon アフィリエイトリンク
以下は Amazon アフィリエイトリンクです。インフラエンジニアにそこそこおすすめなアイテムです。
note メンバーシップへの参加もお待ちしています!
【アフィリエイト】おすすめ WordPress テーマ【SWELL】
当サイトでは WordPress テーマとして SWELL を使用しています。以前は無料・高機能テーマとして知られる Cocoon を使用していて Cocoon も使いやすかったのですが、SWELL を使い始めてからは SWELL のほうが圧倒的に使いやすいなと思いました。そして何より読み込み速度が速い。SWELL を使い始めてから、過去の Cocoon のブログを見直したときに「あれ、こんなに表示遅かったっけ?」という感覚になりました。
また SWELL はデフォルトでもオシャレなデザインですが柔軟にカスタマイズすることもでき個性のあるサイトを作成できます。さらにブログパーツや広告タグといった再利用可能なブログの「部品」も作成することができ、ブログ作成効率も高いです。
技術ブログやアフィリエイト等での収益化を見据えたブログの作成に SWELL は最適です。初見では価格が高いなと思うと思いますが、私としては SWELL を採用して良かったしそれ以上の価値があると感じています。
ブログの新設やテーマ変更を考えている人は一度 SWELL を検討してみてください。
以下の画像リンクから詳細な情報を確認できます。
レンタルサーバーを探している人には安定性に定評のあるエックスサーバーをお勧めします。
当サイトもエックスサーバーを使用しています。WordPress のインストールも簡単にできます。
コメント