Articles

FortiGate Hardening Best Practices: A Numbered Operator Playbook for Closing the Attack Surface

A sequenced hardening checklist for FortiGate operators covering admin access, TLS policy, zone segmentation, logging, and firmware hygiene, with verification steps and production-safe pitfalls for each control.

R
Retrievy Team
6 min read
FortiGate Hardening Best Practices: A Numbered Operator Playbook for Closing the Attack Surface

FortiGate Hardening Best Practices: A Numbered Operator Playbook

FortiGate appliances sit at the edge of networks that attackers actively probe. Misconfigurations, default credentials, and unpatched firmware have each contributed to real-world breaches, including the wave of exploitation tied to management-plane exposure on internet-facing FortiOS devices. The steps below are sequenced so that each one reduces risk without requiring you to undo the next. Work through them in order, verify before moving on, and flag the pitfalls before you touch production.

All steps apply to FortiOS 7.4.x unless noted. Many apply equally to 7.2.x.


Pre-work: Take a Baseline Snapshot

Before any change, capture the full configuration backup (execute backup full-config ftp ... or via the GUI under System > Backup) and note the current firmware version. You cannot safely roll back without this.


The Checklist

1. Patch firmware to the latest maintained release.

FortiOS has a documented history of critical management-plane and SSL-VPN vulnerabilities. Run get system status to confirm the running version, then cross-reference against the FortiGuard PSIRT advisory page before scheduling the maintenance window.

  • Verify: get system status shows the target version after reboot. HA clusters should show both members at the same version.
  • Pitfall: Upgrading an HA pair without following the documented sequential upgrade path (primary last) causes a failover loop. Always consult the FortiOS upgrade path tool on the Fortinet support portal.

2. Disable administrative access on all WAN-facing interfaces.

Navigate to Network > Interfaces, select each WAN interface, and uncheck HTTPS, HTTP, SSH, Telnet, and PING under Administrative Access. Management should only be reachable via a dedicated OOB interface or through a jump host on a trusted VLAN.

  • Verify: From an external IP, attempt curl -k https://<wan-ip>. Connection should time out, not return a login page.
  • Pitfall: If your team currently manages the device over the WAN interface, disable access only after confirming the OOB or management VLAN path works. Locking yourself out requires physical console access.

3. Restrict the trusted host list for every admin account.

Under System > Administrators, set Trusted Hosts on each account to the specific management subnet CIDR. An empty trusted host field means any IP can attempt authentication.

  • Verify: Log in from an IP outside the trusted range. The session should be rejected with no login prompt.
  • Pitfall: Wildcard entries (0.0.0.0/0) left as a fallback negate the control entirely. Remove them.

4. Enforce multi-factor authentication on all administrator accounts.

FortiOS supports FortiToken (hardware or mobile), email OTP, and RADIUS-based MFA. Assign a token under System > Administrators > Edit. For RADIUS, configure the authentication server under User & Authentication > RADIUS Servers first.

  • Verify: Log out and back in. The workflow should prompt for a second factor before granting access.
  • Pitfall: If the FortiToken Cloud service is unreachable and you have no local fallback, all admins are locked out. Pre-configure an emergency local admin with a hardware token stored offline.

5. Replace the default self-signed certificate with a CA-signed certificate for the admin GUI.

Under System > Certificates, import your certificate and key, then reference it under System > Settings > HTTPS Server Certificate. This prevents MITM attacks against admin sessions and eliminates browser warnings that train operators to click through.

  • Verify: Browser shows a valid certificate chain with no warnings.
  • Pitfall: Uploading a certificate with a mismatched private key causes the GUI to become unreachable. Verify the cert-key pair locally with openssl verify before uploading.

6. Set the admin session timeout to 10 minutes or less and disable concurrent sessions where policy allows.

Under System > Settings, set Idle Timeout to 10 minutes. Concurrent session limits can be set per admin account.

  • Verify: Leave a session idle for 11 minutes and confirm automatic logout.
  • Pitfall: Very short timeouts frustrate operators running long CLI tasks. Use exec telnet or exec ssh sessions for extended work rather than relaxing the GUI timeout.

7. Enforce a strict TLS profile on SSL inspection and admin HTTPS.

Create a custom SSL/SSH Inspection profile under Security Profiles > SSL/SSH Inspection that disables TLS 1.0 and TLS 1.1, and removes weak cipher suites (RC4, 3DES, NULL). Apply it to all firewall policies that perform deep inspection.

  • Verify: Run nmap --script ssl-enum-ciphers -p 443 <mgmt-ip> from a trusted host. Confirm no TLS 1.0/1.1 entries appear.
  • Pitfall: Some legacy internal applications only support TLS 1.1. Audit application TLS support before enforcing the profile fleet-wide or you will break those flows.

8. Enable and tune logging to an external syslog or SIEM destination.

Under Log & Report > Log Settings, configure a remote syslog server (or FortiAnalyzer if licensed). Set the log level to Information for traffic logs and Warning or above for event logs. Confirm log forwarding is encrypted (syslog over TLS).

  • Verify: Generate a test authentication event and confirm it appears in the SIEM within 60 seconds.
  • Pitfall: Leaving logs only on local disk means they are lost if the device is compromised or reset. Local logging also fills disk on busy devices and triggers automatic purging.

9. Disable unused services and features on each interface.

Review Network > Interfaces and disable any service not operationally required: FortiTelemetry, CAPWAP, FMG-Access, and LLDP on untrusted interfaces. Disable the built-in DHCP server on interfaces where it is not authoritative.

  • Verify: Run a port scan against each interface from the appropriate trust zone and confirm only expected services respond.
  • Pitfall: Disabling FMG-Access on a FortiManager-managed device severs central management. Coordinate with the FortiManager team before touching this setting.

10. Apply a Retrievy FortiGate hygiene scan to measure residual exposure.

After completing the manual steps, run a FortiGate hygiene check in Retrievy to surface any controls that did not apply cleanly, configuration drift from policy baselines, and interface-level exposure that manual review may have missed. The scan produces a scored finding list you can track across maintenance cycles.

  • Verify: Finding count and severity scores decrease relative to the pre-hardening baseline scan.
  • Pitfall: A clean scan result reflects the configuration at scan time. Schedule recurring scans, not one-off checks, to catch drift introduced by routine operational changes.

Measuring Success

Hardening is not a one-time event. Track these three metrics after each maintenance cycle:

  • Admin interface exposure: Number of interfaces with any administrative service enabled on untrusted zones. Target is zero.
  • Firmware lag: Days since the running FortiOS version was superseded by a security-relevant patch. Target is under 30 days for critical patches.
  • Unauthenticated log gaps: Periods longer than 5 minutes with no log events forwarded to the SIEM, which may indicate a logging pipeline failure rather than a quiet network.

Hardening degrades over time without enforcement. Pair this checklist with automated configuration monitoring so that a single firewall policy change does not silently undo a control you spent a maintenance window putting in place.

Next step

What does Retrievy find on your stack?

Plug it into one cloud account, one identity domain, or one firewall. Under an hour to the first real audit, with findings mapped to every framework you care about.

Read-only by design. One platform for cloud, identity, and on-prem.