【FortiGate】CLIで構築するIPsecリモートアクセスVPN

こんにちは!いつもご覧いただき、ありがとうございます。

皆さんの周りでは、在宅勤務はどのくらい浸透していますか。

近年、在宅勤務の普及に伴いVPNの重要性が高まり、SSL‑VPNの脆弱性対策や運用見直しの動きから、IPsecによるリモートアクセスVPNを採用するケースが増えてきています。

本記事ではFortiOS 7.6.6環境において、FortiClientVPNを利用したIPsecリモートアクセスVPNをCLIベースで構築する手順を紹介します。使用する機器はFortiGate80Fです。

SSL-VPNとIPsec VPNってなに?

『何が違うの?』と思われる方も多いのではないでしょうか。

まずは両者の違いを簡単に見てみましょう。

項目SSL-VPNIPsecVPN
使用プロトコルSSL/TLS(HTTPS)IPsec(ESP / AH)+ IKE
動作層アプリケーション層(L7)ネットワーク層(L3)
接続方式ブラウザ or 軽量クライアント専用VPNクライアント
通信の守り方セッション単位で暗号化IPパケット全体を暗号化
主なポートTCP 443(HTTPS)UDP 500(IKE)/ UDP 4500(NAT-T)
NAT越えしやすい設定が必要(NAT-T)
接続範囲必要なアプリのみネットワーク全体
セキュリティ高い(TLS依存)非常に高い(全体保護)
パフォーマンスやや低め高速・安定


IPsec VPNは、もともと拠点間接続で広く利用されてきた技術で、ネットワーク同士をまとめて接続する用途に適しています。一方、SSL-VPNはユーザー単位でのリモートアクセスを実現しやすく、在宅勤務などで広く利用されてきました。

通信面では、SSL-VPNは安定して利用できますが、利用状況や回線の混雑状況によってはファイル転送に時間がかかることがあります。皆さんもリモートアクセス中にファイル転送の遅さを感じた経験があるのではないでしょうか。
一方、IPsec VPNは通信効率が高く、リアルタイム性が求められる用途でも快適に利用できる傾向があります。

それぞれの特徴を理解するとともに、近年はZTNAへの移行が進んでいることも踏まえ、適切な接続方式を選択することが重要です。

概要

目標

FortiClientを使用してVPN接続し、社内サーバにブラウザアクセスできること

環境

・FortiOS 7.6.6

・FortiClientVPN 7.4.3 

設定してみた

①ユーザ作成

config user local
    edit VPNuser
        set type password
        set passwd VPNuser
    next
end

※パスワードについては複雑なものに変更しましょう。

②グループ作成&ユーザ追加

config user group
    edit RemoteGroup
        set member VPNuser
    next
end

③アドレス設定

config system interface
    edit wan1
        set ip 10.10.10.2/24
    next
    edit internal1
        set ip 172.16.1.3/24
    next
end

④社内ネットワーク定義

config firewall address
    edit shanai-nw
        set subnet 172.16.1.0 255.255.255.0
        set associated-interface "internal1"
    next
end

ポイント

タイプはサブネットで作成しないとスプリットトンネルが有効とならないので注意

https://community.fortinet.com/fortigate-3/technical-tip-enable-split-tunnel-for-ipsec-vpn-94643

⑤VPNで払い出すIPアドレスの定義

config firewall address
    edit "39iprange"
        set type iprange
        set start-ip 192.168.39.1
        set end-ip 192.168.39.20
    next
end

ポイント

VPNクライアントへ払い出すIPアドレス帯として 192.168.39.1~192.168.39.20 を使用します。

以降はわかりやすく39アドレスと呼びます。

⑥IPsecVPN フェーズ1設定

config vpn ipsec phase1-interface
    edit "IPsecVPN"
        set type dynamic
        set interface "wan1"
        set ike-version 2
        set peertype any
        set net-device disable
        set mode-cfg enable
        set proposal aes128-sha256 aes256-sha256
        set dpd on-idle
        set dhgrp 20 14
        set eap enable
        set eap-identity send-request
        set wizard-type dialup-forticlient
        set transport udp
        set authusrgrp "RemoteGroup"
        set ipv4-start-ip 192.168.39.1
        set ipv4-end-ip 192.168.39.20
        set dns-mode auto
        set ipv4-split-include "shanai-nw"
        set save-password enable
        set psksecret 12345678
    next
end

ポイント

psksecret は事前共有鍵です、複雑なものに変更しましょう。

⑦フェーズ2設定

config vpn ipsec phase2-interface
    edit "IPsecVPN"
        set phase1name "IPsecVPN"
        set proposal aes128-sha256 aes256-sha256
        set dhgrp 20 14
        set dst-addr-type range
        set src-subnet 172.16.1.0 255.255.255.0
        set dst-start-ip 192.168.39.1
        set dst-end-ip 192.168.39.20
    next
end

ポイント

フェーズ2の設定をしないと、社内ネットワークに接続できないので注意

⑧ファイアウォール設定

config firewall policy
    edit *
        set name "IPsecVPN_to_shanai-nw_allow"
        set srcintf "IPsecVPN"
        set dstintf "internal1"
        set action accept
        set srcaddr "39iprange"
        set dstaddr "shanai-nw"
        set schedule "always"
        set service "ALL"
        set nat enable
        set groups "RemoteGroup"
    next
end

ポイント

※edit *の*については既に作成されているファイアウォールポリシーに被らないよう適切な数字に変更してください。



⑨FortiClientVPNの設定

FortiClientVPNを起動して、新規VPN接続を設定します。

設定は⑥、⑦で設定したサーバー側の内容に合わせる必要があります。

項目推奨値備考
IKEバージョンバージョン2FortiClientのバージョンが古いとv2が選べないため注意。
Address AssignmentモードコンフィグFortigateがVPNクライアントに割り当てるIPのこと。
EncapsulationIKE UDP Port 500
AUTO (UDP fallback TCP)
①「IKE UDP Port 500」IPsec通信の基本。UDPなので速い。
②「IPSec over TCP」TCPなので確実性重視。
③「Auto(UDP fallback TCP)」基本は①でダメなら②。
IKEプロポーザルAES128-SHA256
AES256-SHA256
DES,3DESとSHA1は非推奨。Fortigate側のフェーズ1設定と同じにする必要がある。
DHグループ14,20数値が高くなるほど高セキュリティだが、重くなる。19か20推奨。
複数選択可能なのは、ネゴシエーションの幅を持たせるため。
鍵の有効期間86400秒鍵を使いまわさないための寿命設定。時間ベースとデータ量ベースで選べる。
DPD(デッドピア検出)有効通信断でセッションを残さないように有効。
NATトラバーサル有効VPNクライアントはNAT環境想定のため有効。
※NATトラバーサルではUDP4500ポート使用
ローカルLANの有効化無効VPN接続中に自宅LAN内の機器に接続する設定。
セキュリティ的に無効推奨。
項目推奨値備考
リプレイ検出有効過去の通信を再送してくる攻撃(リプレイ攻撃)を検出して拒否する仕組み。
Perfect Forward Secrecy(PFS)有効通信ごとに使い捨て鍵を使い、鍵が漏れても過去の通信を守る仕組み。

上記の内容で保存します。

接続してみた

自分のPCのIPアドレスを10.10.10.1/24に設定して接続すると・・・

接続成功!39アドレスが払い出されています。

コマンドプロンプトで確認します。

ポイント

39アドレスのデフォルトゲートウェイが空欄になっているとスプリットトンネルが有効となっている状態です。

ここが39アドレスになっているとフルトンネル状態で、すべての通信がVPN向けとなりスプリットトンネルがきいていません。



ブラウザから社内サーバへ接続してみます。

見慣れない認証画面がでてきました。

ユーザ名とパスワードにVPNuserを入力すると、無事アクセスできました!

ポイント

この認証はどうやら⑥IPsecVPNトンネル作成の「set authusrgrp」でグループを指定すると表示されるようです。

この設定を消すと認証画面が表示されません。代わりに⑧ファイアウォール設定で設定した「set groups “RemoteGroup”」の設定が継承されます。

※「set authusrgrp」だと1つのグループしか設定できないので複数グループを認証させたい場合はファイアウォールポリシーから継承させた方がよさそうです。



まとめ

今回、FortiGateでIPsecリモートアクセスVPNをCLIで構築し、FortiClientから社内アクセスできることを確認しました。

特にフェーズ1、フェーズ2設定やスプリットトンネルは通信可否に直結する重要ポイントであり、実務でもつまずきやすい箇所です。

本記事が、これからSSL-VPNからIPsec VPNへの移行を検討される方や、FortiClientとの接続設定を行う方の参考になれば幸いです。




FortiGateをはじめとしたファイウォール、ネットワーク設計、構築は当社にお任せください!!!

当社ではHPE 社 ネットワーク製品をはじめとした様々なネットワークの設計、構築が可能です。

また、導入後の運用サポートも承っております。詳細は以下の記事をご覧ください。

そのIT運用、疲弊していませんか? ~運用負荷を軽減する「SYC Managed Support」~ | SYC TECH BLOG




まずはお気軽にご相談ください!

以上ここまでご覧いただきありがとうございました!