FortiGate:SSL-VPN over IPsec の設定例【サテライト>本社>支社】

ファイアウォール(UTM)

検証環境

  • FortiGate-60E
    • version v7.2.3

SSL-VPN over IPsec とは

ここでいう SSL-VPN over IPsec とは、IPsec トンネルの上で SSL-VPN を構築することを指します。

例えば、以下のような良くある本社・支社のネットワークを考えます。

本社と支社間で IPsec を構成しています。支社ではデフォルトルートを IPsec トンネルに向けていて、インターネット抜けするには本社を経由します。

ここで、サテライトにある端末から支社の内部ネットワークに接続することを考えます。サテライトの端末から支社に対して SSL-VPN 接続することが考えられますが、支社は本社を経由してインターネット抜けするので、SSL-VPN は本社を経由して構成することになります。

SSL-VPN 確立後はサテライトの端末は SSL-VPN トンネルを通して支社の内部と通信します。

上記例の様に、IPsec 上で SSL-VPN を構築することを考えます。

設計における考慮点

サテライトの端末が支社のグローバルアドレスに対して直接アクセスすると、非対称ルーティングが発生し FortiGate で通信がブロックされてしまいます(※詳しくはこちらの記事)。そのため、端末からの SSL-VPN 接続時の宛先アドレスは本社のグローバルアドレスとします

そして本社の FortiGate では SSL-VPN 通信をポートフォワーディングして支社の FortiGate 宛に宛先変換します。支社の FortiGate では IPsec の Tunnel インターフェースを SSL-VPN のリッスンインターフェースとします

IPsec Tunnel インターフェースを SSL-VPN のリッスンインターフェースにするためには当該インターフェースが IP アドレスを持つ必要があるため、Tunnel インターフェースには IP アドレスを設定します。

検証構成

以下の構成で SSL-VPN over IPsec を検証してみます。

  • サテライトの端末は本社のグローバルアドレス 10.1.10.254 のポート 8888 に対して SSL-VPN 接続します
  • 本社の FortiGate は 10.1.10.254 ポート 8888 宛の通信を支社の FortiGate の Tunnel のアドレス 10.254.1.2 のポート 9999 に宛先変換します
  • 支社の FortiGate は SSL-VPN 接続を Tunnel のポート 9999 でリッスンします

FortiGate の設定内容

インターフェース設定

まずは基本的なインターフェース設定です。IP アドレスを設定すれば OK です。

◆本社側

config system interface
    edit "wan1"
        set ip 10.1.10.254 255.255.255.0
    next
end

◆支社側

config system interface
    edit "wan1"
        set ip 10.1.20.254 255.255.255.0
    next
end

ルーティング設定(IPsec 確立用)

◆本社側

本社ではインターネット抜けするためにデフォルトルートを wan1 向けにします。このルートによって支社とも通信できるようになります。

config router static
    edit 1
        set gateway 10.1.10.1
        set device "wan1"
    next
end

◆支社側

支社では本社と IPsec 確立するために本社のグローバルアドレス宛のルートを設定します。

config router static
    edit 1
        set dst 10.1.10.0 255.255.255.0
        set gateway 10.1.20.1
        set device "wan1"
    next
end

デフォルトルートは IPsec 設定後に Tunnel 向けとして設定します。

IPsec 設定

本社・支社双方で IPsec の設定をします。IPsec の設定について詳しくはこちらの記事を見てください。

IKE フェーズ1 の設定

◆本社側

config vpn ipsec phase1-interface
    edit "Tunnel0"
        set interface "wan1"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set dpd disable
        set dhgrp 14
        set nattraversal disable
        set remote-gw 10.1.20.254
        set psksecret password
    next
end

◆支社側

config vpn ipsec phase1-interface
    edit "Tunnel0"
        set interface "wan1"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set dpd disable
        set dhgrp 14
        set nattraversal disable
        set remote-gw 10.1.10.254
        set psksecret password
    next
end

IKE フェーズ1 の設定をすると、自動で以下の Tunnel インターフェースが作成されます。

config system interface
    edit "Tunnel0"
        set vdom "root"
        set type tunnel
        set snmp-index 17
        set interface "wan1"
    next
end

IKE フェーズ2 の設定

◆本社側

config vpn ipsec phase2-interface
    edit "Tunnel0"
        set phase1name "Tunnel0"
        set proposal aes256-sha256
        set pfs disable
    next
end

◆支社側

config vpn ipsec phase2-interface
    edit "Tunnel0"
        set phase1name "Tunnel0"
        set proposal aes256-sha256
        set pfs disable
    next
end

Tunnel インターフェースの設定

Tunnel インターフェースの IP アドレス、リモートアドレス(ピアアドレス)の設定を行います。

◆本社側

config system interface
    edit "Tunnel0"
        set ip 10.254.1.1 255.255.255.255
        set remote-ip 10.254.1.2 255.255.255.252
    next
end

◆支社側

config system interface
    edit "Tunnel0"
        set ip 10.254.1.2 255.255.255.255
        set remote-ip 10.254.1.1 255.255.255.252
    next
end

ポリシー設定(IPsec 確立用)

支社の内部ネットワークからインターネットへの通信を許可するポリシーを設定します。

このポリシー設定をしておかないと IPsec がアップしません。IPsec がアップしていることが後々の SSL-VPN 確立の前提になります。

◆本社側

本社側では、IPsec トンネル(支社)から wan1(インターネット)への通信を許可するポリシーを設定します。

config firewall policy
    edit 1
        set name "172.16.10.0/24_to_internet"
        set srcintf "Tunnel0"
        set dstintf "wan1"
        set action accept
        set srcaddr "172.16.10.0/24"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

◆支社側

支社側では internal1(内部ネットワーク)から IPsec トンネル(本社)への通信を許可するポリシーを設定します。

config firewall policy
    edit 1
        set name "int1_to_ipsec"
        set srcintf "internal1"
        set dstintf "Tunnel0"
        set action accept
        set srcaddr "172.16.10.0/24"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

スタティックルート設定(IPsec 通信用)

IPsec の設定ができたところで、支社側で IPsec トンネル向けのデフォルトルートを設定します。

支社内部からのインターネット通信や、SSL-VPN 通信のために使用されるルートです。

◆支社側

config router static
    edit 2
        set device "Tunnel0"
    next
end

[支社側] SSL-VPN 設定

支社側では以下の通り SSL-VPN 設定をします。

  • リッスンインターフェースを IPsec トンネルインターフェースとする
  • リッスンポートを 9999 とする

◆支社側

config vpn ssl settings
    set servercert "Fortinet_Factory"
    set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
    set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
    set port 9999
    set source-interface "Tunnel0"
    set source-address "all"
    set source-address6 "all"
    set default-portal "tunnel-access"
end

※SSL-VPN 設定について詳しくはこちらの記事を見てください

SSL-VPN 接続用ユーザも作成します。

config user local
    edit "vpnuser"
        set type password
        set passwd password
    next
end

次に SSL-VPN ユーザから支社内部ネットワークへの通信を許可するポリシーを設定します。

config firewall policy
    edit 3
        set name "sslvpn_to_int1"
        set srcintf "ssl.root"
        set dstintf "internal1"
        set action accept
        set srcaddr "all"
        set dstaddr "172.16.10.0/24"
        set schedule "always"
        set service "ALL"
        set logtraffic all
        set users "vpnuser"
    next
end

[本社側] ポリシー設定(SSL-VPN・ポートフォワーディング用)

本社の FortiGate で SSL-VPN 通信をポートフォワーディングするポリシーを設定します。

※ポートフォワーディングについて詳しくはこちらの記事を見てください

◆本社側

まず、ポートフォワーディングのために使用するバーチャル IP を設定します。

  • 10.1.10.254:8888 → 10.254.1.2:9999 と変換するバーチャル IP を設定
config firewall vip
    edit "VIP_10.1.10.254_p8888"
        set extip 10.1.10.254
        set mappedip "10.254.1.2"
        set extintf "wan1"
        set portforward enable
        set extport 8888
        set mappedport 9999
    next
end

次に wan1(インターネット)から IPsec トンネル(支社)への SSL-VPN 通信を許可するポリシーを設定します。

config firewall policy
    edit 2
        set name "wa1_to_sslvpn"
        set srcintf "wan1"
        set dstintf "Tunnel0"
        set action accept
        set srcaddr "all"
        set dstaddr "VIP_10.1.10.254_p8888"
        set schedule "always"
        set service "TCP_9999"
        set logtraffic all
    next
end

SSL-VPN 接続確認

サテライトの端末から本社のグローバルアドレス 10.1.10.254:8888 宛に SSL-VPN 接続してみます。

FortiClient で以下のように設定してアクセスします。

以下の通り接続できました。

端末から支社内のアドレスに対して疎通可能です。

C:\WINDOWS\system32>ping 172.16.10.100

172.16.10.100 に ping を送信しています 32 バイトのデータ:
172.16.10.100 からの応答: バイト数 =32 時間 =4ms TTL=254
172.16.10.100 からの応答: バイト数 =32 時間 =2ms TTL=254
172.16.10.100 からの応答: バイト数 =32 時間 =7ms TTL=254
172.16.10.100 からの応答: バイト数 =32 時間 =3ms TTL=254

172.16.10.100 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 2ms、最大 = 7ms、平均 = 4ms

C:\WINDOWS\system32>tracert -d 172.16.10.100

172.16.10.100 へのルートをトレースしています。経由するホップ数は最大 30 です

  1     6 ms     1 ms     1 ms  10.212.134.200
  2     3 ms     2 ms     2 ms  172.16.10.100

トレースを完了しました。

C:\WINDOWS\system32>

支社 FortiGate の対向ルータのインターフェースでパケットキャプチャしてみます。

以下の通り ESP となっており暗号化されていることが分かります。

本社の FortiGate のトラフィックログからポートフォワーディングが正しくできていることを確認できます。

支社側の FortiGate のトラフィックログからは SSL-VPN で内部ネットワークへアクセスできていることを確認できます。

以上です。


タイトルとURLをコピーしました