【Fortigate】SSL-VPNリモート接続(トンネルモード、ローカルユーザ)FortiOS6.2.4

注意

FortiOS 7.6.3 以降では、SSL-VPN のトンネルモードは IPsec VPN に置き換えられ、GUI でも CLI でも使えなくなりました。以前のバージョンの設定は引き継がれないため、7.6.3 以降にする前に IPsec VPN へ移行する必要があります(SSL VPN tunnel mode replaced with IPsec VPN | FortiOS 7.6.3 Release Notes)。この記事は FortiOS 6.2.4 での検証です。

FortiGate には SSL-VPN の機能があり、リモート環境から比較的簡単に社内へ接続できます。この記事では、FortiGate のローカルに登録したユーザで認証し、端末に FortiClient(無償)をインストールして使うトンネルモードで接続する設定を確認します。検証時の FortiOS は 6.2.4 です。

この記事でわかること
  1. SSL-VPN で使うローカルユーザの作成
  2. SSL-VPN 設定と、SSL-VPN 用のファイアウォールポリシー
  3. FortiClient での接続と、端末のアドレス・ルーティング、FortiGate のログでの確認

検証の構成

インターネット側の端末は、FortiClient で FortiGate の port1 に SSL-VPN(トンネルモード)で接続します。接続すると、端末にはトンネル用の IP アドレス(10.212.134.200)が割り当てられ、VPN を通して社内のサーバ(10.0.1.10)に RDP で接続できるようになります。

Internet10.0.1.10RDP の接続先FortiGateローカルユーザで認証port2port1FortiClientトンネル IP10.212.134.200RDPSSL-VPN(4433)
図1 検証の構成

SSL-VPN のユーザ作成

ローカルユーザを作る

SSL-VPN で使うローカルユーザを作ります。ユーザ&認証 ›› ユーザ定義 を開き、新規作成 をクリックすると、ユーザ作成のウィザード(Users/Groups Creation Wizard)が始まります。4つの画面で、次のように設定します。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

FortiGate 管理画面画面イメージ
ユーザ&認証 ›› ユーザ定義 ›› Users/Groups Creation Wizard
① ユーザタイプ
1ユーザタイプ
ローカルユーザリモートRADIUSユーザ
リモートTACACS+ユーザ
リモートLDAPユーザ
FSSO
FortiNACユーザ
② ログインクレデンシャル
2ユーザ名(伏せています)
パスワード••••••••
③ コンタクト情報
二要素認証 OFF
④ エキストラ情報
ユーザアカウントステータス◉ 有効化済み○ 無効化済み
ユーザグループ OFF
< 戻るサブミットキャンセル
図2 ローカルユーザの作成(実際の画面ではなく、ウィザードの4つの画面で設定する項目を1つにまとめたイメージです)
No.画面設定内容
1ユーザタイプローカルユーザ を選び、次へ をクリックします。
2ログインクレデンシャルユーザ名とパスワードを入力し、次へ をクリックします。
コンタクト情報何も設定せず、次へ をクリックします。
エキストラ情報何も設定せず、サブミット をクリックします。今回はユーザグループを使わず、ファイアウォールポリシーにユーザを直接指定します。

作成すると、ユーザ定義の一覧に、タイプが ローカル のユーザとして登録されます。

FortiGate 管理画面画面イメージ
ユーザ&認証 ›› ユーザ定義
名前タイプ二要素認証
guestローカル✕
1(伏せています)ローカル✕
図3 作成したローカルユーザ(実際の画面ではなく、表示のポイントを示したイメージです)

SSL-VPN の設定

SSL-VPN の受け付けを設定する

VPN ›› SSL-VPN設定 を開き、SSL-VPN の受け付けを設定します。

FortiGate 管理画面画面イメージ
VPN ›› SSL-VPN設定
接続設定
1リッスンするインターフェースport1
2リッスンするポート4433
Webモードアクセスをリッスンするポート:https://10.0.0.99:4433
HTTPをSSL-VPNにリダイレクト OFF
アクセスを制限◉ 任意のホストからアクセス許可○ 特定ホストへアクセス制限
アイドルログアウト ON 非アクティブ 300 秒
サーバ証明書self-sign
クライアント証明書を要求 OFF
トンネルモード クライアント設定
3アドレス範囲◉ 自動的にアドレス割り当て○ カスタムIP範囲を指定
トンネルユーザは、以下の範囲内のIPを受け取ります:10.212.134.200 – 10.212.134.210
4DNSサーバ◉ クライアントシステムのDNSと同じ○ 指定
WINSサーバを指定 OFF
認証/ポータルマッピング
5すべてのその他のユーザ/グループポータル:tunnel-access
適用
図4 SSL-VPN 設定(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1リッスンするインターフェースSSL-VPN を受け付けるインターネット側のインターフェースです。今回は、インターネットにつながっている port1 を指定します。
2リッスンするポートHTTPS の 443 番は管理画面で使っているので、重ならないポート番号にします。今回は 4433 にします。
3アドレス範囲SSL-VPN のクライアントに割り当てるアドレスです。既定の 自動的にアドレス割り当て では、10.212.134.200〜10.212.134.210(SSLVPN_TUNNEL_ADDR1)が使われます。カスタムIP範囲を指定 で変えることもできます。
4DNSサーバ特定の DNS サーバを指定することもできます。今回は IP アドレスで接続を確認するので、クライアントシステムのDNSと同じ にします。
5認証/ポータルマッピングポータルを tunnel-access にします。VPN ›› SSL-VPNポータル にあらかじめ用意されているポータルで、トンネルモードで接続するように設定されています。

設定したら、適用 をクリックします。

ファイアウォールポリシーの設定

接続先のアドレスを作る

ポリシー&オブジェクト ›› アドレス で、社内の RDP の接続先(10.0.1.10)をアドレスオブジェクトとして新規作成します。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› アドレス ›› 新規アドレス
1名前Internal-RDP
タイプサブネット
2IP/ネットマスク10.0.1.10/32
インターフェースport2
OKキャンセル
図5 RDP の接続先のアドレス(実際の画面ではなく、設定する項目を示したイメージです)

SSL-VPN 用のポリシーを作る

ポリシー&オブジェクト ›› ファイアウォールポリシー で、SSL-VPN 用のポリシーを作ります。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› ファイアウォールポリシー ›› ポリシーの編集
名前SSL-VPN
1着信インターフェースSSL-VPN tunnel interface (ssl.root)
2発信インターフェースport2
3送信元
SSLVPN_TUNNEL_ADDR1
(伏せています)
エントリを選択アドレス:SSLVPN_TUNNEL_ADDR1ユーザ:(伏せています)
4宛先Internal-RDP
スケジュールalways
5サービスALL
アクション◉ 許可○ 拒否
インスペクションモード◉ フローベース○ プロキシベース
ファイアウォール / ネットワークオプション
6NAT OFF
プロトコルオプションdefault
⋮(中略)
ロギングオプション
7許可トラフィックをログ ON ○ セキュリティイベント◉ すべてのセッション
このポリシーを有効化 ON
OKキャンセル
図6 SSL-VPN 用のファイアウォールポリシー(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1着信インターフェースSSL-VPN のトンネルのインターフェース ssl.root を選びます。
2発信インターフェース社内向けのインターフェース(今回は port2)を選びます。
3送信元SSL-VPN のクライアントに割り当てるアドレス(SSLVPN_TUNNEL_ADDR1)と、STEP 1 で作ったユーザの両方を指定します。+ をクリックし、右側の エントリを選択 の アドレス と ユーザ から選びます。
4宛先社内のサーバとして作った Internal-RDP を選びます。
5サービス今回はテストなので ALL にします。
6NAT無効にします。サーバには、VPN クライアントのトンネル IP のまま届きます。
7許可トラフィックをログすべてのセッション にします。

端末側の設定

FortiClient に接続先を登録する

端末に FortiClient をインストールします。FortiClient は https://www.forticlient.com/downloads からダウンロードできます(Windows、Mac、モバイルなどに対応しています。今回は Mac で確認しました)。FortiClient で VPN の接続先を次のように登録し、Save をクリックします。

FortiClient VPN画面イメージ
Edit VPN Connection
VPN◉ SSL-VPN○ IPsec VPN○ XML
1Connection NameSSL-VPN
2Remote Gateway(伏せています)
3Customize port☑ 4433
Client CertificateNone
Authentication◉ Prompt on login○ Save login
4Do not Warn Invalid Server Certificate☑
CancelSave
図7 FortiClient の接続先の設定(実際の画面ではなく、設定する項目を示したイメージです)
No.項目設定内容
1Connection Name任意の名前です。今回は SSL-VPN にします。
2Remote GatewayFortiGate で SSL-VPN を受け付けるグローバルアドレスです。
3Customize portFortiGate の リッスンするポート と同じ 4433 にします。
4Do not Warn Invalid Server Certificateチェックを入れます。今回の FortiGate はサーバ証明書が既定の自己署名証明書(self-sign)なので、検証用として警告を出さないようにしています。
補足

Do not Warn Invalid Server Certificate を有効にすると、信頼できないサーバにも警告なしで接続してしまいます。本番では、FortiGate に正規のサーバ証明書を入れ、このチェックは外して使うことをおすすめします。

動作確認

FortiClient で接続する

登録した SSL-VPN を選び、ユーザ名とパスワードを入力して Connect をクリックします。しばらくすると、SSL-VPN がつながったことを確認できます。

FortiClient画面イメージ
接続前
VPN Name:SSL-VPNUsername:(伏せています)
Password:••••••••
Connect
接続後
VPN Name:SSL-VPNIP Address:10.212.134.200
Username:(伏せています)
Duration:00:00:33
Bytes Received:256.99 KB / Bytes Sent:52.02 KB
図8 FortiClient での接続(実際の画面ではなく、表示のポイントを示したイメージです)

端末のアドレスとルーティングを確認する

端末の IP アドレスを確認すると、PPP のインターフェース(ppp0)に 10.212.134.200 が割り当てられています。

端末(Mac)

$  ifconfig -a
ppp0: flags=8051 mtu 1354
inet 10.212.134.200 --> 169.254.38.179 netmask 0xff000000

ルーティングテーブルを見ると、SSL-VPN のポリシーで宛先にした 10.0.1.10/32 が、ppp0 向けに追加されています。

端末(Mac)

$ netstat -r
Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.3.1        UGSc           82        0     en1      
10.0.1.10/32       169.254.38.179     UGSc            1        0    ppp0      
169.254            link#6             UCS             1        0     en1      !
169.254.38.179     10.212.134.200     UH              2        0    ppp0 

トンネルを通るのは 10.0.1.10 宛ての通信だけで、それ以外の通信は端末のデフォルトルート(en1)からそのまま出ます。今回のポータル tunnel-access ではスプリットトンネルが有効になっていて、ポリシーの宛先のアドレスが端末にルートとして渡されています。

Internet端末10.0.1.10/32 → ppp0トンネルを通るFortiGate10.0.1.10そのほか(default → en1)端末の回線からそのまま出る
図9 スプリットトンネルで、ポリシーの宛先だけがトンネルを通る

RDP で接続し、FortiGate で確認する

VPN を通して、10.0.1.10 に RDP で接続できました。FortiGate の ダッシュボード ›› Network の SSL-VPN を見ると、作ったユーザで接続していることを確認できます。

FortiGate 管理画面画面イメージ
ダッシュボード ›› Network
SSL-VPN
ユーザ名最後のログオンリモートホスト
1(伏せています)2020/10/04 15:28:57(伏せています)
図10 SSL-VPN で接続しているユーザ(実際の画面ではなく、表示のポイントを示したイメージです)

ログ&レポート ›› 転送トラフィック では、ユーザがトンネル IP(10.212.134.200)から 10.0.1.10 に RDP で接続し、ポリシー SSL-VPN で許可されていることを確認できます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
日付/時刻送信元宛先サービス結果ポリシーID
2020/10/04
16:09:20
1(伏せています)
(10.212.134.200)
10.0.1.10RDP✓ 398.28 kB /
914.09 kB
SSL-VPN (3)
2020/10/04
16:07:20
(伏せています)
(10.212.134.200)
10.0.1.10RDP✓ 230.07 kB /
461.49 kB
SSL-VPN (3)
2020/10/04
16:05:19
(伏せています)
(10.212.134.200)
10.0.1.10RDP✓ 220.15 kB /
451.28 kB
SSL-VPN (3)
⋮(以下略)
図11 SSL-VPN を通った RDP のログ(実際の画面ではなく、表示のポイントを示したイメージです。ユーザ名は伏せています)

まとめ

設定内容
ユーザユーザ&認証 ›› ユーザ定義 のウィザードでローカルユーザを作成
SSL-VPN 設定リッスンするインターフェース port1、ポート 4433、アドレス範囲は自動(10.212.134.200〜210)、ポータル tunnel-access
ファイアウォール
ポリシー
着信 ssl.root、送信元は SSLVPN_TUNNEL_ADDR1 とユーザ、宛先 Internal-RDP、NAT は無効
FortiClientRemote Gateway と Customize port 4433 を指定
確認端末の ppp0 のアドレスとルート、ダッシュボード ›› Network の SSL-VPN、転送トラフィック

ローカルユーザではなく、外部の LDAP サーバ(Active Directory)と連携してユーザ認証を行う場合は、次の記事を参照してください。

>> 参考記事:【Fortigate】SSL-VPNリモート接続(トンネルモード、ActiveDirectory連携、LDAP連携)FortiOS6.2.4

コメント