๐ก FortiGate SSL VPN ๅฎๅ จ้ ็ฝฎๆๅ:ๆ่ญ、LDAP、ๅธธ่ฆ้ฏ่ชคๆๆฅ
FortiGate ็ SSL VPN ๅนพไนๆฏไธญๅฐไผๆฅญๆๅธธ็จ็้ ็ซฏ้ฃ็ทๆนๆกไนไธ。ๅช่ฆๆญฃ็ขบ่จญๅฎ Portal、Policy、ๆ่ญ่ LDAP ่ช่ญ,ๅฐฑ่ฝ่ฎไฝฟ็จ่ ๅจๅค็จ Notebook ๆๆๆฉๅฎๅ จๅฐ้ฃๅๅ ฌๅธๅ ง็ถฒ。 ๆฌ็ฏๆด็ๆไธไปฝ「ๅพ 0 ๅฐๅฏไธ็ท」็ๅฎๆดๅฏฆๅๆๅ,ๅ ๅซ:
- SSL VPN ๆถๆง่้ไฝๆจกๅผ(Web Portal / Tunnel Mode)
- ๆๅฐๅฏ่ก้ ็ฝฎๆญฅ้ฉ:Portal、ไฝฟ็จ่ 、Policy
- ๅฏๅ ฅ่็ถๅฎๆ่ญ(้ฟๅ ็่ฆฝๅจ่ญฆๅ)
- LDAP ๆดๅ(AD ๅธณ่็ปๅ ฅ SSL VPN)
- ๅธธ่ฆ้ฏ่ชคๆๆฅ่่จบๆทๆไปค
ไธ、SSL VPN ๆถๆง่ๆจกๅผๆฆๅฟต
FortiGate ็ SSL VPN ๅคง่ดๅฏๅๆๅ ฉ็จฎๆไฝๆจกๅผ:
1️⃣ Web Portal ๆจกๅผ
- ไฝฟ็จ่
็จ็่ฆฝๅจ้ฃๅฐ
https://้ฒ็ซ็ WAN IP:10443(้ ่จญ) - ็ปๅ
ฅๅพ็ๅฐ Web Portal,่ฃก้ขๅฏไปฅๆพ:
- Web Bookmark(ๅ ง้จ Web ็ณป็ตฑ)
- RDP / SSH Bookmark
- ไธ่ผ FortiClient ่จญๅฎๆช
- ้ฉๅ:ๅช้่ฆๅญๅๅฐ้ๅ ง้จ Web ็ณป็ตฑ็ไฝฟ็จ่
2️⃣ Tunnel Mode ๆจกๅผ
- ไฝฟ็จ่ ้้ FortiClient ๅปบ็ซ SSL VPN Tunnel
- ้ฃ็ทๆๅๅพ,PC ๆๆฟๅฐไธๅ่ๆฌ IP(ไพๅฆ 10.10.10.x)
- ้้้ๅ Tunnel ๅญๅๅ ง้จ็ถฒๆฎต(ไพๅฆ 192.168.1.0/24)
- ้ฉๅ:้่ฆๅฎๆดๅ ง้จ็ถฒ่ทฏๅญๅ(ๆชๆกไผบๆๅจ、ERP、RDP…)
ๅฏฆๅไธๅคงๅคๅๆๅ็จ:Portal + Tunnel,ไฝๆฟ็ญไปฅ Tunnel Mode ็บไธป。
ไบ、ไธ็ทๅ้ ๅ ็ขบ่ชๆธ ๅฎ
- FortiGate ้้ซ็ๆฌๅทฒๅจๆฏๆด SSL VPN ็็ฉฉๅฎ็ๆฌไธ(ไพๅฆ 7.x LTS)
- ๅฐๅค WAN ไป้ขๅทฒๆๅบๅฎ IP ๆๅฏๅฐๆ็ FQDN
- ๅทฒ็ขบ่ช SSL VPN ไฝฟ็จ็ Port(้ ่จญ 443 / 10443)ๆฒๆ่ขซ ISP ๆไธๆธธ่จญๅๅฐ้
- ๅ ง็ถฒ็ถฒๆฎต่ฆๅๆธ ๆฅ,้ฟๅ SSL VPN IP ๆฑ ่ๅ ง็ถฒ็ถฒๆฎต่ก็ช
ไธ、ๅปบ็ซ SSL VPN ๅบๆฌ็ตๆ (Portal、IP Pool、User Group)
1️⃣ ๅปบ็ซ SSL VPN ไฝฟ็จ็ IP ๆฑ
ไพๅฆ่ฆๅ็ตฆ VPN ็จๆถ็่ๆฌ IP ็ฏๅ:10.10.10.0/24。
config firewall address
edit "SSLVPN_TUNNEL_SUBNET"
set subnet 10.10.10.0 255.255.255.0
next
end
config firewall ippool
edit "SSLVPN_POOL"
set type overload
set startip 10.10.10.1
set endip 10.10.10.254
next
end
2️⃣ ๅปบ็ซๆฌๆฉไฝฟ็จ่ (่ฅๆฒๆ LDAP / AD ๆ)
config user local
edit "vpnuser1"
set type password
set passwd "StrongPassw0rd!"
next
end
3️⃣ ๅปบ็ซไฝฟ็จ่ ็พค็ต(ไนๅพๅฏๆ Local ๆ LDAP)
config user group
edit "SSLVPN_Users"
set member "vpnuser1"
next
end
ๅ、่จญๅฎ SSL VPN Portal
Portal ๆฑบๅฎไฝฟ็จ่ ็ปๅ ฅๅพ็ๅฐ็็ซ้ข่ๆฌ้。ๅธธ่ฆ็ๆฏ full-access(Tunnel + Portal)。
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_POOL"
set split-tunneling enable
set split-tunneling-routing-address "LAN_SUBNET"
next
end
split-tunneling enable:่ฎ VPN ๅช่ตฐๅ ฌๅธๅ ง้จๆต้,ๅ ถ้คไป่ตฐไฝฟ็จ่ ๆฌๅฐ็ถฒ่ทฏ, ๅฏ้ไฝ้ ปๅฏฌ่ฒ ๆ。่ฅๆ「ๅฟ ้ ๆๆๆต้้ฝ่ตฐๅ ฌๅธๅบๅฃ」็ๅ่ฆ้ๆฑ,ๅฏๆนๆ disable。
ไบ、ๅ็จ SSL VPN Listener(็ถๅฎ WAN ไป้ข)
ๆฅ่ๅจ SSL VPN ่จญๅฎไธญ,ๆๅฎ็ฑๅชๅ WAN ไป้ขๆฅๆถ SSL VPN ้ฃ็ท、ไฝฟ็จๅชๅ Port、็จๅชไธๅ Portal。
config vpn ssl settings
set servercert "FGT_SSL_CERT"
set tunnel-ip-pools "SSLVPN_POOL"
set source-interface "wan1"
set source-address "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "SSLVPN_Users"
set portal "full-access"
next
end
end
servercert:็ถๅฎ SSL VPN ไฝฟ็จ็ๆ่ญ(ไนๅพๆ่ฌๆ้บผๅฏๅ ฅ)source-interface:ไธ่ฌๆฏwan1ๆไธ็ถฒ็จ็ไป้ขauthentication-rule:ๆฑบๅฎๅชๅ User Group ้ฒไพ็จๅชๅ Portal
ๅ ญ、ๅปบ็ซ SSLVPN → ๅ ง็ถฒ็้ฒ็ซ็ Policy
SSL VPN ๅปบๅฅฝๅพ,้่ฆ็จ Policy ่ฎ ssl.root ้ๆข่ๆฌไป้ขๅฏไปฅๅญๅๅ ง้จ LAN。
config firewall policy
edit 100
set name "SSLVPN_to_LAN"
set srcintf "ssl.root"
set dstintf "lan"
set srcaddr "SSLVPN_TUNNEL_SUBNET"
set dstaddr "LAN_SUBNET"
set action accept
set schedule "always"
set service "ALL"
set groups "SSLVPN_Users"
set nat enable
next
end
srcintf "ssl.root":ๆๆ SSL VPN Tunnel ้ฃ็ท้ฝๅบ็พๅจ้ๅไป้ขdstintf "lan":ๅฏฆ้ๅ ง้จ็ถฒๆฎตๆๅจ็ไป้ข(่ฆไฝ ็ๅฝๅ่ๅฎ)groups:้ๅถๅชๆ SSLVPN_Users ็พค็ต็ๅธณ่ๅฏไปฅ่ตฐๆญค Policy
ไธ、ๆ่ญ่จญๅฎ:้ฟๅ ็่ฆฝๅจ่ญฆๅ
่ฅไฝฟ็จ FortiGate ๅ งๅปบๆ่ญ,็่ฆฝๅจ่ FortiClient ๆ่ทณๅฎๅ จ่ญฆๅ。ๆญฃๅผไธ็ทๅปบ่ญฐ:
- ไฝฟ็จๅ ฌๅธ่ชๅทฑ CA(ๅ ง้จ PKI)็ฐฝ SSL ๆ่ญ
- ๆไฝฟ็จๅ ฌ้ CA(ๅฆ Let's Encrypt、ๅ็จ CA)
1️⃣ ๅฏๅ ฅๆ่ญ(ๅทฒๅจๅค้จ็ข็ๅฅฝ)
ๅจ GUI ๆไฝ่ทฏๅพๅคง่ด็บ:System → Certificates → Import,ๅบๅฑค CLI ๅฏ็จ:
config vpn certificate local
edit "FGT_SSL_CERT"
set password "YourPFXPassword"
set private-key "-----BEGIN PRIVATE KEY----- ..."
set certificate "-----BEGIN CERTIFICATE----- ..."
next
end
ๅฏๅ ฅๅพๅๅฐ:
- VPN → SSL-VPN Settings → Server Certificate ้ธๆ
FGT_SSL_CERT
2️⃣ ไฝฟ็จ FQDN ๅไปฃ IP
- ็ณ่ซๆ่ญๆ,CN/SAN ไฝฟ็จ
vpn.company.com - ๅค้จ DNS ๅฐ
vpn.company.comๆๅ FortiGate WAN IP - ไฝฟ็จ่
ๅจ็่ฆฝๅจ / FortiClient ๅกซ็ๅฐฑๆฏ
https://vpn.company.com
ๅ ซ、ๆดๅ LDAP / AD:็จ AD ๅธณ่็ปๅ ฅ SSL VPN
ๅฏฆๅไธๅคงๅคๅธๆ็ดๆฅ็จ AD ๅธณๅฏ็ปๅ ฅ VPN,้ฟๅ ๅค็ตๅธณ่็ฎก็。
1️⃣ ่จญๅฎ LDAP ไผบๆๅจ
config user ldap
edit "AD_LDAP"
set server "10.0.0.10"
set cnid "sAMAccountName"
set dn "DC=company,DC=local"
set type regular
set username "CN=svc-ldap,OU=Service,DC=company,DC=local"
set password "SvcLdapStrongPass!"
set secure ldaps
set port 636
next
end
ๅฎๆๅพๅฏ็จ CLI ๆธฌ่ฉฆ:
diagnose test authserver ldap "AD_LDAP" user1 "User1Password"
2️⃣ ๅปบ็ซไฝฟ็จ่ ็พค็ต,ๆ่ผ LDAP
config user group
edit "SSLVPN_Users"
set member "AD_LDAP"
config match
edit 1
set server "AD_LDAP"
set group "CN=VPN_Users,OU=Security,DC=company,DC=local"
next
end
next
end
ไนๅพ SSL VPN authentication-rule ๆๅฎ็ Group ๅฐฑๆน็จ้ๅ LDAP ็พค็ต。
ไน、ๅธธ่ฆ้ฏ่ชคๆๆฅ่่จบๆทๆไปค
1️⃣ ไฝฟ็จ่ ็กๆณ้ฃ็ท:้ฃๅฐไธๅๅฐฑๅคฑๆ
- ๅ ็ขบ่ช WAN Policy ๆไธๆธธ่จญๅๆฒๆๆ SSL VPN Port
- ๆชขๆฅๆฏๅฆๆ IPS / WAF ่ชคๆ
ๅฏ็จไปฅไธ Debug ่งๅฏ:
diagnose debug application sslvpn -1 diagnose debug enable
่งๅฏไฝฟ็จ่ ็ปๅ ฅๆๆฏๅฆๆ้ฏ่ชค่จๆฏ,็ตๆๅพ:
diagnose debug disable
2️⃣ ็ปๅ ฅๅคฑๆ:ๅธณๅฏๆญฃ็ขบไฝ่ขซๆ็ต
- ็ขบ่ช Authentication Rule ๆๅ ๅซ่ฉฒ User Group
- ็ขบ่ช User Group ๆฏๅฆๅ ๅซ่ฉฒไฝฟ็จ่ (Local ๆ LDAP)
- LDAP ็จ
diagnose test authserver ldapๆธฌ่ฉฆ
3️⃣ ็ปๅ ฅๆๅไฝ็กๆณ้ฃๅฐๅ ง้จไธปๆฉ
- ๆชขๆฅ Policy:
srcintf ssl.root → dstintf LANๆฏๅฆๆๆพ่ก - ็ขบ่ช
SSLVPN_TUNNEL_SUBNETๆๅ ๅซไฝฟ็จ่ ๆฟๅฐ็่ๆฌ IP - ๅ ง้จไธปๆฉ็้ฒ็ซ็ๆฏๅฆๅ ่จฑไพ่ช VPN ็ถฒๆฎต
- ่ฅๅ็จ split tunneling,่ฆ็ขบ่ช Routing / DNS ๆๅฐๅฐ็ๅ ง็ถฒ
4️⃣ ๆ่ญ้ฏ่ชคๆ็่ฆฝๅจไธไฟกไปป
- ็ขบ่ช SSL VPN ไฝฟ็จ็
servercertๆฏๅฆ็บๆญฃ็ขบๆ่ญ - ๆ่ญ็ CN/SAN ๆฏๅฆ่ไฝฟ็จ่ ่ผธๅ ฅ็ FQDN ็ธ็ฌฆ
- ่ฅ็บๅ ง้จ CA,่ฆ็ขบไฟไฝฟ็จ่ ็ซฏๆๅฎ่ฃ Root CA
5️⃣ ไฝต็จไบ้ๆฎต้ฉ่ญ(FortiToken / Email OTP)
- ๅ็จ Two-factor ๅพ,ๅฆไฝฟ็จ่ ็ปๅ ฅๆฌกๆธ็ฐๅธธ,ๅฏๅพ Log → Event → VPN ๅๆ
- ่ฅ OTP ้ฉ่ญๅคฑๆ,ๅธธ่ฆๆฏๆ้ไธๅๆญฅๆไฟก็ฎฑๆถไธๅฐ็ขผ
ๅ、ๅฏฆๅๅปบ่ญฐ่ๆไฝณๅฏฆๅๅฐ็ต
- ๆญฃๅผ็ฐๅขๅๅฟ ไฝฟ็จ「ๆๆๆ่ญ + FQDN」้จ็ฝฒ SSL VPN
- ไฝฟ็จ LDAP / AD ็ตฑไธๅธณ่็ฎก็,ไธฆๆญ้ ๅฎๅ จ็พค็ต(ๅฆ VPN_Users)
- Policy ่ฆ็ก้็ฒพๆบ:้ๅถไพๆบ、็ฎ็็ถฒๆฎต่ๆๅ,่้ๆดๅๅ ง็ถฒๅ จ้
- ๅปบ่ญฐ้ๅๆฅ่ชไธฆ้ไธญๅฐ FortiAnalyzer / Syslog ไปฅไพฟ็จฝๆ ธ่ไบๅพ่ฟฝๆฅ
- ไฝฟ็จ split tunneling ๅฏๆธๅฐๅบๅฃๆต้,ไฝ้่ฉไผฐ่ณๅฎๆฟ็ญ;่ฅๆๅ่ฆ่ฆๆฑๅฏๅ จ้จๅฐๅ็ธฝ้จ
- ๅฎๆๆชข่ฆๆชไฝฟ็จๅธณ่,้้้ข่ทๆไธๅ้่ฆ VPN ็ๅธณ่
๐ ็ต่ช
FortiGate SSL VPN ็่ตทไพ้ธ้ ๅพๅค,ไฝๅฏฆ้ไธๅฏไปฅๅ็บๅนพๅ้้ตๆญฅ้ฉ: ่ฆๅ IP ๆฑ → ๅปบ็ซไฝฟ็จ่ ่็พค็ต → ่จญๅฎ Portal → ็ถๆ่ญ → ๅปบ Policy → ๆธฌ่ฉฆ่ๆ้ฏ。 ไธๆฆ้ๅฅๆต็จๅปบ็ซๅฅฝ,ๅพๅพ่ฆๆดๅ ๆฐไฝฟ็จ่ ๆๆฐๅขๅ ง้จ็ณป็ตฑ,ๅช้่ฆ่ชฟๆด็พค็ต่ Bookmark ๅณๅฏ。
— WWFandy・FortiGate ๅฏฆๆฐ็ญ่จ
๐ ๅปถไผธ้ฑ่ฎ
- ๐งฑ FortiGate ็ณปๅๆ็ซ
- ๐ง Network ็ถฒ่ทฏ่่จบๆท
- ๐ง Linux ็ณป็ตฑ่ๆๅ
๐ฌ ็ไธไฝ ็่ง้ป,่ฎ่จ่ซๆด็ฒพๅฝฉ!
ไฝ ๅจ้จ็ฝฒ FortiGate SSL VPN ๆ,ๆ้้ไป้บผๅฅๆช็ๅ้กๆๅฏฆๆฐๅฟๅพๅ?ๆญก่ฟๅจไธๆน็่จๅไบซ, ไนๅฏไปฅๅฏซไธไฝ ็ฎๅ็็ฐๅข่ฆๆจก(ไบบๆธ、ๅ้ป、็ๆฌ),ไธ่ตทไบคๆตๆด็ฉฉๅฎ็ๅๆณ。
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ