FortiGate SSL-VPN 廃止と IPsec VPN(TCP/443)への移行手順

  • URLをコピーしました!
目次

はじめに

テレワークが定着した現在、社外からオフィスへ安全に接続するためのリモートアクセス VPN は業務継続に欠かせないインフラです。その中でも、Web ブラウザだけで手軽に導入できる SSL-VPN は長らく主流でしたが、状況が大きく変化しています。

具体的には、Fortinet は FortiOS 7.6.3(2025 年リリース)をもって、全機種で SSL-VPN のトンネルモード機能そのものを GUI/CLI から完全に削除しました。さらに、2GB RAM 以下のエントリーモデルや G シリーズについては、それ以前のバージョンから段階的に SSL-VPN 機能が削除されてきています。

参考: SSL VPN tunnel mode replaced with IPsec VPN(FortiOS 7.6.6 Release Notes)
“Starting in FortiOS 7.6.3, the SSL VPN tunnel mode feature is replaced with IPsec VPN, which can be configured to use TCP port 443. SSL VPN tunnel mode is no longer available in the GUI and CLI. Settings will not be upgraded from previous versions. This applies to all FortiGate models.”
(FortiOS 7.6.3 以降、SSL-VPN トンネルモードは IPsec VPN に置き換えられます。IPsec VPN は TCP/443 で構成可能です。SSL-VPN トンネルモードは GUI/CLI のいずれからも利用できません。以前のバージョンの設定は引き継がれず、これはすべての FortiGate モデルに適用されます。)
https://docs.fortinet.com/document/fortigate/7.6.6/fortios-release-notes/173430/ssl-vpn-tunnel-mode-replaced-with-ipsec-vpn

つまり、SSL-VPN は「リスクが高いから IPsec を推奨する」という段階を超えて、「製品からそもそも消える」フェーズに入っています。本記事では、この前提を踏まえたうえで、SSL-VPN を取り巻く現状の整理、まだ SSL-VPN を運用している環境向けの暫定設定、そして移行先となる IPsec VPN over TCP/443 ダイアルアップ の構築手順までを解説します。

この記事でわかること
  • FortiOS のバージョン別 SSL-VPN サポート状況(マトリクス)
  • SSL-VPN が廃止された背景(CVE 事例と Fortinet の方針)
  • SSL-VPN/IPsec VPN/ZTNA の選定マトリクス
  • SSL-VPN(トンネルモード)の暫定 CLI 設定手順(FortiOS 7.6.2 以前)
  • IPsec VPN over TCP/443 ダイアルアップへの移行 CLI 手順(推奨構成)
  • 移行時のトラブルシューティングコマンド集

FortiOS バージョンごとの SSL-VPN サポート状況

SSL-VPN の機能削除は、FortiOS のバージョンと機種の組み合わせによって段階的に進められてきました。ご利用中の環境がどの段階にあるかを以下の表で確認してください。

FortiOS バージョンSSL-VPN トンネルモードSSL-VPN Web モード対象機種
7.4.7 以前利用可能利用可能全機種
7.4.8 以降削除削除G シリーズエントリー機(50G/70G/90G 等)
7.6.0 〜 7.6.2削除削除2GB RAM 以下の機種(40F/60F/61F 等)
7.6.0 〜 7.6.2利用可能利用可能上記以外の機種
7.6.3 以降全機種で削除Agentless VPN として一部機種で存続全機種
8.0.x削除Agentless VPN として 19″ モデルで存続全機種

参考: Agentless VPN not supported on FortiGate 40F, 60F, and 90G series models(FortiOS 7.6.3 Release Notes)
“On the following FortiGate models, the Agentless VPN (formerly SSL VPN web mode) feature is no longer available from the GUI or CLI. Settings will not be upgraded from previous versions.”
(以下の FortiGate モデルでは、Agentless VPN(旧 SSL-VPN Web モード)機能は GUI/CLI から利用できなくなりました。以前のバージョンの設定は引き継がれません。)
https://docs.fortinet.com/document/fortigate/7.6.3/fortios-release-notes/877104/agentless-vpn-formerly-ssl-vpn-web-mode-not-supported-on-fortigate-40f-60f-and-90g-series-models

自機の RAM 容量を確認する方法

ご利用の機種が 2GB RAM 制約に該当するかは、以下のコマンドで確認できます。

diagnose hardware sysinfo conserve

出力された total ram の値が 2000 MB 未満であれば、2GB RAM 制約の対象機種です。

バージョン運用上の注意点

FortiOS 7.4.8 以降では、ライセンス無効や EOES 到達を条件に同一マイナーバージョン内の最新パッチへ自動でアップグレードされる仕様が追加されています。SSL-VPN を運用したまま意図せず 7.6.3 以降へアップグレードされると、リモートアクセスが完全に停止します。仕様の詳細と回避手順については、関連記事『FortiGate 強制アップグレード(自動アップグレード)の仕様と回避対策』を参照してください。また、FortiOS 7.4 のサポート期間延長と SSL-VPN 廃止の動きをあわせて把握したい場合は、関連記事『FortiOS 7.4 サポート延長の背景と SSL-VPN 廃止に伴う移行の現実』も参考になります。

SSL-VPN が IPsec VPN に置き換えられた背景

Fortinet が SSL-VPN を製品から削除する方針を取った背景には、長年にわたる SSL-VPN 関連脆弱性の累積があります。

過去に攻撃の標的となった主な SSL-VPN 脆弱性

FortiOS の SSL-VPN は、機能の複雑さに起因する脆弱性が繰り返し報告されてきました。代表的なものとして、CVE-2022-42475(heap overflow、CVSS 9.8)、CVE-2023-27997(heap overflow、CVSS 9.8)、CVE-2024-21762(out-of-bounds write、CVSS 9.6)などがあり、いずれも CISA KEV(Known Exploited Vulnerabilities)カタログに収録され、実際に攻撃に悪用された経緯があります。

これらの脆弱性の多くは、SSL-VPN の Web モード(FortiGate が HTML を書き換えてプロキシする機能)や、TLS 接続を処理する SSL-VPN デーモン自体に起因しています。インターネットに常時公開されるサービスであること と、処理が複雑であること が組み合わさり、攻撃面として狙われやすい構造でした。

Fortinet の対応: 段階的な機能削除

Fortinet は脆弱性パッチを提供し続けるだけでなく、より根本的な対策として「機能そのものを削除する」方向へ舵を切りました。具体的には、リソースが限られるエントリーモデルから段階的に削除を進め、最終的に FortiOS 7.6.3 で全機種のトンネルモードを廃止しています。

参考: Fortinet による SSL-VPN 廃止アナウンス(CybersecurityNews)
“By completely removing this feature, Fortinet is helping to steer the community to a safer online experience. A hacker or bad actor cannot exploit something that no longer exists.”
(この機能を完全に削除することで、Fortinet はより安全なオンライン環境へとコミュニティを導いています。攻撃者は、もはや存在しないものを悪用することはできません。)
https://cybersecuritynews.com/fortinet-ends-ssl-vpn-support/

移行先となる選択肢

SSL-VPN の代替として、Fortinet は以下の 3 つの方向性を提示しています。

IPsec VPN(推奨)

標準ベースのトンネルプロトコル。FortiOS 7.4.2 以降では、ESP パケットを TCP/443 内にカプセル化できるため、UDP がブロックされる環境にも対応可能

Agentless VPN(旧 SSL-VPN Web モード)

ブラウザ経由のクライアントレス接続。FortiOS 8.0 でも一部機種で存続していますが、対応機種は段階的に縮小しています。

ZTNA(Zero Trust Network Access)

TLS ベースの新しいリモートアクセス方式。端末のポスチャチェックと組み合わせ、より粒度の細かいアクセス制御が可能

本記事では、ほとんどの企業ユーザーにとって現実的な移行先となる IPsec VPN(TCP/443 ダイアルアップ) に焦点を当てます。

リモートアクセス VPN の選定マトリクス

SSL-VPN 廃止に伴い、現実的な代替手段は複数あります。それぞれの特性を整理します。

比較軸SSL-VPN(トンネル)IPsec VPN(UDP)IPsec VPN(TCP/443)Agentless VPNZTNA
FortiOS 7.6.3 以降× 廃止△ 機種限定
クライアントソフトFortiClientFortiClient/OS 標準FortiClient 7.4.1+不要(ブラウザ)FortiClient/ブラウザ
通信プロトコルTCP(任意ポート)UDP/500、UDP/4500TCP/443TCP/443TCP/443
CG-NAT・制限環境× ブロック多発
NP オフロード×○ 高速× CPU 処理××
MFA/SAML 連携
推奨用途(新規構築不可)拠点間・高速ダイアルアップUDP がブロックされる環境のダイアルアップクライアント導入が困難な端末端末ポスチャ重視

選定のポイント

拠点間 VPN(Site-to-Site)の構築・既存環境の引き継ぎ については、IPsec VPN(UDP)が最も標準的かつ高性能です。詳しい構築手順は、関連記事『FortiGate IPsec VPN の構築手順|IKEv2 と NAT 越えの設定例』で解説しています。

SSL-VPN からのリモートアクセス移行 には、本記事で扱う IPsec VPN over TCP/443 ダイアルアップ が最も自然な移行先です。SSL-VPN と同じ TCP/443 を使うため、ホテル Wi-Fi や社外プロキシ環境など、利用者側のネットワーク要件への影響を最小化できます。

クライアントソフトを配布できない端末 については Agentless VPN が選択肢になりますが、対応機種が限定されているため将来性は限定的です。ゼロトラスト方針を採用する場合 は、ZTNA への直接移行も検討の余地があります。

なお、IPsec VPN over TCP は NP オフロードが効かず、純粋な ESP/UDP 方式と比較すると CPU 負荷が高くなります。UDP/500、UDP/4500 が利用可能な環境では、通常の IPsec VPN(UDP)の方が高スループットを得られます。

参考: Dialup IPsec VPN using custom TCP port(FortiOS 8.0 Administration Guide)
“Because there is no NP offloading for the RFC compliant version of IPsec over TCP, its performance is lower than standard ESP and ESP over UDP, which fully utilizes NP offloading to accelerate the performance.”
(RFC 準拠の IPsec over TCP には NP オフロードが適用されないため、NP オフロードを活用できる標準 ESP および ESP over UDP と比較すると、性能は低くなります。)
https://docs.fortinet.com/document/fortigate/8.0.0/administration-guide/567401/dialup-ipsec-vpn-using-custom-tcp-port

SSL-VPN(トンネルモード)を運用する場合の CLI 設定

FortiOS 7.6.3 以降ではこの設定自体が不可能です。FortiOS 7.6.2 以前、または 7.4 系の対応機種を運用中で、IPsec への移行までの暫定運用が必要なケース のために CLI 設定例を示します。新規構築では次のセクションで解説する IPsec VPN over TCP/443 の採用を推奨します。

設定の前提パラメーター

  • WAN(port1): インターネット側(グローバル IP を持つ)
  • LAN(port2): 社内ネットワーク側(例: 192.168.1.0/24)
  • 待ち受けポート: 10443(デフォルトの 443 はスキャン対象となりやすいため変更を推奨)
  • トンネル用 IP プール: 10.212.134.10 – 10.212.134.20
  • 認証: ローカルユーザー認証
事前準備

アドレスオブジェクトの作成

後続のコマンドで参照するアドレスオブジェクトを事前に作成します。

config firewall address
    edit "LAN-Subnet"
        set subnet 192.168.1.0 255.255.255.0
    next
end

config firewall address
    edit "SSLVPN_TUNNEL_ADDR1"
        set type iprange
        set start-ip 10.212.134.10
        set end-ip 10.212.134.20
    next
end
STEP

VPN 接続用ユーザーとグループの作成

VPN 接続に使用するユーザーアカウントを作成し、グループに所属させます。

config user local
    edit "vpnuser01"
        set type password
        set passwd "Password123!"
    next
end

config user group
    edit "G-SSLVPN"
        set member "vpnuser01"
    next
end
STEP

SSL-VPN ポータルの設定

脆弱性の温床となりやすい Web モードを無効化し、トンネルモードのみを許可します。スプリットトンネルを有効化することで、社内宛て通信のみを VPN に流し、インターネット通信は VPN を経由させない構成とします。

config vpn ssl web portal
    edit "Tunnel-Portal"
        set tunnel-mode enable
        set web-mode disable
        set ip-pools "SSLVPN_TUNNEL_ADDR1"
        set split-tunneling enable
        set split-tunneling-routing-address "LAN-Subnet"
    next
end
STEP

SSL-VPN 基本設定(インターフェースとポート)

デフォルトの 443 はスキャン対象になりやすいため、10443 など推測されにくいポートへの変更を推奨します。

config vpn ssl settings
    set source-interface "port1"
    set source-address "all"
    set port 10443
    set servercert "Fortinet_Factory"
    set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
    set default-portal "Tunnel-Portal"
    config authentication-rule
        edit 1
            set groups "G-SSLVPN"
            set portal "Tunnel-Portal"
        next
    end
end

参考: FortiOS 7.6 – Configuring the SSL VPN tunnel(FortiGate 7.6.0 Administration Guide)
https://docs.fortinet.com/document/fortigate/7.6.0/administration-guide/192684/configuring-the-ssl-vpn-tunnel

証明書エラーへの対応: 上記設定で使用している Fortinet_Factory は FortiGate が自己発行する証明書のため、接続時に証明書警告が表示されます。本番運用では公的認証局から発行された証明書のインポートを推奨します。

STEP

ファイアウォールポリシーの作成

SSL-VPN 接続は仮想インターフェース ssl.root からの通信として扱われます。

config firewall policy
    edit 1
        set name "SSLVPN-to-LAN"
        set srcintf "ssl.root"
        set dstintf "port2"
        set srcaddr "all"
        set dstaddr "LAN-Subnet"
        set action accept
        set schedule "always"
        set service "ALL"
        set groups "G-SSLVPN"
        set nat enable
    next
end
STEP

動作確認

FortiClient で「VPN タイプ: SSL-VPN/リモート GW: FortiGate のグローバル IP/カスタムポート: 10443」を設定して接続します。接続成功後、FortiGate 側で以下のコマンドにより接続ユーザーを確認できます。

get vpn ssl monitor

出力例

SSL-VPN Login Users:
 Index   User      Source IP      Duration   I/O Bytes   Tunnel/Dest IP
 0       vpnuser01 203.0.113.5    60         1000/2000   10.212.134.10

ユーザー名と割り当てられた IP が表示されていれば、正常に動作しています。

IPsec VPN(TCP/443 ダイアルアップ)への移行手順 CLI【推奨構成】

SSL-VPN からの移行先として最も自然な構成、IPsec VPN over TCP/443 ダイアルアップ の CLI 設定手順を解説します。SSL-VPN と同じ TCP/443 を使うため、エンドユーザー側のネットワーク要件を大きく変えずに移行できる点がメリットです。

構成と設定値

  • WAN(port1): インターネット側(グローバル IP を持つ)
  • LAN(port2): 社内ネットワーク側(192.168.1.0/24)
  • IPsec 受け入れポート: TCP/443
  • ダイアルアップユーザーへの割り当て IP プール: 10.212.134.10 – 10.212.134.20
  • 認証: ローカルユーザー+ EAP
  • IKE バージョン: IKEv2
  • 暗号化: AES-256-GCM、SHA-384、DH Group 19/20
事前準備

GUI 管理ポートとの衝突を回避する

これが最大のハマりポイントです。FortiGate の GUI 管理アクセスはデフォルトで TCP/443 を使用しているため、IPsec で TCP/443 を使うと衝突します。IPsec の設定を投入する前に、GUI 管理ポートを変更しておきます。

config system global
    set admin-sport 8443
end

設定変更後の GUI アクセス先は https://<FortiGate のグローバル IP>:8443 になります。コンソールや SSH が使える状態で実施することを推奨します。

参考: Dialup IPsec VPN using custom TCP port(FortiOS 8.0 Administration Guide)
“When using TCP port 443 for IKE/IPsec traffic, GUI access can be affected for interfaces that are bound to an IPsec tunnel when the GUI admin port is also using port 443. To ensure continued functionality, change either the IKE/IPsec port or the administrative access port.”
(TCP/443 を IKE/IPsec トラフィックに使用する場合、GUI 管理ポートが同じく 443 を使用していると、IPsec トンネルにバインドされたインターフェースでの GUI アクセスに影響が出ます。継続的に利用できるようにするため、IKE/IPsec ポートまたは管理アクセスポートのいずれかを変更します。)
https://docs.fortinet.com/document/fortigate/8.0.0/administration-guide/567401/dialup-ipsec-vpn-using-custom-tcp-port

STEP

認証用ユーザーとグループの作成

config user local
    edit "vpnuser01"
        set type password
        set passwd "Password123!"
    next
end

config user group
    edit "G-IPSEC"
        set member "vpnuser01"
    next
end
STEP

システム全体での IPsec over TCP 機能の有効化

TCP トランスポートを使う前提として、システム全体で IKE の TCP 受け入れを有効化します。

config system settings
    set ike-tcp-service enable
    set ike-tcp-port 443
end
STEP

Phase 1(IKEv2 + EAP + TCP トランスポート)の設定

config vpn ipsec phase1-interface
    edit "DIALUP-TCP443"
        set type dynamic
        set interface "port1"
        set ike-version 2
        set peertype any
        set net-device disable
        set mode-cfg enable
        set proposal aes256gcm-prfsha384 aes256-sha384
        set dhgrp 20 19
        set eap enable
        set eap-identity send-request
        set authusrgrp "G-IPSEC"
        set transport tcp
        set ipv4-start-ip 10.212.134.10
        set ipv4-end-ip 10.212.134.20
        set ipv4-netmask 255.255.255.0
        set ipv4-dns-server1 8.8.8.8
        set save-password enable
        set client-auto-negotiate enable
        set client-keep-alive enable
        set psksecret <16文字以上のランダム文字列>
    next
end

各設定値の意味:

パラメーター意味
typedynamicクライアント側の IP が動的なため、待ち受け型として設定
ike-version2IKEv2 を明示指定(FortiOS のデフォルトは IKEv1)
mode-cfgenableFortiClient へ IP・DNS を払い出す Mode Config 機能
eapenableユーザー認証に EAP を使用
transporttcpTCP トランスポートを有効化(FortiOS 7.4.2 以降で対応)
proposalaes256gcm-prfsha384Phase 1 暗号化提案(AES-GCM-256 は AEAD で性能・安全性ともに優位)
dhgrp20 19DH グループ(ECP 384/256、強度の高い順)

参考: Dialup IPsec VPN using custom TCP port(FortiOS 7.6.6 Administration Guide)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/567401/dialup-ipsec-vpn-using-custom-tcp-port

STEP

Phase 2 の設定

config vpn ipsec phase2-interface
    edit "DIALUP-TCP443"
        set phase1name "DIALUP-TCP443"
        set proposal aes256gcm aes256-sha384
        set src-subnet 192.168.1.0 255.255.255.0
        set dst-subnet 0.0.0.0 0.0.0.0
    next
end
STEP

ファイアウォールポリシーの作成と MSS clamping

IPsec ダイアルアップトンネルから社内 LAN への通信を許可します。IPsec over TCP では TCP-in-TCP のカプセル化が発生するため、MSS clamping の設定もあわせて投入します。

config firewall policy
    edit 10
        set name "IPSEC-DIALUP-to-LAN"
        set srcintf "DIALUP-TCP443"
        set dstintf "port2"
        set srcaddr "all"
        set dstaddr "LAN-Subnet"
        set action accept
        set schedule "always"
        set service "ALL"
        set groups "G-IPSEC"
        set tcp-mss-sender 1360
        set tcp-mss-receiver 1360
    next
end

参考: Technical Tip: Dial-up VPN IPsec over TCP best practices(Fortinet Community)
https://community.fortinet.com/t5/FortiGate/Technical-Tip-Dial-up-VPN-IPsec-over-TCP-best-practices/ta-p/398245

STEP

FortiClient 側の設定

FortiClient(バージョン 7.4.1 以降が必要)でダイアルアップ接続を作成します。

  • VPN タイプ: IPsec VPN
  • リモートゲートウェイ: FortiGate のグローバル IP
  • 認証方式: Pre-shared Key + EAP(XAUTH)
  • カスタムポート: TCP/443 を指定
  • IKE バージョン: v2
STEP

動作確認

接続成功後、FortiGate 側で以下のコマンドにより接続状態を確認します。

diagnose vpn ike gateway list

出力の中で transport: TCPstatus: established が表示されていれば、TCP トランスポートで Phase 1 が確立しています。


トラブルシューティングコマンド集

SSL-VPN/IPsec VPN いずれの構成においても、接続トラブル時に活用できる診断コマンドをまとめます。

SSL-VPN 用コマンド

# 接続中のユーザー一覧
get vpn ssl monitor

# SSL-VPN 関連の詳細状態
diagnose vpn ssl list

# SSL-VPN デーモンのデバッグ(接続失敗時に有効)
diagnose debug application sslvpn -1
diagnose debug console timestamp enable
diagnose debug enable

# デバッグ停止
diagnose debug disable
diagnose debug reset

IPsec VPN 用コマンド

# IKE Gateway(Phase 1)の状態確認
diagnose vpn ike gateway list

# IPsec SA(Phase 2)の状態確認
diagnose vpn tunnel list

# IKE デバッグログの取得
diagnose vpn ike log filter name <tunnel-name>
diagnose debug app ike -1
diagnose debug console timestamp enable
diagnose debug enable

# デバッグ停止
diagnose debug disable
diagnose vpn ike log filter clear

# トンネルの再ネゴシエーション
diagnose vpn ike gateway clear name <tunnel-name>

ログ出力で no proposal chosen が表示される場合は Phase 1 の暗号化アルゴリズムが両端で一致していません。peer SA proposal not match local policy の場合は暗号化方式や DH グループの差異を確認します。IPsec のネゴシエーション失敗パターンの詳しい読み解き方については、関連記事『FortiGate IPsec VPN の構築手順|IKEv2 と NAT 越えの設定例』を参照してください。

パケットキャプチャ(TCP/443 通信の確認)

IPsec over TCP が正しく動作しているかをパケットレベルで確認したい場合は、以下のスニファコマンドが有効です。

diagnose sniffer packet port1 "tcp port 443" 4 0 l

HA 構成での注意点

HA(FGCP)構成で IPsec VPN を運用している場合、IPsec の SA は HA 間で同期されるため、フェイルオーバー後も再ネゴシエーションなしで通信を継続できます。ただし、対向機器の DPD 設定が短すぎると、フェイルオーバー直後に DPD タイムアウトと判定されトンネルが切断されることがあります。HA 環境の詳しい構築手順や注意点は、関連記事『FortiGate HA(FGCP)構成の構築手順』を参照してください。

まとめ

本記事では、FortiGate の SSL-VPN が廃止フェーズに入った背景と、移行先となる IPsec VPN over TCP/443 ダイアルアップの構築手順を解説しました。

  • FortiOS 7.6.3 以降、SSL-VPN トンネルモードは全機種で完全に削除された
  • 2GB RAM 以下の機種や G シリーズエントリー機では、それ以前のバージョンから段階的に削除されている
  • SSL-VPN を運用したまま 7.6.3 へアップグレードされると、リモートアクセスが完全に停止する
  • 移行先としては、ネットワーク要件を変えずに済む IPsec VPN over TCP/443 ダイアルアップが現実的な選択肢
  • 設定前に GUI 管理ポート(admin-sport)を 443 以外へ変更しておくことが重要
  • 接続トラブル時は diagnose vpn ike gateway listdiagnose vpn tunnel list で Phase 1/Phase 2 の状態を切り分ける

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次