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 です。
- SSL-VPN で使うローカルユーザの作成
- SSL-VPN 設定と、SSL-VPN 用のファイアウォールポリシー
- FortiClient での接続と、端末のアドレス・ルーティング、FortiGate のログでの確認
検証の構成
インターネット側の端末は、FortiClient で FortiGate の port1 に SSL-VPN(トンネルモード)で接続します。接続すると、端末にはトンネル用の IP アドレス(10.212.134.200)が割り当てられ、VPN を通して社内のサーバ(10.0.1.10)に RDP で接続できるようになります。
SSL-VPN のユーザ作成
ローカルユーザを作る
SSL-VPN で使うローカルユーザを作ります。ユーザ&認証 ›› ユーザ定義 を開き、新規作成 をクリックすると、ユーザ作成のウィザード(Users/Groups Creation Wizard)が始まります。4つの画面で、次のように設定します。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1ユーザタイプ | ローカルユーザリモートRADIUSユーザ リモートTACACS+ユーザ リモートLDAPユーザ FSSO FortiNACユーザ |
| 2ユーザ名 | (伏せています) |
| パスワード | •••••••• |
| 二要素認証 | OFF |
| ユーザアカウントステータス | ◉ 有効化済み○ 無効化済み |
| ユーザグループ | OFF |
| No. | 画面 | 設定内容 |
|---|---|---|
| 1 | ユーザタイプ | ローカルユーザ を選び、次へ をクリックします。 |
| 2 | ログインクレデンシャル | ユーザ名とパスワードを入力し、次へ をクリックします。 |
| コンタクト情報 | 何も設定せず、次へ をクリックします。 | |
| エキストラ情報 | 何も設定せず、サブミット をクリックします。今回はユーザグループを使わず、ファイアウォールポリシーにユーザを直接指定します。 |
作成すると、ユーザ定義の一覧に、タイプが ローカル のユーザとして登録されます。
| 名前 | タイプ | 二要素認証 |
|---|---|---|
| guest | ローカル | ✕ |
| 1(伏せています) | ローカル | ✕ |
SSL-VPN の設定
SSL-VPN の受け付けを設定する
VPN ›› SSL-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 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | リッスンするインターフェース | SSL-VPN を受け付けるインターネット側のインターフェースです。今回は、インターネットにつながっている port1 を指定します。 |
| 2 | リッスンするポート | HTTPS の 443 番は管理画面で使っているので、重ならないポート番号にします。今回は 4433 にします。 |
| 3 | アドレス範囲 | SSL-VPN のクライアントに割り当てるアドレスです。既定の 自動的にアドレス割り当て では、10.212.134.200〜10.212.134.210(SSLVPN_TUNNEL_ADDR1)が使われます。カスタムIP範囲を指定 で変えることもできます。 |
| 4 | DNSサーバ | 特定の DNS サーバを指定することもできます。今回は IP アドレスで接続を確認するので、クライアントシステムのDNSと同じ にします。 |
| 5 | 認証/ポータルマッピング | ポータルを tunnel-access にします。VPN ›› SSL-VPNポータル にあらかじめ用意されているポータルで、トンネルモードで接続するように設定されています。 |
設定したら、適用 をクリックします。
ファイアウォールポリシーの設定
接続先のアドレスを作る
ポリシー&オブジェクト ›› アドレス で、社内の RDP の接続先(10.0.1.10)をアドレスオブジェクトとして新規作成します。
| 1名前 | Internal-RDP |
| タイプ | サブネット |
| 2IP/ネットマスク | 10.0.1.10/32 |
| インターフェース | port2 |
SSL-VPN 用のポリシーを作る
ポリシー&オブジェクト ›› ファイアウォールポリシー で、SSL-VPN 用のポリシーを作ります。
| 名前 | 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 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | 着信インターフェース | SSL-VPN のトンネルのインターフェース ssl.root を選びます。 |
| 2 | 発信インターフェース | 社内向けのインターフェース(今回は port2)を選びます。 |
| 3 | 送信元 | SSL-VPN のクライアントに割り当てるアドレス(SSLVPN_TUNNEL_ADDR1)と、STEP 1 で作ったユーザの両方を指定します。+ をクリックし、右側の エントリを選択 の アドレス と ユーザ から選びます。 |
| 4 | 宛先 | 社内のサーバとして作った Internal-RDP を選びます。 |
| 5 | サービス | 今回はテストなので ALL にします。 |
| 6 | NAT | 無効にします。サーバには、VPN クライアントのトンネル IP のまま届きます。 |
| 7 | 許可トラフィックをログ | すべてのセッション にします。 |
端末側の設定
FortiClient に接続先を登録する
端末に FortiClient をインストールします。FortiClient は https://www.forticlient.com/downloads からダウンロードできます(Windows、Mac、モバイルなどに対応しています。今回は Mac で確認しました)。FortiClient で VPN の接続先を次のように登録し、Save をクリックします。
| VPN | ◉ SSL-VPN○ IPsec VPN○ XML |
| 1Connection Name | SSL-VPN |
| 2Remote Gateway | (伏せています) |
| 3Customize port | ☑ 4433 |
| Client Certificate | None |
| Authentication | ◉ Prompt on login○ Save login |
| 4Do not Warn Invalid Server Certificate | ☑ |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | Connection Name | 任意の名前です。今回は SSL-VPN にします。 |
| 2 | Remote Gateway | FortiGate で SSL-VPN を受け付けるグローバルアドレスです。 |
| 3 | Customize port | FortiGate の リッスンするポート と同じ 4433 にします。 |
| 4 | Do not Warn Invalid Server Certificate | チェックを入れます。今回の FortiGate はサーバ証明書が既定の自己署名証明書(self-sign)なので、検証用として警告を出さないようにしています。 |
Do not Warn Invalid Server Certificate を有効にすると、信頼できないサーバにも警告なしで接続してしまいます。本番では、FortiGate に正規のサーバ証明書を入れ、このチェックは外して使うことをおすすめします。
動作確認
FortiClient で接続する
登録した SSL-VPN を選び、ユーザ名とパスワードを入力して Connect をクリックします。しばらくすると、SSL-VPN がつながったことを確認できます。
Password:••••••••
Connect
Username:(伏せています)
Duration:00:00:33
Bytes Received:256.99 KB / Bytes Sent:52.02 KB
端末のアドレスとルーティングを確認する
端末の 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 ではスプリットトンネルが有効になっていて、ポリシーの宛先のアドレスが端末にルートとして渡されています。
RDP で接続し、FortiGate で確認する
VPN を通して、10.0.1.10 に RDP で接続できました。FortiGate の ダッシュボード ›› Network の SSL-VPN を見ると、作ったユーザで接続していることを確認できます。
| ユーザ名 | 最後のログオン | リモートホスト |
|---|---|---|
| 1(伏せています) | 2020/10/04 15:28:57 | (伏せています) |
ログ&レポート ›› 転送トラフィック では、ユーザがトンネル IP(10.212.134.200)から 10.0.1.10 に RDP で接続し、ポリシー SSL-VPN で許可されていることを確認できます。
| 日付/時刻 | 送信元 | 宛先 | サービス | 結果 | ポリシーID |
|---|---|---|---|---|---|
| 2020/10/04 16:09:20 | 1(伏せています) (10.212.134.200) | 10.0.1.10 | RDP | ✓ 398.28 kB / 914.09 kB | SSL-VPN (3) |
| 2020/10/04 16:07:20 | (伏せています) (10.212.134.200) | 10.0.1.10 | RDP | ✓ 230.07 kB / 461.49 kB | SSL-VPN (3) |
| 2020/10/04 16:05:19 | (伏せています) (10.212.134.200) | 10.0.1.10 | RDP | ✓ 220.15 kB / 451.28 kB | SSL-VPN (3) |
| ⋮(以下略) | |||||
まとめ
| 設定 | 内容 |
|---|---|
| ユーザ | ユーザ&認証 ›› ユーザ定義 のウィザードでローカルユーザを作成 |
| SSL-VPN 設定 | リッスンするインターフェース port1、ポート 4433、アドレス範囲は自動(10.212.134.200〜210)、ポータル tunnel-access |
| ファイアウォール ポリシー | 着信 ssl.root、送信元は SSLVPN_TUNNEL_ADDR1 とユーザ、宛先 Internal-RDP、NAT は無効 |
| FortiClient | Remote Gateway と Customize port 4433 を指定 |
| 確認 | 端末の ppp0 のアドレスとルート、ダッシュボード ›› Network の SSL-VPN、転送トラフィック |
ローカルユーザではなく、外部の LDAP サーバ(Active Directory)と連携してユーザ認証を行う場合は、次の記事を参照してください。
>> 参考記事:【Fortigate】SSL-VPNリモート接続(トンネルモード、ActiveDirectory連携、LDAP連携)FortiOS6.2.4
コメント