FortiGate SSL VPN Hardening Checklist (2026)

Review the settings that matter before the next password-spray campaign or SSL VPN advisory: patches, MFA, portal access, lockouts, certificates, timeouts, management access and logs.

By Phil Chiu · Last updated: October 21, 2026
5.4M+
IPv4 Addresses Blocked

Direct answer: Harden FortiGate SSL VPN by installing a supported FortiOS release, requiring MFA, limiting source addresses, using group-based portals, setting login and session limits, installing a trusted certificate, protecting administrator access, and centralizing VPN logs. Disable SSL VPN when it is not needed. On FortiOS 7.6.3 and later, tunnel mode is gone, so migrate those users to IPsec VPN first.

After those free controls, test the free 200-entry threat-feed sample, with no signup, to block known attacker sources at the edge.

FortiGate SSL VPN Hardening Checklist

The paths and commands below are verified against Fortinet's FortiOS 7.4 documentation. Check the CLI reference for your exact maintenance release before changing production. On FortiOS 7.4.1 and later, the VPN > SSL-VPN menus can be hidden; enable them under System > Feature Visibility.

Item Where (GUI/CLI) Why Priority
Patch FortiOS and review PSIRT Fortinet Upgrade Path Tool and PSIRT advisories SSL VPN vulnerabilities have included unauthenticated remote-code-execution flaws. Critical
MFA for every VPN user User & Authentication > User Definition; or SAML/RADIUS configuration A stolen password alone should not complete authentication. Critical
Restrict public source addresses VPN > SSL-VPN Settings > Restrict Access; source-address Removes unnecessary exposure before authentication. High
Map groups to least-privilege portals VPN > SSL-VPN Settings > Authentication/Portal Mapping Each group receives only the portal and internal resources it needs. High
Remove unused local and test users User & Authentication > User Definition and User Groups Reduces forgotten credentials and unintended group membership. High
Set login limits config vpn ssl settings Temporarily blocks a source after repeated failed SSL VPN logins. High
Set firewall user authentication lockout config user setting Locks out repeated firewall user authentication failures (for example, captive portal). Separate from the SSL VPN source block. High
Use a trusted server certificate System > Certificates; VPN > SSL-VPN Settings > Server Certificate Lets clients validate the intended VPN hostname. Critical
Require TLS 1.2 or later ssl-min-proto-ver and algorithm Removes older protocol versions and limits weaker cipher classes. High
Review idle and authentication timeouts idle-timeout and auth-timeout Closes inactive sessions and forces periodic reauthentication. High
Disable web mode when unused config system global → sslvpn-web-mode disable Removes browser-based portal functions that users do not require. High
Review split tunnel and DNS VPN > SSL-VPN Portals Defines which traffic and DNS queries enter the corporate tunnel. Review
Protect FortiGate administration Network > Interfaces; System > Administrators Keeps HTTPS and SSH management off untrusted WAN access. Critical
Centralize and alert on VPN logs Log & Report > Log Settings; System Events > VPN Events Preserves evidence and exposes login-failure spikes. High
Block known attacker sources Threat feed in a local-in policy Rejects listed IPv4 sources before they reach the VPN service. Additional layer

1. Patch FortiOS Before Tuning Settings

Use Fortinet's Upgrade Path Tool to select a supported target and upgrade sequence for your model. Then search the Fortinet PSIRT advisories for FortiOS and SSL-VPN. Do not assume that access controls compensate for an unpatched network-facing service.

These advisories illustrate the reason:

FortiOS 7.6.3 change: SSL VPN tunnel mode is removed from the GUI and CLI on all FortiGate models. Existing tunnel-mode settings are not upgraded. Fortinet directs customers to migrate to IPsec VPN before upgrading. Web mode remains as Agentless VPN, except on models Fortinet lists as unsupported: in the 7.6.3 release notes, FortiGate 40F, 60F, 61F, FGR-60F (2GB), 90G and 91G; the 7.6.6 notes add 50G and 70G. On 2GB RAM models (40F, 60F, 61F, FGR-60F), FortiOS 7.6.0 already removed both SSL VPN web and tunnel mode.

2. Require FortiGate SSL VPN MFA

Apply MFA to every interactive VPN account, including contractors and emergency accounts.

FortiToken Mobile or token-based MFA

For a FortiOS-managed LDAP user, go to User & Authentication > User Definition, create or edit the remote LDAP user, enable Two-factor Authentication, choose FortiToken, and assign the token. Fortinet warns that MFA for remote LDAP and RADIUS users can be bypassed if the typed username case does not match the user definition, so disable username sensitivity on each such user. This is a CLI-only setting.

config user local
    edit "<vpn-user>"
        set type ldap
        set ldap-server "<ldap-server>"
        set email-to "<user-email>"
        set username-sensitivity disable
        set two-factor fortitoken
        set fortitoken "<token-serial>"
    next
end

SAML with Microsoft Entra ID or Okta

Fortinet documents FortiGate as the SAML service provider and Microsoft Entra ID or Okta as the identity provider. Enforce MFA and access policy at the IdP, place the SAML object in a FortiGate user group, then map that group under VPN > SSL-VPN Settings > Authentication/Portal Mapping. Microsoft Authenticator is an MFA method managed by Entra ID, not a separate FortiGate token type.

LDAP or RADIUS with MFA

Fortinet documents LDAP users paired with FortiToken and RADIUS with FortiAuthenticator/FortiToken Mobile push. Email two-factor authentication is also documented. SMS and email codes are available FortiOS options, but use the strongest method your identity system and recovery process support.

3. Restrict Users and Portal Mapping

Use named groups and explicit portal mappings

Inventory User & Authentication > User Definition and User Groups. Remove unused test accounts and stale memberships. Map each approved group to a portal. Do not grant every authenticated user the broadest portal. Fortinet recommends pointing the default portal (All Other Users/Groups) at a custom portal with tunnel and web modes disabled. It also recommends enabling Limit Users to One SSL-VPN Connection at a Time under VPN > SSL-VPN Portals (set limit-user-logins enable).

config vpn ssl settings
    set default-portal "<no-access-portal>"
    config authentication-rule
        edit 1
            set groups "<approved-vpn-group>"
            set portal "<least-privilege-portal>"
        next
    end
end

Disable services that are not used

On FortiOS 7.4.1 and later, web mode is disabled by default after a factory reset. Keep it disabled when users only need tunnel access. If SSL VPN is not used at all, disable the service at VPN > SSL-VPN Settings > Enable SSL-VPN.

config system global
    set sslvpn-web-mode disable
end

config vpn ssl settings
    set status disable
end

Do not apply the second block if you still require SSL VPN. On FortiOS 7.6.3, plan around IPsec VPN and the Agentless VPN support available on your model.

4. Configure the FortiGate SSL VPN Lockout Policy

These values are FortiOS 7.4 defaults and ranges. Choose production values that your support and identity teams can operate safely.

SSL VPN source login limits

In FortiOS 7.4, login-attempt-limit defaults to 2 failed attempts and login-block-time defaults to 60 seconds. Fortinet's technical tip gives ranges of 0–10 attempts and 0–86400 seconds, but the 7.4 CLI reference lists a wider range, so check the accepted values on your release. Setting either to zero disables the block. login-timeout (10–180 seconds, default 30) is the time FortiClient has to set up the tunnel after a successful login. It is not a lockout timer.

config vpn ssl settings
    set login-attempt-limit <attempts>
    set login-block-time <seconds>
    set login-timeout <10-180>
end

The block time is also the window in which failures are considered consecutive. Fortinet notes that this method does not apply to SAML groups because the IdP handles the username and password entries.

Firewall user authentication lockout

Fortinet documents config user setting lockout for firewall user authentication, such as captive portal logins. It is separate from the SSL VPN source block above. In FortiOS 7.4.6, auth-lockout-threshold accepts 1–10 and defaults to 3, and auth-lockout-duration accepts 0–4294967295 seconds and defaults to 0. A Fortinet technical tip says a duration of 0 applies a 60-second lockout. Set an explicit duration and test it.

config user setting
    set auth-lockout-threshold <1-10>
    set auth-lockout-duration <seconds>
end

A lockout policy can itself be abused to deny access to known usernames. Combine it with MFA, source restrictions and monitoring. See account lockout prevention and password spraying against VPNs.

5. Restrict Who Can Reach the Portal

Limit SSL VPN to approved source objects

In FortiOS 7.4.1, go to VPN > SSL-VPN Settings > Restrict Access, select Limit access to specific hosts, and choose the permitted address objects or groups. Geography address objects can also be used when the business has a defensible country requirement.

config vpn ssl settings
    set source-interface "<internet-facing-interface>"
    set source-address "<approved-source-object>"
    set source-address-negate disable
end

Use a local-in policy for additional filtering

A local-in policy controls traffic destined for the FortiGate itself, including VPN services. It can match interface, source, destination, schedule and service. Use it for explicit trusted networks, geographic restrictions or a threat-feed deny rule. Validate rule order and preserve an approved management path before enforcement.

For the threat-feed configuration, use the separate FortiGate brute-force protection guide. This hardening checklist does not duplicate those setup steps.

6. Certificate, TLS and Cipher Settings

Replace the factory certificate

Import a certificate for the VPN hostname under System > Certificates. Select it at VPN > SSL-VPN Settings > Server Certificate. Fortinet describes its factory self-signed certificates as installation and testing aids and recommends a server certificate signed by a trusted CA.

config vpn ssl settings
    set servercert "<trusted-vpn-server-certificate>"
end

Set the minimum TLS version

In the FortiOS 7.4 CLI reference, ssl-min-proto-ver defaults to tls1-2 and algorithm defaults to high. Confirm that neither was lowered for old clients, and test all supported FortiClient versions before raising the minimum to TLS 1.3.

config vpn ssl settings
    set ssl-min-proto-ver tls1-2
    set algorithm high
end

The ciphersuite setting controls TLS 1.3 cipher suites. Fortinet notes that strong-crypto does not control the SSL VPN encryption level.

7. Review Timeouts, DTLS, DNS and Split Tunneling

Session timers

In FortiOS 7.4, idle-timeout defaults to 300 seconds and may be set to zero to disable it. auth-timeout defaults to 28800 seconds and accepts 0–259200 seconds. A zero authentication timeout means no forced reauthentication.

config vpn ssl settings
    set idle-timeout <seconds>
    set auth-timeout <seconds>
end

DTLS and portal routing

Fortinet recommends considering DTLS for SSL VPN throughput because it avoids TCP-in-TCP retransmission behavior. Treat it as a performance and compatibility decision, not an authentication control.

config vpn ssl settings
    set dtls-tunnel enable
end

The FortiOS 7.4 CLI reference lists dtls-tunnel as enabled by default, so this only matters if someone turned it off.

For FortiOS 7.4 tunnel portals, go to VPN > SSL-VPN Portals. Disabling split tunneling sends all client traffic through the VPN. Enabling it routes only selected destinations through the tunnel. Configure the DNS servers and split-DNS domains that match that routing design.

config vpn ssl web portal
    edit "<portal-name>"
        set split-tunneling {enable | disable}
        set split-tunneling-routing-address "<corporate-networks>"
        set dns-server1 <internal-dns-ip>
    next
end

8. Harden FortiGate Administrator Access

Keep HTTPS and SSH management off the public WAN

Fortinet's hardening guide says external WAN access to administrative ports is generally not recommended. Use a trusted management interface or an out-of-band path. If public access is unavoidable, restrict it with trusted hosts or a local-in policy.

Set trusted hosts and administrator MFA

Go to System > Administrators, edit each administrator, define trusted hosts, and enable two-factor authentication. FortiOS supports FortiToken, FortiToken Cloud, email and SMS for administrator MFA. Fortinet recommends creating a second recoverable administrator before enabling MFA on the main account.

config system admin
    edit "<administrator>"
        set trusthost1 <management-subnet> <netmask>
        set two-factor fortitoken
        set fortitoken "<token-serial>"
    next
end

When every administrator has trusted hosts, FortiOS restricts administrative access to those sources, except for ping. Fortinet's hardening guide also recommends changing the default administrative ports and the default admin username to non-standard values. The SSL VPN security best practices recommend a custom SSL VPN listening port instead of the default 10443.

9. Log and Alert on SSL VPN Failures

Enable event logging and send it off-box

Use Log & Report > Log Settings to record event logs and configure FortiAnalyzer, FortiAnalyzer Cloud, FortiGate Cloud or syslog storage. Review SSL VPN records at Log & Report > System Events > VPN Events. The VPN Events view is available when VPN is enabled under Feature Visibility.

config log fortianalyzer setting
    set status enable
    set server <fortianalyzer-ip>
end

config log syslogd setting
    set status enable
    set server <syslog-ip>
end

Alert on repeated SSL VPN login failures, sudden increases in distinct source addresses, disabled logging, authentication changes and administrator changes. FortiAnalyzer's predefined VPN event handler includes SSL VPN login failures and is disabled by default, so review and enable an appropriate handler explicitly. See how to investigate FortiGate SSL VPN failed login attempts.

10. Block Known Attacker Sources

After patching, MFA and access controls, an external IP threat feed can reject known sources in a FortiGate local-in policy before they reach the VPN listener. ThreatListPro covers 5.4M+ IPv4 addresses, is checked for new attackers every 6 hours, and is built from real attacks on live production Palo Alto GlobalProtect VPN portals in the US.

The feed is plain text with one IPv4 address or CIDR per line; single addresses are written as /32. Configure an hourly refresh, or the closest vendor-supported option. The subscriber URL is:

https://api.threatlistpro.com/v1/YOUR_API_KEY/blocklist.txt

Use the FortiGate threat-feed and local-in policy guide for the exact setup. Check FortiGate external connector limits before adding multiple feeds.

Copy This Checklist

Print this page or copy the list into a change record.

What a Block List Can't Do

  • A new IP address's first attempt still reaches the VPN service.
  • Residential proxies can rotate through addresses not yet listed.
  • The ThreatListPro feed is IPv4 only. Protect any IPv6 listener separately.
  • CIDR ranges include addresses that did not each attack. Check your users' source addresses and allow-list trusted networks before enforcement.
  • A block list cannot patch FortiOS, validate a certificate, restrict a portal or replace MFA.
  • It blocks known sources; it does not stop every brute-force or password-spray attempt.

Which Fix Stops What

Control Known vulnerable FortiOS flaw Stolen valid password Repeated failures from one IP Distributed password spray Excessive user access
Patch or disable SSL VPN Primary control No No No No
MFA No Primary control Limits account compromise Limits account compromise No
Login attempt limit No No Temporarily blocks the source Limited value across many IPs No
Source restriction No Only outside allowed sources Outside allowed sources Outside allowed sources No
Group portal mapping No Limits resulting access No No Primary control
Threat feed No Only for listed sources For listed sources For listed sources No
Central logging and alerts Detection only Detection support Detection support Detection support Audit support

Frequently Asked Questions

What are the most important FortiGate SSL VPN security best practices?

Install a Fortinet-supported FortiOS release, review PSIRT advisories, require MFA, use a trusted server certificate, restrict source addresses, map groups to least-privilege portals, set login limits and timeouts, protect management access, and send VPN event logs to centralized storage. Disable SSL VPN entirely when it is not required.

What FortiGate SSL VPN MFA options are available?

Fortinet documents FortiToken Mobile, email tokens, LDAP or RADIUS users with MFA, SAML identity providers such as Microsoft Entra ID and Okta, and certificate-based authentication. Microsoft Authenticator can be used when Microsoft Entra ID enforces MFA. Apply MFA to every VPN user and test an emergency access procedure before deployment.

What is the FortiGate SSL VPN lockout policy?

In FortiOS 7.4, login-attempt-limit under config vpn ssl settings defaults to 2 failed attempts and login-block-time defaults to 60 seconds. A zero value disables the corresponding protection. These settings operate on repeated attempts from a source IP and do not count password failures handled by a SAML identity provider.

Should I disable the FortiGate SSL VPN web portal?

Yes, if users do not require web mode. On FortiOS 7.4.1 and later, web mode is disabled by default on a factory-reset device and can be disabled with set sslvpn-web-mode disable under config system global. If no SSL VPN service is required, disable SSL VPN itself instead.

Does this FortiGate SSL VPN hardening guide apply to FortiOS 7.6.3?

Only partly. FortiOS 7.6.3 removes SSL VPN tunnel mode from every FortiGate model and replaces it with IPsec VPN; existing tunnel-mode settings are not upgraded. SSL VPN web mode remains as Agentless VPN, except on models Fortinet lists as unsupported, including the FortiGate 40F, 60F and 90G series. Migrate tunnel users before upgrading and apply the applicable identity, certificate, logging and management controls to the replacement design.

Can an IP block list replace MFA or patching?

No. A block list can block known source addresses before they reach the portal, but a new IP address can still make its first attempt. Residential proxies can rotate, and the feed is IPv4 only. Use it as an additional edge control after patching, MFA, access restriction and logging.

Sources

Block Known VPN Attacker Sources

ThreatListPro is checked for new attackers every 6 hours. Start with the free vendor controls above, then add the feed as another layer.

Start a 14-day free trial 14 days free, no card needed, then $9.99/month · Or test 200 entries free

Works With All Major Firewalls

ThreatListPro provides a standard plain-text IP blocklist for firewalls that support external lists.

Palo Alto FortiGate pfSense OPNsense SonicWall Cisco ASA Sophos XG UniFi

Related Resources

Continue with the configuration and investigation guides relevant to your environment.