2012年3月16日金曜日

FortiGateでスマートフォンからのリモートアクセスVPN環境を作る!

結論:Android端末から利用する場合は、FortiGateのL2TP実装上DNSサーバ情報を渡せないので、実用的ではありません。

iOSは超快適。

コンフィグは以下の通り。。。
# ============================================================
# Android向け
# ------------------------------------------------------------

# ローカルユーザの設定
config user local
edit Android001 # ユーザ名を指定
set type password
set passwd "androiduser" # パスワード文字列を指定
set status enable
end

# ユーザグループの設定
config user group
edit L2TP
set group-type firewall
set member Android001 # L2TP IPSec-VPN を利用するユーザを含める
end

# L2TPの設定
config vpn l2tp
set sip 192.168.1.100 # 利用環境に合わせる
set eip 192.168.1.125 # 同上
set status enable
set usrgrp "L2TP"
end

# Firewall用アドレス定義
config firewall address
edit "L2TP Clients"
set type iprange
set start-ip 192.168.1.100 # 利用環境に合わせる
set end-ip 192.168.1.125 # 同上
end

# IPsec-VPN Phase1 の設定
config vpn ipsec phase1
edit "Android-PKI-P1"
set type dynamic
set interface WAN-interface
set mode main
set psksecret ******** # PKI(電子証明)を利用する場合は違うので注意
#set authmethod rsa-signature
#set rsa-certificate "serverCert"
set proposal aes256-md5 3des-sha1 aes192-sha1
set dhgrp 2
set nattraversal enable
set dpd enable
end

# IPsec-VPN Phase2 の設定
config vpn ipsec phase2
edit "Android-PKI-P2"
set phase1name "Android-PKI-P1"
set proposal aes256-md5 3des-sha1 aes192-sha1
set replay enable
set pfs disable
set keylifeseconds 3600
set encapsulation transport-mode
end

# Firewall ポリシーの設定(Outbound)
config firewall policy
edit 0
set srcintf internal # LAN側インタフェースを指定
set dstintf wan1 # Internet側インタフェースを指定
set srcaddr all
set dstaddr all
set action ipsec
set schedule always
set service ANY
set inbound enable
set outbound enable
set vpntunnel "L2TP/IPSec-VPN"
end

# Firewall ポリシーの設定(Inbound)
config firewall policy
edit 0
set srcintf wan1 # Internet側インタフェースを指定
set dstintf internal # LAN側インタフェースを指定
set srcaddr "L2TP Clients"
set dstaddr all
set action accept
set schedule always
set service ANY
end

# ============================================================
# iPhone向け
# ------------------------------------------------------------

# ローカルユーザの設定
config user local
edit iOSuser001 # ユーザ名を指定
set type password
set passwd "androiduser" # パスワード文字列を指定
set status enable
end

# ユーザグループの設定
config user group
edit iOSusers
set group-type firewall
set member iOSuser001 # IPSec-VPN を利用するユーザを含める
end

# Firewall用アドレス定義
config firewall address
edit "iOS Clients"
set type iprange
set start-ip 192.168.1.100 # 利用環境に合わせる
set end-ip 192.168.1.125 # 同上
end

#IPsec-VPN Phase1 の設定
config vpn ipsec phase1-interface
    edit "iPhone-PKI-P1"
        set type dynamic
        set interface "port11"
        set dhgrp 2 5
        set proposal aes256-sha1 aes256-md5
        set authmethod rsa-signature
        set xauthtype auto
        set mode-cfg enable
        set rsa-certificate "serverCert"
        set authusrgrp "iPhone-PKI"
        set ipv4-start-ip 192.168.0.31
        set ipv4-end-ip 192.168.0.34
        set ipv4-netmask 255.255.255.0
        set ipv4-dns-server1 192.168.0.110
        set ipv4-dns-server2 192.168.0.120
        set ipv4-wins-server1 192.168.0.110
        set ipv4-wins-server2 192.168.0.120
        set ipv4-split-include "iPhoneGrRange"
    next
end

#IPsec-VPN Phase2 の設定
config vpn ipsec phase2-interface
    edit "iPhone-PKI-P2"
        set pfs disable
        set phase1name "iPhone-PKI-P1"
        set proposal aes256-sha1 aes256-md5
    next
end



OpenSSL"ではない"ので独自CA

巷ではOpenSSLでやっている記事は多くみつかりますが、それ以外の記事はなかなかありません。
ので、わたしが見つけて参考にした記事を紹介したいと思います。

mozillaが「NSS Security Tools」の「certutil」を使った方法です。

http://www.nina.jp/server/redhat/certutil/certutil.html