株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【FortiGate × Passlogic】IKEv2対応 IPsec VPN + Passlogicマトリックス認証で安全なリモートアクセスを構築する

皆さん、こんにちは。
ネットワールドSE  西日本技術部の小川です。

今回は FortiGate の IPsec VPN(IKEv2 Aggressiveモード)と Passlogic の マトリックス認証を組み合わせた構成について、実際の設定例と注意点を交えてご紹介します。

 

 

なぜ IKE v2 ?

IKEv1はプロトコルがUDPに限定され、ホテルやネットカフェ、さらには一部プロバイダ環境では接続がブロックされることがあります。IKEv2では TCP encapsulation が標準で利用可能で、FortiGateではデフォルトで TCP 443番ポートを使用できます。そのため、SSL-VPNと同様に一般的なHTTPSと同じポート番号を使って、場所を選ばず安定したリモートアクセスを提供できます。
しかしながら、IKEv2は最新の暗号化・認証方式を推奨しており、IKEv1で利用されていた XAUTH などの古い認証方式はサポートされません。そのため、従来LDAPやRADIUSを使っていた環境では、設定の見直しが必要になる場合があります。

Passlogic で セキュアなアクセスを!

Passlogic については前回ご紹介とおりです。
Passlogic に EAP‑MSCHAPv2 モジュールを適用することで、Passlogic のマトリックス認証を IKEv2 環境でも利用できます。これにより、Passlogic  と FortiGate の IPsec VPN(IKEv2)を組み合わせた認証構成が可能となり、従来と同じマトリックス認証を VPN 接続時にもそのまま利用できます。

FortiGate + Passlogic による IPsec VPN 基本構成

 

■ 今回検証に使用した機器情報

機器名 バージョン / 備考
FortiGate FortiOS 7.6.4
Passlogic

6.1.0

基盤のOS :  Redhat Linux 9.6

オプションモジュール : eap-mschapv2.tar.gz

クライアント端末 Windows 11 / FortiClient 7.4.3

 

■ 認証フロー(参考)

 

■ EAP-MSCHAPv2 方式(参考)

FortiGate IPsec VPN (IKE バージョン2)設定


■ IKE TCP Port の設定

config system settings
    set ike-tcp-port 443                 # IKE over TCPのポート番号(デフォルト443)
end

■ Passlogic 用の RADIUS 設定

config user radius
    edit "Passlogic-Radius"              # 任意の名前
        set server "192.168.1.253"       # Passlogic 認証サーバのIP
        set secret *****                 # RADIUS シークレットキー
    next
end

■ RADIUS ユーザグループの作成

config user group
    edit "Passlogic-Radius-Group"        # ユーザグループ名
        set member "Passlogic-Radius"    # 作成したRADIUSを指定
    next
end

■ IPsec VPN フェーズ1インタフェースの設定

config vpn ipsec phase1-interface
    edit "ipsec-tunnel"                  # 任意の名前
        set type dynamic                 # 動的ピア
        set interface "port1"            # WAN側インタフェース
        set ike-version 2                # IKEv2を使用
        set peertype any
        set net-device disable
        set mode-cfg enable              # Mode-Cfg有効化
        set ipv4-dns-server1 10.20.1.1   # 社内DNS
        set proposal aes128-sha256 aes256-sha256 aes128gcm-prfsha256 aes256gcm-prfsha384 chacha20poly1305-prfsha256  # 暗号化方式
        set dhgrp 20                     # DHグループ
        set eap enable                   # EAP認証を有効化
        set eap-identity send-request    # EAP-Identity要求を送信
        set authusrgrp "Passlogic-Radius-Group"  # 認証グループ指定
        set transport tcp                # TCPカプセル化(デフォルト443)
        set ipv4-start-ip 192.168.255.1  # IP払い出し開始
        set ipv4-end-ip 192.168.255.254  # IP払い出し終了
        set ipv4-netmask 255.255.255.0   # サブネットマスク
        set ipv4-split-include "subnet_192.168.1.0" # VPN対象サブネット
        set save-password enable
        set client-auto-negotiate enable
        set client-keep-alive enable
        set psksecret *****              # 事前共有キー
    next
end

■ IPsec VPN フェーズ2インタフェースの設定

config vpn ipsec phase2-interface
    edit "ipsec-tunnel-ph2"              # 任意の名前
        set phase1name "ipsec-tunnel"    # フェーズ1インタフェース指定
        set proposal aes128-sha256 aes256-sha256  # 暗号化方式
        set dhgrp 20                     # DHグループ
    next
end

■ ファイアウォールポリシーの作成(VPN用)

config firewall policy
    edit 0
        set name "Remote VPN"            # ポリシー名(任意)
        set srcintf "ipsec-tunnel"       # VPNインタフェース
        set dstintf "port2"              # 社内LANインタフェース
        set action accept                # 通信許可
        set srcaddr "all"                # 送信元アドレス
        set dstaddr "subnet_192.168.1.0" # 宛先アドレス
        set schedule "always"
        set service "ALL"                # 許可するサービス
        set logtraffic all               # ログ出力(任意)
        set nat enable                   # NAT有効(任意)
    next
end

Passlogic 6.1.0 + EAP-MSCHAPv2 設定

Passlogic をオンプレミス環境にて分離構成(ゲートウェイサーバ+認証サーバ)で構築した事例です。
ゲートウェイサーバと認証サーバはすでにインストール済みの環境を前提としており、この記事ではその後の FortiGate との連携手順にフォーカスしています。

Passlogic 構成については前回ご紹介とおりです。

■ 認証サーバにログイン

  • ブラウザで以下のURLにアクセスして、ログインします。

     https://<認証サーバIPアドレス>:8443/passlogic-admin

■ RADIUS クライアントの登録(FortiGate)

  • 管理画面で [RADIUS] → [RADIUS設定] を開きます。
  • [追加] をクリックします。

  • 以下の情報を入力:
    • 識別名(任意)
    • IPアドレス(FortiGate の LAN 側 IP)
    • シークレットキー(FortiGate 側と一致させる)
  • [次へ] をクリックします。

  •  入力内容を確認して、[登録]をクリックします。

■ ユーザーの作成

  • [ユーザー管理] → [新規作成] をクリック
    ※CSV によるユーザー一括登録も可能です

  • ユーザー情報を入力します。

      (例:ユーザーID「passlogic」、ポリシーは「Default Policy」)

  • 下へスクロールして初期パスワードを設定します。
  • [次へ]をクリックします。

  • ユーザー設定内容を確認をして、[登録]をクリックします。

  • [通知書をメール] をクリックし、ユーザーに通知します。

■ Webトークンの有効化

  • [設定] → [ポリシー設定] をクリックします。
  • 「Default Policy」 → [編集] をクリックします。

  • 下へスクロールして、[Web Tokenを使用する際には有効にしてください]にチェックします。

 

■ ユーザーによるパスワード(パターン)変更

  • ユーザーに通知メールが届きます。

 

  • メール内のURL(例:https://<ゲートウェイサーバのFQDN>/ui)にアクセスします。

 

 

初期パスワードを入力

 

3回パスワードを入力

 

完了

■ EAP-MSCHAPv2 モジュールの適用

  • 認証サーバに SSH で接続します。
  • eap-mschapv2.tar.gz /usr/local/src/ にアップロードします。
  • Radiusサービスをストップしてから、./deploy.sh を実行します。
  • Radius サービスを起動します。

[root@ src]# systemctl stop radiusd
[root@ src]# tar zxf eap-mschapv2.tar.gz
[root@ src]#
[root@ src]# ls
PassLogic-ent-6.1.0-el9.tar.gz  eap-md5  eap-md5.tar.gz  eap-mschapv2  eap-mschapv2.tar.gz
[root@ src]# cd eap-mschapv2/
[root@ eap-mschapv2]# ./deploy.sh
The backup file is /etc/raddb/sites-available/default.bak_1765157675 .
The backup file is /etc/raddb/mods-available/eap.bak_1765157675 .
The backup file is /etc/raddb/mods-available/exec.bak_1765157675 .
File /etc/raddb/sites-available/default has been placed.
File /etc/raddb/mods-available/eap has been placed.
File /etc/raddb/mods-available/exec has been placed.
[root@ eap-mschapv2]# systemctl start radiusd

FortiClient の IPsec VPN 接続設定

■ FortiClient のインストール

Fortinet サポートサイトから FortiClient 7.4.3 をダウンロードしてインストールします。

Product Downloads | Fortinet Product Downloads | Support


■ VPN 設定の開始

  • FortiClient を起動します。
  • [VPN設定] をクリックします。

  • [IPsec VPN] を選択し、接続名やゲートウェイ情報を入力します。

  • [+詳細設定] → [VPN設定] を開き、必要な項目を入力します。

  • [フェーズ1] タブを開きます。
  • IKE プロポーザルと DH グループを設定します。
    • FortiGate の IPsec VPN 設定に合わせて選択します。

  • [フェーズ2] タブを開きます。
  • IKE プロポーザルと DH グループを設定します。
    • こちらも FortiGate 側の設定に合わせて選択します。

  • すべての項目を確認後、[保存] をクリックして設定完了です。

 

※FortiEMS を使えば FortiClient の運用が楽になります。詳細については下記のブログを参考にしてください。

blogs.networld.co.jp

 

FortiClient からの接続確認手順

■ Webトークンにアクセス

ユーザーは以下のURLにアクセスして、マトリックス認証を開始します。

https://<ゲートウェイサーバFQDN>/ui/token.php?uid=<ユーザーID> 

■ FortiClient で接続

FortiClient を起動し、以下の情報を入力します。

  • ユーザーID
  • パスワード(マトリックス認証で表示された数字を入力)


■ 接続完了

認証が成功すると、IPsec VPN 接続が確立され、社内ネットワークへのアクセスが可能になります。


この手順により、Passlogic のマトリックス認証と FortiGate の IPsec VPN を組み合わせたセキュアな接続が確認できます。

 

認証ログと接続ステータスの確認手順

■ Passlogic 認証パケットの確認

  • 認証サーバに SSH で接続します。
  • radsniff -x を 実行します。
  • VPN接続時にログが出力されます。

[root@og-passlogic6-1 eap-mschapv2]# radsniff -x
Logging all events
Defaulting to capture on all interfaces
Sniffing on (ens33 lo)
2025-12-08 10:37:53.649998 (4) Access-Challenge Id 58 ens33:192.168.1.254:8499 <
        State = 0xbefff5cdbf97ef35ec3f9080655a8e43
        EAP-Message = 0x016800331a0367002e533d3445383341413938374241313831373337
        Message-Authenticator = 0x818655eeca6e95e9bd7ad853864e894e
        Authenticator-Field = 0x2205cf2c3411d0718d056e88220d6a85
2025-12-08 10:37:53.654655 (5) Access-Request Id 59 ens33:192.168.1.254:8499 ->
        User-Name = "passlogic"
        NAS-IP-Address = 192.168.1.254
        NAS-Port = 1
        Framed-IP-Address = 10.20.20.8
        State = 0xbefff5cdbf97ef35ec3f9080655a8e43
        Called-Station-Id = "192.168.1.254"
        Calling-Station-Id = "10.20.20.8"
        NAS-Identifier = "og-fortigate-vm"
        NAS-Port-Type = Virtual
        Acct-Session-Id = "00000ad40519c00a"
        Connect-Info = "vpn-ikev2"
        EAP-Message = 0x026800061a03
        Message-Authenticator = 0x784d10c9d44434019f12dba598ac96ef
        Fortinet-Vdom-Name = "root"
        Authenticator-Field = 0x31c0d762c981b35cd3c5dac178064f8a
2025-12-08 10:37:53.785184 (6) Access-Accept Id 59 ens33:192.168.1.254:8499 <- 1
        User-Name = "passlogic"
        EAP-Message = 0x03680004
        Message-Authenticator = 0x2d505f6e6ad30eea383551e9c840da5d
        MS-MPPE-Encryption-Policy = Encryption-Allowed
        MS-MPPE-Encryption-Types = RC4-40or128-bit-Allowed
        Attr-26.311.16 = 0x854e6219ee148ceb4d934a23c09e3070293e9f39b4dcf3d984f72
        Attr-26.311.17 = 0x8b75aea363471269d62107d640692ed1608845307a2d87b2feb28
        Authenticator-Field = 0x6c713231a04d47444125eab724b5baeb
2025-12-08 10:37:58.662355 (1) Cleaning up request packet ID 57

■ Passlogic 認証ログの確認

  • 認証サーバに SSH で接続します。
  • vi /var/log/radius/radius.logを 実行します。

[root@ src]# vi /var/log/radius/radius.log
Mon Dec  8 10:36:03 2025 : Auth: (0) Login incorrect (pap_req: Program returned code (1) and output ''): [test01] (from client FortiGate port 0)
Mon Dec  8 10:36:18 2025 : Auth: (1) Login OK: [passlogic] (from client FortiGate port 0)
Mon Dec  8 10:37:53 2025 : Auth: (4) Login OK: [passlogic] (from client FortiGate port 1 cli 10.20.20.8)

■ FortiGate VPN デバックログの確認

  • FortiGate CLI にログインします。
  • diagnose debug application ike-1 を実行します。
  • diagnose debug enable を実行します。
# diagnose debug application ike -1
Debug messages will be on for 30 minutes.

# diagnose debug enable

(省略)

ike V=root:0: comes 10.20.20.8:53821->10.20.112.254:443,ifindex=3,vrf=0,len=80....
ike V=root:0: IKEv2 exchange=AUTH id=9ef7150fd31a60c2/264dac735decdfdf:00000004 len=80
ike 0: in 9EF7150FD31A60C2264DAC735DECDFDF2E2023080000000400000050300000349A13172B087C48C3DC08AE6462DC21AEB40B92E689455854B59F75D5C86FFD23BF0854EF8223231DE11113E3B37FD0D0
ike 0:ipsec-tunnel:10: dec 9EF7150FD31A60C2264DAC735DECDFDF2E202308000000040000002A300000040000000A026700061A03
ike V=root:0:ipsec-tunnel:10: responder received EAP msg
ike V=root:0:ipsec-tunnel:10: send EAP message to FNBAM
ike V=root:0:ipsec-tunnel: EAP 11905734918155 pending
ike V=root:0:ipsec-tunnel:10 EAP 11905734918155 result FNBAM_SUCCESS
ike V=root:0:ipsec-tunnel: EAP succeeded for user "passlogic" group "Passlogic-Radius-Group" 2FA=no
ike V=root:0:ipsec-tunnel:10: responder preparing EAP pass through message
ike 0:ipsec-tunnel:10: enc 00000008036700040706050403020107
ike V=root:0: comes 10.20.20.8:53821->10.20.112.254:443,ifindex=3,vrf=0,len=112....
ike V=root:0: IKEv2 exchange=AUTH id=9ef7150fd31a60c2/264dac735decdfdf:00000005 len=112
ike 0: in 9EF7150FD31A60C2264DAC735DECDFDF2E20230800000005000000702700005496479DD7174CC86B5D42E9C691915CB90D4CFB1EA4DF73C6B5249C82162E5B3B3B9E11CD5A8CD52AA5E7B8197945D6C5A9A7C085868C2D95C6F29860EBBD071E170764A4D8E75538D02B32C8F90FBA8B
ike 0:ipsec-tunnel:10: dec 9EF7150FD31A60C2264DAC735DECDFDF2E2023080000000500000048270000040000002802000000D907C667CA7CCACA32BC07DD4AFD57B29BD99A5392A4D183A1AFEFBD8876A4B8
ike V=root:0:ipsec-tunnel:10: responder received AUTH msg

■ デバッグログの停止

FortiGate デバックログを確認したら、ログの出力を止めます。

diag debug disable

 


最後までご覧いただき、ありがとうございました。
この構成が、より安全で安定したリモートアクセス環境の構築に役立てば幸いです。


免責事項

  • 本書は、株式会社ネットワールド(以下 弊社)が作成・管理します。
  • 本書の記載内容の一部または全部を弊社に無断で改変・転載することを禁じます。
  • 本書の記載内容は、一部または全部が将来予告無く変更されることがあります。
  • 本書の利用は、利用者様の責任において行われるものとします。
  • 本書の記載内容には、最善の注意を払っておりますが、正確性・完全性を保証するものではありません。
    従いまして、本書の利用によって生じたあらゆる損害に関して、弊社は一切の責任を負いません