Description
The article describes how to restrict SSL VPN connectivity from certain countries. By default, the SSL VPN is accessible to all public IP addresses from the Internet, but it is possible to restrict the access to a specified set of allowed IP addresses using IP/Subnet Address Objects as well as Geo-IP Address objects.
Note:
The Restrict Access (aka source-address) configuration can be modified without disrupting existing SSL VPN connections, though only if the modifications continue to allow a given user's source address to connect. For example:
Scope
FortiGate.
Solution
config firewall address
edit "restriction_poland"
set type geography
set country "PL" <- Only allows connections from Poland.
next
end
config firewall addrgrp
edit "Geo_restriction_ssl_vpn"
set member "restriction_poland"
next
end
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 444
set source-interface "wan1"
set source-address "Geo_restriction_ssl_vpn"
end
From the GUI.
Furthermore, it is possible to include a public IP address or range of IP addresses to allow access to IP addresses that are not included or categorized in the selected geographical area.
In the preceding example, users from Poland are permitted to connect to this SSL VPN. However, if it is also necessary to add a few individual IP addresses/ranges from an undefined Country/Region, the address objects can be included under SSL VPN settings as shown below.
If there are still hits from different IPs from different countries that are not allowed, refer to the information and steps below:
execute update-geo-ip
To find the location of the IP:
diagnose firewall ipgeo ip2country x.x.x.x <- The IP.
Alternatively, check with Instant IP Address Lookup (whatismyipaddress.com).
config vpn ssl settings
config authentication-rule
edit 1
set source-interface "wan1" <----- Interface specified in SSL VPN.
set source-address "Allow US IPs Only" <----- Just use the country desired to allow.
set groups "SSLVPN_users" <----- This is the group in the policy of SSL VPN.
set portal "full-access"
Create a policy that allows traffic from a specific country:
config firewall local-in-policy
edit 0
set intf "wan1"
set srcaddr "Allow US IPs Only"
set dstaddr "all"
set service "SSLVPN-Port" <- Port that is used for SSL VPN connections.
set schedule "always"
set action accept
next
end
Second deny access from all other countries:
config firewall local-in-policy
edit 1
set intf "wan1"
set srcaddr all
set dstaddr "all"
set service "SSLVPN-Port" <-- Port that is used for SSL VPN connections.
set schedule "always"
set action deny
next
end
After this, it will show newly created policies via GUI.
Note that it can be necessary to activate local-in-policy in GUI to view the current settings under System -> Feature Visibility -> Check Local-In-Policy and select Apply.
Note:
Starting from FortiGate v7.6.0, the Local-in-Policy can now be also configured in the GUI. Refer to this document for reference: Technical Tip: Creating a Local-In policy (IPv4 and IPv6) on GUI.
For SSL VPN, VPN configuration, and port used in this article, more information is available via this link: SSL VPN best practices | FortiGate / FortiOS 7.4.1 | Fortinet Document Library
The Fortinet Security Fabric brings together the concepts of convergence and consolidation to provide comprehensive cybersecurity protection for all users, devices, and applications and across all network edges.
Copyright 2024 Fortinet, Inc. All Rights Reserved.