こんにちは、takiです。
今回は執筆時点(2023/02)での最新版であるFortiOS 7.2.4でのSSL-VPN設定方法について解説します。
ネット上ではFortiGateのSSL-VPN設定について色々と記事が出ており、n番煎じかと思いますが、
自身の勉強が目的なので気にせず書いていきます。
目次
重要
【CVE-2023-27997】
2023/6/15更新
FortiGateのSSL-VPNは2023年6⽉に以下の脆弱性情報が公表されています。
出典:FortiGuard 「FortiOS & FortiProxy - Heap buffer overflow in sslvpn pre-authentication」
出典:IPA 「Fortinet 製 FortiOS および FortiProxy の脆弱性対策について(CVE-2023-27997)」
該当するFortiOSは以下の通りですので、必ず最新のバージョンに上げてからご使⽤いただくことを強く推奨いたします。
- 【影響を受ける製品】
- FortiOS バージョン 7.2.0 から 7.2.4
- FortiOS バージョン 7.0.0 から 7.0.11
- FortiOS バージョン 6.4.0 から 6.4.12
- FortiOS バージョン 6.2.0 から 6.2.13
- FortiOS バージョン 6.0.0 から 6.0.16
- FortiProxy バージョン 7.2.0 から 7.2.3
- FortiProxy バージョン 7.0.0 から 7.0.9
- FortiProxy バージョン 2.0.0 から 2.0.12
- FortiProxy 1.2 系の全てのバージョン
- FortiProxy 1.1 系の全てのバージョン
- FortiOS-6K7K バージョン 7.0.10
- FortiOS-6K7K バージョン 7.0.5
- FortiOS-6K7K バージョン 6.4.12
- FortiOS-6K7K バージョン 6.4.10
- FortiOS-6K7K バージョン 6.4.8
- FortiOS-6K7K バージョン 6.4.6
- FortiOS-6K7K バージョン 6.4.2
- FortiOS-6K7K バージョン 6.2.9 から 6.2.13
- FortiOS-6K7K バージョン 6.2.6 から 6.2.7
- FortiOS-6K7K バージョン 6.2.4
- FortiOS-6K7K バージョン 6.0.12 から 6.0.16
- FortiOS-6K7K バージョン 6.0.10
はじめに
SSL-VPNは下図のようなリモートワーク環境で主に使用される機能です。
今回は上記をイメージして下図のような環境を構築します。
ゴールはWindows端末からSSL-VPN経由でLogStare Collectorのログイン画面にアクセスできることとします。
【Tips!】LogStare Collectorとは、ネットワーク機器やサーバーなどのシステム監視とログ管理、双方の機能を併せ持つセキュリティ運用ソフトウェアです。
LogStare Collectorについて
なお、今回使用する機器は以下の通りです。
- FortiGate-200E v7.2.4 build1396
- Windows 10(リモート端末)
- LogStare Collector
FortiGateへの設定登録
ここでは以下の設定を行います。
1. VPNユーザの登録
2. SSL-VPN設定
3. アドレス設定
4. ポリシー設定
VPNユーザの登録
はじめに、SSL-VPNで接続するためのユーザを作成します。
左のメニューから「ユーザ&認証」>「ユーザ定義」へ移動し、新規作成を押します。
ローカルユーザを選択し「次へ」を押します。
任意のユーザ名とパスワードを入力し「次へ」を押します。
そのまま「次へ」を押します。
※今回は割愛しますが、二要素認証を有効にすることで、ログイン時にトークン認証を使用することが可能です。
最後にそのまま「次へ」を押して完了です。
※今回は割愛しますが、ここでユーザグループも併せて作成することで、グループ単位でのポリシー設定を行うことが可能です。
例)技術部はスプリットトンネル、営業部はフルトンネルなど
SSL-VPN設定
左のメニューより、「VPN」>「SSL-VPN設定」を選択します。
現状はデフォルト設定のため、赤枠で囲った箇所を設定していきます。
- リッスンするインターフェース
- wan1
- リッスンするポート
- 任意(ここでは10443とします)
- サーバ証明書
- 本番環境で設定する場合は正規のサーバ証明書を使用してください。今回はデフォルトの証明書を使用するため、SSL-VPN接続時に警告画面が表示されます。
- HTTPをSSL-VPNにリダイレクト
- 有効にすると、ブラウザでHTTPアクセスした際にSSL-VPNのログイン画面にリダイレクトされます。
- アクセスを制限
- 「特定ホストへアクセス制限」を有効にすることで、SSL-VPNの接続元を特定のIPアドレスや日本の地域といった単位で制限をすることが可能になります。
- アイドルログアウト
- SSL-VPNユーザが設定した時間内に動作がなければ、強制的にSSL-VPN接続を切断します。(最小値:1秒、最大値:259,200秒(72時間))
- クライアント証明書を要求
- 有効にすると、パスワード認証だけでなくクライアント証明書での認証が可能になります。(※使用する際はFortiGateへクライアント証明書に対するルート証明書等のインポートが必要です。)
- アドレス範囲
- デフォルトで払出し可能なIPアドレスは10個のため、必要な個数に応じてカスタイマイズしてください。
- DNSサーバ
- SSL-VPN接続後にActive Directoryなど、接続先のLAN内で使用されるドメインにアクセスする場合は設定が必要です。
- WINSサーバを指定
- WINSサーバを使用する場合は設定して下さい。
認証/ポータルマッピングにて設定されている項目を選択し、「編集」を押します。
ポータルの中から「tunnel-access」を選択し、「OK」を押します。
※ポータルで選択できるデフォルトの設定はそれぞれ以下の通りです。
ポータル | 設定 |
full-access | トンネルモード/Webモードの両方が使用可能 |
tunnel-access | トンネルモードのみ使用可能 |
web-access | Webモードのみ使用可能 |
- トンネルモード
FortiClientを使用した、アクセス方式です。
Web通信だけでなく、メール通信やその他の通信もFortiGateを経由させることが出来ます。
※SSL-VPNはトンネルモードが一般的であるため、今回はこちらを使用します。 - Webモード
SSL-VPNユーザがWebブラウザのみでアクセスする方式です。
通信はWeb通信のみに限られますが、SSL-VPNユーザのPCにFortiClientをインストールする必要が無くなります。
以下のように全ての設定が完了したら、「適用」を押します。
適用ボタンを押すとポリシーの設定を促す注意が出るため、クリックして設定します。
アドレス作成
ファイアーウォールポリシー設定にて、SSL-VPN接続後の宛先が必要になるので、あらかじめ社内LAN用のアドレスを作成します。
メニューより、「ポリシー&オブジェクト」>「アドレス」の新規作成を押します。
以下のように設定し、「OK」を押します。
ファイアーウォールポリシー設定
メニューより、「ポリシー&オブジェクト」>「ファイアーウォールポリシー」に移動し、新規作成を押します。
下図のように赤枠で囲った箇所を設定します。
- 名前
- 任意
- 発信インターフェース
- port1
- 送信元
- all
- VPN-User
- 宛先
- Syanai-LAN
- サービス
- ALL
- NAT
- 無効(※環境に応じて設定してください)
- 【Tips!】FortiGateの送信元NAT/宛先NAT設定について
ロギングオプションで許可トラフィックを「すべてのセッション」に変更します。
【Tips!】FortiGateにてGUIにトラフィックログを表示するための設定方法
上記を設定した後、「OK」を押せばFortiGate側の設定は完了です。
FortiClientのインストール&接続
次にSSL-VPNを利用するユーザ端末の設定を行います。
[FortiClient設定]
FortiClientのダウンロード
SSL-VPN設定で設定したインターフェースのIPアドレスとポート番号にブラウザでアクセスします。
アクセス後、ログイン画面が表示されるのでVPN-Userアカウントでログインします。
ログイン後、「FortiClientをダウンロード」より端末のOSに合ったFortiClientをダウンロードします。
インストール
ダウンロードしたインストーラをクリックして、インストールします。
イメージのダウンロード後、セットアップウィザードが表示されるので下図の通りに押していきます。
接続設定
Windowsのタスクバーより、FortiClientをクリックしコンソールを開きます。
「フリーバージョンのライセンスであるためサポートは限られる」との承諾画面が出るので、「I accept」を押します。
「VPN設定」を押します。
赤枠で囲った箇所を入力し、「保存」を押します。
SSL-VPN設定で登録したアカウントを入力し、「接続」を押します。
デフォルトのサーバ証明書を使用しているため以下のような警告が出ます。
気にせず「はい」を押します。
下のような画面になれば接続が成功です。
コマンドプロンプトでIPアドレスを確認すると、VPN用のアドレスが追加されています。
また、FortiGateの「ログ&レポート」>「システムイベント」よりVPN-Userの接続が張られている事も確認できます。
接続確認
最後にSSL-VPN経由でLogStare Collectorにアクセスできることを確認します。
「ログ&レポート」>「転送トラフィック」より、VPN-Userが「SSL-VPN_to_Syanai」経由でLogStare Collectorへアクセスしたのが分かります。
まとめ
今回SSL-VPNの設定を初めて行いましたが、割と直感的に設定できるのがFortiGateの良い所だなと感じました。
しかしハマった箇所として、SSL-VPNの接続元制限はファイアーウォールポリシーで設定するものと勘違いしていました。
ファイアーウォールポリシーではSSL-VPNに`繋いだ後`の社内などへのアクセス制限を行うだけで、SSL-VPNの接続元制限は大元の「VPN」>「SSL-VPN設定」でのみ設定が可能です。
そのため、「グループやユーザ単位でアクセス元を制限することが出来ない」というのが今回記事を書いたことの収穫かなと思います。(そもそも、そのような設定を行いたいシーンがあるかは不明ですが、、)
SSL-VPNの設定は奥が深いため、今後も検証結果を作成していこうと思います。
参考
FortiGateでリモートアクセス設定 SSL-VPN編(初級者向け)
FortiGate で SSL-VPN 設定をして外部から VPN 接続する方法
Fortigate SSL-VPN 日本のみ許可する
おまけ
スプリットトンネルのアクセス先を制限したい
ファイアーウォールポリシーに以下のように設定し、挙動を確認していきます。
目的はSSL-VPNユーザのgoogle検索宛ての通信は遮断し、セキュアヴェイルのHP宛ての通信は許可するためです。
リモート端末で実際にアクセスしてみると、googleも弊社のHPも両方ともアクセス出来てしまいます。
FortiGateのアクセスログを確認してみると、弊社のHP宛ての通信とDNS通信はログに出ていますが、google検索宛ての通信はログに出ていません。
リモート端末のルーティングテーブルを確認してみると、ファイアーウォールポリシーで許可設定にした、以下3つ宛てのルーティングがあるのが分かります。
- 8.8.8.8
- www.secuavail.com(18.180.167.106)
- Syanai-LAN(192.168.100.0)
しかし、拒否設定にしたgoogle宛てのルーティングに関してはルーティングテーブルに記載が無いため、FortiGateを経由せずにリモート端末のデフォルトルートから出てしまっています。
拒否ポリシーに設定した宛先にリモート端末からアクセスさせないようにするには、「VPN」>「SSL-VPNポータル」にて「ルーティングアドレスの上書き」を設定することで可能になります。
しかし、ここではFQDNが設定出来ないためあまり現実的では無いかもしれません。
(そのような需要があるかは謎ですが、、)
以上、おまけでした。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。