FortiOS-7.2.0-New Features Guide
FortiOS-7.2.0-New Features Guide
FortiOS 7.2.0
FORTINET DOCUMENT LIBRARY
https://docs.fortinet.com
FORTINET BLOG
https://blog.fortinet.com
FORTIGUARD CENTER
https://www.fortiguard.com
FEEDBACK
Email: techdoc@fortinet.com
Change Log 10
Overview 13
GUI 14
General usability enhancements 14
Look up IP address information from the Internet Service Database page 14
Embed real-time packet capture and analysis tool on Diagnostics page 15
Embed real-time debug flow tool on Diagnostics page 19
Display detailed FortiSandbox analysis and downloadable PDF report 23
Display LTE modem configuration on GUI of FG-40F-3G4G model 25
Update naming of FortiCare support levels 7.2.1 27
Add FortiAnswers top three questions to the information pane 7.2.4 28
Security Fabric 32
Fabric settings 32
Automatic regional discovery for FortiSandbox Cloud 32
Follow the upgrade path in a federated update 33
Rename FortiAI to FortiNDR 36
Register all HA members to FortiCare from the primary unit 39
Remove support for Security Fabric loose pairing 42
Allow FortiSwitch and FortiAP upgrade when the Security Fabric is disabled 42
Add support for multitenant FortiClient EMS deployments 7.2.1 44
Add IoT devices to Asset Identity Center page 7.2.1 47
Introduce distributed topology and security rating reports 7.2.1 48
Add IoT vulnerabilities to the asset identity list and FortiGuard IoT security rating
checks 7.2.4 49
Enhance the Fabric Connectors page 7.2.4 52
Add FortiPolicy as Security Fabric device 7.2.4 58
Allow FortiClient EMS connectors to trust EMS server certificate renewals based on
the CN field 7.2.4 63
External connectors 65
SAP external connector 7.2.1 65
Using the REST API to push updates to external threat feeds 7.2.1 68
Support IPv6 dynamic addresses retrieved from Cisco ACI SDN connector 7.2.1 73
Automation stitches 75
Add new automation triggers for event logs 75
Certificate expiration trigger 7.2.1 78
System automation actions to back up, reboot, or shut down the FortiGate 7.2.1 81
Enhance automation trigger to execute only once at a scheduled date and time 7.2.1 85
Security ratings 88
Add PSIRT vulnerabilities to security ratings and notifications for critical vulnerabilities
found on Fabric devices 7.2.1 88
Network 92
SD-WAN 92
Allow application category as an option for SD-WAN rule destination 92
Add mean opinion score calculation and logging in performance SLA health checks 97
2023-04-25 Added Support IPv6 dynamic addresses retrieved from Cisco ACI SDN connector 7.2.1 on page
73.
2023-04-24 Updated Support full extended IPS database for CP9 models and slim extended database for
other physical models on page 401.
2023-04-21 Updated Display detailed FortiSandbox analysis and downloadable PDF report on page 23.
2023-04-13 Updated Allow application category as an option for SD-WAN rule destination on page 92.
2023-03-10 Added Support full extended IPS database for CP9 models and slim extended database for
other physical models on page 401.
2023-03-08 Added Allow FortiClient EMS connectors to trust EMS server certificate renewals based on the
CN field 7.2.4 on page 63.
2023-03-03 Updated Embedded SD-WAN SLA information in ICMP probes 7.2.1 on page 136.
2023-02-24 Updated System automation actions to back up, reboot, or shut down the FortiGate 7.2.1 on
page 81.
2023-02-21 Updated WPA3 enhancements to support H2E only and SAE-PK 7.2.1 on page 513.
Added Support for GCP ARM CPU-based T2A instance family 7.2.4 on page 630.
2023-02-02 Updated Add Fabric Overlay Orchestrator for SD-WAN overlay configurations 7.2.4 on page
159.
2023-02-01 Updated Publishing ZTNA services through the ZTNA portal 7.2.1 on page 335.
2023-01-25 Updated Provision FortiExtender firmware upon authorization 7.2.1 on page 568.
2022-12-30 Added FortiExtender monitoring enhancement 7.2.1 on page 563 and Provision FortiExtender
firmware upon authorization 7.2.1 on page 568.
2022-12-06 Updated Publishing ZTNA services through the ZTNA portal 7.2.1 on page 335.
2022-11-15 Added Add profile support for FortiAP G-series models supporting WiFi 6E Tri-band and Dual 5
GHz modes 7.2.1 on page 506.
2022-11-01 Updated ZTNA inline CASB for SaaS application access control 7.2.1 on page 343.
2022-10-11 Updated Signature packages for IoT device detection on page 316.
2022-09-27 Added ICAP scanning with SCP and FTP on page 413.
2022-09-26 Added Update naming of FortiCare support levels 7.2.1 on page 27.
2022-09-20 Added Introduce distributed topology and security rating reports 7.2.1 on page 48.
2022-08-30 Added Support CORS protocol in explicit web proxy when using session-based, cookie-
enabled, and captive portal-enabled SAML authentication 7.2.1 on page 240, Allow the
YouTube channel override action to take precedence 7.2.1 on page 418, and Synchronizing
LDAP Active Directory users to FortiToken Cloud using the group filter 7.2.1 on page 455.
2022-08-11 Added New default certificate for HTTPS administrative access 7.2.1 on page 257.
Updated Configuring client certificate authentication on the LDAP server on page 443.
2022-08-10 Updated Permanent trial mode for FortiGate-VM 7.2.1 on page 617.
2022-08-09 Added Support backing up configurations with password masking 7.2.1 on page 255.
2022-08-08 Added FortiGate as FortiGate LAN extension 7.2.1 on page 208 and Configure the frequency of
IGMP queries 7.2.1 on page 547.
2022-07-27 Added Add option to disable the FortiGuard IP address rating on page 413.
2022-07-22 Updated BFD for multihop path for BGP on page 174.
2022-06-15 Updated Support Layer 3 roaming for tunnel mode on page 467.
2022-04-21 Added Increase the number of VRFs per VDOM on page 185.
2022-04-18 Added Allow FortiExtender to be managed and used in a non-root VDOM on page 559, Support
up to 30 virtual clusters on page 275, and SNMP OIDs for port block allocations IP pool statistics
on page 182.
2022-04-14 Added Display LTE modem configuration on GUI of FG-40F-3G4G model on page 25, Signature
packages for IoT device detection on page 316, and Show the SSL VPN portal login page in the
browser's language on page 432.
2022-04-13 Added Report wireless client app usage for clients connected to bridge mode SSIDs on page
474.
2022-04-12 Added Add OT asset visibility and network topology to Asset Identity Center page on page 632.
2022-04-11 Added Support 802.1X on virtual switch for certain NP6 platforms on page 180
Updated Allow a LAG on a FortiLink-enabled software switch on page 533, Allow multiple
managed FortiSwitch VLANs to be used in a software switch on page 532, Manage FortiSwitch
units on VXLAN interfaces on page 541, Use wildcard serial numbers to pre-authorize
FortiSwitch units on page 531, and Enhanced FortiSwitch Ports page and Diagnostics and Tools
pane on page 541.
Overview
This guide provides details of new features introduced in FortiOS 7.2. For each feature, the guide provides detailed
information on configuration, requirements, and limitations, as applicable. Features are organized into the following
sections:
l GUI
l Security Fabric
l Network
l System
l Policy and Objects
l Security profiles
l VPN
l User and authentication
l Secure access
l Log and report
l Cloud
l Operational Technology
For features introduced in 7.2.1 and later versions, the version number is appended to the end of the topic heading. For
example, GUI support for advanced BGP options 7.2.1 on page 190 was introduced in 7.2.1. If a topic heading has no
version number at the end, the feature was introduced in 7.2.0.
For a list of features organized by version number, see Index on page 639.
The IP Address Lookup button has been added to allow users to look up IP address information from the Internet Service
Database and GeoIP Database. Returned IP address information includes the reverse IP address/domain lookup,
location, reputation, and other internet service information.
4. Click Close.
This enhancement removes the previous Network > Packet Capture page and replaces it with the Network > Diagnostics
page. The Packet Capture page streams the capture in real-time. It allows users to select a packet and view its header
and payload information in real-time. Once completed, packets can be filtered by various fields or through the search
bar. The capture can be saved as a PCAP file for further analysis.
In the CLI, some options under config firewall sniffer have been removed.
b. Advanced: enter a string, such as src host 172.16.200.254 and dst host 172.16.200.1 and dst port 443.
5. While the capture is running, select a packet, then click the Headers or Packet Data tabs to view more information.
6. When the capture is finished, click Save as pcap. The PCAP file is automatically downloaded.
7. Optionally, use the Search bar or the column headers to filter the results further.
The packet capture history is listed under Recent Capture Criteria in the right-side of the screen. Clicking the
hyperlink will take you back to the main page with the interface and filter settings already populated.
For more granular sniffer output with various verbose settings, use diagnose sniffer
packet <interface> <'filter'> <verbose> <count> <tsformat>. See
Performing a sniffer trace in the FortiOS Administration Guide for more details.
The following options have been removed from config firewall sniffer:
config firewall sniffer
edit <id>
set ipv6 {enable | disable}
set non-ip {enable | disable}
set host <string>
set port <string>
set protocol <string>
set vlan <string>
set max-packet-count <integer>
next
end
Debug flows can now be executed from the GUI using the Network > Diagnostics > Debug Flow page. Debug flow output
is displayed in real-time until it is stopped. The completed output can be filtered by time, message, or function. The
output can be exported as a CSV file.
b. Advanced: filter by Source IP, Source port, Destination IP, Destination port, and Protocol, which is the
equivalent of:
l # diagnose debug flow filter saddr <addr/range>
3. Click Start debug flow. The debug messages are visible in real-time.
4. When the debug flow is finished (or the user clicks Stop debug flow), click Save as CSV. The CSV file is
automatically downloaded.
The current output can be filtered by Time and Message. The Function field can be added.
5. Hover over the table header and click the gear icon (Configure Table).
6. Select Function and click Apply. The Function column is displayed and can be used to filter the output for further
analysis.
In the Top FortiSandbox Files FortiView monitor, users can select a submitted file and drill down to view its static and
dynamic file analysis. The full FortiSandbox report can be downloaded in PDF format. This feature works with FortiGate
Cloud Sandbox, FortiSandbox Cloud, and FortiSandbox appliance. FortiSandbox must be running version 3.2.1 and
later.
Prerequisites:
1. Add FortiSandbox to the Security Fabric (see Sandboxing in the FortiOS Administration Guide).
2. Configure an AV profile with Send files to FortiSandbox for inspection enabled (see Using FortiSandbox with
antivirus in the FortiOS Administration Guide).
3. Configure a firewall policy with the AV profile that allows traffic to the internet.
4. Add the Top FortiSandbox Files FortiView monitor (see Adding FortiView monitors in the FortiOS Administration
Guide).
5. On a client PC, attempt to download a suspicious file.
1. Go to Dashboard > Top FortiSandbox Files. The entry appears in the table, but the analysis is not available yet.
2. After about five to ten minutes, refresh the table. The analysis is available.
3. Select the entry, then right-click and select Drill Down to Details.
4. In the dropdown, select Static File Analysis to view the static file analysis.
5. In the dropdown, select the client device to view the dynamic file analysis.
6. Click Download full report to download the detailed PDF report. The reports contains FortiSandbox job information,
detailed file information, static analysis results, and dynamic analysis results.
Starting in FortiOS 7.2.4, PDF reports are downloaded on-demand and only 10 are kept in memory by default. PDFs are
deleted from memory after 24 hours.
The range is 1 - 10, and the default is 10. After the FortiGate is restarted, this value will revert to the default.
Administrators can view the LTE modem configuration for the FortiGate 40F-3G4G model on the Network > Interfaces
page. The LTE modem interface appears as wwan in the GUI.
In the right-side banner, you can also upgrade the firmware or primary rate interface (PRI) and view modem details and
SIM status.
1. Go to Network > Interfaces.
2. Select the wwan interface, and click Edit. The right-side banner displays details about the modem and the Upgrade
button for firmware and PRI.
In the right-side banner, the LTE modem area displays the model, International Mobile Equipment Identity (IMEI)
number, and firmware version of the modem. The SIM status area displays the working SIM slot number, the carrier
name, and the International Mobile Subscriber Identity (IMSI) for the modem.
5. Click Browse to select the firmware file or PRI file, and upgrade the modem.
Starting LTE Modem firmware upgrade, please don't power off your device
until the whole process is done!
LTE Modem firmware upgrade routine will run in the background.
In the Licenses widget on the Dashboard > Status page, the FortiCare Support tooltip displays the corresponding
support level associated with the account: Essential, Premium, or Elite in the Enhanced Support field.
The information pane, which is located in the right-side gutter of many GUI pages, is enhanced to display the top three
contextually appropriate questions under the Hot Questions at FortiAnswers heading.
Clicking a link in the Hot Questions at FortiAnswers section takes the user to the related questions and answer page on
the FortiAnswers website. For example, on the Network > Interfaces > Create New > Interface > New Interface page,
there are three links displayed. The number of answers, votes, and views is also included for each question.
In this example, clicking the What does enabling DNS service on an interface actually do? link takes the user to the
corresponding What does enabling DNS service on an interface actually do? page on FortiAnswers.
Within FortiAnswers, users can click the ⋀ and ⋁ arrows to up or down vote an answer, or click CREATE to ask a
question, post an idea, or post an article. Users must be signed in to an active account to use these functions.
Clicking the See More link in the Hot Questions at FortiAnswers section takes the user to the related topic page on
FortiAnswers. In this example, the link goes to the Interface page on FortiAnswers.
If there are no related questions available on FortiAnswers, a Join the Discussion link is displayed in the Hot Questions
at FortiAnswers section.
Clicking the Join the Discussion link takes the user to the FortiAnswers homepage.
Fabric settings
This section includes information about Security Fabric settings related new features:
l Automatic regional discovery for FortiSandbox Cloud on page 32
l Follow the upgrade path in a federated update on page 33
l Rename FortiAI to FortiNDR on page 36
l Register all HA members to FortiCare from the primary unit on page 39
l Remove support for Security Fabric loose pairing on page 42
l Allow FortiSwitch and FortiAP upgrade when the Security Fabric is disabled on page 42
l Add support for multitenant FortiClient EMS deployments 7.2.1 on page 44
l Add IoT devices to Asset Identity Center page 7.2.1 on page 47
l Introduce distributed topology and security rating reports 7.2.1 on page 48
l Add IoT vulnerabilities to the asset identity list and FortiGuard IoT security rating checks 7.2.4 on page 49
l Enhance the Fabric Connectors page 7.2.4 on page 52
l Add FortiPolicy as Security Fabric device 7.2.4 on page 58
l Allow FortiClient EMS connectors to trust EMS server certificate renewals based on the CN field 7.2.4 on page 63
The FortiGate will automatically connect to fortisandboxcloud.com, and then discover the specific region and server to
connect to based on which region the customer selected to deploy their FortiSandbox Cloud instance. FortiSandbox
Cloud 4.0.0 (or later) is required for this functionality. The FortiGate must have a FortiCloud premium account license
and a FortiSandbox Cloud VM license.
i. Go to Security Fabric > Fabric Connectors and double-click the Cloud Sandbox card.
ii. Set Status to Enable.
iii. For Type, select FortiSandbox Cloud.
iv. Click OK.
2. Verify the quarantine daemon debug output. Currently, the FortiGate connects to fortisandboxcloud.com:
# diagnose debug application quarantine -1
...
__quar_start_connection()-961: start server fortisandbox-fsb1-66.35.19.98 in vdom-3
__quar_oftp_get_oif()-930: dev fortisandbox-fsb1 get oif 0
...
3. Once the FortiGate connects to the FortiSandbox controller, it receives the region information and attempts to
connect to the specific regional server (ca-west-1):
# diagnose debug application quarantine -1
...
__quar_remote_connect()-806: oftp_connect region server: ca-west-
1.fortisandboxcloud.com.
__quar_start_connection()-962: start server fortisandbox-fsb1-66.35.19.98 in vdom-0
...
When performing a Fabric upgrade or non-Fabric upgrade under System > Fabric Management and choosing a firmware
that requires multiple builds in the upgrade path, the FortiGate can follow the upgrade path to complete the upgrade
automatically. This can be performed immediately or during a scheduled time.
The System > Firmware page in the tree menu has been removed. The System > Firmware shortcut in the top-right
dropdown (username menu) has also been removed. It was replaced with a shortcut to the Fabric Management page.
To demonstrate the functionality of this feature, this example uses FortiGates that are running
and upgrading to fictitious build numbers.
FortiAPs and FortiSwitches currently cannot follow the upgrade path. They upgrade directly to
the target version.
Example
In this example, the Security Fabric consists of a root FortiGate (FGT_101E) and a downstream FortiGate (GA_A_1).
The FortiGates are currently running FortiOS 7.2.1 (build 0510). The administrator wants to upgrade the firmware to
version 7.4.0 (build 0810). When upgrading the firmware on the Fabric Management page, the FortiGate is able to
display the upgrade path, 7.2.1 > 7.2.2 > 7.4.0, and perform all of the upgrades in sequence (with multiple reboots).
1. Go to System > Fabric Management and click Fabric Upgrade. The Fabric Upgrade pane opens.
2. In the Select Firmware section, select All Upgrades.
l If Directly upgrade to v7.4.0 is selected, a warning message appears that this may result in the loss of
configuration.
5. Click Next.
6. Select an upgrade schedule, either Immediate or Custom. If using Custom, enter an upgrade date and time
(Custom is used in this example).
The Upgrade Status for both FortiGates indicated when the scheduled upgrade will take place. In this example, the
first upgrade in the path is to version 7.2.2. The FortiGates will reboot and then upgrade to 7.4.0 as per the upgrade
path.
Once the upgrades are complete and both FortiGates are running the desired firmware (7.4.0), the Upgrade Status
changes to Up to date.
FortiAI has been renamed FortiNDR in the GUI and CLI to align with the FortiNDR rebranding. Previous CLI-only
settings for sending files to FortiNDR for inspection can be configured from the AntiVirus profile Page in the GUI.
FortiNDR is still referred to as fai or FAI in debug traces from diagnose sys scanunit
debug all.
The Fabric connector Type has been updated to FortiNDR, which is visible in the connector tooltip. In this example, the
connector is running version 1.5.3, so the connector name still begins with FAI.
In this example, the connector is running version 7.0.0, so the connector name has changed to FortiNDR-VM.
When creating or editing an antivirus profile, there is an option in the ATP Protection Options section to Send files to
FortiNDR for inspection. FortiNDR must be configured and inspecting at least one protocol to enable this option.
The replacement message for blocked files by FortiNDR follows the Virus Block Page format (antivirus scan).
To enable FortiNDR:
The eventtype, msg, dtype, faiaction, faiseverity, faiconfidence, faifileid, and faifiletype fields
have been updated to reference FortiNDR.
Sample log
Primary and secondary HA members can be registered to FortiCare at the same time from the primary unit. The
secondary unit will register through the HA proxy.
A new FortiCare Register button is displayed in various Fabric related pages and widgets. There are two methods to
access the Register button:
l Right-click on a device in a topology.
Security Fabric > Physical Topology page:
System > HA page:
The FortiCare Register button is available for FortiGates, manged FortiSwitches, and
managed FortiAPs.
Clicking Register opens the Device Registration pane. If a device is already registered, the pane still opens and displays
the device information.
Example
4. Enter the required FortiCloud account information (password, country or region, reseller) and click Submit.
5. Once the registration is complete, click Close.
Security Fabric loose pairing support is removed for FortiADC, FortiDDoS, and FortiWLC.
Devices that support tight pairing and loose pairing, such as FortiMail and FortiWeb, must be reconfigured to use tight
pairing after upgrading. For other Fabric devices, such as FortiADC, FortiDDoS, and FortiWLC, the Security Fabric
support must be configured on the device to pair with the FortiGate so they can join the Security Fabric after upgrading
FortiOS.
In the GUI:
l The Create New button is removed from the Security Fabric > Fabric Connectors page.
l Loose pairing devices are not visible in topology pages or the Topology tree.
In the CLI:
l The diagnose sys csf fabric-device command is removed.
l The config fabric-device setting under config system csf is removed.
Allow FortiSwitch and FortiAP upgrade when the Security Fabric is disabled
When the Security Fabric is disabled for a FortiGate with managed devices, such as managed FortiSwitch and FortiAP
devices, the System > Fabric Management > Fabric Upgrade GUI option remains visible to help you manage all devices.
Administrators can use the System > Fabric Management pane to start a federated upgrade on a non-Security Fabric
FortiGate with managed devices.
In this example, a FortiGate manages a FortiSwitch and a FortiAP, and the Security Fabric is disabled.
1. Go to System > Fabric Management. In this example, version 7.0.5 is available for the FGT-F-VM device.
2. Click Fabric Upgrade. The Fabric Upgrade pane opens at the Select Firmware step, and the Latest tab is selected.
In this example, version 7.0.5 is displayed on the Latest tab.
3. On the Latest tab, select the version, and click Next. The wizard proceeds to the Choose Schedule step.
4. Choose to upgrade immediately, or create a custom upgrade schedule, and click Next:
l Click Immediate to upgrade immediately.
5. Review the firmware versions, and click Confirm and Backup Config. The configuration is backed up, and the
upgrade proceeds.
After the upgrade completes, the Firmware Version displays 7.0.5 build0304, and the Firmware Status displays Up
to date for the FGT-F-VM.
When FortiClient EMS multitenancy is configured, a FortiClient EMS site is no longer unique using its serial number
alone. The FortiGate configuration for FortiClient EMS connectors and related diagnostic commands have been
enhanced to distinguish EMS sites using their serial number and tenant ID.
This feature includes the following enhancements:
l Update config endpoint-control fctems to predefine five FortiClient EMS Fabric connectors that are
referred to using numerical IDs from 1 to 5. Administrators can configure the status and name settings, and to
display the tenant ID retrieved from FortiClient EMS sites with Manage Multiple Customer Sites enabled.
config endpoint-control fctems
edit {1 | 2 | 3 | 4 | 5}
A single tenant EMS server or the default site on a multitenant EMS server has a tenant ID consisting of all zeros
(00000000000000000000000000000000).
For more details about Enabling and configuring multitenancy, refer to the FortiClient EMS Administration Guide.
The Manage Multiple Customer Sites setting is enabled on the System Settings > EMS Settings page in FortiClient
EMS.
l Update the FortiClient EMS Fabric connector to retrieve specific ZTNA tags from each configured FortiClient EMS
site.
l Update diagnose endpoint record list to return the EMS tenant id field retrieved from each respective
FortiClient EMS server.
l Update ZTNA and EMS debug commands to accept the EMS serial number and tenant ID as parameters.
# diagnose endpoint lls-comm send ztna find-uid <uid> <EMS_serial_number> <EMS_tenant_
id>
# diagnose wad dev query-by uid <uid> <EMS_serial_number> <EMS_tenant_id>
- UID: 2E90E8F7ABAD4D1F8B615AD58A0982C9
- EMS Fabric ID: FCTEMS0000000001 :00000000000000000000000000000000
- Domain: ad864r2.com
- User: Administrator
- Owner:
- Certificate SN: 19C72E7FC417E438AB2ED219FF435718FE164E88
- online: true
- Routes (1):
-- Route #0: IP=21.21.21.198, vfid=0
- FWAddrNames (2):
-- Name (#0): EMS5_ZTNA_all_registered_clients
-- Name (#1): EMS5_ZTNA_ems1_management_tag
received 1 messages.
IoT device information is added to the Security Fabric > Asset Identity Center page, including the device name, software
OS, hardware vendor, status, IP address, hostname, time last seen, port, VLAN, and so on.
The following are required for IoT devices to be displayed on the Asset Identity Center page:
1. The FortiGate must have a valid IoT Detection Service license (see Signature packages for IoT device detection on
page 316).
2. Device detection must be configured on a LAN interface used by IoT devices.
The Security Fabric backend has been improved to allow physical topology, logical topology, and security rating report
information to be gathered by distributed means through each downstream FortiGate device. This results in less delays
and memory usage on the Fabric root, and less API calls to the downstream devices.
For example, in a Security Fabric configured with 35 downstream devices, the following output shows normal CPU and
memory usage.
Add IoT vulnerabilities to the asset identity list and FortiGuard IoT security rating
checks - 7.2.4
IoT devices with known vulnerabilities are displayed on the Security Fabric > Asset Identity Center page's Asset list view.
Hovering over the vulnerabilities count displays a View IoT Vulnerabilities tooltip, which opens the View IoT
Vulnerabilities table that includes the Vulnerability ID, Type, Severity, Reference, Description, and Patch Signature ID.
Each entry in the Reference column includes the CVE number and a link to the CVE details.
To detect IoT vulnerabilities, the FortiGate must have a valid IoT Detection Service license,
device detection must be configured on a LAN interface used by IoT devices, and a firewall
policy with an application control sensor must be configured. See Signature packages for IoT
device detection on page 316 and Add IoT devices to Asset Identity Center page 7.2.1 on
page 47 for more details.
1. Go to Security Fabric > Asset Identity Center. Ensure the Asset list view is selected.
2. Select a device with IoT vulnerabilities.
3. Hover over the IoT Vulnerabilities count to view the tooltip and click View IoT Vulnerabilities. A table with the list of
vulnerabilities and related information for the device is displayed, including the CVE references and descriptions.
4. Click a hyperlink in the Reference column to view more information about the CVE, or click Close.
The Security Fabric > Security Rating > Security Posture report includes two rating checks related to IoT vulnerabilities:
l The FortiGuard IoT Detection Subscription rating check will pass if the System > FortiGuard page shows that the
IoT Detection Service is licensed. In this example, the result is marked as Passed because the license is valid.
l The FortiGuard IoT Vulnerability rating check will fail if any IoT vulnerabilities are found. In this example, the result is
marked as Failed because there is a device with IoT vulnerabilities.
In the Recommendations section, hover over the device name to display the tooltip, which includes an option to
View IoT Vulnerabilities.
The Security Fabric > Fabric Connectors page has been enhanced to show a high-level overview of the Fabric
components that are enabled and how they connect to each other. The System > Fabric Management page can be used
to register and authorize Security Fabric devices instead of using the Security Fabric network topology gutter, which has
been removed from the Security Fabric > Fabric Connectors page.
The following changes have been made to the Security Fabric > Fabric Connectors page:
l Improve the Security Fabric Setup configuration settings to select the Security Fabric role (standalone, root, or
downstream) instead of just enabling the Security Fabric itself.
l Merge relevant connectors into Core Network Security Connectors and Security Fabric Connectors sections.
l The Core Network Security Connectors section includes the Security Fabric Setup, Logging & Analytics,
Connectors cards.
l Add the LAN Edge Devices card that displays information about the LAN edge devices (FortiGates, FortiAPs,
FortiSwitches, and FortiExtenders) including the device type, number of devices, and number of unregistered and
unauthorized devices.
l Add the Supported Connectors card that displays the icons of different Fortinet devices that support full Security
Fabric integration. Clicking the card displays a list of cards with device names that link to documentation to
configure these devices in the Security Fabric since they do not have separate connector settings.
l Remove the IPAM connector.
1. Go to Security Fabric > Fabric Connectors and double-click the Security Fabric Setup card.
2. Select the Settings tab and set the Security Fabric role to Serve as Fabric Root.
3. Configure the remaining settings as needed.
4. Click OK.
Logging & Analytics is a new card that combines the settings from the previous FortiAnalyzer Logging and Cloud
Logging cards into a single connector to configure the FortiAnalyzer, FortiGate Cloud, and FortiAnalyzer Cloud settings.
In this example, FortiAnalyzer and FortiGate Cloud are enabled.
1. Go to Security Fabric > Fabric Connectors and double-click the Logging & Analytics card.
2. Select the Settings tab, select the FortiAnalyzer tab, and set the Status to Enabled.
3. Configure the remaining settings as needed.
4. Select the Cloud Logging tab, and set the Type to FortiGate Cloud.
5. Click OK.
FortiClient EMS is an updated card that combines the settings from the previous individual FortiClient EMS connector
cards into one card. There are separate sections within the Settings tab to configure each EMS entry.
1. Go to Security Fabric > Fabric Connectors and double-click the FortiClient EMS card.
2. Select the Settings tab and set the Status to Enabled.
3. Configure the remaining settings as needed.
4. Click OK.
LAN Edge Devices is a new card that displays a summary about the LAN edge devices. This includes FortiGates,
FortiAPs, FortiSwitches, and FortiExtenders. Information about the device type, number of devices, and number of
unregistered and unauthorized devices is displayed. If there are devices that do not have a green checkmark in the
Status column, hover over the status message to view the tooltip with required action. In this example, there are
downstream FortiGates that require authorization. The tooltip includes a link to the System > Fabric Management page
to authorize the FortiGates.
Central Management is a new card that replaces the settings from the previous FortiManager card. In this example, on-
premises FortiManager is enabled.
1. Go to Security Fabric > Fabric Connectors and double-click the Central Management card.
2. Set the Status to Enabled.
3. Set the Type to On-Premises.
4. Configure the remaining settings as needed.
5. Click OK.
Sandbox connector
Sandbox is a new card that combines the settings from the previous FortiSandbox and Cloud Sandbox cards into a
single connector to configure the sandboxing settings. In this example, FortiSandbox Cloud is enabled.
1. Go to Security Fabric > Fabric Connectors and double-click the Sandbox card.
2. Set the Status to Enabled.
3. Set the Type to FortiSandbox Cloud.
4. Click OK.
Supported Connectors
Supported Connectors is a new card that displays the icons of different Fortinet devices that support full Security Fabric
integration. Supported connectors do not have separate connector settings within FortiOS. Clicking the Supported
Connectors card displays a list of cards with compatible device names.
Clicking a device name card links to documentation that explains how configure it in the Security Fabric. Once the device
is configured, it can be authorized on the System > Fabric Management page in FortiOS.
FortiPolicy can be added to the Security Fabric. When FortiPolicy joins the Security Fabric and is authorized in the
Security Fabric widget, it appears in the Fabric topology pages. A FortiGate can grant permission to FortiPolicy to
perform firewall address and policy changes. Two security rating tests for FortiPolicy have been added to the Security
Posture scorecard.
1. Enable the Security Fabric (see Configuring the root FortiGate and downstream FortiGates in the FortiOS
Administration Guide) with the following settings:
a. Configure the interface to allow other Security Fabric devices to join.
b. Enable Allow downstream device REST API access and select an Administrator profile.
2. In FortiPolicy, edit the Security Fabric settings (this example assumes a root FortiGate has already been configured,
see Creating a fabric connector in the FortiPolicy Administration Guide):
a. Go to Configuration > Security Fabric and select Edit current security fabric settings.
b. Enter the root FortiGate's IP address.
c. Set the Port (the default is 8013).
d. Select a FortiPolicy security policy.
4. In FortiPolicy, refresh the Configuration > Security Fabric page. and verify that the connection status is Connected
(Authorized).
end
end
6. Go to Security Fabric > Physical Topology or Security Fabric > Logical Topology to view more information.
Physical topology view:
1. Create a policy in FortiPolicy (see Customizing policies in the FortiPolicy Administration Guide).
In this example, a default security policy rule called PC71O_External_2 is created. Since the FortiPolicy is
integrated in the Security Fabric, it will use the REST API to push the static policy, dynamic firewall objects, and
service objects to the root FortiGate.
2. In FortiOS, go to Policy & Objects > Firewall Policy to view the policy named PC71O_External_2.
3. Go to Policy & Objects > Addresses to view the dynamic firewall address associated with the policy
(FPLVM1TM23000000_Oth_Default_PC71).
4. Go to Policy & Objects > Services to view the service objects associated with the policy (seg_DNS_UDP, seg_
UDP_443, seg_HTTPS, and seg_TCP_8013).
There are two security rating tests pertaining to FortiPolicy available on the Security Posture scorecard:
l Admin Password Policy ensures that there is password policy in place for system administrators. In this result, the
test is marked as Passed because there is a login rule configured in FortiPolicy with Local Password Criteria
enabled.
l Admin Password Security ensures that the password policy enforces secure passwords. In this result, the test is
marked as Failed because the password policy does not include set variables for the Local Password Criteria.
See Users in the FortiPolicy Administration Guide for more information about configuring these settings.
Allow FortiClient EMS connectors to trust EMS server certificate renewals based on
the CN field - 7.2.4
the CN field
When a FortiGate establishes a Fabric connection with FortiClient EMS, the FortiGate must trust the CA that signed the
server certificate. Previously, upon the user's approval of the certificate, the certificate fingerprint was saved on the
FortiGate. This required the FortiGate to re-authorize the EMS connection each time the server certificate is updated.
With this enhancement, upon the approval of the EMS certificate, the FortiGate saves the CN field and will trust future
certificates that are signed by the same CA and have the same CN field. This allows EMS servers to update their
certificates at regular intervals without requiring re-authorization on the FortiGate side, as long as the CN field matches.
This prevents interruptions to the EMS Fabric connection when a certificate is updated.
config endpoint-control fctems
edit <id>
set trust-ca-cn {enable | disable}
next
end
This feature is supported for EMS on-premise and cloud connections, and is the new default setting. To authorize based
on the certificate fingerprint, disable the trust-ca-cn setting. If the setting is changed back to be enabled at a later
time, the user will have to re-approve the EMS certificate.
To configure the EMS Fabric connector to trust EMS server certificate renewals based on the CN field:
External connectors
This section includes information about SDN connector related new features:
l SAP external connector 7.2.1 on page 65
l Using the REST API to push updates to external threat feeds 7.2.1 on page 68
l Support IPv6 dynamic addresses retrieved from Cisco ACI SDN connector 7.2.1 on page 73
The SAP external Fabric connector allows the FortiGate to connect to an SAP instance to synchronize dynamic address
objects and ports for SAP workloads. These address objects can be used in firewall policies to grant access control to
dynamic SAP workloads.
f. Click OK.
2. Configure a network service associated with the configured SAP SDN connector:
a. Go to Policy & Objects > Internet Service Database, select the Network Services tab, and click Create New.
b. Enter a Name (sap-instance1).
c. Set SDN connector to sap-s4-docker.
d. Select a filter, such as InstanceNumber=1. The available filters are for HostName, InstanceNumber, and
ServiceName.
e. Click OK.
3. Ensure that the SAP SDN connector resolves dynamic network services:
a. Go to Policy & Objects > Internet Service Database, select the Network Services tab.
b. Hover over the sap-instance1 and click View Resolved Entries.
2. Configure a network service associated with the configured SAP SDN connector (available filters are HostName,
InstanceNumber, and ServiceName):
config firewall network-service-dynamic
edit "sap-instance1"
set sdn "sap-s4-docker"
set filter "InstanceNumber=1"
next
end
4. Configure a firewall policy with the resolved dynamic network service as the destination:
config firewall policy
edit 2
set name "FGT97-service-dynamic"
set srcintf "port3"
set dstintf "port10"
set action accept
set srcaddr "all"
set internet-service enable
set network-service-dynamic "sap-instance1"
set schedule "always"
set nat enable
next
end
Using the REST API to push updates to external threat feeds - 7.2.1
When configuring a FortiGuard Category, Malware Hash, IP Address, or Domain Name threat feed from the Security
Fabric > External Connectors page, selecting the Push API update method provides the code samples needed to
perform add, remove, and snapshot operations. The code samples can be used to perform updates on the external
threat feeds.
In the following example, a FortiGuard Category threat feed is used to show the different API push options.
5. Click OK. The Threat Feed Push API Information pane opens that contains the following fields:
l URL: the FortiGate's API URL to call in order to perform the update.
l API admin key: when an API administrator user is configured on the FortiGate, an API admin key will be
associated with the API administrator. Input the API key to see the final cURL request.
l Push command: select one of three push methods.
l Add: add the specified entries to the threat feed.
l Entries: enter the entries separated by a comma (,) to be applied to the FortiGuard Category threat feed list.
l Sample cURL request: copy this cURL command to perform the push API update on the FortiGate against the
list (cccccccc).
See REST API administrator in the FortiOS Administration Guide for more information.
6. Copy the content in the Sample cURL request field (Add is used in this example).
7. Click OK.
8. On a client, generate the API request for the threat feed.
9. Go to Security Fabric > External Connectors and edit the connector.
10. In the right-side pane, click View Entries to view the list of entries for the threat feed.
Sample:
{
"commands":[
{
"name":"ip",
"command":"add",
"entries":[
"10.10.10.1",
"10.10.10.2"
]
},
{
"name":"fqdn",
"command":"remove",
"entries":[
"10.10.10.1",
"10.10.10.2"
]
},
{
"name":"fortiguard",
"command":"snapshot",
"entries":[
"10.10.10.1",
"10.10.10.2"
]
}
]
}
HTTP/1.1 200 OK
date: Fri, 22 Jul 2022 21:10:39 GMT
x-frame-options: SAMEORIGIN
content-security-policy: frame-ancestors 'self'
x-xss-protection: 1; mode=block
cache-control: no-cache, must-revalidate
content-length: 480
content-type: application/json
Connection: keep-alive
"http_method":"POST",
"results":[
{
"name":"ip",
"command":"add",
"status":"success"
},
{
"name":"fqdn",
"command":"remove",
"status":"success"
},
{
"name":"fortiguard",
"command":"snapshot",
"status":"success"
}
],
"vdom":"vd1",
"path":"system",
"name":"external-resource",
"action":"dynamic",
"status":"success",
"serial":"FG6H1E5819900000",
"version":"v7.2.1",
"build":1254
}
Support IPv6 dynamic addresses retrieved from Cisco ACI SDN connector - 7.2.1
IPv6 dynamic addresses can be retrieved from Cisco ACI SDN connectors. IPv6 addresses imported from Cisco ACI to
the Fortinet SDN Connector VM can be imported into the FortiGate as IPv6 dynamic addresses. The Fortinet SDN
Connector VM must be running version 1.1.10 or later.
config firewall address6
edit <name>
set type dynamic
set sdn <ACI_connector>
next
end
The following example assumes the Fortinet SDN Connector VM has already connected to Cisco ACI and learned the
IPv6 addresses. See Configuring the SDN Connector in the Cisco ACI Administration Guide for more information. The
Dynamic Address List values for the DN with the filter tn-Fortinet/ap-ApplicationProfile/epg-App1 is used in this example.
3. Configure the IPv6 dynamic firewall address (filters for tenant and endpoint group are used in this example):
config firewall address6
edit "aci-add6-App1"
set type dynamic
set sdn "aci_64.115_115"
set color 17
set tenant "Fortinet"
set epg-name "App1"
next
end
ADDR(2001:cafe:b9a7:793a:abc4:9c29:385b:6e11)
ADDR(2001:cafe:1880:e8d5:21af:4837:854:603c)
ADDR(2001:cafe:f00f:8d5b:f4f9:ab2c:98fe:32c0)
Automation stitches
This section includes information about automation stitches related new features:
l Add new automation triggers for event logs on page 75
l Certificate expiration trigger 7.2.1 on page 78
l System automation actions to back up, reboot, or shut down the FortiGate 7.2.1 on page 81
l Enhance automation trigger to execute only once at a scheduled date and time 7.2.1 on page 85
Six new automation triggers have been added based on event log categories:
l Anomaly logs
l IPS logs
l SSH logs
l Traffic violations
l Virus logs
l Web filter violations
When multi VDOM mode is enabled, individual VDOMs can be specified so that the trigger is only applied to those
VDOMs.
config system automation-trigger
edit <name>
set event-type {ips-logs | anomaly-logs | virus-logs | ssh-logs | webfilter-
violation | traffic-violation}
set vdom <name>
next
end
Example
In this example, an automation stitch is created that uses an anomaly logs trigger and an email notification action. The
trigger specifies which VDOMs should be used. There is a three-second delay between the trigger and action.
To configure an automation stitch with the anomaly logs trigger in the GUI:
d. Click OK.
2. Configure the action:
a. Go to Security Fabric > Automation, select the Action tab, and click Create New.
b. In the Notifications section, click Email and enter the following:
Name email_default_rep_message
c. Click OK.
3. Configure the stitch:
a. Go to Security Fabric > Automation, select the Stitch tab, and click Create New.
b. Enter the name, anomaly-logs-stitch.
c. Click Add Trigger. Select anomaly-logs and click Apply.
d. Click Add Action. Select email_default_rep_message and click Apply.
e. Click Add delay (between the trigger and action). Enter 3 and click OK.
f. Click OK.
To configure an automation stitch with the anomaly logs trigger in the CLI:
Verification
Once the anomaly log is generated, the automation stitch is triggered end the email notification is sent.
type:anomaly logs
field ids:
(id:6)vd=root,vdom-nat,vdom-tp
The local certificate expiry trigger (local-certificate-near-expiry) can be used in an automation stitch if a user-
supplied local certificate used for SSL VPN, deep inspection, or other purpose is about to expire. This trigger relies on a
VPN certificate setting in the CLI configuration setting for the certificate log expiring warning threshold:
config vpn certificate setting
set cert-expire-warning <integer>
end
cert-expire-warning Set the certificate log expiring warning threshold, in days (0 - 100, default = 14).
<integer>
Example
In this example, the local certificate expiry trigger is used with an email notification action to remind an administrator to
re-sign or load a new local certificate to avoid any service interruptions. The local certificate, fw-cert-30-days, will expire
in 30 days. The certificate log expiring warning threshold is set to 31 days.
To configure an automation stitch with the local certificate expiry trigger in the GUI:
Description Default automation trigger configuration for when a local certificate is near
expiration.
c. Click OK.
2. Configure the action:
a. Go to Security Fabric > Automation, select the Action tab, and click Create New.
b. In the Notifications section, click Email, and enter the following:
Name email_no_rep_message
c. Click OK.
3. Configure the stitch:
a. Go to Security Fabric > Automation, select the Stitch tab, and click Create New.
b. Enter the name, cert-expiry.
c. Click Add Trigger. Select Local Cert Expired Notification and click Apply.
d. Click Add Action. Select email_no_rep_message and click Apply.
e. Click OK.
To configure an automation stitch with the local certificate expiry trigger in the CLI:
Verification
Once the event log is generated for the local certificate expiry, the automation stitch is triggered end the email notification
is sent.
stitch: cert-expiry
System automation actions to back up, reboot, or shut down the FortiGate - 7.2.1
The System Action automation action can be used to back up the configuration of the FortiGate, reboot the FortiGate, or
shut down the FortiGate.
These actions can occur even if the FortiGate is in conserve mode, and allows the automation stitch to bypass the CLI
user confirmation prompts, which the CLI script action does not support.
config system automation-action
edit <name>
set action-type system-actions
set system-action {reboot | shutdown | backup-config}
next
end
Example
In this example, an automation stitch is created that uses a low-memory event trigger, a backup-config action to
back up the configuration to the FortiGate's disk, and then a reboot action to reboot the FortiGate. There is a 120-
second delay between the two actions.
d. Click OK.
c. Click OK.
3. Configure the reboot action:
a. Go to Security Fabric > Automation, select the Action tab, and click Create New.
b. In the General section, click System Action and enter the following:
Description Default automation action configuration for rebooting this FortiGate unit.
Action Reboot
c. Click OK.
4. Configure the stitch:
a. Go to Security Fabric > Automation, select the Stitch tab, and click Create New.
b. Enter the name, system-action-stitch.
c. Click Add Trigger. Select conserver-mode and click Apply.
d. Click Add Action. Select Backup Config Disk and click Apply.
e. Click Add Action. Select Reboot FortiGate and click Apply.
f. Click Add delay (between the actions). Enter 120 and click OK.
g. Click OK.
Verification
When the FortiGate enters conserve mode due to low memory, the automation stitch will be triggered and it will back up
the configuration to the FortiGate disk, then reboot the FortiGate.
stitch: system-action-stitch
1. Click on the user name in the upper right-hand corner of the screen and select Configuration > Revisions.
2. Click the + in the table to expand and view more details.
Enhance automation trigger to execute only once at a scheduled date and time - 7.2.1
The Schedule automation trigger has been updated to allow one-time triggers that occur only once at a specified date
and time. This trigger can be used to support one-time automation actions, including one-time configuration backup to a
disk, a reboot, or a shutdown.
config system automation-trigger
edit <name>
set trigger-type scheduled
set trigger-frequency once
set trigger-datetime <YYYY-MM-DD HH:MM:SS>
next
end
Example
In this example, an automation stitch is created to trigger a one-time configuration backup to a disk. The backup will
occur August 5, 2022 at 4:00 AM.
f. Click OK.
2. Configure the action:
a. Go to Security Fabric > Automation, select the Action tab, and click Create New.
b. In the General section, click System Action.
c. Enter a name (Backup config disk) and an action description.
d. In the Action dropdown list, select Backup configuration.
e. Click OK.
3. Configure the stitch:
a. Go to Security Fabric > Automation, select the Stitch tab, and click Create New.
b. Enter the name, backup-once.
c. Click Add Trigger. Select schedule-once and click Apply.
d. Click Add Action. Select Backup config disk and click Apply.
e. Click OK. The backup configuration will occur once at the date and time you set.
Security ratings
This section includes information about security rating related new features:
l Add PSIRT vulnerabilities to security ratings and notifications for critical vulnerabilities found on Fabric devices
7.2.1 on page 88
On a FortiGate with a valid Security Rating license, the separate Security Rating package downloaded from FortiGuard
supports PSIRT vulnerabilities, which are highlighted in security rating results.
FDS Address
---------
173.243.140.6:443
GUI notifications
If the security rating result indicates a vulnerability with a critical severity, then the FortiOS GUI displays a warning
message in the header and a new notification under the bell icon. The View Vulnerability link appears in the header for
global administrators.
Clicking the warning message redirects to the System > Fabric Management page, where users are encouraged to
update any affected Fortinet Fabric devices to the latest firmware releases to resolve the critical vulnerabilities.
When a failed result is selected, the security panel provides a description of the PSIRT vulnerability for failed results.
The Recommendations section includes a link to the System > Fabric Management page to update the firmware.
In the search bar, use PSIRT keywords to filter for PSIRT vulnerabilities.
Tooltip
A tooltip for the critical vulnerability label on the System > Fabric Management page lists the vulnerability, and it links to
the Security Fabric > Security Rating page where more details about the vulnerability are displayed.
SD-WAN
An application category can be selected as an SD-WAN service rule destination criterion. Previously, only application
groups or individual applications could be selected.
config system sdwan
config service
edit <id>
set internet-service enable
set internet-service-app-ctrl-category <id_1> <id_2> ... <id_n>
next
end
end
To view the detected application categories details based on category ID, use diagnose sys sdwan internet-
service-app-ctrl-category-list <id>.
Example
In this example, traffic steering is applied to traffic detected as video/audio (category ID 5) or email (category ID 21) and
applies the lowest cost (SLA) strategy to this traffic. When costs are tied, the priority goes to member 1, dmz.
config sla
edit "1"
set id 1
next
end
set priority-members 1 2
next
end
end
5. View some videos and emails on the PC, then verify the detected application details for each category:
# diagnose sys sdwan internet-service-app-ctrl-category-list 5
YouTube(31077 4294838537): 142.250.217.110 6 443 Wed Dec 15 15:39:50 2021
YouTube(31077 4294838537): 173.194.152.89 6 443 Wed Dec 15 15:37:20 2021
YouTube(31077 4294838537): 173.194.152.170 6 443 Wed Dec 15 15:37:37 2021
YouTube(31077 4294838537): 209.52.146.205 6 443 Wed Dec 15 15:37:19 2021
# diagnose sys sdwan internet-service-app-ctrl-category-list 21
Gmail(15817 4294836957): 172.217.14.197 6 443 Wed Dec 15 15:39:47 2021
7. Edit the SD-WAN rule so that dmz has a higher cost and vlan100 is preferred.
This functionality is available in FortiOS 7.2.1 and later. Prior to 7.2.1, individual applications
can be selected in SD-WAN rules by default.
After upgrading to 7.2.1 or later, the GUI functionality is available if applications are already
configured in SD-WAN rules prior to upgrading. Otherwise, by default, individual applications
and application groups cannot be selected in SD-WAN rules. To enable this functionality, see
step 1 in the following procedure.
Name 1
Protocol DNS
Server 8.8.8.8
c. Click OK.
4. Configure the SD-WAN rule to use the video/audio and email application categories:
a. Go to Network > SD-WAN, select the SD-WAN Rules tab, and click Create New.
b. In the Destination section, click the + in the Application field.
c. Click Category, and select Video/Audio and Email.
Source 172.16.205.0
Destination all
Schedule always
Service ALL
Action ACCEPT
c. Click OK.
Add mean opinion score calculation and logging in performance SLA health checks
The mean opinion score (MOS) is a method of measuring voice quality using a formula that takes latency, jitter, packet
loss, and the codec into account to produce a score from zero to five (0 - 5). The G.711, G.729, and G.722 codecs can be
selected in the health check configurations, and an MOS threshold can be entered to indicate the minimum MOS score
for the SLA to pass. The maximum MOS score will depend on which codec is used, since each codec has a theoretical
maximum limit.
config system sdwan
config health-check
edit <name>
set mos-codec {g711 | g729 | g722}
config sla
edit <id>
set link-cost-factor {latency jitter packet-loss mos}
set mos-threshold <value>
next
end
next
end
end
mos-codec {g711 | g729 | Set the VoIP codec to use for the MOS calculation (default = g711).
g722}
link-cost-factor {latency Set the criteria to base the link selection on.
jitter packet-loss
mos}
mos-threshold <value> Set the minimum MOS for the SLA to be marked as pass (1.0 - 5.0, default = 3.6).
config sla
edit 1
set link-cost-factor mos
set mos-threshold "4.0"
next
end
next
end
end
The MOS currently cannot be used to steer traffic when the mode is set to priority.
2. Change the mos-codec to g722. The diagnostics will now display different MOS values:
# diagnose sys sdwan health-check
Health Check(Test_MOS):
Seq(1 dmz): state(alive), packet-loss(0.000%) latency(0.150), jitter(0.031), mos(4.453),
bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1
Seq(2 port15): state(alive), packet-loss(0.000%) latency(0.104), jitter(0.008), mos
(4.453), bandwidth-up(999999), bandwidth-dw(999999), bandwidth-bi(1999998) sla_map=0x1
3. Increase the latency on the link in port15. The calculated MOS value will decrease accordingly. In this example,
port15 is out of SLA since its MOS value is now less than the 4.0 minimum:
# diagnose sys sdwan health-check
Health Check(Test_MOS):
Seq(1 dmz): state(alive), packet-loss(0.000%) latency(0.106), jitter(0.022), mos(4.453),
bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1
Seq(2 port15): state(alive), packet-loss(0.000%) latency(300.119), jitter(0.012), mos
(3.905), bandwidth-up(999999), bandwidth-dw(999999), bandwidth-bi(1999998) sla_map=0x0
Sample logs
SD-WAN BGP neighbor configurations are used to define the SLA health check in which an SD-WAN member must
meet to qualify as being up. When the SD-WAN member meets the SLA threshold, the FortiGate will apply the route map
defined in the BGP neighbor's route-map-out-preferable option. If the SD-WAN member fails to meet the SLA,
the FortiGate will apply the route map defined in the BGP neighbor's route-map-out option instead. This allows the
FortiGate to advertise the health of the SD-WAN member to its BGP neighbor by advertising different community strings
based on its SLA status.
For more information, refer to the following BGP examples in the FortiOS Administration
Guide: Controlling traffic with BGP route mapping and service rules and Applying BGP route-
map to multiple BGP neighbors.
In this enhancement, instead of selecting only one SD-WAN member per neighbor, multiple SD-WAN members can be
selected. This allows the SD-WAN neighbor feature to support topologies where there are multiple SD-WAN overlays
and/or underlays to a neighbor. The minimum-sla-meet-members option is used to configure the minimum number of
members that must be in an SLA per neighbor for the preferable route map to be used.
config system sdwan
config neighbor
edit <ip>
set member {<seq-num_1>} [<seq-num_2>] ... [<seq-num_n>]
set minimum-sla-meet-members <integer>
next
end
end
member {<seq-num_1>} Enter the member sequence number list. Multiple members can be defined.
[<seq-num_2>] ...
[<seq-num_n>]
minimum-sla-meet-members Set the minimum number of members that meet SLA when the neighbor is
<integer> preferred (1 - 255, default = 1).
l If the number of in SLA members is less than the minimum-sla-meet-
Example
In the following example, the spoke FortiGate has four tunnels: two tunnels to Hub_1 and two tunnels to Hub_2. The
spoke has two BGP neighbors: one to Hub_1 and one to Hub-2. BGP neighbors are established on loopback IPs.
The SD-WAN neighbor plus route-map-out-preferableconfiguration is deployed on the spoke to achieve the
following:
l If any tunnel to Hub_1 or Hub_2 is in SLA, the preferable route map will be applied on the BGP neighbor to Hub_1 or
Hub_2.
l If both tunnels to Hub_1 or Hub_2 are out of SLA, the default route map will be applied on the BGP neighbor to Hub_
1 or Hub_2.
The preferable route map and default route map are used to set different custom BGP communities as the spoke
advertises its LAN routes to the hub. Each hub can translate communities into different BGP MED or AS prepends and
signal them to the external peers to manipulate inbound traffic, thereby routing traffic to the spoke only when the SLAs
are met on at least one of two VPN overlays. In this example, community string 10:1 signals to the neighbor that SLAs
are met, and 10:2 signals that SLAs are not met.
2. Configure route maps for neighbors in SLA (preferable) and out of SLA (default):
config router route-map
edit "in_sla"
config rule
edit 1
set match-ip-address "net10"
set set-community "10:1"
next
end
next
edit "out_sla"
config rule
edit 1
set match-ip-address "net10"
set set-community "10:2"
next
end
next
end
To configure SD-WAN:
edit 1
set link-cost-factor latency
set latency-threshold 100
next
end
next
end
end
To verify that when two members to Hub_1/Hub_2 are in SLA, the preferable route map is be applied on
BGP neighbors to Hub_1/Hub_2:
On Hub_1 and Hub_2, the expected communities have been attached into the spoke's LAN route:
Hub_1_FGT (root) # get router info bgp network 10.0.3.0/24
VRF 0 BGP routing table entry for 10.0.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
Local, (Received from a RR-client)
172.31.0.65 from 172.31.0.65 (172.31.0.65)
Origin IGP metric 0, localpref 100, valid, internal, best
Community: 10:1
Last update: Wed Dec 29 22:38:29 2021
Hub_2_FGT (root) # get router info bgp network 10.0.3.0/24
VRF 0 BGP routing table entry for 10.0.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
Local, (Received from a RR-client)
172.31.0.65 from 172.31.0.65 (172.31.0.65)
Origin IGP metric 0, localpref 100, valid, internal, best
Community: 10:1
If one member for each neighbor becomes out of SLA, the preferable route map is still applied:
Branch1_A_FGT (root) # diagnose sys sdwan health-check
Health Check(HUB):
Seq(1 H1_T11): state(alive), packet-loss(0.000%) latency(120.207), jitter(0.018), mos
(4.338), bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x0
Seq(4 H1_T22): state(alive), packet-loss(0.000%) latency(0.182), jitter(0.008), mos(4.404),
bandwidth-up(999999), bandwidth-dw(999998), bandwidth-bi(1999997) sla_map=0x1
Seq(6 H2_T11): state(alive), packet-loss(0.000%) latency(120.102), jitter(0.009), mos
(4.404), bandwidth-up(999999), bandwidth-dw(999998), bandwidth-bi(1999997) sla_map=0x0
Seq(9 H2_T22): state(alive), packet-loss(0.000%) latency(0.176), jitter(0.009), mos(4.404),
bandwidth-up(999999), bandwidth-dw(999997), bandwidth-bi(1999996) sla_map=0x1
# diagnose sys sdwan neighbor
Neighbor(172.31.0.1): member(1 4 )role(standalone)
Health-check(HUB:1) sla-pass selected alive
Neighbor(172.31.0.2): member(6 9 )role(standalone)
Health-check(HUB:1) sla-pass selected alive
Hub_1_FGT (root) # get router info bgp network 10.0.3.0/24
VRF 0 BGP routing table entry for 10.0.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
Local, (Received from a RR-client)
172.31.0.65 from 172.31.0.65 (172.31.0.65)
Origin IGP metric 0, localpref 100, valid, internal, best
Community: 10:1
Last update: Thu Dec 30 10:44:47 2021
Hub_2_FGT (root) # get router info bgp network 10.0.3.0/24
VRF 0 BGP routing table entry for 10.0.3.0/24
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Not advertised to any peer
Original VRF 0
Local, (Received from a RR-client)
172.31.0.65 from 172.31.0.65 (172.31.0.65)
Origin IGP metric 0, localpref 100, valid, internal, best
Community: 10:1
Last update: Wed Dec 29 22:43:10 2021
If both members for Hub_1 become out of SLA, the default route map is applied:
SD-WAN packet duplication can be configured to be performed on-demand only when SLAs in the configured service
are matched. When enabled, only the SLA health checks and targets that are used in the service rule are used to trigger
the packet duplication.
config system sdwan
config duplication
edit 1
set service-id 1
set packet-duplication on-demand
set sla-match-service {enable | disable}
next
end
end
sla-match-service {enable Enable/disable packet duplication matching health check SLAs in service rules
| disable} (matching all SLAs of the current defined service).
In this example, two performance SLA health checks are configured, health1 and health2. The health1 SLA is used in an
SD-WAN service rule called rule1. Packet duplication uses on-demand mode, so packets for duplication are matched
based on rule1. It triggers duplication based on the status of the health checks.
Results are shown for various combinations of health check statuses when the SLA match service is enabled or
disabled.
To configure SD-WAN:
next
end
next
end
config service
edit 1
set name "rule1"
set mode sla
set dst "10.100.20.0"
config sla
edit "health1"
set id 1
next
end
set priority-members 2 1
next
end
config duplication
edit 1
set service-id 1
set packet-duplication on-demand
set sla-match-service enable
next
end
end
Results
l When health1 (used in rule1) is out of SLA (sla_map=0x0) and health2 (not used) is in SLA (sla_map=0x1), the
packet is duplicated (dup=0x1(dup)):
# diagnose sys sdwan health-check
Health Check(health1):
Seq(1 port5): state(alive), packet-loss(6.000%) latency(5.718), jitter(0.086), mos
(4.404), bandwidth-up(99995), bandwidth-dw(99995), bandwidth-bi(199990) sla_map=0x0
Seq(2 port4): state(alive), packet-loss(3.000%) latency(7.242), jitter(0.025), mos
(4.404), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x0
Health Check(health2):
Seq(1 port5): state(alive), packet-loss(0.000%) latency(0.700), jitter(0.075), mos
(4.404), bandwidth-up(99995), bandwidth-dw(99995), bandwidth-bi(199990) sla_map=0x1
Seq(2 port4): state(alive), packet-loss(0.000%) latency(0.244), jitter(0.021), mos
(4.404), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x1
# diagnose firewall proute list
id=2135031809(0x7f420001) vwl_service=1(rule1) vwl_mbr_seq=2 1 dscp_tag=0xfc 0xfc
flags=0x0 tos=0x00 tos_mask=0x00 protocol=0 sport=0-65535 iif=0 dport=1-65535 path(2)
oif=12(port4) measure=0x0(not measured) dup=0x1(dup) oif=13(port5) measure=0x0(not
measured) dup=0x1(dup)
destination(1): 10.100.20.0-10.100.20.255
source wildcard(1): 0.0.0.0/0.0.0.0
The sniffer output shows packets leaving from both interfaces in the zone:
# diagnose sniffer packet any "port 90" 4
interfaces=[any]
filters=[port 90]
l When health1 (used in rule1) is in SLA (sla_map=0x1) and health2 (not used) is out of SLA (sla_map=0x0), the
packet is not duplicated (dup=0x0(not dup)):
# diagnose sys sdwan health-check
Health Check(health1):
Seq(1 port5): state(alive), packet-loss(0.000%) latency(0.684), jitter(0.064), mos
(4.404), bandwidth-up(99995), bandwidth-dw(99995), bandwidth-bi(199990) sla_map=0x1
Seq(2 port4): state(alive), packet-loss(0.000%) latency(0.222), jitter(0.015), mos
(4.404), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x1
Health Check(health2):
Seq(1 port5): state(alive), packet-loss(6.000%) latency(2.911), jitter(2.328), mos
(1.787), bandwidth-up(99995), bandwidth-dw(99996), bandwidth-bi(199990) sla_map=0x0
Seq(2 port4): state(alive), packet-loss(6.000%) latency(2.566), jitter(2.307), mos
(1.786), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x0
# diagnose firewall proute list
id=2135031809(0x7f420001) vwl_service=1(rule1) vwl_mbr_seq=2 1 dscp_tag=0xfc 0xfc
flags=0x0 tos=0x00 tos_mask=0x00 protocol=0 sport=0-65535 iif=0 dport=1-65535 path(2)
oif=12(port4) measure=0x0(not measured) dup=0x0(not dup) oif=13(port5) measure=0x0(not
measured) dup=0x0(not dup)
destination(1): 10.100.20.0-10.100.20.255
source wildcard(1): 0.0.0.0/0.0.0.0
The sniffer output shows packets leaving from only one interface:
# diagnose sniffer packet any "port 90" 4
interfaces=[any]
filters=[port 90]
3.330376 port2 in 172.16.205.11.38318 -> 10.100.21.33.90: syn 381919014
3.330395 port5 out 10.100.1.2.38318 -> 10.100.21.33.90: syn 381919014
4.327851 port2 in 172.16.205.11.38318 -> 10.100.21.33.90: syn 381919014
4.327855 port5 out 10.100.1.2.38318 -> 10.100.21.33.90: syn 381919014
# diagnose sys sdwan service
l When the SLA match service is disabled, packets are only duplicated with all of the health checks are out of SLA:
config system sdwan
config duplication
edit 1
set service-id 1
set packet-duplication on-demand
set sla-match-service disable
next
end
end
l When health1 is out of SLA (sla_map=0x0) and health2 is in SLA (sla_map=0x1), the packet is not
duplicated (dup=0x0(not dup)):
# diagnose sys sdwan health-check
Health Check(health1):
Seq(1 port5): state(alive), packet-loss(5.000%) latency(6.587), jitter(0.096), mos
(4.404), bandwidth-up(99995), bandwidth-dw(99995), bandwidth-bi(199990) sla_map=0x0
Seq(2 port4): state(alive), packet-loss(3.000%) latency(3.365), jitter(0.085), mos
(4.404), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x0
Health Check(health2):
Seq(1 port5): state(alive), packet-loss(0.000%) latency(0.837), jitter(0.192), mos
(4.404), bandwidth-up(99995), bandwidth-dw(99995), bandwidth-bi(199990) sla_map=0x1
Seq(2 port4): state(alive), packet-loss(0.000%) latency(0.330), jitter(0.081), mos
(4.404), bandwidth-up(99998), bandwidth-dw(99999), bandwidth-bi(199997) sla_map=0x1
# diagnose firewall proute list
list route policy info(vf=root):
l When both health1 and health2 are out of SLA (sla_map=0x0), the packet is duplicated (dup=0x1(dup)).
If there are multiple targets in a performance SLA health check, and only one of the targets
is used in the service that is defined in the duplication rule, and the SLA match service is
disabled, then only that target triggers packet duplication. It is note required for all of the
targets in the health check to miss SLA.
In this example, SD-WAN is configured on an ADVPN network with a BGP neighbor per overlay.
Instead of reflecting BGP routes with the route-reflector on the hub, when the shortcuts are triggered, IKE routes on the
shortcuts are directly injected based on the configured phase 2 selectors to allow routes to be exchanged between
spokes.
Routes between the hub and the spokes are exchanged by BGP, and the spokes use the default route to send spoke-to-
spoke traffic to the hub and trigger the shortcuts.
Instead of configuring SD-WAN rules on the hub, different priorities are configured on the BGP routes by matching
different BGP communities to steer traffic from the hub to the spokes.
To configure Spoke 1:
1. Configure phase 1:
config vpn ipsec phase1-interface
edit "spoke11-p1"
...
set ike-version 2
set net-device enable
set add-route enable
set mode-cfg enable
set auto-discovery-receiver enable
set mode-cfg-allow-client-selector enable
...
next
edit "spoke12-p1"
...
set ike-version 2
set net-device enable
set add-route enable
set mode-cfg enable
set auto-discovery-receiver enable
set mode-cfg-allow-client-selector enable
next
end
2. Configure phase 2:
config vpn ipsec phase2-interface
edit "spoke11-p2"
...
set src-name "LAN_Net"
set dst-name "all"
next
edit "spoke12-p2"
...
set src-name "LAN_Net"
set dst-name "all"
next
end
...
next
edit "HUB_CARRIER2"
config rule
edit 1
set set-community "65000:2"
...
next
end
...
next
edit "HUB_BAD"
config rule
edit 1
set set-community "65000:9999"
...
next
end
...
next
end
edit "10.10.16.253"
set member 2
set health-check "11"
set sla-id 1
next
end
end
To configure Spoke 2:
1. Configure phase 1:
config vpn ipsec phase1-interface
edit "spoke21-p1"
...
set ike-version 2
set net-device enable
set add-route enable
set mode-cfg enable
set auto-discovery-receiver enable
set mode-cfg-allow-client-selector enable
...
next
edit "spoke22-p1"
...
set ike-version 2
set net-device enable
set add-route enable
set mode-cfg enable
set auto-discovery-receiver enable
set mode-cfg-allow-client-selector enable
next
end
2. Configure phase 2:
config vpn ipsec phase2-interface
edit "spoke21-p2"
...
set src-name "LAN_Net"
set dst-name "all"
next
edit "spoke22-p2"
...
set src-name "LAN_Net"
set dst-name "all"
next
end
2. Configure BGP:
config router bgp
set as 65412
config neighbor-group
edit "advpn"
set remote-as 65412
set route-map-in "Set_Pri"
...
next
edit "advpn2"
set remote-as 65412
set route-map-in "Set_Pri"
...
next
end
config neighbor-range
edit 1
set prefix 10.10.15.0 255.255.255.0
set neighbor-group "advpn"
next
edit 2
set prefix 10.10.16.0 255.255.255.0
set neighbor-group "advpn2"
next
end
end
Spoke 2:
spoke-2 (root) # get router info routing-table all
B* 0.0.0.0/0 [200/0] via 10.10.15.253 (recursive is directly connected, spoke21-
p1), 00:46:14, [1/0] // default route to hub
[200/0] via 10.10.16.253 (recursive is directly connected,
spoke22-p1), 00:46:14, [1/0]
B 9.0.0.0/24 [200/0] via 10.10.15.253 (recursive is directly connected, spoke21-
p1), 00:46:18, [1/0] // route to the server behind hub
[200/0] via 10.10.16.253 (recursive is directly connected,
spoke22-p1), 00:46:18, [1/0]
C 10.10.15.0/24 is directly connected, spoke21-p1 // overlay 1
C 10.10.15.2/32 is directly connected, spoke21-p1
Spoke 2:
spoke-2 (root) # get router info routing-table static
S 10.1.100.0/24 [15/0] via spoke21-p1_0 tunnel 10.10.15.1 vrf 0, [1/0]
S 10.2.100.0/24 [15/0] via spoke21-p1_0 tunnel 10.10.15.1 vrf 0, [1/0]
S 10.3.100.0/24 [15/0] via spoke21-p1_0 tunnel 10.10.15.1 vrf 0, [1/0]
Spoke 2:
spoke-2 (root) # diagnose sys sdwan neighbor
Neighbor(10.10.15.253): member(1)role(standalone)
Health-check(1:1) sla-pass selected alive
Neighbor(10.10.16.253): member(2)role(standalone)
Health-check(11:1) sla-pass selected alive
4. On the hub, check that the routes received from the spokes have the expected priorities:
hub (root) # diagnose ip route list | grep proto=11
tab=254 vf=0 scope=0 type=1 proto=11 prio=100 0.0.0.0/0.0.0.0/0->10.1.100.0/24
pref=0.0.0.0 gwy=10.10.15.1 dev=101(hub-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=200 0.0.0.0/0.0.0.0/0->10.1.100.0/24
pref=0.0.0.0 gwy=10.10.16.1 dev=102(hub2-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=100 0.0.0.0/0.0.0.0/0->192.168.5.0/24
pref=0.0.0.0 gwy=10.10.15.2 dev=101(hub-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=200 0.0.0.0/0.0.0.0/0->192.168.5.0/24
pref=0.0.0.0 gwy=10.10.16.2 dev=102(hub2-phase1)
The priority set by the hub's route map is based on the community string received from the spoke. The route with a
lower priority value is selected, so traffic to Spoke 1 goes out on the hub-phase1 tunnel:
hub (root) # diagnose sniffer packet any 'host 9.0.0.2' 4
interfaces=[any]
filters=[host 9.0.0.2]
2.735456 R190 in 9.0.0.2 -> 10.1.100.22: icmp: echo request
2.735508 hub-phase1 out 9.0.0.2 -> 10.1.100.22: icmp: echo request
2.735813 hub-phase1 in 10.1.100.22 -> 9.0.0.2: icmp: echo reply
2.735854 R190 out 10.1.100.22 -> 9.0.0.2: icmp: echo reply
5. If overlay 1 goes out of SLA, the priorities of the routes on the hub are updated and traffic from the hub to Spoke 1
goes through overlay 2:
Spoke 1:
spoke-1 (root) # diagnose sys sdwan neighbor
Neighbor(10.10.15.253): member(1)role(standalone)
Health-check(1:1) sla-fail alive
Neighbor(10.10.16.253): member(2)role(standalone)
Health-check(11:1) sla-pass selected alive
Spoke 2:
spoke-2 (root) # diagnose sys sdwan neighbor
Neighbor(10.10.15.253): member(1)role(standalone)
Health-check(1:1) sla-fail alive
Neighbor(10.10.16.253): member(2)role(standalone)
Health-check(11:1) sla-pass selected alive
Hub:
hub (root) # diagnose ip route list | grep proto=11
tab=254 vf=0 scope=0 type=1 proto=11 prio=200 0.0.0.0/0.0.0.0/0->10.1.100.0/24
pref=0.0.0.0 gwy=10.10.16.1 dev=102(hub2-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=9999 0.0.0.0/0.0.0.0/0->10.1.100.0/24
pref=0.0.0.0 gwy=10.10.15.1 dev=101(hub-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=200 0.0.0.0/0.0.0.0/0->192.168.5.0/24
pref=0.0.0.0 gwy=10.10.16.2 dev=102(hub2-phase1)
tab=254 vf=0 scope=0 type=1 proto=11 prio=9999 0.0.0.0/0.0.0.0/0->192.168.5.0/24
pref=0.0.0.0 gwy=10.10.15.2 dev=101(hub-phase1)
hub (root) # diagnose sniffer packet any 'host 9.0.0.2' 4
interfaces=[any]
filters=[host 9.0.0.2]
3.550181 R190 in 9.0.0.2 -> 10.1.100.22: icmp: echo request
3.550234 hub2-phase1 out 9.0.0.2 -> 10.1.100.22: icmp: echo request
3.550713 hub2-phase1 in 10.1.100.22 -> 9.0.0.2: icmp: echo reply
3.550735 R190 out 10.1.100.22 -> 9.0.0.2: icmp: echo reply
Dst address(1):
0.0.0.0-255.255.255.255
Spoke 2:
spoke-2 (root) # diagnose sys sdwan service
Dst address(1):
0.0.0.0-255.255.255.255
next
end
end
The new cost is learned by the spoke11-p1_1 shortcut on Spoke 1, and that shortcut is no longer preferred due to its
higher remote cost:
Spoke 1:
spoke-1 (root) # diagnose sys sdwan service
Dst address(1):
0.0.0.0-255.255.255.255
Spoke 2:
spoke-2 (root) # diagnose sys sdwan service
Dst address(1):
0.0.0.0-255.255.255.255
SD-WAN, VPN, and BGP configurations support L3 VPN segmentation over a single overlay. In these configurations, a
hub and spoke SD-WAN deployment requires that branch sites, or spokes, are able to accommodate multiple
companies or departments, and each company's subnet is separated by a different VRF. A subnet on one VRF cannot
communicate with a subnet on another VRF between different branches, but can communicate with the same VRF.
SD-WAN on the originating spoke can tag the health check probes with the correct VRF when transmitting to a multi-
VRF tunnel. The hub can then forward the probes to the correct health check server in the same VRF as the hub.
config system sdwan
config health-check
edit <name>
set vrf <vrf id>
set source <address>
next
end
end
Overlay stickiness
When a hub has multiple overlays, traffic received on one overlay should egress on the same overlay when possible.
The service-sla-tie-break option ensures overlay stickiness. In SD-WAN service rules, options are available to
ensure that traffic received in a zone stays in that zone.
config system sdwan
config zone
edit <name>
set service-sla-tie-break input-device
next
end
config service
edit <id>
set input-zone <zone>
set tie-break input-device
next
end
end
service-sla-tie-break Members that meet the SLA are selected by matching the input device.
input-device
input-zone <zone> Source input-zone name.
tie-break input-device Members that meet the SLA are selected by matching the input device.
By default, the hub sends a shortcut offer to a spoke every five seconds. If the hub continues to send offers that keep
failing, and there are a large number of spokes, this can cause a high load on the hub. This setting makes the interval
between shortcut offers configurable.
config vpn ipsec phase1-interface
edit <name>
set auto-discovery-offer-interval <interval>
next
end
auto-discovery-offer- Interval between shortcut offer messages, in seconds (1 - 300, default = 5).
interval <interval>
Segmentation requires that VRF info is encapsulated within the IPsec VPN tunnel. This setting enables multi-VRF
IPSEC tunnels.
config vpn ipsec phase1-interface
edit <name>
set encapsulation vpn-id-ipip
next
end
The role of a VRF can be specified, along with other VRF details. In FortiOS 7.2.0 to 7.2.3, up to 64 VRFs can be
configured per VDOM for any device. In FortiOS 7.2.4, up to 252 VRFs can be configured per VDOM for any device.
config router bgp
config vrf
edit <vrf>
set role {standalone | ce | pe}
set rd <string>
set export-rt <route_target>
set import-rt <route_target>
set import-route-map <route_map>
config leak-target
edit <vrf>
set route-map <route-map>
role {standalone | ce | VRF role: standalone, customer edge (CE), or provider edge (PE).
pe}
rd <string> Route Distinguisher: AA|AA:NN. This option is only available when the role is CE.
export-rt <route_target> List of export route target. This option is only available when the role is CE.
import-rt <route_target> List of import route target. This option is only available when the role is CE.
import-route-map <route_ Import route map. This option is only available when the role is CE.
map>
route-map <route-map> Route map of VRF leaking.
interface <interface> Interface that is used to leak routes to the target VRF.
In FortiOS 7.0, config vrf was config vrf-leak, and config leak-target was
config target.
Examples
In example 1, multiple companies (or departments of a company) share the ADVPN. Company A and company B each
have two branches in two different locations. Company A's branches (A-1 and A-2) can talk to each other using the VPN
shortcut, but not to company B's branches (B-1 and B-2). Likewise, company B's branches can talk to each other using
the VPN shortcut, but not to company A's branches. Traffic can share the tunnels and shortcuts, but cannot be mixed up.
Example 2 shows that performance SLA health checks can be sent from a spoke's VRF to the loopback on the hub that
is in the same VRF.
Example 3 shows that when traffic is ingress on the hub on one overlay, it will preferably egress on the same overlay.
Example 1
In this example, two spokes each have two tunnels to the hub.
l Each spoke has two VRFs behind it that can use the same IP address or subnets.
l The computers in VRF1 behind spoke 1 can talk to the computers in VRF1 behind spoke 2, but not to any of the
computers in the VRF2s behind either spoke.
l The computers in VRF2 behind spoke 1 can talk to the computers in VRF2 behind spoke 2, but not to any of the
computers in the VRF1s behind either spoke.
next
edit "gr2"
set capability-graceful-restart enable
set capability-default-originate enable
set next-hop-self-rr enable
set soft-reconfiguration-vpnv4 enable
set remote-as 65505
set additional-path both
set additional-path-vpnv4 both
set adv-additional-path 3
set route-reflector-client enable
set route-reflector-client-vpnv4 enable
next
end
config neighbor-range
edit 1
set prefix 10.10.100.0 255.255.255.0
set neighbor-group "gr1"
next
edit 2
set prefix 10.10.200.0 255.255.255.0
set neighbor-group "gr2"
next
end
config network
edit 12
set prefix 11.11.11.11 255.255.255.255
next
edit 22
set prefix 11.11.22.11 255.255.255.255
next
edit 10
set prefix 100.1.1.0 255.255.255.0
next
edit 33
set prefix 11.1.1.0 255.255.255.0
next
end
config vrf
edit "0"
set role pe
next
edit "1"
set role ce
set rd "1:1"
set export-rt "1:1"
set import-rt "1:1"
next
edit "2"
set role ce
set rd "2:1"
set export-rt "2:1"
set import-rt "2:1"
next
end
end
To configure a spoke:
next
end
config health-check
edit "ping"
set server "11.11.11.11"
set members 1 2
config sla
edit 1
set latency-threshold 200
set jitter-threshold 50
next
end
next
edit "1"
set server "22.1.1.2"
set vrf 1
set members 1 2
next
end
config service
edit 2
set mode sla
set dst "100-200"
config sla
edit "ping"
set id 1
next
end
set priority-members 2
set use-shortcut-sla disable
next
edit 1
set name "test-tag"
set mode sla
set dst "001-100"
config sla
edit "ping"
set id 1
next
end
set priority-members 1 2
next
end
end
04:42:57, [1/0]
B 11.11.11.11/32 [200/0] via 10.10.100.254 (recursive via vd2-1 tunnel 11.1.1.11 vrf
0), 04:42:57, [1/0]
[200/0] via 10.10.200.254 (recursive via vd2-2 tunnel 11.1.2.11 vrf
0), 04:42:57, [1/0]
B 33.1.1.0/24 [200/0] via 10.10.100.254 [2] (recursive via vd2-1 tunnel 11.1.1.11 vrf
0), 04:42:57, [1/0]
[200/0] via 10.10.200.254 [2] (recursive via vd2-2 tunnel 11.1.2.11 vrf
0), 04:42:57, [1/0]
B 100.1.1.0/24 [200/0] via 10.10.100.254 (recursive via vd2-1 tunnel 11.1.1.11 vrf 0),
04:42:57, [1/0]
[200/0] via 10.10.200.254 (recursive via vd2-2 tunnel 11.1.2.11 vrf 0),
04:42:57, [1/0]
VRF1 routes:
# get router info filter vrf 1
# get router info routing-table bgp
Routing table for VRF=1
B V 33.1.1.0/24 [200/0] via 10.10.100.3 [2] (recursive via vd2-1 tunnel 11.1.1.11 vrf
0), 04:44:11, [1/0]
[200/0] via 10.10.200.3 [2] (recursive is directly connected, vd2-2_0),
04:44:11, [1/0]
1. From VRF1 of spoke 1 ping VRF1 of spoke 2 and from VRF2 of spoke 1 ping VRF2 spoke 2. Both VRF1 and VRF2
source and destination IP addresses are the same, so you can see how the traffic is isolated
2. Check sessions on spoke 1:
The output vd=<vdom ID>:<VRF ID> indicates that sessions are created in and stay in the corresponding VRFs.
l User at 22.1.1.22 in VRF1 on spoke 1 pings 33.1.1.33 in VRF1 on spoke2.
# diagnose sys session list
session info: proto=1 proto_state=00 duration=21 expire=42 timeout=0 flags=00000000
socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=may_dirty
statistic(bytes/packets/allow_err): org=420/5/1 reply=420/5/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=89->131/131->89
gwy=10.10.200.3/22.1.1.22
1. From VRF1 of spoke 1 ping VRF1 of spoke 2 and from VRF2 of spoke 1 ping VRF2 spoke 2. Both VRF1 and VRF2
source and destination IP addresses are the same, so you can see how the traffic is isolated
2. Check sessions on spoke 1:
The output vd=<vdom ID>:<VRF ID> indicates that sessions are created in and stay in the corresponding VRFs.
l User at 22.1.1.22 in VRF1 on spoke 1 pings 33.1.1.133 in VRF1 on spoke 2:
# diagnose sys session listsession info: proto=1 proto_state=00 duration=17 expire=45
timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=may_dirty
statistic(bytes/packets/allow_err): org=336/4/1 reply=336/4/1 tuples=2
tx speed(Bps/kbps): 19/0 rx speed(Bps/kbps): 19/0
orgin->sink: org pre->post, reply pre->post dev=89->137/137->89
gwy=10.10.200.3/22.1.1.22
hook=pre dir=org act=noop 22.1.1.22:25968->33.1.1.133:8(0.0.0.0:0)
hook=post dir=reply act=noop 33.1.1.133:25968->22.1.1.22:0(0.0.0.0:0)
src_mac=02:4c:a5:fc:6a:7f
misc=0 policy_id=1 pol_uuid_idx=566 auth_info=0 chk_client_info=0 vd=1:1
serial=000aa475 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=2
rpdb_link_id=ff000002 ngfwid=n/a
npu_state=0x5040001 no_offload
no_ofld_reason: disabled-by-policy non-npu-intf
Example 2
In this example, SLA health checks are sent from a spoke's VRF to the loopback on the hub that is in the same VRF.
Example 3
In this example, when traffic from spoke 1 arrives at the hub on tunnel 1, it will egress the hub on tunnel 1 to go to other
spokes. If traffic arrives on tunnel 2, it will egress on tunnel 2, and not tunnel 1.
To verify that traffic stays in the same overlay on ingress and egress on the hub:
1. Confirm that the SD-WAN service rule has Tie break set to input-device so that, when SLAs are met on all of
the members, traffic prefers to egress on the same member as the input device:
# diagnose sys sdwan service
2. Use diagnose sniffer packet commands to verify that traffic ingress and egress are on the same overlay.
In the hub and spoke SD-WAN design, in order for traffic to pass symmetrically from spoke to hub and hub to spoke, it is
essential for the hub to know which IPsec overlay is in SLA and out of SLA. Prior to introducing embedded SLA
information in ICMP probes, it is common practice for spokes to use the SD-WAN neighbor feature and route-map-
out-preferable setting to signal the health of each overlay to the hub. However, this requires BGP to be configured
per overlay, and to manipulate BGP routes using custom BGP communities.
With embedded SLA information in ICMP probes, spokes can communicate their SLA for each overlay directly through
ICMP probes to the hub. The hub learns these SLAs and maps the status for each spoke and its corresponding overlays.
The hub uses the SLA status to apply priorities to the IKE routes, giving routes over IPsec overlays that are within SLAs a
lower priority value and routes over overlays out of SLAs a higher priority value. If BGP is used, recursively resolved
BGP routes can inherit the priority from its parent.
Embedded SLA information in ICMP probes allows hub and spoke SD-WAN to be designed with a BGP on loopback
topology, or without BGP at all. The following topology outlines an example of the BGP on loopback design where each
spoke is peered with the hub and route reflector on the loopback interface.
In this topology, each FortiGate’s BGP router ID is based on its Loopback0 interface. Each spoke has SLA health checks
defined to send ICMP probes to the server’s Lo_HC interface on 172.31.100.100. The ICMP probes include embedded
SLA information for each SD-WAN overlay member.
end
end
detect-mode {active | Set the mode that determines how to detect the server:
passive | prefer- l active: the probes are sent actively (default).
passive | remote}
l passive: the traffic measures health without probes.
recursive-inherit- Enable/disable allowing recursive resolved BGP routes to inherit priority from its
priority {enable | parent (default = disable).
disable}
This example demonstrates the configurations needed to configure the SD-WAN and BGP settings for the preceding
topology. It is assumed that IPsec VPN overlays are already configured per the topology, and that loopback interfaces
are already configured on each FortiGate.
edit "overlay"
next
end
config members
edit 1
set interface "H1_T11"
set zone "overlay"
set source 172.31.0.65
next
edit 4
set interface "H1_T22"
set zone "overlay"
set source 172.31.0.65
next
end
config health-check
edit "HUB"
set server "172.31.100.100"
set embed-measured-health enable
set members 0
config sla
edit 1
set link-cost-factor latency
set latency-threshold 100
next
end
next
end
config service
edit 1
set mode sla
set dst "CORP_LAN"
set src "CORP_LAN"
config sla
edit "HUB"
set id 1
next
end
set priority-members 1 4
next
end
end
set priority-in-sla 15
set priority-out-sla 25
next
end
next
end
end
Once the hub and spokes are configured, verify that SLA statuses are passed from the spoke to the hub.
To verify that the SLA statuses are passed from the spoke to the hub:
1. On Spoke_1, display the status of the health-checks for H1_T11 and H1_T22:
# diagnose sys sdwan health-check
Health Check(HUB):
Seq(1 H1_T11): state(alive), packet-loss(0.000%) latency(0.228), jitter(0.018), mos
(4.404), bandwidth-up(999999), bandwidth-dw(1000000), bandwidth-bi(1999999) sla_map=0x1
Seq(4 H1_T22): state(alive), packet-loss(0.000%) latency(0.205), jitter(0.007), mos
(4.404), bandwidth-up(999998), bandwidth-dw(1000000), bandwidth-bi(1999998) sla_map=0x1
2. On Spoke_1, display the status and order of the overlays in the SD-WAN service rule:
# diagnose sys sdwan service
Service(1): Address Mode(IPV4) flags=0x200 use-shortcut-sla
Tie break: cfg
Gen(1), TOS(0x0/0x0), Protocol(0: 1->65535), Mode(sla), sla-compare-order
Members(2):
1: Seq_num(1 H1_T11), alive, sla(0x1), gid(0), cfg_order(0), local cost(0), selected
Src address(1):
10.0.0.0-10.255.255.255
Dst address(1):
10.0.0.0-10.255.255.255
Both overlays are within SLA, so H1_T11 is preferred due to its cfg-order.
Spoke_1’s SLA information for H1_T11 and H1_T22 is embedded into the ICMP probes destined for the hub’s Lo_
HC interface. The hub receives this information and maps the SLAs correspondingly per spoke and overlay based
on the same SLA targets.
As a result, since all SLAs are within target, the hub sets the routes over each overlay as follows:
Hub SD-WAN member Overlay SLA status Priority for IKE routes
Simultaneously, BGP recursive routes inherit the priority based on the parent IKE routes. The recursively resolved
BGP routes that pass through EDGE_T1 will have a priority of 10, and routes that pass through EDGE_T2 will have
a priority of 15. Therefore, traffic from the hub to spoke will be routed to EDGE_T1.
3. Verify the routing tables.
a. Static:
# get router info routing-table static
Routing table for VRF=0
S 172.31.0.65/32 [15/0] via EDGE_T1 tunnel 10.0.0.69 vrf 0, [10/0]
[15/0] via EDGE_T2 tunnel 172.31.0.65 vrf 0, [15/0]
b. BGP:
# get router info routing-table bgp
Routing table for VRF=0
B 10.0.3.0/24 [200/0] via 172.31.0.65 (recursive via EDGE_T1 tunnel 10.0.0.69
vrf 0 [10]), 04:32:53
(recursive via EDGE_T2 tunnel 172.31.0.65
vrf 0 [15]), 04:32:53, [1/0]
Next, test by making the health checks over the spokes' H1_T11 tunnel out of SLA. This should trigger traffic to start
flowing from the spokes' H1_T22 tunnel. Consequently, the SLA statuses are passed from the spoke to the hub, and the
hub will start routing traffic to EDGE_T2.
To verify that the hub will start routing traffic to EDGE_T2 when the spoke H1_T11 tunnel is out of SLA:
1. On Spoke_1, display the status of the health checks for H1_T11 and H1_T22:
# diagnose sys sdwan health-check
Health Check(HUB):
Seq(1 H1_T11): state(alive), packet-loss(0.000%) latency(120.228), jitter(0.013), mos
(4.338), bandwidth-up(999999), bandwidth-dw(1000000), bandwidth-bi(1999999) sla_map=0x0
Seq(4 H1_T22): state(alive), packet-loss(0.000%) latency(0.220), jitter(0.008), mos
(4.404), bandwidth-up(999998), bandwidth-dw(1000000), bandwidth-bi(1999998) sla_map=0x1
EDGE_T2 is now preferred. The priority for EDGE_T1 has changed from 10 to 20.
Spoke_1’s SLA information for H1_T11 embedded into the ICMP probes has now changed.
As a result, the hub sets the routes over each overlay as follows:
Hub SD-WAN member Overlay SLA status Priority for IKE routes
The BGP recursive routes inherit the priority based on the parent IKE routes. Since priority for IKE routes on EDGE_T1
has changed to 20, recursively resolved BGP routes passing through EDGE_T1 has also dropped to 20. As a result, hub
to spoke_1 traffic will go over EDGE_T2.
Exchange underlay link cost property with remote peer in IPsec VPN phase 1
negotiation - 7.2.1
The underlay link cost property has been added to the IPsec VPN tunnel phase 1 configuration and enhances the IPsec
VPN to exchange the link cost with a remote peer as a private notify payload in IKEv1 and IKEv2 phase 1 negotiations.
This avoids possible health check daemon process load issues in the previous implementation of the link cost exchange
feature, and it improves network scalability in a large-scale SD-WAN network with ADVPN.
config vpn ipsec phase1-interface
edit <name>
set link-cost <integer>
next
end
link-cost <integer> Set the VPN underlay link cost (0 - 255, default = 0).
If multiple shortcuts originate from the same SD-WAN member to different members on the same remote spoke, learned
remote IPsec link costs on shortcuts will be used as a tie-breaker to decide which shortcut is preferred.
In this example, SD-WAN is configured on an ADVPN network with a BGP neighbor per overlay.
Instead of reflecting BGP routes with the route-reflector on the hub, when the shortcuts are triggered, IKE routes on the
shortcuts are directly injected based on the configured phase 2 selectors to allow routes to be exchanged between
spokes.
Routes between the hub and the spokes are exchanged by BGP, and the spokes use the default route to send spoke-to-
spoke traffic to the hub and trigger the shortcuts.
To configure Spoke 1:
config health-check
edit "1"
set server "9.0.0.1"
set members 0
config sla
edit 1
next
end
next
end
config service
edit 1
set name "1"
set mode sla
set dst "all"
set src "10.1.100.0"
config sla
edit "1"
set id 1
next
end
set priority-members 1 2
next
end
end
To configure Spoke 2:
next
end
config health-check
edit "1"
set server "9.0.0.1"
set members 0
config sla
edit 1
next
end
next
end
config service
edit 1
set name "1"
set mode sla
set dst "all"
set src "192.168.5.0"
config sla
edit "1"
set id 1
next
end
set priority-members 1 2
next
end
end
Dst address(1):
0.0.0.0-255.255.255.255
selected
2: Seq_num(2 spoke22-p1), alive, sla(0x1), gid(0), cfg_order(1), local cost(20),
selected
Src address(1):
192.168.5.0-192.168.5.255
Dst address(1):
0.0.0.0-255.255.255.255
Dst address(1):
0.0.0.0-255.255.255.255
Spoke 2:
# diagnose sys sdwan service
Dst address(1):
0.0.0.0-255.255.255.255
The spoke11-p1_1 shortcut on Spoke 1 is preferred over spoke11-p1_0 due to the lower remote link cost of 101
when they have the same local SD-WAN member cost of 10.
4. Verify the policy route list on Spoke 1:
# diagnose firewall proute list
list route policy info(vf=root):
Copying the DSCP value from the session original direction to its reply direction -
7.2.1
In an SD-WAN scenario when DSCP tags are used to mark traffic from the spoke to the hub, it is sometimes desirable for
the hub to mark the reply traffic with the same DSSP tags. The diffserv-copy setting in firewall policy configurations
allows the DSCP tag to be copied to the reply direction.
config firewall policy
edit <id>
set diffserv-copy {enable | disable}
next
end
Example
The use cases in this example are for a hub and spoke SD-WAN deployment. Traffic from the spoke (either real traffic or
SLA health check probes) can be marked with a certain DSCP tag when leaving the spoke. QoS may be applied by an
upstream device based on the DSCP tag. When the traffic arrives on the hub, the hub may also want to mark the reply
traffic to the spoke with the same DSCP tag. This would allow QoS to be applied to the traffic in the reply direction as
well, which is traffic in the hub to spoke direction associated with the same session in the spoke to hub direction.
While this topology simplifies the SD-WAN deployment into a single hub and spoke, this feature applies to the following
configurations:
l Multiple spokes (branch sites)
l One or more hubs (data center sites)
l Multiple overlays connecting spokes to hubs
l SD-WAN configured on spokes to pick the best overlay
Traffic originates from the spoke and is destined for a server behind the hub. The spoke marks the traffic with a DSCP
tag of 101010. This is done by enabling diffserv-foward on the spoke firewall policy. It can also be accomplished by
enabling dscp-forward in an SD-WAN rule.
The hub allows the traffic in through a firewall policy. By enabling diffserv-copy on the firewall policy, it will mark the
reply traffic on the corresponding sessions with the same DSCP tag in which it came.
SLA health checks from the spoke are destined for a loopback interface on the hub. The health check is marked with a
DSCP tag of 000001 by the spoke. When the hub receives the probes to its loopback, it will mark the replies with the
same DSCP tags in which it came.
Capture packets can also be used verify that the DSCP value from the original direction is
applied to the reply direction.
BGP extended community route targets can be matched in route maps. This can be applied in a scenario where the BGP
route reflector receives routes from many VRFs, and instead of reflecting all routes from all VRFs, users only want to
reflect routes based on a specific extended community route target.
type {standard | Set the extended community list type (standard or expanded).
expanded}
action {deny | permit} Deny or permit route-based operations based on the route's extended community
attribute.
type {rt | soo} Set the extended community type:
l rt: route target
match <extended_ Set the extended community specifications for matching a reserved extended
community_ community (community number in AA:NN format; use quotation marks complex
specifications>
expressions, "123:234 345:456").
regexp <ordered_list_of_ Set the ordered list of extended community attributes as a regular expression.
attributes>
match-extcommunity <list> Set the BGP extended community list to match to.
match-extcommunity-exact Enable/disable exact matching of extended communities.
{enable | disable}
Example
In this example, multiple companies (or departments of a company) share the same hub and spoke VPN infrastructure.
Company A and company B each have two branches in two different locations. The goal is for company A’s branches (A-
1 and A-2) to be able to communicate only with each other over VPN but not with company B’s branches. Likewise,
company B’s branches (B-1 and B-2) can only communicate with each other over VPN but not with company A’s. This is
accomplished by placing each branch VLAN into their respective VRFs (VRF1 and VRF2), and encapsulating the VRF
information within the VPN tunnel. The hub forms BGP peering with its neighbors, spoke 1 and spoke 2, over each IPsec
overlay. The hub’s BGP route reflector reflects the routes to the corresponding VRFs, allowing each spoke to form
ADVPN shortcuts with the other spoke for each VRF.
However, in this scenario, we want A-1 and A-2 to use an ADVPN shortcut, but we do not want B-1 and B-2 to use
ADVPN. A route map is configured on the hub to match the desired extended community route target number where only
this route target is permitted, and others are denied. This allows the hub’s BGP route reflector to only reflect routes
associated with VRF1, allowing the spokes to form an ADVPN shortcut for VRF1. Routes associated with VRF2 are not
reflected, and each spoke must route traffic through the hub to reach VRF2 on the other spoke.
Configure the topology by following the instructions of Example 1 in SD-WAN segmentation over a single overlay. Note
that when checking the spoke 1 routes in example 1, there is a VRF2 route:
Spoke 1 # get router info routing-table bgp
…
Routing table for VRF=2
B V 33.1.1.0/24 [200/0] via 10.10.100.3 [2] (recursive via vd2-1 tunnel 11.1.1.11),
00:00:20, [1/0]
[200/0] via 10.10.200.3 [2] (recursive via vd2-2 tunnel 11.1.2.11),
00:00:20, [1/0]
The following procedure applies a route map on the hub’s BGP configurations to limit route reflection to only routes
matching the external community target of 1:1. This external community target corresponds to BGP paths for VRF1
learned from spoke 1 and spoke 2. The external community target of 2:1 corresponds to BGP paths for VRF2. By not
explicitly permitting this target (2:1) in the community list and denying everything other than the permitted target (1:1) in
the route map, the VRF2 BGP paths are essentially omitted from being reflected to the spokes.
To configure BGP filtering for an extended community route target on the hub:
6. Check the spoke 1 routes. Since the extended community route target is applied, the VFR2 route does not appear in
the BGP routing table:
# get router info routing-table bgp
Routing table for VRF=0
B* 0.0.0.0/0 [200/0] via 10.10.100.254 (recursive via vd2-1 tunnel 11.1.1.11),
03:47:50, [1/0]
[200/0] via 10.10.200.254 (recursive via vd2-2 tunnel 11.1.2.11),
03:47:50, [1/0]
B 1.1.1.1/32 [200/0] via 11.1.1.1 [2] (recursive via 12.1.1.1, vd2-vlan12),
03:47:50, [1/0]
B 1.222.222.222/32 [200/0] via 11.1.1.1 [2] (recursive via 12.1.1.1, vd2-vlan12),
03:47:50, [1/0]
B 11.11.11.11/32 [200/0] via 10.10.100.254 (recursive via vd2-1 tunnel 11.1.1.11),
03:47:50, [1/0]
[200/0] via 10.10.200.254 (recursive via vd2-2 tunnel 11.1.2.11),
03:47:50, [1/0]
B 33.1.1.0/24 [200/0] via 10.10.100.254 [2] (recursive via vd2-1 tunnel
11.1.1.11), 03:47:21, [1/0]
[200/0] via 10.10.200.254 [2] (recursive via vd2-2 tunnel
11.1.2.11), 03:47:21, [1/0]
The agent-based health check detection mode works with FortiMonitor to provide more accurate user level performance
statistics. FortiMonitor acts as an agent and sends health check probes on behalf of the monitored FortiGate interface.
FortiMonitor mimics a real user, and the probes return a more accurate application level performance. The SLA
information collected from FortiMonitor is sent back to the FortiGate as the monitored interface's SLA information. These
statistics can be used to gain a deeper insight into the SD-WAN traffic performance.
config system sdwan
config health-check
edit <name>
set detect-mode agent-based
next
end
config service
edit <id>
set agent-exclusive {enable | disable}
next
end
end
The following diagnostic commands can be used to view agent related metrics:
# diagnose sys link-monitor-passive agent <option>
Example
In this example, routing is achieved through SD-WAN rules. The agent-based health check detection mode creates the
FortiMonitor IP address and FortiGate SD-WAN interface map.
This example assumes that the FortiMonitor has already been added to the Security Fabric (see Configuring
FortiMonitor in the FortiOS Administration Guide for detailed instructions). The FortiMonitor OnSight (client) can be
configured for two or more IP addresses, and each IP address is capable of sending application probes to user-specified
applications.
Specific routing is implemented on the FortiGate to ensure each FortiMonitor client collects performance statistics for
only one SD-WAN member interface. The FortiMonitor is configured to send application-specific probes to measure that
application’s performance on a given SD-WAN member. The FortiGate uses the FortiMonitor performance statistics to
determine link quality based on application performance by mapping the health check. The link quality for a given
application can then be used to steer the matching application traffic with greater accuracy.
2. Configure the SD-WAN rules to ensure each OnSight client uses only one SD-WAN member, and map the
FortiMonitor IP to an SD-WAN member (interface):
config system sdwan
config service
edit 1
set dst "all"
set src "FMR_OnSight1"
set priority-members 1
set agent-exclusive enable
next
edit 2
set dst "all"
set src "FMR_OnSight2"
set priority-members 2
set agent-exclusive enable
next
end
end
The Fabric Overlay Orchestrator feature is an easy-to-use GUI wizard that simplifies the process of configuring a self-
orchestrated SD-WAN overlay within a single Security Fabric. This feature is self-orchestrated since no additional tool or
device, aside from the FortiGates themselves, is required to orchestrate this configuration. An SD-WAN overlay
configuration consists of IPsec and BGP configuration settings.
Currently, the Fabric Overlay Orchestrator supports a single hub architecture and builds upon an existing Security Fabric
configuration. This feature configures the root FortiGate as the SD-WAN overlay hub and the downstream first-level
FortiGates as the spokes.
After configuring the Fabric Overlay, you can complete the SD-WAN deployment by configuring SD-WAN rules.
If you cannot view the VPN > Fabric Overlay Orchestrator tree menu, configure the FortiGate
as a root or a downstream device in the Security Fabric. See Configuring the root FortiGate
and downstream FortiGates in the FortiOS Administration Guide for more details.
The Fabric Overlay Orchestrator does not work when VDOM mode is enabled.
Prerequisites
Network topology
The Fabric Overlay Orchestrator supports configuring an overlay for the following hub and spoke topology using ADVPN
and a single hub.
This topology corresponds to the single datacenter (active-passive gateway) design using the IPsec overlay design of
one-to-one overlay mapping per underlay. For more details on these topics, see the SD-WAN Architectures for
Enterprise guide.
In this topology, the datacenter FortiGate (Security Fabric root FortiGate) is the hub, and the branch FortiGates (Security
Fabric downstream FortiGates) are the spokes. Each FortiGate has a distinctly defined LAN subnet and loopback
interface (lb1) with an IP address within the 10.20.1.0/24 subnet.
The Fabric Overlay Orchestrator creates loopbacks to act as health check servers that are always up, and they can be
accessed by adjacent Fabric devices. When configuring the policy creation option of either automatic or health check on
the hub, the Fabric Overlay Orchestrator configures performance SLAs from the hub to the health check servers on
10.20.1.2 and 10.20.1.3 corresponding to the spoke 1 and spoke 2 FortiGates respectively. Likewise, when the Fabric
Overlay Orchestrator runs on each spoke, it creates a performance SLA to the hub using its loopback address of
10.20.1.1.
Instead of using loopbacks, any business-critical applications and resources connected to the LAN of each device can
be used as health check servers for performance SLAs.
The following steps should be used to configure a self-orchestrated SD-WAN overlay within a single Security Fabric.
These steps must be followed in order, and assume that the prerequisites and network topology are in place.
1. Configure the root FortiGate using the Fabric Overlay Orchestrator.
2. Configure one or more downstream FortiGates using the Fabric Overlay Orchestrator.
3. Configure an overlay on the spoke for an additional incoming interface on the hub (if applicable).
4. Verify the firewall policies on the hub FortiGate.
When configuring the root and downstream FortiGates, the Fabric Overlay Orchestrator configures the following settings
in the background:
l IPsec overlay configuration (hub and spoke ADVPN tunnels)
l BGP configuration
l Policy routing
l SD-WAN zones
l SD-WAN performance SLAs
The FortiGate’s role in the SD-WAN overlay is automatically determined by its role in the Security Fabric. The Fabric root
will be the hub, and any first-level downstream devices from the Fabric root will be spokes.
After using the Fabric Overlay Orchestrator on all FortiGates and verifying the overlay settings, complete the SD-WAN
deployment configuration using steps 3 (if applicable), and steps 6 and 7. See SD-WAN rules in the FortiOS
Administration Guide for more information.
For a detailed example configuration, see Using the Fabric Overlay Orchestrator in the
FortiOS Administration Guide.
The Fabric Overlay Orchestrator can create firewall policies to allow all traffic through the SD-WAN overlay, or firewall
policies to just allow health check traffic through it instead. When the Fabric Overlay Orchestrator is enabled on the root
FortiGate, there are three Policy creation options:
l Automatic: automatically create policies for the loopback interface and tunnel overlays.
l Health check: automatically create a policy for the loopback interface so the SD-WAN health checks are functional.
l Manual: no policies are automatically created.
The Automatic policy creation option creates wildcard allow policies for the tunnel overlays.
For some cases, these policies do not provide the necessary granularity to restrict overlay
traffic to specific subnets or hosts.
When the Fabric Overlay Orchestrator is configured on a device, changing the policy creation
rule will create new policies based on the rule, but it will not delete existing policies. Deleting
existing policies must be performed manually.
General
This section includes information about general network related new features:
l Add NetFlow fields to identify class of service on page 163
l OSPF graceful restart on topology change on page 166
l OSPFv3 graceful restart for OSPF6 on page 169
l BFD for multihop path for BGP on page 174
l Configuring the FortiGate to act as an 802.1X supplicant on page 178
l Support 802.1X on virtual switch for certain NP6 platforms on page 180
l SNMP OIDs for port block allocations IP pool statistics on page 182
l Increase the number of VRFs per VDOM on page 185
l GUI support for advanced BGP options 7.2.1 on page 190
l Support BGP AS number input in asdot and asdot+ format 7.2.1 on page 192
l SNMP OIDs with details about authenticated users 7.2.1 on page 194
l Add new IPAM GUI page 7.2.1 on page 199
l Assign multiple IP pools and subnets using IPAM Rules 7.2.1 on page 201
l Add VCI pattern matching as a condition for IP or DHCP option assignment 7.2.1 on page 204
l Support cross-VRF local-in and local-out traffic for local services 7.2.1 on page 206
l FortiGate as FortiGate LAN extension 7.2.1 on page 208
l Allow VLAN sub-interfaces to be used in virtual wire pairs 7.2.4 on page 213
l Add static route tag and BGP neighbor password 7.2.4 on page 215
l DHCP enhancements 7.2.4 on page 218
l Improve DVLAN QinQ performance for NP7 platforms 7.2.5 on page 223
The new Netflow fields, ipClassOfService and postIpClassOfService, for identifying class of service in traffic flows are
supported in FortiOS. The FortiGate reads the TOS(IPv4)/Traffic Class(IPv6) fields from the first packet of incoming
traffic flow for the ipClassOfService value, and the first packet of outgoing traffic flow for postIpClassOfService value.
These fields were added to NetFlow template ID 262.
Example
In this example, a device behind the downstream FortiGate sends traffic to a device behind the upstream FortiGate. In
the direction of downstream FortiGate > root FortiGate > upstream FortiGate, the downstream FortiGate tags the traffic
with DSCP 110000. The downstream FortiGate pads two 00s to the 6-bit binary to produce the TOS value of 11000000,
which equals 0xc0 in hexadecimal. The flow in that direction will have an ipClassOfService/IP_TOS (TOS value of first
inbound packet) of 0xc0, and a postIpClassOfService/DST_TOS (TOS value of first outbound) of the same 0xc0 value.
In the opposite direction, a device behind the upstream FortiGate sends traffic to device the downstream FortiGate. In
the direction of upstream FortiGate > root FortiGate > downstream FortiGate, the upstream FortiGate tags the traffic with
DSCP 111000. The upstream FortiGate pads two 00s to the 6-bit binary to produce the TOS value of 11100000, which
equals 0xe0 in hexadecimal. The flow in that direction will have an ipClassOfService/IP_TOS (TOS value of first inbound
packet) of 0xe0, and a postIpClassOfService/DST_TOS (TOS value of first outbound) of the same 0xe0 value.
Wireshark is used to analyze the packets. For more information about configuring NetFlow in FortiOS, refer to the
Administration Guide.
Wireshark captures
In the following capture of the NetFlow packet sent from the FortiGate to the NetFlow collector:
l The FortiGate sends NetFlow data template IDs 258 to 269, and option template IDs 256 and 257 to the NetFlow
collector containing the fields in each template (see NetFlow templates for more information).
l Inside data template ID 262, two new fields are added, which correspond to field numbers 13 and 14 of the
template.
13 IP_TOS/ipClassOfService 5
14 DST_TOS/postIpClassOfService 55
The following capture shows two flow sets corresponding to each traffic direction. Each flow set has the TOS value
corresponding to the DSCP tag applied in that direction: 0xc0 for downstream FortiGate > root FortiGate > upstream
FortiGate, and 0xe0 for upstream FortiGate > root FortiGate > downstream FortiGate.
In OSPF graceful restart mode, the restart-on-topology-change option can be used to keep restarting the router
in graceful restart mode when a topology change is detected during a restart.
config router ospf
set restart-on-topology-change {enable | disable}
end
Example
In this example, a restarting router (one of the FG-300Es in the HA cluster) informs its neighbors using grace LSAs
before restarting its OSPF process. When the helper router (the FG-601E) receives the grace LSAs, it enters helper
mode to help with the graceful restart until the graceful period expires. It will act as though there are no changes on the
restarting router (FG-300E). A generic router simulates a topology change during the restart event.
If restart-on-topology-change is enabled on the restarting router, it will not exit the graceful restart mode even
when a topology change is detected.
If restart-on-topology-change is disabled on the restarting router, it will exit graceful restart mode when a
topology change is detected.
When restart-on-topology-change is enabled and there is a topology change during the HA OSPF graceful
restart, the graceful restart will continue. The routes on the helper router (FG-601E) are still there and no traffic will drop.
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
31.1.1.1 1 Full/DR 00:14:47* 172.16.200.31 port1
# get router info routing-table ospf
Routing table for VRF=0
O 21.21.21.21/32 [110/300] via 172.16.200.31, port1, 00:09:55
O 31.1.1.1/32 [110/200] via 172.16.200.31, port1, 00:55:31
O 100.21.1.0/24 [110/200] via 172.16.200.31, port1, 00:12:31
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
31.1.1.1 1 Full/DR 00:14:47* 172.16.200.31 port1
# get router info routing-table ospf
Routing table for VRF=0
O 21.21.21.21/32 [110/300] via 172.16.200.31, port1, 00:10:07
O 31.1.1.1/32 [110/200] via 172.16.200.31, port1, 00:55:43
O 100.21.1.0/24 [110/200] via 172.16.200.31, port1, 00:12:43
When restart-on-topology-change is disabled and there is a topology change during the HA OSPF graceful
restart, the graceful restart will exit. The routes on the helper router (FG-601E) are lost and traffic will drop.
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
31.1.1.1 1 Full/DR 00:14:57* 172.16.200.31 port1
# get router info routing-table ospf
Routing table for VRF=0
O 21.21.21.21/32 [110/300] via 172.16.200.31, port1, 00:11:16
O 31.1.1.1/32 [110/200] via 172.16.200.31, port1, 00:56:52
O 100.21.1.0/24 [110/200] via 172.16.200.31, port1, 00:13:52
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
31.1.1.1 1 Full/DR 00:14:42* 172.16.200.31 port1
# get router info routing-table ospf
Routing table for VRF=0
O 21.21.21.21/32 [110/300] via 172.16.200.31, port1, 00:11:31
O 31.1.1.1/32 [110/200] via 172.16.200.31, port1, 00:57:07
O 100.21.1.0/24 [110/200] via 172.16.200.31, port1, 00:14:07
# get router info ospf neighbor
OSPF process 0, VRF 0:
Neighbor ID Pri State Dead Time Address Interface
31.1.1.1 1 Full/DR 00:14:40* 172.16.200.31 port1
OSPFv3 graceful restart can be used in OSPF6. In OSPF graceful restart mode, the restart-on-topology-change
option can be used to keep restarting the router in graceful restart mode when a topology change is detected during a
restart.
config router ospf6
set restart-mode {none | graceful-restart}
set restart-period <integer>
set restart-on-topology-change {enable | disable}
end
restart-period <integer> Set the graceful restart period, in seconds (1 - 3600, default = 120).
restart-on-topology- Enable/disable continuing graceful restart upon a topology change.
change {enable |
disable}
Example
Graceful restarts allow a router's OSPF6 process to restart without interrupting its neighbors. In this example, a
restarting router (one of the FG-300Es in the HA cluster) informs its neighbors using grace LSAs before restarting its
OSPF process. When the helper router (the FG-601E) receives the grace LSAs, it enters helper mode to help with the
graceful restart until the graceful period expires. It will act as though there are no changes on the restarting router (FG-
300E). A generic router simulates a topology change during the restart event.
If restart-on-topology-change is enabled on the restarting router, it will not exit the graceful restart mode even
when a topology change is detected.
If restart-on-topology-change is disabled on the restarting router, it will exit graceful restart mode when a
topology change is detected.
When graceful restart is enabled and restart-on-topology-change enabled, when HA encounters a failover or
restarts the primary FortiGate, it will trigger a graceful restart. During this period, there is a topology change.
Before graceful restart:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 Full/DR 00:00:34 port1 0
When graceful restart is enabled and restart-on-topology-change disabled, when HA encounters a failover or
restarts the primary FortiGate, it will trigger a graceful restart. During this period, there is a topology change.
Before HA failover:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 Full/DR 00:00:37 port1 0
Before HA failover:
# get router info6 routing-table ospf
Routing table for VRF=0
O 2003:21:21:21::21/128 [110/200] via fe80::209:fff:fe09:2, port1, 00:00:32
O 2003:31:1:1::1/128 [110/100] via fe80::209:fff:fe09:2, port1, 00:01:31
O 2003:100:21:1::/64 [110/300] via fe80::209:fff:fe09:2, port1, 00:00:31
O 2003:172:16:200::/64 [110/100] via ::, port1, 00:01:31
When graceful restart is not enabled, when HA encounters a failover or restarts the primary FortiGate, it will not trigger a
graceful restart. The neighbor needs to re-establish and routes on the neighbor will be lost.
Before HA failover:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 Full/DR 00:00:37 port1 0
Before HA failover:
# get router info6 routing-table ospf
Routing table for VRF=0
O 2003:21:21:21::21/128 [110/200] via fe80::209:fff:fe09:2, port1, 00:00:50
O 2003:31:1:1::1/128 [110/100] via fe80::209:fff:fe09:2, port1, 00:01:00
O 2003:100:21:1::/64 [110/200] via fe80::209:fff:fe09:2, port1, 00:00:50
O 2003:172:16:200::/64 [110/100] via ::, port1, 00:00:50
During HA failover:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 Init/DROther 00:00:32 port1 0
During HA failover:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 ExStart/DR 00:00:38 port1 0
After HA failover:
# get router info6 ospf neighbor
OSPFv3 Process (root)
Neighbor ID Pri State Dead Time Interface Instance ID
31.1.1.1 1 Full/DR 00:00:34 port1 0
In BFD, a FortiGate can support neighbors connected over multiple hops. When BFD is down, BGP sessions are reset
and will try to immediately re-establish neighbor connections. Previously, BFD was only supported when two routers or
FortiGates were directly connected on the same network.
config router {bfd | bfd6}
config multihop-template
edit <ID>
set src <class_IP/netmask>
set dst <class_IP/netmask>
set bfd-desired-min-tx <integer>
set bfd-required-min-rx <integer>
set bfd-detect-mult <integer>
set auth-mode {none | md5}
set md5-key <password>
next
end
end
Example
This example includes IPv4 and IPv6 BFD neighbor configurations. The BFD neighbor is also a BGP neighbor that is in a
different AS.
00:54:32
B 172.28.6.0/24 [20/0] via 172.16.201.2 (recursive via 172.16.200.4, port1),
00:54:32
# get router info6 bgp summary
VRF 0 BGP router identifier 1.1.1.1, local AS number 65412
BGP table version is 8
3 BGP AS-PATH entries
0 BGP community entries
4. The BGP neighbor is reset, and the FortiGate attempts to re-establish a connection with the neighbor. The timers
are reset once the neighbor connection is re-established:
# get router info bgp summary
VRF 0 BGP router identifier 1.1.1.1, local AS number 65412
BGP table version is 12
4 BGP AS-PATH entries
0 BGP community entries
5. The BGP routes are learned again, and there are new timers in the route tables:
# get router info routing-table bgp
Routing table for VRF=0
B 172.28.1.0/24 [20/0] via 172.16.201.2 (recursive via 172.16.200.4, port1),
00:00:15
B 172.28.2.0/24 [20/0] via 172.16.201.2 (recursive via 172.16.200.4, port1),
00:00:15
B 172.28.5.0/24 [20/0] via 172.16.201.2 (recursive via 172.16.200.4, port1),
00:00:15
B 172.28.6.0/24 [20/0] via 172.16.201.2 (recursive via 172.16.200.4, port1),
00:00:15
# get router info6 routing-table bgp
Routing table for VRF=0
B 2000:172:28:1::/64 [20/0] via 2000:172:16:201::2 (recursive via
2000:172:16:200::4, port1), 00:00:13
B 2000:172:28:2::/64 [20/0] via 2000:172:16:201::2 (recursive via
2000:172:16:200::4, port1), 00:00:13
B 2000:172:28:3::/64 [20/0] via 2000:172:16:201::2 (recursive via
2000:172:16:200::4, port1), 00:00:13
The FortiGate can be configured to act as a 802.1X supplicant. The settings can be enabled on the network interface in
the CLI. The EAP authentication method can be either PEAP or TLS using a user certificate.
config system interface
edit <interface>
set eap-supplicant {enable | disable}
set eap-method {peap | tls}
set eap-identity <identity>
set eap-password <password>
set eap-ca-cert <CA_cert>
set eap-user-cert <user_cert>
next
end
Example
In this example, the FortiGate connects to an L3 switch that is not physically secured. All devices that connect to the
internet must be authenticated with 802.1X by either a username and password (PEAP), or a user certificate (TLS).
Configuration examples for both EAP authentication methods on port33 are shown.
802.1X is supported under the hardware switch interface on the following NP6 platforms: FG-30xE, FG-40xE, and FG-
110xE.
Example
In this example, port3 and port4 are part of a hardware switch interface. The hardware switch acts as a virtual switch so
that devices can connect directly to these ports and perform 802.1X authentication on the port.
Prerequisites:
4. Click OK.
The FortiGate SNMP MIB has been updated to support OIDs that provide data about any configured port block allocation
(PBA) IP pools. There are four SNMP OIDs for polling critical PBAs statistics, including total PBAs, in use PBAs, expiring
PBAs, and free PBAs:
See Dynamic SNAT for more information on port block allocation IP pools.
Example 1
FORTINET-FORTIGATE-MIB::fgFwIppStatsEntry.10 = No Such
Instance currently exists at this OID
FORTINET-FORTIGATE-MIB::fgFwIppStatsEntry.11 = No Such
Instance currently exists at this OID
FORTINET-FORTIGATE-MIB::fgFwIppStatsEntry.12 = No Such
Instance currently exists at this OID
Example 2
This example occurs when an IP pool is configured and not used in a firewall policy.
This example can also demonstrate when an IP pool is configured and used in a firewall policy
but there is no traffic match.
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.9.13.13.13.1.13.13.13.13.2 = Gauge32:
6136
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.10.13.13.13.1.13.13.13.13.2 = Gauge32:
0
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.11.13.13.13.1.13.13.13.13.2 = Gauge32:
0
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.12.13.13.13.1.13.13.13.13.2 = Gauge32:
100
Example 3
This example occurs when an IP pool is configured and used in a firewall policy with traffic matching.
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.9.13.13.13.1.13.13.13.13.2 = Gauge32:
6136
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.10.13.13.13.1.13.13.13.13.2 = Gauge32:
1
FORTINET-FORTIGATE-
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.12.13.13.13.1.13.13.13.13.2 = Gauge32:
99
Example 4
This example occurs when an IP pool is configured and used in a firewall policy but the traffic session is expired.
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.9.13.13.13.1.13.13.13.13.2 = Gauge32:
6136
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.10.13.13.13.1.13.13.13.13.2 = Gauge32:
0
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.11.13.13.13.1.13.13.13.13.2 = Gauge32:
1
FORTINET-FORTIGATE-
MIB::fgFwIppStatsEntry.12.13.13.13.1.13.13.13.13.2 = Gauge32:
100
In FortiOS 7.2.0 to 7.2.3, the number of VRFs per VDOM has increased from 32 to 64 to support large SD-WAN, VPN,
and BGP deployments. Up to 64 VRFs can be configured per VDOM on any device.
In FortiOS 7.2.4, the number of VRFs per VDOM has increased from 64 to 252. Up to 252 VRFs can be configured per
VDOM on any device.
Example
In this example, 64 VRFs are configured on the root VDOM. The aggregate interface, agg1, is configured on the root
VDOM with VRF ID 63. The diagnostic output displays the 64 configured VRFs and filtering on a specific VRF ID (63).
...
Advanced BGP options can be configured in the GUI on the Network > BGP page, including: the BGP neighbor local AS,
hold time timer, keepalive timer, and enforcing eBGP multihop. The View in Routing Monitor buttons in the right-side of
the screen can display the BGP neighbors list, the BGP IPv4 routing table, or the BGP IPv6 routing table in a slide-out
window instead of redirecting to the monitor page. The Routing monitor includes an option to soft reset a neighbor from
the BGP neighbors list.
The View in Routing Monitor button is available to view neighbors, paths, and IPv6 paths.
There are fields to enter the Local AS, Keep alive timer, Hold time timer, and Enforce eBGP multihop.
BGP Autonomous System (AS) numbers can be inputted in asdot and asdot+ format in compliance with RFC 5396 when
configuring the following in the CLI.
l BGP AS, neighbor local and remote AS, and neighbor group local and remote AS:
config router bgp
set as <string>
config neighbor
edit <ip>
set remote-as <string>
set local-as <string>
next
end
config neighbor-group
edit <name>
set remote-as <string>
set local-as <string>
next
end
end
get router info bgp summary and other BGP router commands still display the AS
numbers in asplain format.
Example
In this example, neighbor 1.1.1.1's remote AS is configured in asdot format. Neighbor 172.16.201.2's remote AS is
configured in asdot format, and the local AS in asplain format.
The BGP AS number 65535.65535 in asdot format corresponds to AS number 4294967295 in asplain format in this
output.
The fgFwAuthUserTables SNMP table gathers information about authenticated users. These are users that have been
authenticated by methods supported on the FortiGate (local, FSSO, RSSO, and so on). This table supports SNMP
VDOM access control and OIDs for IPv4 and IPv6 authenticated users.
fgFwAuthUserTables.fgFwAuthIpv4UserTable.fgFwAuthIpv4UserEntry.fg 1.3.6.1.4.1.12356.101.5.2
FwAuthIpv4UserType .3.2.1.4
fgFwAuthUserTables.fgFwAuthIpv4UserTable.fgFwAuthIpv4UserEntry.fg 1.3.6.1.4.1.12356.101.5.2
FwAuthIpv4UserAddr .3.2.1.5
fgFwAuthUserTables.fgFwAuthIpv6UserTable.fgFwAuthIpv6UserEntry.fg 1.3.6.1.4.1.12356.101.5.2
FwAuthIpv6UserType .3.3.1.4
fgFwAuthUserTables.fgFwAuthIpv6UserTable.fgFwAuthIpv6UserEntry.fg 1.3.6.1.4.1.12356.101.5.2
FwAuthIpv6UserAddr .3.3.1.5
SNMP query:
Example 2: when there is an IPv4 authenticated user and no IPv6 authenticated user
SNMP query:
Example 3: when there is an IPv6 authenticated user and no IPv4 authenticated user
SNMP query:
----------------------------------------------->fgFwAuthIpv6UserNumber (root)
FORTINET-FORTIGATE-MIB::fgFwUsers.3.1.1.3.2 = INTEGER: 1------------------------------------
----------------------------------------------->fgFwAuthIpv6UserNumber (vdom1)
FORTINET-FORTIGATE-MIB::fgFwUsers.3.1.1.3.3 = INTEGER: 0------------------------------------
----------------------------------------------->fgFwAuthIpv6UserNumber (vdom2)
FORTINET-FORTIGATE-MIB::fgFwUsers.3.3.1.1.1 = INTEGER: 1------------------------------------
----------------------------------------------->fgFwAuthIpv6UserIndex
FORTINET-FORTIGATE-MIB::fgFwUsers.3.3.1.2.1 = INTEGER: 2------------------------------------
----------------------------------------------->fgFwAuthIpv6UserVdom
FORTINET-FORTIGATE-MIB::fgFwUsers.3.3.1.3.1 = STRING: "IPv6prefUser"------------------------
------------------------------------------->fgFwAuthIpv6UserName
FORTINET-FORTIGATE-MIB::fgFwUsers.3.3.1.4.1 = INTEGER: 1------------------------------------
----------------------------------------------->fgFwAuthIpv6UserType
FORTINET-FORTIGATE-MIB::fgFwUsers.3.3.1.5.1 = Hex-STRING: 20 00 01 72 00 16 02 00 00 00 00
00 00 00 00 00--------------->fgFwAuthIpv6UserAddr
SNMP query:
IP address management (IPAM) details have been migrated to a centralized Network > IPAM page. The IPAM page
replaces the Security Fabric > Fabric Connectors > IPAM widget and uses three tabs to display information:
l IPAM Interfaces
l IPAM Rules
l IPAM Settings
The IPAM page is only viewable on a FortiGate that is not in a Security Fabric or on the root
FortiGate in a Security Fabric. Downstream FortiGates in a Security Fabric will display a
notification to view the root FortiGate.
IPAM status is disabled by default. After performing a factory reset, enabled IPAM status
will auto-generate two subnets. These subnets can be modified and deleted.
3. Enter the IP address and netmask in the Subnets field. Additional subnets can be added using the +.
4. Click OK. A chart is displayed showing available space and IP address overlap between IPAM-Managed and
Manually Configured IP addresses.
The IPAM Interfaces tab displays conflict markers when there are IP pool IP address conflicts with manually configured
IP addresses. Administrators can use the Edit Interface dialog to manually resolve the conflict.
Multiple IP pools can be assigned to different interfaces based on name and role using the IPAM Rules tab on the
Network > IPAM page. This allows more flexibility when enabling network segmentation.
IPAM pools and rules can be defined on a FortiGate not in a Security Fabric or in the root
FortiGate of a Security Fabric.
A DHCP server can also be configured for IPAM-enabled interfaces using the following command.
# execute ipam create-dhcp-server <interface>
1. Enable IPAM status. See Add new IPAM GUI page 7.2.1 on page 199 for more information.
2. Configure the subnet:
a. Go to Network > IPAM > IPAM Settings.
b. Select the + in the Subnets Managed by IPAM section. A new Subnets field is displayed.
Implicit Rule cannot be modified or deleted. role-lan appears only after factory reset of the
FortiGate and can be modified and deleted.
6. Click OK. The rule will be configured and appear in the IPAM Rules tab.
Add VCI pattern matching as a condition for IP or DHCP option assignment - 7.2.1
VCIs (vendor class identifiers) are supported in DHCP to allow VCI pattern matching as a condition for IP or DHCP
option assignment. A single IP address, IP ranges of a pool, and dedicated DHCP options can be mapped to a specific
VCI string.
config system dhcp server
edit <id>
config ip-range
edit <id>
set vci-match {enable | disable}
set vci-string <string>
next
end
config options
edit <id>
set vci-match {enable | disable}
set vci-string <string>
next
end
next
end
vci-match {enable | Enable/disable VCI matching. When enabled, only DHCP requests with a
disable} matching VCI are served with this range.
vci-string <string> Set the VCI string. Enter one or more VCI strings in quotation marks separated by
spaces.
Example
In this example, any DHCP client that matches the FortiGate-201F VCI will get their IP from the pool of 10.2.2.133-
10.2.2.133, and options 42 (NTP servers) and 150 (TFTP server address). Any DHCP client that matches the FortiGate-
101F VCI will get their IP from the default pool (10.2.2.132-10.2.2.132/10.2.2.134-10.2.2.254) and only get the 150
option.
Support cross-VRF local-in and local-out traffic for local services - 7.2.1
When local-out traffic such as SD-WAN health checks, SNMP, syslog, and so on are initiated from an interface on one
VRF and then pass through interfaces on another VRF, the reply traffic will be successfully forwarded back to the original
VRF.
Example
In this example, there is an NPU VDOM link that is configured on the root VDOM. Two VLANs, vrf10 and vrf20, are
created on either ends of the NPU VDOM link, each belonging to a different VRF.
When pinging from the vrf10 interface in VRF 10 to the destination server 172.16.202.2, since there is a single static
route for VRF 10 with a gateway of vrf20/10.32.70.2, traffic is sent to the next hop and subsequently routed through
port12 to the server.
As seen in the sniffer trace, the ICMP replies are received on port12 in VRF 20, then pass through vrf20, and are
ultimately forwarded back to vrf10 in VRF 10. The traffic flow demonstrates that local-out traffic sourced from one VRF
passing through another VRF can return back to the original VRF.
set vlanid 22
next
edit "port12"
set vdom "root"
set vrf 20
set ip 172.16.202.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet fgfm radius-acct probe-response
fabric ftm speed-test
set type physical
set alias "TO_FGT_D_port22"
set snmp-index 14
config ipv6
set ip6-address 2003:172:16:202::1/64
set ip6-allowaccess ping
end
next
end
1. Execute a ping from the vrf10 interface in VRF 10 to the destination server (172.16.202.2):
# execute ping-options interface vrf10
# execute ping 172.16.202.2
PING 172.16.202.2 (172.16.202.2): 56 data bytes
64 bytes from 172.16.202.2: icmp_seq=0 ttl=254 time=0.1 ms
64 bytes from 172.16.202.2: icmp_seq=1 ttl=254 time=0.0 ms
LAN extension mode allows a remote FortiGate to provide remote connectivity to a local FortiGate over a backhaul
connection.
The remote FortiGate, called the FortiGate Connector, discovers the local FortiGate, called the FortiGate Controller, and
forms one or more IPsec tunnels back to the FortiGate Controller. A VXLAN is established over the IPsec tunnels
creating an L2 network between the FortiGate Controller and the network behind the FortiGate Connector.
In this example, the Controller provides secure internet access to the remote network behind the Connector. The
Controller has two WAN connections: an inbound backhaul connection and an outbound internet connection. The
Connector has two wired WAN/uplink ports that are connected to the internet.
After the Connector discovers the Controller and is authorized by the Controller, the Controller pushes a FortiGate LAN
extension profile to the Connector. The Connector uses the profile configurations to form two IPsec tunnels back to the
Controller. Additional VXLAN aggregate interfaces are automatically configured to create an L2 network between the
Connector LAN port and a virtual LAN extension interface on the Controller. Clients behind the Connector can then
connect to the internet through the Controller that is securing the internet connection.
4. After the FortiGate Connector has been authorized, the Controller pushes the IPsec tunnel configuration to the
Connector, forcing it to establish the tunnel and form the VXLAN mechanism.
The VXLANs are built on the IPsec tunnels between the Connector and Controller. The VXLAN interfaces are
aggregated for load balancing and redundancy. A softswitch combines the aggregate interface with the local LAN
ports, allowing the LAN ports to be part of the VXLAN. This combines the local LAN ports with the virtual LAN
extension interface on the FortiGate Controller.
a. The Connector receives the IPsec configurations from the Controller, and creates tunnels for each uplink:
config vpn ipsec phase1-interface
edit "ul-port1"
set interface "port1"
set ike-version 2
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set localid "peerid-T4YLv2rp62SU6JhoCPIv02MzjLtS7P5HlxRER1Qpi6O9ZsAsbPSpvoiE"
set dpd on-idle
set comments "[FGCONN] Do NOT edit. Automatically generated by extension
controller."
set remote-gw 1.1.1.10
set psksecret ******
next
edit "ul-port2"
set interface "port2"
set ike-version 2
set peertype any
set net-device disable
set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
set localid "peerid-T4YLv2rp62SU6JhoCPIv02MzjLtS7P5HlxRER1Qpi6O9ZsAsbPSpvoiE"
set dpd on-idle
set comments "[FGCONN] Do NOT edit. Automatically generated by extension
controller."
set remote-gw 1.1.1.10
set psksecret ******
next
end
c. An aggregate interface is configured to load balance between the two VXLAN interfaces, using the source
MAC and providing link redundancy:
config system interface
edit "le-agg-link"
d. The softswitch bridges the aggregate interface and the local LAN to connect the LAN to the VXLAN bridged L2
network that goes to the FortiGate LAN extension interface:
config system switch-interface
edit "le-switch"
set vdom "lan-ext"
set member "le-agg-link" "lan"
next
end
e. After the IPsec tunnel is setup and the VXLAN is created over the tunnel, the LAN extension interface is
automatically created on the Controller:
config system interface
edit "FGT60E0000000001"
set vdom "root"
set ip 192.168.0.254 255.255.255.0
set allowaccess ping ssh
set type lan-extension
set role lan
set snmp-index 27
set ip-managed-by-fortiipam enable
set interface "fg-ipsec-XdSpij"
next
end
To configure the LAN extension interface and firewall policy on the FortiGate Controller:
Devices on the remote LAN network will use this as their gateway.
2. Optionally, enable DHCP on the interface to assign IP addresses to the remote devices:
config system dhcp server
edit 3
set dns-service default
set default-gateway 9.9.9.99
set netmask 255.255.255.0
set interface "FGT60E0000000001"
config ip-range
edit 1
set start-ip 9.9.9.100
3. Configure the firewall policy to allow traffic from the LAN extension interface to the WAN interface (port1):
config firewall policy
edit "lan-ext"
set name "qsaf"
set srcintf "FGT60E0000000001"
set dstintf "port1"
set action accept
set srcaddr "all"
set dstaddr "all"
set schedule "always"
set service "ALL"
set nat enable
next
end
VLAN sub-interfaces, such as regular 802.1Q and 802.1ad (QinQ), are allowed to be members of a virtual wire pair.
Example
In this example, the FortiGate has two VLAN interfaces. The first interface is a QinQ (802.1ad) interface over the
physical interface port3. The second interface is a basic 802.1Q VLAN interface over physical interface port5. These two
interfaces are grouped in a virtual wire pair so that bi-directional traffic is allowed. This example demonstrates ICMP from
the client (3.3.3.4) sent to the server (3.3.3.1).
next
end
Example 1
In this example, a static route is configured with a route tag. The route tag is then matched in the route map, and used to
set the route's metric and advertise to the BGP neighbor.
On its neighbor side, router R1 receives the advertised route from the FortiGate router R5.
4. Verify the BGP routing table:
# get router info routing-table bgp
Routing table for VRF=0
B 77.7.7.7/32 [20/2301] via 10.100.1.1 (recursive is directly connected, R150),
03:18:53, [1/0]
Example 2
In this example, a BGP group is configured, and it uses a password to establish the neighborhood.
next
end
config neighbor-range
edit 1
set prefix 172.16.201.0 255.255.255.0
set max-neighbor-num 10
set neighbor-group "FGT"
next
end
end
uci-match {enable | Enable/disable User Class information (UCI) matching for option 77. When
disable} enabled, only DHCP requests with a matching UCI are served with this range.
uci-string <string> Enter one or more UCI strings in quotation marks separated by spaces.
lease-time <integer> Set the lease time for a specific IP range, in seconds (300 - 864000, default = 0). If
the default (0) is used for an IP range, it applies the global DHCP server lease
time setting, which is set to 604800 by default.
In this example, when the User Class ID is matched, the FortiGate assigns the second IP range (17.17.17.2), and the
lease time is set to 1111 seconds.
When a client request consists of a FGT-3112 User Class ID, 17.17.17.2 is allocated to it.
In this example, when the User Class ID is matched, the FortiGate assigns option 66, the TFTP server name, and the
value testdatatestdata.
When a client request consists of a FGT-3112 User Class ID, option 66 is included in the DHCP offer.
DVLAN 802.1ad and 802.1Q modes are supported on NP7 platforms, which provides better performance and packet
processing.
For more information about this feature, see Improve DVLAN QinQ performance for NP7 platforms.
IPv6
IPv4 over IPv6 DS-Lite service can be configured on a virtual network enabler (VNE) tunnel. In addition, VNE tunnel
fixed IP mode supports username and password authentication.
config system vne-tunnel
set status enable
l fixed-ip: fixed IP
l ds-lite: DS-Lite
ipv4-address <IPv4_ Enter the tunnel IPv4 address and netmask. This setting is optional.
address>
br <IPv6_address or FQDN> Enter the IPv6 or FQDN of the border relay.
http-username <string> Enter the HTTP authentication user name.
http-password <password> Enter the HTTP authentication password.
DS-Lite allows applications using IPv4 to access the internet with IPv6. DS-Lite is supported by internet providers that do
not have enough public IPv4 addresses for their customers, so DS-Lite is used for IPv6 internet connections. When a
DS-Lite internet connections is used, the FortiGate encapsulates all data from IPv4 applications into IPv6 packets. The
packets are then transmitted to the internet service provider using the IPv6 connection. Next, a dedicated server
unpacks the IPv6 packets and forwards the IPv4 data to the actual destination on the internet.
DS-Lite example
In this example, DS-Lite VNE tunnel mode is used between the FortiGate and the BR.
dhcp6-relay-service : disable
end
next
end
5. Test the tunnel connection by pinging the Google public DNS IPv6 address:
In this example, fixed IP VNE tunnel mode with HTTP authentication is used between the FortiGate and the BR.
To configure a fixed IP mode with HTTP authentication between the FortiGate and the BR:
next
end
5. Test the tunnel connection by pinging the Google public DNS IPv4 and IPv6 addresses:
NAT46 and NAT64 are supported for SIP ALG. A mix of IPv4 and IPv6 networks can use SIP ALG, allowing for proper
call handling.
NAT46 example
In this example, SIP phones on the internal network use IPv4, and the SIP server on an external network uses IPv6.
NAT46 is used with SIP ALG to allow for seamless communication. A VoIP profile, sip, has already been created.
To check the SIP calls and session lists when the phones are registering to the SIP server:
To check the SIP calls and session lists when one phone is calling another phone:
sip calls
vdom 3 (vdom1) vrf 0 call 7f64bf057a00
call-id: 217ac4733f80ac766c7e0f3a69d317a1@[2000:172:16:200::44]:5060
txn 7f64bf038800 (INVITE)
cseq 103 dir 1 state 11 status 200 expiry 252 HA 0
i_session: 7f64bf036500 r_session: 7f64bf036500
register: not-present
contact[0]: factory 7f64bf057900/4 expectation 7f64bf02cf00/2 session
7f64bf036500
contact[1]: factory 7f64bf057700/3 expectation 7f64bf02ca00/3 session
7f64bf036500
from: sip:2001@[2000:172:16:200::44]
to: sip:2002@[2000:172:16:200::200]:65476;o=10.1.100.22;line=28c59e086cac7c9
src: [2000:172:16:200::44]:5060
dst: 10.1.100.22:5060
src: [2000:172:16:200::44]:5060
dst: 10.1.100.22:5060
Log messages
NAT64 example
In this example, SIP phones on the internal network use IPv6, and the SIP server on an external network uses IPv4.
NAT64 is used with SIP ALG to allow for seamless communication. A VoIP profile, sip, has already been created.
2. Configure an IP pool:
config firewall ippool
edit "client_server_nat46"
set startip 172.16.200.2
set endip 172.16.200.3
set nat64 enable
next
end
Netflow traffic can be sent from the FortiGate to a collector using IPv6. Both the source and collector IP addresses can
be IPv6 addresses.
When VDOMs are enabled, the source and collector IPv6 addresses can be configured globally or in individual VDOMs.
To confirm that the collector IP address is set to an IPv6 address on the FortiGate:
IPv6 feature parity with IPv4 static and policy routes - 7.2.1
This enhancement introduces options in IPv6 static and policy routes for parity with IPv4 static and policy routes.
config router static6
edit <seq-num>
set dstaddr <string>
dstaddr <string> Enter the name of the firewall address or address group.
weight <integer> Set the administrative weight (0 - 255, default = 0).
id=1 dscp_tag=0xfc 0xfc flags=0x4 deny tos=0x00 tos_mask=0x00 protocol=6 sport=2-22 iif=72
(ipip_A_D) 30(l2t.root) dport=3-33 path(0)
source(1): 10.1.1.1-10.1.1.11
destination(2): 10.100.22.0-10.100.22.255 10.100.2.22-10.100.2.22
source wildcard(2): 22.2.2.2/255.255.255.255 22.2.2.22/255.255.255.255
destination wildcard(2): 33.3.3.3/255.255.255.255 33.3.3.33/255.255.255.255
internet service(3): Act-on-DNS(5242883,0,0,0,0) Act-on-FTP(5242887,0,0,0,0) Act-on-ICMP
(5242882,0,0,0,0)
hit_count=3 last_used=2022-06-28 11:05:25
Web proxy
This section includes information about web proxy related new features:
l HTTPS download of PAC files for explicit proxy 7.2.1 on page 238
l Support CORS protocol in explicit web proxy when using session-based, cookie-enabled, and captive portal-
enabled SAML authentication 7.2.1 on page 240
Proxy auto-config (PAC) files can be downloaded for an explicit proxy through the FortiGate's captive portal using
HTTPS to ensure a secure download.
Example
In this example, a Windows PC has an HTTPS URL configured in its proxy settings to download a PAC file from a
FortiGate by using a download link, https://cp.myqalab.local:7831/proxy.pac, through a captive portal. Once the PAC file
is securely downloaded using HTTPS, browsers installed on the PC can use the proxy in the PAC file to visit a website.
The global web proxy settings must be configured to use a customized SSL certificate because the default Fortinet_
Factory certificate will not be accepted by Windows due to security restrictions. The customized SSL certificate is used
as the HTTPS server's certificate on the FortiGate. All CA certificates in the server certificate must be installed and
trusted on the Windows PC.
1. Configure the explicit web proxy to get a PAC file through HTTPS:
config web-proxy explicit
set pac-file-server-status enable
unset pac-file-server-port
set pac-file-name "proxy.pac"
set pac-file-data "function FindProxyForURL(url, host) {
// testtest
return \"PROXY 10.1.100.1:8080\";
}
"
set pac-file-through-https enable
end
2. Configure the captive portal to be used as an HTTPS server to provide the service to download the PAC file:
config authentication setting
set captive-portal-type ip
set captive-portal-ip 10.1.100.1
set captive-portal-ssl-port 7831
end
3. Configure the global web proxy settings to use a customized SSL certificate:
config web-proxy global
set ssl-cert "server_cert"
end
5. In the Automatic proxy setup section, click Save to trigger the PAC file download from the HTTPS URL.
Support CORS protocol in explicit web proxy when using session-based, cookie-
enabled, and captive portal-enabled SAML authentication - 7.2.1
The FortiGate explicit web proxy supports the Cross-Origin Resource Sharing (CORS) protocol, which allows the
FortiGate to process a CORS preflight request and an actual CORS request properly, in addition to a simple CORS
request when using session-based, cookie-enabled, and captive portal-enabled SAML authentication. This allows a
FortiGate explicit web proxy user with this specific configuration to properly view a web page requiring CORS with
domains embedded in it other than its own domain.
For more information about this feature, see Support CORS protocol in explicit web proxy when using session-based,
cookie-enabled, and captive portal-enabled SAML authentication.
General
This section includes information about general system related new features:
l Improve admin-restrict-local handling of multiple authentication servers on page 241
l Access control for SNMP based on the MIB-view and VDOM on page 243
l Backing up and restoring configuration files in YAML format on page 245
l Remove split-task VDOMs and add a new administrative VDOM type on page 246
l Introduce maturity firmware levels on page 247
l Restrict SSH and telnet jump host capabilities 7.2.1 on page 250
l Enable automatic firmware updates 7.2.1 on page 251
l Deregistration from the GUI 7.2.1 on page 253
l Add government end user option for FortiCare registration 7.2.1 on page 255
l Support backing up configurations with password masking 7.2.1 on page 255
l New default certificate for HTTPS administrative access 7.2.1 on page 257
l Remove maintainer account 7.2.4 on page 261
l Allow the FortiGate to override FortiCloud SSO administrator user permissions 7.2.4 on page 262
l Display warnings for supported Fabric devices passing their hardware EOS date 7.2.5 on page 268
l Enhance BIOS-level signature and file integrity checking 7.2.5 on page 268
Under config system global, when the admin-restrict-local setting is enabled, local administrators cannot
be used until all remote authentication servers are down. The FortiGate now only checks if all remote authentication
servers applied in system admin are down, instead of all remote servers configured on the FortiGate, before allowing
local administrators to log in.
To configure remote authentication groups and apply remote authentication to system administrative
users:
1. Configure multiple remote authentication servers (this example uses one RADIUS and one LDAP server):
config user radius
edit "1006290-radius"
To restrict local administrator access until the remote authentication server is down:
1. Enable admin-restrict-local:
config system global
set admin-restrict-local enable
end
2. Get the remote and local administrators to log in to the FortiGate with SSH. The remote administrator is able to log
in, but the local administrator is unable to log in:
l Remote:
root@PC1:~# ssh mschap@10.1.100.1
mschap@10.1.100.1's password:
FortiGate-101F $ get system status
Version: FortiGate-101F v7.2.0, ...
l Local:
3. Shut down the RADIUS server and keep the LDAP server running. The local administrator is now able to log in to
the FortiGate:
root@PC1:~# ssh admin@10.1.100.1
admin@10.1.100.1's password:
FortiGate-101F # get system status
Version: FortiGate-101F v7.2.0, ...
Administrators can provide access control to SNMP users and communities based on restricting a MIB-view to specific
OID subtrees. They can also define access based on the VDOM. This allows multi-tenant FortiGate deployments to
provide restricted access per VDOM.
l MIB-view access control allows the SNMP clients to query specific OIDs that are filtered by the MIB-view settings.
l VDOM access control allows the SNMP clients to query data from specific VDOMs that are filtered by the VDOM
settings.
When access control is enabled, the users can only access the information that is allowed by the access control, and all
other information is inaccessible. Administrators have granular control, and can easily restrict specific information based
on access control.
To configure MIB-views:
set include <OIDs>> The OID subtrees to be included in the view. A maximum of 16 subtrees can be
added.
set exclude <OIDs> The OID subtrees to be excluded in the view. A maximum of 64 subtrees can be
added.
To configure access control based on MIB-views and VDOMs for SNMP users and communities:
next
end
Example
In this example, two MIB-views are created and, with VDOMs, used to control access for SNMP users and communities.
next
end
Configuration files can be backed up or restored on an FTP or TFTP server in YAML format (in addition to FortiOS
format). Files formatted in YAML are easy to read and have a consistent model that supports generic tools.
Examples
system_accprofile:
- prof_admin:
secfabgrp: read-write
ftviewgrp: read-write
authgrp: read-write
sysgrp: read-write
netgrp: read-write
loggrp: read-write
fwgrp: read-write
vpngrp: read-write
utmgrp: read-write
wanoptgrp: read-write
wifi: read-write
When a virtual domain (VDOM) is set to multi VDOM mode, individual VDOMs can be configured as an administrative or
traffic type. When the VDOM type is set to Admin, the VDOM is used for management purposes only. Administrative
users can log in to the FortiGate using SSH, HTTPS, and so on but traffic cannot pass through. When VDOM type is set
to Traffic, the VDOM can pass traffic like regular VDOMs.
Only one administrative VDOM can exist at a time and cannot be set on a FortiWifi. A VDOM
cannot be an administrative type and in transparent mode at the same time.
The multi VDOM is more flexible than split-task VDOM mode. Upon upgrade, if a FortiGate is in split-task VDOM mode, it
will be converted to multi VDOM mode. The FG-traffic VDOM will become a traffic VDOM. The root VDOM will become
an administrative VDOM.
Starting with FortiOS 7.2.0, released FortiOS firmware images use tags to indicate the following maturity levels:
l The Feature tag indicates that the firmware release includes new features.
l The Mature tag indicates that the firmware release includes no new, major features. Mature firmware will contain
bug fixes and vulnerability patches where applicable.
Administrators can use the tags to identify the maturity level of the current firmware in the GUI or CLI.
Administrators can view the maturity level of each firmware image that is available for upgrade on the Fabric
Management page. When upgrading from mature firmware to feature firmware, a warning message is displayed.
To demonstrate the functionality of this feature, this example uses FortiGates that are running
and upgrading to fictitious build numbers.
1. Go to Dashboard > Status. The Firmware field in the System Information widget displays the version with build and
either (Mature) or (Feature).
The following is an example of firmware with the (Mature) tag:
To upgrade mature firmware to feature firmware with a file upload in the GUI:
1. Go to System > Fabric Management . The Firmware Version column displays the version and (Mature).
2. Select the FortiGate, and click Upgrade. The FortiGate Upgrade pane opens.
3. Click the File Upload tab and upload the image file.
When upgrading to feature firmware, a warning message appears about the maturity level of the selected firmware
for the upgrade. In this example, the upgrade would go from a mature firmware version to a feature firmware
version.
To upgrade mature firmware to feature firmware using the upgrade path in the GUI:
4. Click the Latest tab to view the latest available firmware version with its maturity level.
In the following example, the latest firmware version is mature:
In this example, the Version field includes .F to indicate that the maturity level is feature.
# get system status
Version: FortiGate-301E v7.2.2,build0610,220304 (GA.M)
...
In this example, the Version field includes .M to indicate that the maturity level is mature.
In this example, the firmware is upgraded from mature status to feature status, and includes warnings.
Jump hosts are used to access devices in separate security zones, such as the internet and an internal network.
Administrator access profiles can be configured to prevent administrators from using the FortiGate as a jump host for
SSH and telnet connections.
3. Log in as the new administrator, and attempt to connect to another host using SSH or telnet:
# execute ssh root@172.16.200.55
You are not entitled to run the command.
Command fail. Return code -37
# execute ssh6 root@2000:172:16:200::55
You are not entitled to run the command.
Command fail. Return code -37
# execute telnet 172.16.200.55
You are not entitled to run the command.
Command fail. Return code -37
The auto-firmware-upgrade option can be enabled to automatically update firmware based on the FortiGuard
upgrade path. When enabled, the FortiGate will look for an upgrade path and perform an upgrade at a time within the
time period specified by the administrator. The upgrade will only be performed on a patch within the same major release
version.
config system fortiguard
set auto-firmware-upgrade {enable | disable}
set auto-firmware-upgrade-day {sunday monday tuesday wednesday thursday friday saturday}
set auto-firmware-upgrade-start-hour <integer>
set auto-firmware-upgrade-end-hour <integer>
end
auto-firmware-upgrade- Set the start time of the designated time window for the automatic patch-level
start-hour <integer> firmware upgrade from FortiGuard (in hours, 0 - 23, default = 2). The actual
upgrade time is randomly selected in the time window.
auto-firmware-upgrade- Set the end time of the designated time window for the automatic patch-level
end-hour <integer> firmware upgrade from FortiGuard (in hours, 0 - 23, default = 4). When this value it
is smaller than the start time, it will be treated as the same time in the next day.
The actual upgrade time is randomly selected in the time window.
Example
Sample event log after enabling this option with a certain schedule:
At the scheduled upgrade time, the FortiGate (forticldd daemon) will only try to upgrade to the latest patch in the same
<major.minor> version in the image upgrade matrix.
For example, the following new releases are available in FortiGuard (fictitious build numbers are used to demonstrate
the functionality of this feature):
FGTPlatform=FG201E|FGTCurrVersion=7.0.6|FGTCurrBuildNum=0366|FGTUpgVersion=7.2.2|FGTUpgBuild
Num=1602|BaselineVersion=DISABLE
FGTPlatform=FG201E|FGTCurrVersion=7.2.1|FGTCurrBuildNum=1224|FGTUpgVersion=7.2.2|FGTUpgBuild
Num=1602|BaselineVersion=DISABLE
Other scenarios
If auto-firmware-upgrade is changed to be disabled, the FortiGate (forticldd daemon) will not perform a scheduled
upgrade.
If there is no upgrade image on the server, the forticldd daemon will reschedule the update to the next available time.
An administrator can deregister a FortiGate, if the device has been registered for three or more years, using the GUI or
CLI, without having to contact FortiCare administration. After the device is deregistered, all associated contracts are also
deregistered, and all of the administrator's information is wiped.
If the FortiGate has been registered for less then three years, the deregistration will fail.
If the FortiGate has been registered for less then three years, the deregistration will fail:
When registering using FortiCare, users can select a Non-government or Government end user type for parity with the
registration process using the support portal.
6. Click OK.
When backing up a configuration that will be shared with a third party, such as Fortinet Inc. Support, passwords and
secrets should be obfuscated from the configuration to avoid information being unintentionally leaked. Password
masking can be completed in the Backup System Configuration page and in the CLI. When password masking is
enabled, passwords and secrets will be replaced in the configuration file with FortinetPasswordMask.
1. Click on the username in the upper right-hand corner of the screen and select Configuration > Backup.
2. Select YAML as the File format.
3. Enable Password mask. A warning message is displayed.
4. Click OK. The full configuration file is saved to your computer with passwords and secrets obfuscated.
If a configuration is being backed up on a server, server information must be included with the
command. Other information that may be required with an execute backup command
includes file names, passwords, and comments. See Configuration backups in the
Administration Guide for more information.
Restoring configurations
When restoring a configuration file that has password masking enabled, all obfuscated passwords and secrets will be
restored as well.
Restoring the FortiGate with a configuration with passwords obfuscated is not recommended.
1. Click on the user name in the upper right-hand corner of the screen and select Configuration > Restore.
2. Select YAML as the File format.
3. Click Upload. The File Explorer is displayed.
4. Navigate to the configuration file and click Open.
By default, the FortiGate uses the certificate named Fortinet_GUI_Server for HTTPS administrative access. This
certificate is generated and signed by the built-in Fortinet_CA_SSL certificate, which dynamically updates the SAN field
of the Fortinet_GUI_Server certificate with the IP addresses of all interfaces enabled for HTTPS. After installing the
Fortinet_CA_SSL CA certificate on a PC, administrators can access the FortiGate GUI through a browser without any
warnings.
In previous versions of FortiOS, the FortiGate uses the self-signed certificate for default
HTTPS administrative access. Because this certificate is untrusted and does not contain a
valid SAN field, browsers will raise a warning by default when an administrator accesses the
FortiGate GUI.
The Fortinet_GUI_Server certificate is generated by the built-in certificate authority (CA) with the Fortinet_CA_SSL
certificate, which is unique to each FortiGate. This CA certificate is also used in SSL deep inspection. When the Fortinet_
GUI_Server certificate is generated, the SAN (Subject Alternative Name) extension field is populated with the IP
addresses of all physical and logical (VLAN, loopback, and so on) interfaces enabled for HTTPS. It is also populated with
the management IP address whenever this field is an IP address and not an FQDN. If there are any changes to the IP
addresses on the interface or management IP, the Fortinet_GUI_Server certificate is updated and regenerated with the
new IP. If the Fortinet_CA_SSL certificate itself is updated, the Fortinet_GUI_Server certificate is regenerated.
Because the root CA is not a public CA, the Fortinet_CA_SSL CA certificate must be installed in the trusted certificate
store on the client PC in order for the trusted certificate chain to be recognized by a browser. This certificate can be
downloaded from the FortiGate in several ways.
The Fortinet_GUI_Server certificate can only be used for HTTPS administrative access. It
cannot be used anywhere else.
Example
1. On an administrative PC, log in to the FortiGate GUI and go to System > Settings.
2. In the Administration Settings section, set the HTTPS server certificate to Fortinet_GUI_Server.
3. Download the Fortinet_CA_SSL certificate using one of the following methods:
l On the System > Settings page, click Download HTTPS CA certificate (below the HTTPS server certificate
option).
l Go to System > Certificates. In the Local CA Certificate section, select Fortinet_CA_SSL, and click Download.
l Go to Dashboard > Status. In the Administrator widget, click Download HTTPS CA certificate.
4. Install the certificate in the PC’s trusted certificate store. Refer to your OS documentation if needed.
5. Reload the FortiGate GUI. The browser now trusts the certificate and does not display a certificate warning.
6. If you are connecting to the FortiGate over DNAT or port forwarding, the certificate needs to add the NATed
management IP into the SAN field so that the browser does not display a warning about an invalid CN. Configure
the management IP in the global settings:
config system global
set management-ip <IP_address>
end
Done.
1. Access the FortiGate from a browser and verify the certificate information. For example, in Chrome:
a. In the left side of the address bar, click the icon to view the site information.
b. Click Certificate.
c. Click the Details tab.
d. Locate the Subject Alternative Name (SAN) field, and note the IP addresses that are listed (1.1.1.1).
e. Click OK.
2. In FortiOS, change one of the interface addresses. In this example, the port11 address is changed from 1.1.1.1 to
3.3.3.3.
3. Reload the browser and review the certificate information again. The IP 1.1.1.1 in the SAN field is updated to
3.3.3.3.
4. In FortiOS, go to System > Certificates and double-click Fortinet_GUI_Server to view the Certificate Details.
5. At the bottom of the pane, the X509v3 Subject Alternative Name field displays the IP addresses from the certificate.
6. Verify the logs when the certificate is regenerated:
# execute log filter category 1
# execute log display
12 logs found.
10 logs returned.
1: date=2022-06-23 time=09:11:44 eventtime=1656000704674434910 tz="-0700"
logid="0100022205" type="event" subtype="system" level="information" vd="root"
logdesc="Certificate succeed to auto-generate" user="system" action="certificate-
generate" status="successful" name="Fortinet_GUI_Server" msg="Successfully generated GUI
management cert"
2: date=2022-06-23 time=09:11:44 eventtime=1656000704674432668 tz="-0700"
logid="0101041986" type="event" subtype="vpn" level="information" vd="root"
logdesc="Certificate regenerated" action="info" user="N/A" ui="forticron"
The maintainer account, which allowed users to log in through the console after a hard reboot, has been removed. For
security reasons, users who lose their password must have physical access to the FortiGate and perform a TFTP restore
of the firmware in order to regain access to the FortiGate. They will not have access to the current running configurations
through the FortiGate. Configurations will be reset to the factory default once the firmware is reloaded. See Installing
firmware from system reboot in the FortiOS Administration Guide for detailed instructions. This process requires a
connection to the TFTP server where the firmware image is stored.
This procedure may vary depending on whether the FortiGate is a physical appliance or a VM.
It is recommended to preform regular configuration backups and to store the backup on a secure server (see
Configuration changes in the FortiOS Best Practices for more details). In the event that a password is lost, the
configuration backup can be used to restore a configuration after the user completes the firmware installation process.
This assumes the user knows the password from the previous backed up configuration. If the user does not know the
password, they can still reload the configuration if it is not encrypted.
The following procedure describes how to edit an unencrypted backup configuration file so that the administrator
password can be replaced before restoring the file.
1. Locate the line in the configuration file where config system admin is defined.
2. Edit an administrator account with an accprofile set to super_admin. This will ensure you can log in and
perform any operations afterward.
3. Locate the line with set password ENC xxxxxx, and edit it to set a temporary new password in clear text (such
as set password cleartextpassword).
4. Reload the configuration file.
5. Log in to the console using the temporary password, and then change the password.
The configuration backup allows the administrator to confirm the firmware that the FortiGate is
running, so the same firmware can be restored. This information is listed in the first line of the
configuration: config-version=FGT61F-7.2.4-FW-build1396-
230131:opmode=0:vdom=0:user=admin.
The FortiGate can allow single sign-on (SSO) from FortiCloud and FortiCloud IAM users with administrator profiles
inherited from FortiCloud or overridden locally by the FortiGate. Similarly, users accessing the FortiGate remotely from
FortiGate Cloud can have their permissions inherited or overridden by the FortiGate.
4. Click Apply.
The following administrator profiles are assigned based on the inherited or overwritten permissions:
FortiCloud IAM Is based on the IAM permission profile's FortiOS SSO Local user profile
portal settings:
l If Access is disabled = no access
In this example, a FortiCloud SSO user is configured to override permissions and use the prof_admin profile, which is a
local read-only profile.
Since the profile has read-only access, the SSO user can only view items (such as interfaces) and cannot edit
them.
In this example, a local administrator changes the permissions of an existing FortiCloud SSO user (created in the
previous example) to Inherit from FortiCloud, which means the super_admin profile will be used.
1. Go to System > Administrators and edit the user in the FortiCloud SSO Administrator section (********@gmail.com).
2. Set Administrator profile to Inherit from FortiCloud.
3. Click OK.
4. Get the user to log in to the FortiGate. Since the profile changed to super_admin, they can modify items (such as
interfaces).
In this example, a FortiCloud IAM user is configured to have read-only SSO access based on the settings in the
FortiOS SSO portal. Once the FortiCloud IAM user logs in, an administrator with super_admin access changes the
permission of the IAM user to have super_admin access.
This example assumes the FortiOS SSO portal has already been added to the IAM permission profile. See Creating a
permission profile and Managing permission profiles in the Identity & Access Management (IAM) Guide for more
information about configuring permission profiles in FortiCloud.
d. Click Update.
2. Get the user to log in to the FortiGate:
a. On the FortiOS login screen, click Sign in with FortiCloud. The FortiCloud log in page opens.
b. Click IAM Login.
c. Enter the IAM account credentials and click Log In.
In this example, a FortiGate Cloud user with a paid subscription accesses the FortiGate remotely from FortiGate Cloud.
When the user logs in with SSO, the profile has super_admin access. After the FortiGate Cloud user logs in, an
administrator with super_admin access changes the permission of the FortiGate Cloud user to have prof_admin (read-
only) access.
FortiGate Cloud must be accessed from a FortiGate Cloud 2.0 portal (also called FortiGate
Cloud Premium) in order to have remote access using the FortiGate Cloud proxy. See Getting
started with FortiGate Cloud 2.0 for more details.
Display warnings for supported Fabric devices passing their hardware EOS date -
7.2.5
FortiGates, FortiSwitches, FortiAPs, and FortiExtenders can download an EOS (end of support) package automatically
from FortiGuard during the bootup process or by using manual commands. Based on the downloaded EOS package
files, when a device passes the EOS date, a warning message is displayed in the device's tooltip. The device is also
highlighted in the following GUI locations:
l System > Fabric Management page
l Security Fabric > Physical Topology and Logical Topology pages
l Security Fabric > Security Rating page
l Dashboard > Status > Security Fabric widget
l Dashboard > Status > System Information widget
The End-of-Support security rating check rule audits the EOS of FortiGates and Fabric devices. This allows
administrators to have clear visibility of their Security Fabric, and helps to prevent security gaps or vulnerabilities that
may arise due to devices passing their hardware EOS date.
For more information about this feature, see Display warnings for supported Fabric devices passing their hardware EOS
date.
The BIOS-level signature and file integrity checking has been enhanced for important system files and executables.
Each release of AV and IPS engine files, FortiOS firmware and important executables are now dual signed by the
Fortinet CA and a third-party CA. BIOS verifies each file matches their secure hash as indicated by their certificates.
Users are warned when there is a failed integrity check, and the system may be prevented from booting depending on
the severity and the BIOS security level.
Kernel and userspace processes can also periodically verify the integrity of the AV and IPS engine files, and other
important system files and executables. They can also cease the FortiGate from operating when the monitored files fail
to match their secure hashes.
In summary, the enhanced BIOS-level signature and file integrity check allows the FortiGate to identify tampering of
important system and executable files, warn users of the breaches, and prevent malicious code from running on the
system.
For more information about this feature, see Enhance BIOS-level signature and file integrity checking.
High availability
1. Configure FortiGate A:
config system interface
edit "emac"
set vdom "root"
set ip 172.16.209.1 255.255.255.0
set allowaccess ping https ssh snmp http telnet fgfm
set type emac-vlan
set vrrp-virtual-mac enable
config vrrp
edit 1
set vrip 172.16.209.111
set priority 200
next
end
set snmp-index 61
set interface "port1"
next
end
2. Configure FortiGate B:
config system interface
edit "emac"
set vdom "root"
set ip 172.16.209.2 255.255.255.0
set allowaccess ping https ssh snmp http telnet fgfm
set type emac-vlan
set vrrp-virtual-mac enable
config vrrp
edit 1
set vrip 172.16.209.111
set priority 222
next
end
set snmp-index 32
set interface "port1"
next
end
Because FortiGate B has a higher priority, it is the primary device and FortiGate A is the backup.
1. FortiGate A:
# get router info vrrp
Interface: emac, primary IP address: 172.16.209.1
UseVMAC: 1, SoftSW: 0, EmacVlan: 1 BrPortIdx: 0, PromiscCount: 0
HA mode: primary (0:0:1) VRRP master number: 0
VRID: 1 verion: 2
vrip: 172.16.209.111, priority: 200 (200,0), state: BACKUP
adv_interval: 1, preempt: 1, ignore_dft: 0 start_time: 3
master_adv_interval: 100, accept: 1
vrmac: 00:00:5e:00:01:01
vrdst:
vrgrp: 0
2. FortiGate B:
# get router info vrrp
Interface: emac, primary IP address: 172.16.209.2
UseVMAC: 1, SoftSW: 0, EmacVlan: 1 BrPortIdx: 0, PromiscCount: 1
HA mode: primary (0:0:1) VRRP master number: 1
VRID: 1 verion: 2
vrip: 172.16.209.111, priority: 222 (222,0), state: PRIMARY
adv_interval: 1, preempt: 1, ignore_dft: 0 start_time: 3
master_adv_interval: 100, accept: 1
vrmac: 00:00:5e:00:01:01
vrdst:
vrgrp: 0
TLS sessions that pass through an HA A-A or A-P cluster can use an abbreviated TLS handshake instead of a full TLS
handshake upon failover from a primary HA unit to a secondary HA unit. This reduces session pickup delays by reducing
the time needed to renegotiate the TLS session, given that the TLS session ticket can be re-used.
To accomplish this, FortiOS uses the web proxy global ssl-ca-cert to generate the key used in the TLS session
ticket:
config web-proxy global
set ssl-ca-cert "Fortinet_CA_SSL"
end
The certificate can be synchronized to the secondary HA unit, which allows the secondary unit to generate the same
session key for a TLS session. When a TLS session reconnects after HA failover using the same session ticket as the
first session, the new primary unit is able to generate the same key matching that session ticket and allow an abbreviated
handshake.
Example
In this example, OpenSSL is used to create a TLS session between the client and the server through the primary
FortiGate. The session ticket is outputted and saved. Upon failover, the same session ticket is reused to create a TLS
session through the new primary unit. Because the new primary unit uses the same certificate to generate the key for the
TLS session ticket, it allows the connection to be made using an abbreviated TLS handshake.
This example is for demonstration purposes only. In a normal failover, TLS sessions from
clients will automatically be able to re-establish using an abbreviated handshake through the
new primary unit.
1. On the client using OpenSSL, open a new session to 172.16.200.44:443 and output the session ticket to a file called
aaa.txt. This session will pass through the current HA primary unit:
# openssl s_client -connect 172.16.200.44:443 -sess_out aaa.txt
2. Fail over the primary unit to the secondary unit. The HA secondary unit starts handling the traffic.
3. On the client, try connecting to 172.16.200.44:443 using the same saved session ticket as before (aaa.txt):
# openssl s_client -connect 172.16.200.44:443 -sess_in aaa.txt
4. Verify whether the session succeeds in using the original session ticket:
Reused, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 4096 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 19 (self signed certificate in certificate chain)
...
If the session is established using the same ticket, Reused, TLSv1.3, Cipher is <name> is displayed. If
session is established using a new ticket, New, TLSv1.3, Cipher is <name> is displayed.
The new primary is able to use the web proxy global ssl-ca-cert to generate the same key as the old primary
that was used in the session ticket. So, the second TLS connection that reuses the TLS session ticket from the first
session can complete an abbreviated TLS handshake.
User information and TLS sessions are synchronized between HA members for ZTNA proxy sessions. When a failover
occurs, the new primary unit will continue allowing sessions from the logged in users without asking for the client
certificate and re-authentication again.
Example
In this example, a FortiGate HA pair is acting as a ZTNA access proxy. Clients that are trying to access the web server
on qa.test.com are proxied by the ZTNA access proxy. Remote clients must be registered to the EMS server, and pass a
client certificate check and user authentication in order to connect. Upon HA member failure, a failover occurs and the
new primary unit will continue to allow connections without requesting client certificate check and user authentication for
existing users and devices.
This example assumes ZTNA and EMS server settings are already configured.
config system ha
set group-name "501E"
set mode a-p
set password **********
set hbdev "ha" 0
set session-pickup enable
set override disable
set monitor "port1" "port2"
end
1. On the client, access the web server. The ZTNA access proxy challenges the user for a client certificate and user
authentication.
2. On the primary FortiGate, verify that the user information and TLS sessions are synchronized between HA
members.
a. Verify the list of proxy users:
501E-primary # diagnose wad user list
ID: 1, VDOM: root, IPv4: 10.1.100.22
user name : localuser1
worker : 0
duration : 8
auth_type : IP
auth_method : Basic
pol_id : 1
g_id : 0
user_based : 1
expire : 597
LAN:
bytes_in=2093 bytes_out=5753
WAN:
bytes_in=2024 bytes_out=1235
c. Show the user cache from the WAD informer. Verify that the localuser1 entry exists:
501E-primary # diagnose test application wad 110
users:
[1] localuser1@10.1.100.22:0 upn_domain= from:worker worker:6 vf:0 ref:1 stale=0
ntlm:0, has_fsae:0, guest:0
d. Verify using WAD real-time debugs on the secondary FortiGate. The user information is synchronized to the
secondary FortiGate:
501E-secondary # diagnose wad debug enable category all
501E-secondary # diagnose wad debug enable level verbose
501E-secondary # diagnose debug enable
[I][p:296] wad_proc_informer_ha_dgram_on_read:2811 Got HA msg: type=0,
sizeof(msg)=8, dlen=80, sz=88
[I][p:296] wad_proc_informer_on_ha_user_add :1493 reader:
ip=10.1.100.22:45852 vf=0 seq=0 grp_type=0 scheme=0 is_ntlm=0 has_fsae=0 concur_
user=65536 domain=''
[I][p:296] wad_informer_update_user_ext :782
ip=10.1.100.22:45852 name=localuser1 from=worker
[I][p:296] wad_informer_find_user_ip_entries :621 find=false(1) vf=0
ip=10.1.100.22:45852 pr=(nil)
mapping user_node:0x7fc1c84dd048, user_ip:0x7fc1c84ed048(0), user:0x7fc1c84f5048(0).
If the client tries to access the web server again after failover occurs, the client certificate check and authentication
prompt does not appear. ZTNA allows the traffic to pass.
The ZTNA logs for both FortiGates contain the same user information.
A warning is displayed in the GUI and CLI when upgrading a device in an HA cluster that is out of synchronization.
l GUI warning on the System > Fabric Management page:
l CLI warning:
# execute restore image ftp <filename> <ftp_ip>
This operation will replace the current firmware version!
Do you want to continue? (y/n)y
The HA cluster this device belongs to is out of sync. Proceeding with the upgrade may
result in the cluster continuing to remain out of sync, and may lead to a split brain
condition
Do you want to continue? (y/n)
In FortiOS 7.2.0, up to 30 virtual clusters are supported, which allows more VDOMs to be spread across different virtual
clusters without overlapping. Each virtual cluster supports its own failover conditions. Previously, only two virtual clusters
were supported.
When configuring virtual clusters, the group-id is limited to a value from 0 to 7. If the HA group-id is greater than 7,
use the command line first to change the group-id before enabling virtual clusters.
config system ha
set group-id <integer>
end
When upgrading, old virtual clusters will be lost if the group-id is larger than 7.
Example
In this example, there are 30 customers managed by an MSSP on an HA cluster, and each customer VDOM needs to
failover independently of other customer VDOMs. Each customer is assigned to a different virtual cluster with its own
virtual cluster configurations. This may include different monitored interfaces, ping servers, and priority for the primary
and secondary cluster members. Each virtual cluster will fail over according to their own virtual cluster configurations.
config system ha
set vcluster-status enable
config vcluster
edit <id>
set override {enable | disable}
set priority <integer>
set vdom <vdom_1>, ... <vdom_n>
set monitor <interface_1>, ... <interface_n>
set pingserver-monitor-interface <interface_1>, ... <interface_n>
next
end
end
override {enable | Enable/disable override and increase the priority of the unit that should always be
disable} the primary.
priority <integer> Increase the priority to select the primary unit (0 - 255, default = 128)
vdom <vdom_1>, ... <vdom_ Set the virtual domains in the virtual cluster.
n>
monitor <interface_1>, Set the interfaces to check for port monitoring (or link failure).
... <interface_n>
pingserver-monitor- Set the interfaces to check for remote IP monitoring.
interface
<interface_1>, ...
<interface_n>
This example assumes an A-P cluster and VDOMs have already been configured. See HA active-passive cluster setup
and Virtual domains in the FortiOS Administration Guide for more information.
For each virtual cluster, this example assumes that unit 1 has an HA priority of 200, while unit 2 has an HA priority of 100.
By default, unit 1 will be the primary cluster member of all the virtual clusters.
The FGSP settings are consolidated by moving the previous config system cluster-sync settings into a subtable
under config system standalone-cluster. There are no changes to the FGSP behavior.
To configure FGSP:
During FGSP per-tunnel failover for IPsec, the same IPsec dialup server configured on each FGSP member may
establish tunnels with dialup clients as the primary gateway. The IPsec SAs are synchronized to all other FGSP peers
that have FGSP synchronization for IPsec enabled. Other FGSP members may establish a tunnel with other clients on
the same dialup server and synchronize their SAs to other peers.
Upon the failure of the FGSP member that is the primary gateway for a tunnel, the upstream router will fail over the
tunnel traffic to another FGSP member. The other FGSP member will move from standby to the primary gateway for that
tunnel and continue to forward traffic.
config vpn ipsec phase1-interface
edit <name>
set fgsp-sync {enable | disable}
next
end
Example
In this example, the FGSP peers are connected on port4 over 172.31.1.1-4/24. Each peer has a loopback interface, lb1,
with the same IP address. This loopback interface is used as the local gateway on each of the phase 1 connections to
avoid each FGSP member having different IPs on port2. The DC Router uses ECMP to distribute traffic to each FGSP
peer. It is assumed that the networking addresses are already configured properly.
Out of the four FGSP peers, DC1_VM1, DC1_VM2, and DC1_VM3 have fgsp-sync enabled in their IPsec phase 1
configurations. This allows the three FGSP members to synchronize IPsec SAs as clients establish dialup tunnels to
them individually. DC1_VM4, which does not have fgsp-sync configured, will not participate in synchronizing IPsec
SAs or establishing tunnels. The DC Router uses ECMP to route traffic to the destination 192.168.202.31 through each
of the participating FGSP peers.
In a larger scale there may be many more IPsec dialup clients connecting, with each eligible FGSP peer being the
primary gateway for a set of dialup tunnels, and is in standby for the rest of the tunnels. If an FGSP peer fails, traffic will
fail over to other peers, and these peers will become primary gateways for the respective dialup tunnels.
The following steps are to configure DC1_VM1. The other peers have similar configurations
based on the preceding table. In the config vpn ipsec phase1-interface settings, all
peers should have the same local gateway external interface (192.168.202.31).
1. Once the FGSP members establish peering with each other, verify the standalone peers on DC1_VM1:
DC1_VM1 # diagnose sys ha standalone-peers
Group=1, ID=1
Detected-peers=3
Kernel standalone-peers: num=3.
peer0: vfid=0, peerip:port = 172.31.1.2:708, standalone_id=2
session-type: send=0, recv=0
packet-type: send=0, recv=0
peer1: vfid=0, peerip:port = 172.31.1.3:708, standalone_id=3
session-type: send=0, recv=0
packet-type: send=0, recv=0
peer2: vfid=0, peerip:port = 172.31.1.4:708, standalone_id=4
session-type: send=0, recv=0
packet-type: send=0, recv=0
Kernel standalone dev_base:
standalone_id=0:
standalone_id=1:
phyindex=0: mac=00:0c:29:22:00:6b, linkfail=1
phyindex=1: mac=00:0c:29:22:00:75, linkfail=1
phyindex=2: mac=00:0c:29:22:00:7f, linkfail=1
phyindex=3: mac=00:0c:29:22:00:89, linkfail=1
phyindex=4: mac=00:0c:29:22:00:93, linkfail=1
phyindex=5: mac=00:0c:29:22:00:9d, linkfail=1
phyindex=6: mac=00:0c:29:22:00:a7, linkfail=1
phyindex=7: mac=00:0c:29:22:00:b1, linkfail=1
phyindex=8: mac=00:0c:29:22:00:bb, linkfail=1
phyindex=9: mac=00:0c:29:22:00:c5, linkfail=1
standalone_id=2:
phyindex=0: mac=00:0c:29:06:4e:d6, linkfail=1
phyindex=1: mac=00:0c:29:06:4e:e0, linkfail=1
phyindex=2: mac=00:0c:29:06:4e:ea, linkfail=1
phyindex=3: mac=00:0c:29:06:4e:f4, linkfail=1
phyindex=4: mac=00:0c:29:06:4e:fe, linkfail=1
phyindex=5: mac=00:0c:29:06:4e:08, linkfail=1
phyindex=6: mac=00:0c:29:06:4e:12, linkfail=1
phyindex=7: mac=00:0c:29:06:4e:1c, linkfail=1
phyindex=8: mac=00:0c:29:06:4e:26, linkfail=1
phyindex=9: mac=00:0c:29:06:4e:30, linkfail=1
standalone_id=3:
phyindex=0: mac=00:0c:29:70:b9:6c, linkfail=1
phyindex=1: mac=00:0c:29:70:b9:76, linkfail=1
phyindex=2: mac=00:0c:29:70:b9:80, linkfail=1
phyindex=3: mac=00:0c:29:70:b9:8a, linkfail=1
2. Initiate a dialup tunnel connection from the IPsec Client 2 FortiGate (192.168.1.2).
3. Verify the tunnel list for vpn1_1 on each peer. The output shows the bi-directional SAs for that particular tunnel are
synchronized to all participating FGSP peers.
a. DC1_VM1:
DC1_VM1 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=a4 192.168.202.31:0->192.168.1.2:0 tun_id=192.168.1.2 tun_
id6=::10.0.0.15 dst_mtu=1500 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8840 options
[2288]=npu rgwy-chg frag-rfc run_state=0 role=sync-primary accept_traffic=1 overlay_
id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=6 olast=6 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=20
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=3 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1438 expire=10480/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.1.2 npu_lgwy=192.168.202.31 npu_selid=b2 dec_npuid=0
enc_npuid=0
b. DC1_VM2:
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=43063501 olast=43063501 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=3 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1280 expire=10466/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.1.2 npu_lgwy=192.168.202.31 npu_selid=ab dec_npuid=0
enc_npuid=0
c. DC1_VM3:
DC1_VM3 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=ac 192.168.202.31:0->192.168.1.2:0 tun_id=192.168.1.2 tun_
id6=::10.0.0.15 dst_mtu=0 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8712 options
[2208]=npu frag-rfc run_state=0 role=standby accept_traffic=1 overlay_id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=43063499 olast=43063499 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=2 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1280 expire=10462/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
d. DC1_VM4:
DC1_VM4 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
The IPsec tunnel role=sync-primaryon DC1_VM1 indicates that the IPsec tunnel was established on the
FortiGate and traffic is being forwarded. On DC1_VM2 and DC1_VM3, the IPsec tunnel role=standby indicates
that they are synchronized from the FGSP peer and are in standby for traffic forwarding.
The IPsec SAs do not synchronize to DC1_VM4 because fgsp-sync is disabled.
4. When a failure occurs on DC1_VM1, the tunnel traffic will fail over to either DC1_VM2 or DC1_VM3. Its tunnel role
will become role=sync-primary.
For additional redundancy, an FGCP cluster on one site may form FGSP peering with FGCP clusters on other sites. The
FGCP over FGSP peers can still synchronize IPsec SAs and act as the primary gateway for individual tunnels for the
same dialup servers. When failover happens within an FGCP cluster, tunnel traffic will failover to the other FGCP cluster
member. When an FGCP cluster fails, tunnel traffic will failover to the other FGSP peer.
Example
In this example, each FGCP A-P cluster is connected on port4 as the heartbeat interface. The FGSP peers are
connected on port5 over 172.31.2.1-2/24. Each FGSP peer and FGCP cluster has a loopback interface, lb1, with the
same IP address. This loopback interface is used as the local gateway on each of the phase 1 connections to avoid each
FGSP member having different IPs on port2. The DC Router uses ECMP to distribute traffic to each FGSP peer. It is
assumed that the networking addresses are already configured properly.
There are two pairs of FGCP A-P HA clusters that form FGSP peering with each other. This is a typical FGCP over FGSP
configuration used in large enterprises and service provider environments where high redundancy is needed. Each
cluster uses the same loopback address for the local gateway. The DC Router uses ECMP to route traffic to the
destination 192.168.202.31 through each of the participating FGSP peers.
In a larger scale there may be many more members in the FGCP clusters, more FGSP peers, and more IPsec dialup
clients connecting. Each eligible FGSP peer will be the primary gateway for a set of dialup tunnels, and is in standby for
the rest of the tunnels. When the FGCP cluster is configured in A-P mode, the tunnels will be established on the primary
unit and synchronized to the standby unit.
The following configurations and example demonstrates PC1 initiating traffic to the Server. First, a dialup tunnel is
formed between FortiGate IPsec Client 1 and DC2_VM1, which allows traffic to go through. IPsec SAs are synchronized
to the FGCP standby unit, and to the FGSP peer. Upon failure of DC2_VM1, DC2_VM2 takes over as the primary of the
HA cluster, and assumes the primary role for the failover tunnels.
If both DC2_VM1 and DC2_VM2 fail, the tunnels that were formed on this FGSP peer will now be re-routed to the other
FGSP peer. The primary FGCP cluster member, DC2_VM3, will now pick up the tunnel traffic and assume the primary
role for the failover tunnels.
1. Configure FGCP A-P Cluster 1 (use the same configuration for DC2_VM1 and DC2_VM2):
config system ha
set group-id 1
set group-name "DC2_VM12"
set mode a-p
set password ********
set hbdev "port4" 50
set session-pickup enable
set uninterruptible-upgrade disable
set override disable
set priority 100
end
2. Configure FGCP A-P Cluster 2 (use the same configuration for DC2_VM3 and DC2_VM4):
config system ha
set group-id 2
set group-name "DC2_VM34"
set mode a-p
set password ********
set hbdev "port4" 50
set session-pickup enable
set uninterruptible-upgrade disable
set override disable
set priority 100
end
1. Configure DC2_VM1:
config system standalone-cluster
set standalone-group-id 2
set group-member-id 1
config cluster-peer
edit 1
set peerip 172.31.2.2
next
end
end
next
end
end
1. The FGCP HA cluster and the FGSP peering have formed. Verify the respective HA statuses.
a. Verify the FGCP cluster status on DC2_VM1:
DC2_VM1 # diagnose sys ha status
HA information
Statistics
traffic.local = s:0 p:439253 b:89121494
traffic.total = s:0 p:440309 b:89242174
activity.ha_id_changes = 2
activity.fdb = c:0 q:0
[Debug_Zone HA information]
HA group member information: is_manage_primary=1.
FGVM02TM22000002: Primary, serialno_prio=0, usr_priority=100, hostname=DC2_VM2
FGVM02TM22000001: Secondary, serialno_prio=1, usr_priority=200, hostname=DC2_VM1
[Kernel HA information]
vcluster 1, state=work, primary_ip=169.254.0.1, primary_id=0
FGVM02TM22000002: Primary, ha_prio/o_ha_prio=0/0
FGVM02TM22000001: Secondary, ha_prio/o_ha_prio=1/1
[Debug_Zone HA information]
HA group member information: is_manage_primary=1.
FGVM02TM22000004: Primary, serialno_prio=0, usr_priority=100, hostname=DC2_VM4
FGVM02TM22000003: Secondary, serialno_prio=1, usr_priority=200, hostname=DC2_VM3
[Kernel HA information]
vcluster 1, state=work, primary_ip=169.254.0.1, primary_id=0
FGVM02TM22000004: Primary, ha_prio/o_ha_prio=0/0
FGVM02TM22000003: Secondary, ha_prio/o_ha_prio=1/1
2. Initiate traffic from PC1 to the Server. This initiates a tunnel from the IPsec Client 1 FortiGate to DC2_VM1.
3. Verify the tunnel list for vpn1_1 on each peer.
a. DC2_VM1:
DC2_VM1 # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=4 192.168.202.35:0->192.168.7.2:0 tun_id=192.168.7.2 tun_
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=41 olast=41 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=156
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=602 type=00 soft=0 mtu=1438 expire=1424/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=10791/10800
dec: spi=37f426a1 esp=aes key=16 3671c9303b6295fc73b11765811bdf96
ah=sha1 key=20 41b98cb541dc9c76311ddec4b23584ee35d31915
enc: spi=10aa4d3a esp=aes key=16 cc8529ee16de6e4ac42b0ce506d7cdd1
ah=sha1 key=20 0c2d9edd0fdbe45942cf718ac2ebb4d59c2760c6
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.7.2 npu_lgwy=192.168.202.35 npu_selid=1c dec_npuid=0
enc_npuid=0
b. DC2_VM2:
DC2_VM2 # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=4 192.168.202.35:0->192.168.7.2:0 tun_id=192.168.7.2 tun_
id6=::10.0.0.4 dst_mtu=0 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8712 options
[2208]=npu frag-rfc run_state=0 role=standby accept_traffic=1 overlay_id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=42975898 olast=42975898 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=602 type=00 soft=0 mtu=1280 expire=1325/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10791/10800
dec: spi=37f426a1 esp=aes key=16 3671c9303b6295fc73b11765811bdf96
ah=sha1 key=20 41b98cb541dc9c76311ddec4b23584ee35d31915
enc: spi=10aa4d3a esp=aes key=16 cc8529ee16de6e4ac42b0ce506d7cdd1
ah=sha1 key=20 0c2d9edd0fdbe45942cf718ac2ebb4d59c2760c6
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.7.2 npu_lgwy=192.168.202.35 npu_selid=1c dec_npuid=0
enc_npuid=0
c. DC2_VM3:
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=42975982 olast=42975982 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=602 type=00 soft=0 mtu=1280 expire=1215/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10791/10800
dec: spi=37f426a1 esp=aes key=16 3671c9303b6295fc73b11765811bdf96
ah=sha1 key=20 41b98cb541dc9c76311ddec4b23584ee35d31915
enc: spi=10aa4d3a esp=aes key=16 cc8529ee16de6e4ac42b0ce506d7cdd1
ah=sha1 key=20 0c2d9edd0fdbe45942cf718ac2ebb4d59c2760c6
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.7.2 npu_lgwy=192.168.202.35 npu_selid=1c dec_npuid=0
enc_npuid=0
d. DC2_VM4:
DC2_VM4 # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=4 192.168.202.35:0->192.168.7.2:0 tun_id=192.168.7.2 tun_
id6=::10.0.0.4 dst_mtu=0 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8712 options
[2208]=npu frag-rfc run_state=0 role=standby accept_traffic=1 overlay_id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=42975768 olast=42975768 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=602 type=00 soft=0 mtu=1280 expire=1433/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10791/10800
dec: spi=37f426a1 esp=aes key=16 3671c9303b6295fc73b11765811bdf96
ah=sha1 key=20 41b98cb541dc9c76311ddec4b23584ee35d31915
enc: spi=10aa4d3a esp=aes key=16 cc8529ee16de6e4ac42b0ce506d7cdd1
ah=sha1 key=20 0c2d9edd0fdbe45942cf718ac2ebb4d59c2760c6
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
The IPsec tunnel role=sync-primaryon DC2_VM1 indicates that it is being used to carry IPsec traffic. On
DC2_VM2, DC2_VM3, and DC2_VM4, the IPsec tunnel role=standby indicates that they are in standby for
traffic forwarding.
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=0 olast=0 ad=/0
stat: rxp=58 txp=31 rxb=4872 txb=2604
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=169
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=3 serial=3
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=0 olast=0 ad=/0
stat: rxp=53 txp=53 rxb=4452 txb=4452
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=3 serial=3
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=602 type=00 soft=0 mtu=1438 expire=10347/0B replaywin=2048
seqno=10000155 esn=0 replaywin_lastseq=000001b0 qat=0 rekey=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=10790/10800
dec: spi=37f426c1 esp=aes key=16 ef61b49078b6ab3e00a4d3a048d779f5
ah=sha1 key=20 ee2e8de9c522d89b6481c37faa73a7bb54163645
enc: spi=10aa4d58 esp=aes key=16 4cb95f12657ca8e269b9f8a25f9b19c1
ah=sha1 key=20 326744c4e5b4a0758397725464593d94ba9390dc
dec:pkts/bytes=88/7392, enc:pkts/bytes=88/10384
npu_flag=00 npu_rgwy=192.168.7.2 npu_lgwy=192.168.202.35 npu_selid=1e dec_npuid=0 enc_
npuid=0
In conjunction with support for FGSP per-tunnel failover for IPsec 7.2.1 on page 278, configuring DPD (dead peer
detection) on an FGSP member is permitted. This allows a failed FGSP member to send out DPD probes during failover
to detect unreachable remote peers and to flush the corresponding tunnels.
Example
In this example, using the same configuration as in FGSP per-tunnel failover for IPsec 7.2.1 on page 278, a tunnel can
be established from one of the remote IPsec clients to one of the FGSP members (DC1_VM1). DPD can be set to on-
idle, with a configured dpd-retryinterval of 60 seconds. When a client disappears, whether it is due to remote
client failures or server-side routing failures, the FGSP member or gateway (DC1_VM1) will send out DPD probes for
detection. Once the three iterations are complete and no responses are detected, the FGSP member will flush the tunnel
and remove any routing to that peer.
The following steps are to configure DC1_VM1. The other peers have similar configurations
based on the preceding table. In the config vpn ipsec phase1-interface settings, all
peers should have the same local gateway external interface (192.168.202.31). For DC1_
VM4, fgsp-sync is disabled in the VPN tunnel phase 1 settings.
1. Once the FGSP members establish peering with each other, verify the standalone peers on DC1_VM1:
DC1_VM1 # diagnose sys ha standalone-peers
Group=1, ID=1
Detected-peers=3
Kernel standalone-peers: num=3.
peer0: vfid=0, peerip:port = 172.31.1.2:708, standalone_id=2
session-type: send=0, recv=0
packet-type: send=0, recv=0
peer1: vfid=0, peerip:port = 172.31.1.3:708, standalone_id=3
session-type: send=0, recv=0
packet-type: send=0, recv=0
peer2: vfid=0, peerip:port = 172.31.1.4:708, standalone_id=4
session-type: send=0, recv=0
packet-type: send=0, recv=0
Kernel standalone dev_base:
standalone_id=0:
standalone_id=1:
phyindex=0: mac=00:0c:29:22:00:6b, linkfail=1
phyindex=1: mac=00:0c:29:22:00:75, linkfail=1
phyindex=2: mac=00:0c:29:22:00:7f, linkfail=1
phyindex=3: mac=00:0c:29:22:00:89, linkfail=1
phyindex=4: mac=00:0c:29:22:00:93, linkfail=1
phyindex=5: mac=00:0c:29:22:00:9d, linkfail=1
phyindex=6: mac=00:0c:29:22:00:a7, linkfail=1
phyindex=7: mac=00:0c:29:22:00:b1, linkfail=1
phyindex=8: mac=00:0c:29:22:00:bb, linkfail=1
phyindex=9: mac=00:0c:29:22:00:c5, linkfail=1
standalone_id=2:
phyindex=0: mac=00:0c:29:06:4e:d6, linkfail=1
phyindex=1: mac=00:0c:29:06:4e:e0, linkfail=1
phyindex=2: mac=00:0c:29:06:4e:ea, linkfail=1
phyindex=3: mac=00:0c:29:06:4e:f4, linkfail=1
phyindex=4: mac=00:0c:29:06:4e:fe, linkfail=1
phyindex=5: mac=00:0c:29:06:4e:08, linkfail=1
phyindex=6: mac=00:0c:29:06:4e:12, linkfail=1
phyindex=7: mac=00:0c:29:06:4e:1c, linkfail=1
phyindex=8: mac=00:0c:29:06:4e:26, linkfail=1
phyindex=9: mac=00:0c:29:06:4e:30, linkfail=1
standalone_id=3:
phyindex=0: mac=00:0c:29:70:b9:6c, linkfail=1
phyindex=1: mac=00:0c:29:70:b9:76, linkfail=1
phyindex=2: mac=00:0c:29:70:b9:80, linkfail=1
phyindex=3: mac=00:0c:29:70:b9:8a, linkfail=1
phyindex=4: mac=00:0c:29:70:b9:94, linkfail=1
phyindex=5: mac=00:0c:29:70:b9:9e, linkfail=1
phyindex=6: mac=00:0c:29:70:b9:a8, linkfail=1
phyindex=7: mac=00:0c:29:70:b9:b2, linkfail=1
2. Initiate a dialup tunnel connection from the IPsec Client 2 FortiGate (192.168.1.2).
3. Verify the tunnel list for vpn1_1 on each peer.
a. DC1_VM1:
DC1_VM1 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=a4 192.168.202.31:0->192.168.1.2:0 tun_id=192.168.1.2 tun_
id6=::10.0.0.15 dst_mtu=1500 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8840 options
[2288]=npu rgwy-chg frag-rfc run_state=0 role=sync-primary accept_traffic=1 overlay_
id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=6 olast=6 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=20
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=3 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1438 expire=10480/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.1.2 npu_lgwy=192.168.202.31 npu_selid=b2 dec_npuid=0
enc_npuid=0
b. DC1_VM2:
DC1_VM2 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=a3 192.168.202.31:0->192.168.1.2:0 tun_id=192.168.1.2 tun_
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=43063501 olast=43063501 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=3 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1280 expire=10466/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.1.2 npu_lgwy=192.168.202.31 npu_selid=ab dec_npuid=0
enc_npuid=0
c. DC1_VM3:
DC1_VM3 # diagnose vpn tunnel list name vpn1_1
list ipsec tunnel by names in vd 0
------------------------------------------------------
name=vpn1_1 ver=2 serial=ac 192.168.202.31:0->192.168.1.2:0 tun_id=192.168.1.2 tun_
id6=::10.0.0.15 dst_mtu=0 dpd-link=on weight=1
bound_if=6 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/8712 options
[2208]=npu frag-rfc run_state=0 role=standby accept_traffic=1 overlay_id=0
parent=vpn1 index=1
proxyid_num=1 child_num=0 refcnt=6 ilast=43063499 olast=43063499 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
proxyid=vpn1 proto=0 sa=1 ref=2 serial=2 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.10.1.0-10.10.1.255:0
SA: ref=3 options=682 type=00 soft=0 mtu=1280 expire=10462/0B replaywin=2048
seqno=10000001 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_
len=1
life: type=01 bytes=0/0 timeout=10788/10800
dec: spi=a575b631 esp=aes key=16 5de449f75c7d70258f4972506dd164e2
ah=sha1 key=20 7e65d641be6bc52655619ff542c67c61713de523
enc: spi=10aa45b0 esp=aes key=16 65ad3b4849386deb4f3028079a657257
ah=sha1 key=20 b5f1e1c6786f69482b5d271347a69a0cbb83ed58
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=192.168.1.2 npu_lgwy=192.168.202.31 npu_selid=b4 dec_npuid=0
enc_npuid=0
4. When a shut down occurs on the VPN client to vpn1_2, verify the IKE debug messages on DC1_VM2. There are
three iterations of DPD probes:
DC1_VM2 # diagnose debug enable
DC1_VM2 # diagnose debug application ike -1
...
ike 0:vpn1_2: link is idle 6 192.168.202.31->192.168.4.2:0 dpd=1 seqno=72 rr=0
ike 0:vpn1_2:171: send IKEv2 DPD probe, seqno 114
ike 0:vpn1_2:158: sending NOTIFY msg
ike 0:vpn1_2:171:158: send informational
ike 0:vpn1_2:171: sent IKE msg (INFORMATIONAL): 192.168.202.31:500->192.168.4.2:500,
len=76, vrf=0, id=87458c81a3be17f9/c8db7d3f2c70e638:00000004
ike 0: comes 192.168.1.2:500->192.168.202.31:500,ifindex=6,vrf=0...
ike 0:vpn1_2: link is idle 6 192.168.202.31->192.168.4.2:0 dpd=1 seqno=72 rr=0
ike 0:vpn1_2:171: send IKEv2 DPD probe, seqno 114
ike 0:vpn1_2:158: sending NOTIFY msg
ike 0:vpn1_2:171:158: send informational
ike 0:vpn1_2:171: sent IKE msg (INFORMATIONAL): 192.168.202.31:500->192.168.4.2:500,
len=76, vrf=0, id=87458c81a3be17f9/c8db7d3f2c70e638:00000004
ike 0: comes 192.168.1.2:500->192.168.202.31:500,ifindex=6,vrf=0....
ike 0:vpn1_2: link is idle 6 192.168.202.31->192.168.4.2:0 dpd=1 seqno=72 rr=0
ike 0:vpn1_2:171: send IKEv2 DPD probe, seqno 114
ike 0: comes 192.168.1.2:500->192.168.202.31:500,ifindex=6,vrf=0....
ike 0:vpn1_2:171: 87458c81a3be17f9/c8db7d3f2c70e638 negotiation of IKE SA failed due to
retry timeout
ike 0:vpn1_2:171: expiring IKE SA 87458c81a3be17f9/c8db7d3f2c70e638
ike 0:vpn1_2: deleting
ike 0:vpn1_2: flushing
ike 0:vpn1_2: deleting IPsec SA with SPI 85700354
ike 0:vpn1_2:vpn1: deleted IPsec SA with SPI 85700354, SA count: 0
ike 0:vpn1_2: sending SNMP tunnel DOWN trap for vpn1
ike 0:vpn1_2: sending tunnel down event for addr 10.10.4.0
ike 0:vpn1_2:vpn1: delete
ike 0:vpn1:152: del route 10.10.4.0/255.255.255.0 tunnel 192.168.4.2 oif vpn1(21) metric
15 priority 1
ike 0:vpn1_2: flushed
ike 0:vpn1_2:171: HA send IKE SA del 87458c81a3be17f9/c8db7d3f2c70e638
ike 0:vpn1_2:171:159: send informational
ike 0:vpn1_2:171: sent IKE msg (INFORMATIONAL): 192.168.202.31:500->192.168.4.2:500,
len=76, vrf=0, id=87458c81a3be17f9/c8db7d3f2c70e638:00000005
ike 0:vpn1_2: delete dynamic
ike 0:vpn1_2: deleted
Applying the session synchronization filter only between FGSP peers in an FGCP
over FGSP topology - 7.2.1
This enhancement ensures that session synchronization happens correctly in an FGCP over FGSP topology:
l When the session synchronization filter is applied on FGSP, the filter will only affect sessions synchronized between
the FGSP peers.
l When virtual clustering is used, sessions synchronized between each virtual cluster can also be synchronized to
FGSP peers. All peers' syncvd must be in the same HA virtual cluster.
Example
In this example, there is a simplified configuration where there is no router or load balancer performing balancing
between the FGSP peers, but it demonstrates the following:
l When sessions pass through FGCP A-P Cluster 1, all sessions are synchronized between the FGT_A and FGT_B
regardless of the session synchronization filter.
l Session synchronization between the FGSP peers (FGCP A-P Cluster 1 and 2) only occurs for the service specified
in the filter, which is HTTP/80.
l The preceding behavior is applicable when virtual clustering is configured. This example focuses on vdom2, which
belongs to vcluster2. FGT_A is the primary for vcluster2.
Each FGSP A-P cluster is connected on ha as the FGCP cluster heartbeat device. The FGSP peers are connected on
mgmt over 10.1.1.1-2/24.
1. Configure FGCP A-P Cluster 1 (use the same configuration for FGT_A and FGT_B):
config system ha
set group-id 146
set group-name "FGT_HA1"
set mode a-p
set hbdev "wan2" 100 "ha" 50
set session-pickup enable
set vcluster-status enable
config vcluster
edit 1
set override enable
set priority 25
set monitor "wan1" "port1"
set vdom "root"
next
edit 2
set override disable
set priority 150
set monitor "wan1"
set vdom "vdom2" "vdom1"
next
end
end
2. Configure FGCP A-P Cluster 2 (use the same configuration for FGT_C and FGT_D):
config system ha
set group-id 200
set group-name "FGT_HA2"
1. Configure FGT_A:
config system standalone-cluster
set standalone-group-id 1
set group-member-id 1
config cluster-peer
edit 1
set peervd "vdom2"
set peerip 10.1.1.2
set syncvd "vdom2"
config session-sync-filter
config custom-service
edit 1
set dst-port-range 80-80
next
end
end
next
end
end
edit 1
set dst-port-range 80-80
next
end
end
next
end
end
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=1:0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty npu synced f00
statistic(bytes/packets/allow_err): org=4721/41/1 reply=5681/36/1 tuples=2
tx speed(Bps/kbps): 14/0 rx speed(Bps/kbps): 17/0
orgin->sink: org pre->post, reply pre->post dev=11->7/7->11
gwy=172.16.200.55/10.1.100.22
hook=post dir=org act=snat 10.1.100.22:50234->172.16.200.55:22(172.16.200.1:50234)
hook=pre dir=reply act=dnat 172.16.200.55:22->172.16.200.1:50234(10.1.100.22:50234)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=7 pol_uuid_idx=579 auth_info=0 chk_client_info=0 vd=2
serial=000a7d90 tos=ff/ff app_list=0 app=0 url_cat=0
rpdb_link_id=00000000 ngfwid=n/a
npu_state=0x4000c00 ofld-O ofld-R
npu info: flag=0x81/0x81, offload=8/8, ips_offload=0/0, epid=66/70, ipid=70/66,
vlan=0x0000/0x0000
vlifid=70/66, vtag_in=0x0000/0x0000 in_npu=1/1, out_npu=1/1, fwd_en=0/0, qid=6/6
total session 2
Session synchronization filters are designed to be configured symmetrically on all of the FGSP
peers. In cases where the filters are configured asymmetrically, note the following differences:
l In an FGCP over FGSP topology, session filtering will be applied on the FGSP peer that
peer that has the filtering configured and is sending out the session synchronization.
FortiGuard
FortiOS firmware images include Fortinet objects in the built-in Internet Service Database (ISDB).
# diagnose firewall internet-service list
List internet service in kernel(global):
Internet Service Database Kernel Table: size 14974 bytes, Entry size 5844 bytes, number of
index entries 165 number of IP range entries 0
This lightweight ISDB package allows firewall rules and policy routes that use ISDB to access FortiGuard servers to
continue working after upgrading FortiOS. For example, the following policy will work after an upgrade:
config firewall policy
edit 440
set name "Fortinet Updates"
set srcintf "port25"
set dstintf "port1"
After the FortiGate reboots after a firmware update, an automatic update will run in five minutes so that the FortiGate can
get the ISDB, whether or not scheduled update is enabled.
# diagnose autoupdate versions | grep Internet -A 6
AV and IPS packages are now signed by the Fortinet CA to ensure authenticity of the packages. The FortiGate will
execute the following checks based on the method used to perform updates:
l During automatic updates, only signed and validated packages are accepted.
l During manual package updates, signed and validated packages will be accepted. If a package is not signed, the
following applies:
l Level-0: accept the new package even if it is unsigned.
l For HA and configuration synchronization, the secondary device will synchronize signature files from the primary in
the presence of a saved signed package.
The FortiGuard Distribution Network (FDN) will maintain signed and unsigned packages for 7.2 and pre-7.2
compatibility. FortiManagers used for package distribution will also download signed and unsigned packages for
backwards compatibility.
All AV and IPS packages are forced to use the signature (others packages are optional):
l APPDB l FLEN
l AVDB l ISDB
l AVEN l MMDB
l DBDB l MUDB
l FLDB l NIDS
When checking the versions of updated objects, verified versions are labeled as signed.
AV Engine
---------
Version: 6.00272 signed
Contract Expiry Date: Wed Jan 1 2031
Last Updated using scheduled update on Wed Feb 23 00:48:25 2022
Last Update Attempt: Wed Feb 23 11:34:52 2022
Result: No Updates
Virus Definitions
---------
Version: 89.09892 signed
Contract Expiry Date: Wed Jan 1 2031
Last Updated using manual update on Wed Feb 23 11:34:52 2022
Last Update Attempt: Wed Feb 23 11:34:52 2022
Result: Updates Installed
Extended set
---------
Version: 89.09892 signed
Contract Expiry Date: Wed Jan 1 2031
Last Updated using manual update on Wed Feb 23 11:34:52 2022
Last Update Attempt: Wed Feb 23 11:34:52 2022
Result: Updates Installed
Attack Definitions
---------
Version: 19.00264 signed
Contract Expiry Date: Wed Jan 1 2031
Last Updated using manual update on Wed Feb 23 00:06:22 2022
Last Update Attempt: Wed Feb 23 05:10:23 2022
Result: No Updates
Application Definitions
---------
Version: 19.00262 signed
Contract Expiry Date: Wed Jan 1 2031
Last Updated using manual update on Tue Feb 22 23:51:15 2022
Last Update Attempt: Wed Feb 23 11:34:52 2022
Result: No Updates
Result: No Updates
Signed packages and signatures are saved to disk with a special extension (.x) to distinguish them from unsigned
packages. This extension allows the HA primary device to synchronize packages directly to secondary devices without
further package validation. For example, an unsigned AV signature file would be saved as /data2/vir, and a signed file as
/data2/vir.x.
The following examples contain output obtained from running the following debugs while the package is being updated:
# diagnose debug app updated -1
# diagnose debug enable
Sample log
Manual updates
An update can be performed manually after downloading the update file from the support.fortinet.com portal.
This example shows a successful update where the update package is signed and validated.
...
upd_manual_idsdb[219]-Updating ids db
doInstallUpdatePackage[1023]-Full obj found for NIDS024
doInstallUpdatePackage[1033]-Updating obj NIDS
Sample log
This example shows an unsigned package update being accepted without any warning when the device BIOS has
security level-0.
...
doInstallUpdatePackage[1023]-Full obj found for NIDS026
doInstallUpdatePackage[1033]-Updating obj NIDS
installUpdateObject[278]-Step 1:Unpack obj 4, Total=1, cur=0
installUpdateObject[310]-Signature verified for obj 4, ret=0, data_len=1165633, obj_
len=1162402, sig_len=3231.
installUpdateObject[347]-Step 2:Prepare temp file for obj 4
installUpdObjRest[757]-Step 5:Backup /etc/ips.et.rules->/tmp/update.backup
installUpdObjRest[785]-Step 6:Copy new object /tmp/updf80vEs->/etc/ips.et.rules
installUpdObjRest[864]-Step 7:Validate object
...
__update_status[1237]-NIDS024(idsdb) installed successfully
__update_status[1237]-NIDS026(idsetdb) installed successfully
upd_status_save_status[131]-try to save on status file
upd_status_save_status[197]-Wrote status file
upd_manual_idsdb[269]-Update successful on NIDS24(idsdb))
upd_manual_idsdb[269]-Update successful on NIDS26(idsetdb))
Sample log
A warning message is displayed in the console, and requests a user confirmation to accept the update of an unsigned
package.
Please wait...
Sample log
Please wait...
upd_manual_idsdb[219]-Updating ids db
doInstallUpdatePackage[1023]-Full obj found for NIDS024
doInstallUpdatePackage[1033]-Updating obj NIDS
installUpdateObject[278]-Step 1:Unpack obj 4, Total=1, cur=0
__upd_obj_signature_split[2853]-Signature verify and split failed, result=2.
installUpdateObject[302]-Failed signature verifying for obj 4, ret=-1, forced=1, len=756204
doInstallUpdatePackage[1023]-Full obj found for NIDS026
Sample logs
In multi VDOM mode, users can choose from which VDOM FortiGuard services and updates are initiated from, instead
of being locked to the management VDOM. This allows deployment scenarios where the management VDOM is a
closed network.
When the management VDOM is a closed network, it does not have internet access. However, FortiGuard services
(FortiGuard updates, web filters, DNS proxy, DDNS, and so on) can be configured if a traffic VDOM is used as the root
VDOM.
2. Ensure the traffic VDOM has the correct gateway to reach the internet:
config vdom
edit root
config router static
edit 1
set gateway 172.16.200.254
set device "wan1"
next
end
next
end
3. Configure the DNS servers to ensure the FortiGuard services can resolve the server name through the traffic
VDOM:
config vdom
edit root
config system vdom-dns
set vdom-dns enable
set primary 208.91.112.53
set secondary 208.91.112.52
end
next
end
The IoT detection signature package detects and extracts the metadata of IoT devices. The package is updated when
the FortiGate has a valid IoT Detection Service license.
Although the signature package is available in FortiOS 7.2.0, you cannot apply the signature to network traffic. Support
for this functionality is coming in future FortiOS releases.
1. Go to System > FortiGuard.
2. Expand License Information > IoT Detection Service to view the IoT Detection Definitions version.
The IoT-Detect field displays the database version for the IOT detection signature packages.
FortiGate can use FortiManager as an override server for IoT query services. The FortiManager must be running 7.2.1 or
later.
All IoT daemon query and collected data can be sent to a FortiManager, instead of directly to FortiGuard. This is useful
when there are strict policies controlling the kind of traffic that can go to the internet.
end
end
This section includes information about policy and object related new features:
l Zero Trust Network Access on page 319
l NGFW on page 363
l Objects on page 379
ZTNA scalability is increased to support up to 50 thousand concurrent endpoints. Communication between FortiOS and
FortiClient EMS is improved with more efficient queries that request incremental updates. Retrieved device information
can be written to the FortiClient NAC daemon cache.
FortiOS can receive tag information from the EMS common tags API. This feature requires FortiClient EMS 7.0.3 or
later.
The APIs api/v1/report/fct/uid_tags and api/v1/report/fct/tags replace the API
api/v1/report/fct/host_tags.
ca-certs common-tags-api
next
end
2. The FortiGate uses the new APIs to obtain device information from the EMS:
[ec_ems_context_submit_work:414] Call submitted successfully.
obj-id: 11, desc: REST API to get updates of tag endpoints., entry:
api/v1/report/fct/tags.
[ec_ems_context_submit_work:414] Call submitted successfully.
obj-id: 12, desc: REST API to get updates of tags associated with FCT UID., entry:
api/v1/report/fct/uid_tags.
[ec_ez_worker_process:334] Processing call for obj-id: 11, entry:
"api/v1/report/fct/tags"
[dynamic_addr_ha_act:215] called (EMS SN N/A).
[dynamic_addr_ha_act:215] called (EMS SN N/A).
[ec_ez_worker_process:441] Call completed successfully.
obj-id: 11, desc: "REST API to get updates of tag endpoints.", entry:
"api/v1/report/fct/tags".
[ec_ez_worker_process:334] Processing call for obj-id: 12, entry:
"api/v1/report/fct/uid_tags"
[ec_record_sync_tags_info_store:1419] Received 1 tags for
3D86DF70B85E16CBAD67908A897B4494 with sn FCTEMS8888888888
[ec_record_sync_tags_info_store:1419] Received 1 tags for
DA12930442F13F84D2441F03FCB6A10E with sn FCTEMS8888888888
[ec_record_sync_tags_info_store:1419] Received 1 tags for
25C59C275F257F4C5FBC7F6F5F56788E with sn FCTEMS8888888888
[ec_ez_worker_process:441] Call completed successfully.
obj-id: 12, desc: "REST API to get updates of tags associated with FCT UID.", entry:
"api/v1/report/fct/uid_tags".
[ec_ems_context_submit_work:414] Call submitted successfully.
obj-id: 7, desc: REST API to get updates about system info., entry:
api/v1/report/fct/sysinfo.
[ec_ems_context_submit_work:414] Call submitted successfully.
obj-id: 11, desc: REST API to get updates of tag endpoints., entry:
api/v1/report/fct/tags.
[ec_ez_worker_process:334] Processing call for obj-id: 11, entry:
"api/v1/report/fct/tags"
[ec_ez_worker_process:441] Call completed successfully.
obj-id: 11, desc: "REST API to get updates of tag endpoints.", entry:
"api/v1/report/fct/tags".
(......)
3. Confirm that the device information from the EMS is written to the FortiClient NAC daemon cache:
# diagnose endpoint record list
...
Avatar source: OS
Phone number:
Number of Routes: (1)
Gateway Route #0:
- IP:10.1.91.6, MAC: 4f:8d:c2:73:dd:fe, Indirect: no
- Interface:port2, VFID:1, SN: FG5H1E5999999999
online records: 37174; offline records: 0; quarantined records: 0; out-of-sync records:
0
4. Use the tags that are pulled from the EMS in a firewall address:
By default, the connection from the ZTNA access proxy to the backend servers uses the IP address of the outgoing
interface as the source. This enhancement enables customers to use an IP pool as the source IP address, or use the
client's original IP address as the source IP address. This allows ZTNA to support more sessions without source port
conflicts.
These example show the basic configurations for using an IP pool or transparent mode in a ZTNA proxy policy.
This topology uses a HTTP access proxy to forward traffic to the web server at 172.18.62.27. The IP pool range is
172.16.200.100-105, so this effectively allows for six times more connections using the six source addresses in the pool.
If transparent mode is used, the FortiGate uses the client's address (10.1.100.118) as the source IP when connecting to
the servers.
Example 1: IP pool
Once the ZTNA client generates traffic, run the WAD debug commands on the FortiGate. The outgoing IP address
should be from the IP pool.
Once the ZTNA client generates traffic, run the WAD debug commands on the FortiGate. The client's address
(10.1.100.118) should be used as the source IP address when connecting to the servers.
ZTNA device certificate verification from EMS for SSL VPN connections - 7.2.1
When connecting to a FortiGate SSL VPN in tunnel mode, the ztna-trusted-client setting enforces a ZTNA
trusted client before the user can successfully establish an SSL VPN tunnel. A ZTNA trusted client is a device that is
registered to FortiClient EMS and has a device certificated issued by EMS.
config vpn ssl setting
set ztna-trusted-client {enable | disable}
end
If a PKI user is also configured, then the user can specify their certificate to get authenticated
without providing a certificate that is signed by EMS.
If a SAML log in is also configured, then the user can finish authentication without providing a
certificate that is signed by EMS.
Example
In this example, a FortiGate is registered to two EMS servers: 172.18.62.18 and 172.18.62.213. The following conditions
are required to access to the SSL VPN tunnel:
l The device must have FortiClient installed.
l FortiClient must register to an EMS that the FortiGate is also registered to.
l The user must specify a certificate that is signed by EMS to log in.
There are two users: one is using PC1 (u1) installed with FortiClient that is registered to EMS 172.18.62.18, and another
is using PC2 (u2) installed with FortiClient that is registered to EMS 172.18.62.213. Both users can log in to the SSL VPN
tunnel when specifying an EMS signed certificate.
This example assumes that the FortiGate EMS Fabric connectors are already successfully connected, and that the
users have successfully registered FortiClient to their corresponding EMS servers.
When FortiClient is registered to EMS, the certificate is automatically installed on the device and is signed by EMS.
l User u1 FortiClient configuration:
b. User u2:
b. After clicking Connect, an error message appears that the Credential or SSLVPN configuration is wrong.
Once users u1 and u2 log in with FortiClient and use the correct certificate signed by the corresponding EMS
(172.18.62.18 and 172.18.62.213 respectively), check the SSL VPN monitor to see that the tunnel connection was
established.
SSL-VPN sessions:
Index User Group Source IP Duration I/O Bytes Tunnel/Dest IP
1 u2 172.16.200.254 300 88805/85301 19.0.0.2
Mapping ZTNA virtual host and TCP forwarding domains to the DNS database - 7.2.1
When ZTNA is deployed on a FortiGate in the network and a ZTNA virtual host or TCP forwarding domain is used, the
corresponding virtual host or TCP forwarding domain should be mapped to the access proxy’s virtual IP. To facilitate
this, when FortiClients retrieve the list of published services from the FortiGate, virtual hosts and domains are added to
the FortiGate’s local DNS database. There is also a constraint to restrict the mapping of a virtual host to one access
proxy entry only.
config firewall access-proxy
edit <name>
set add-vhost/domain-to-dnsdb {enable | disable}
next
end
add-vhost/domain-to-dnsdb When enabled, all virtual hosts and TCP forwarding domains in the access proxy
{enable | disable} will be added under config system dns-database.
l shadow-ztna: resolve to the ZTNA VIP. This implicit DNS zone is only
Example
In this example, the FortiGate has several ZTNA access proxies configured with different VIPs attached to each one.
Different virtual hosts and TCP forwarding domains are configured on each access proxy:
Consequently, DNS entries with shadow ZTNA view are added to the local DNS database.
3. Configure the first access proxy, and map virtual hosts vh1 and vh2 to different services:
4. Configure the second access proxy, and map one service to virtual host vh3.
config firewall access-proxy
edit "ztna_2"
set vip "ztna_2"
set add-vhost/domain-to-dnsdb enable
config api-gateway
edit 1
set virtual-host "vh3"
config realservers
edit 1
set ip 172.16.200.207
next
end
next
end
next
end
Since add-vhost/domain-to-dnsdb is enabled, a virtual host used in the other access proxy cannot be
mapped to this access proxy.
5. Configure the third access proxy for TCP forwarding:
config firewall access-proxy
edit "ztna_3"
set vip "ztna_3"
set add-vhost/domain-to-dnsdb enable
config api-gateway
edit 2
set url-map "/tcp"
set service tcp-forwarding
config realservers
edit 1
set domain "test4.test.com"
next
end
next
end
next
end
The virtual host and TCP forwarding domains are mapped to their corresponding access proxy VIP under the local
DNS database. Each will appear as a shadow ZTNA entry:
show full-configuration system dns-database
config system dns-database
edit "test1.test.com"
set domain "test1.test.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "test1.test.com"
set ip 172.18.82.66
next
end
set primary-name "test1.test.com"
set contact "fgt-ztna"
next
edit "test2.test.com"
set domain "test2.test.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "test2.test.com"
set ip 172.18.82.66
next
end
set primary-name "test2.test.com"
set contact "fgt-ztna"
next
edit "test3.test.com"
set domain "test3.test.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "test3.test.com"
set ip 172.18.82.67
next
end
set primary-name "test3.test.com"
set contact "fgt-ztna"
next
edit "test4.test.com"
set domain "test4.test.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "test4.test.com"
set ip 172.18.82.68
next
end
set primary-name "test4.test.com"
set contact "fgt-ztna"
next
end
When ZTNA is deployed on a FortiGate in the network, it is important for endpoint clients to know what ZTNA services
are available from the FortiGate access proxy. FortiClients are able to learn the available ZTNA services from the
FortiGate ZTNA portal. The services that can be learned include HTTP/HTTPS web services, TCP forwarding services,
and web portals. The FortiClient must connect to the FortiGate using a DoT/DoH tunnel so it can retrieve the service
mapping in JSON format.
Example 1
In this example, the FortiGate is configured as a ZTNA access proxy with a VIP of 10.10.10.174. It hosts several
services, including:
l HTTP service with real server mapping to 172.16.200.44
l HTTP service with real server mapping to PC4, pc4.qa.fortinet.com
l TCP forwarding with real server mapping to login.microsoft.com:443
l SSL VPN web portal mapping to the local ztna_web_portal with a bookmark to PC5, pc5.qa.fortinet.com
The hosted services are published through the ZTNA portal, which is accessible by the FortiClient through
https://vip/fct-api-xxyyzz?command=service[&user=]. The client must establish a DoT/DoH tunnel with
the FortiGate ZTNA portal before the hosted services can be retrieved.
2. Configure the SSL VPN portal for publishing the web portal mapping:
config vpn ssl web portal
edit "ztna_web_portal"
set web-mode enable
config bookmark-group
edit "gui-bookmarks"
config bookmarks
edit "pc05"
set url "http://172.16.200.55"
next
end
next
end
next
end
When add-vhost/domain-to-dnsdb is enabled in the firewall access proxy settings, the virtual hosts are added
automatically under config system dns-database.
6. Configure the firewall access proxy and map each service:
config firewall access-proxy
edit "test_ztna_portal"
set vip "test_https"
set add-vhost/domain-to-dnsdb enable
config api-gateway
edit 2
set virtual-host "auto-test_ztna_portal-0"
config realservers
edit 1
set ip 172.16.200.44
set port 80
next
end
next
edit 3
set url-map "/tcp"
set service tcp-forwarding
config realservers
edit 1
set address "login.microsoft.com"
set mappedport 443
next
end
next
edit 4
set service http
set virtual-host "auto-test_ztna_portal-1"
config realservers
edit 1
set addr-type fqdn
set address "pc4"
set port 80
next
end
next
edit 1
set service web-portal
set ssl-vpn-web-portal "ztna_web_portal"
next
end
next
end
Since add-vhost/domain-to-dnsdb is enabled, the shadow-ztna DNS entries are added under the config
system dns-database table. FortiClient endpoints connecting to the ZTNA portal will be able to resolve the
virtual hosts to the ZTNA access proxy VIP address.
show full-configuration system dns-database
config system dns-database
edit "test.fortinet.com"
set domain "test.fortinet.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "test.fortinet.com"
set ip 10.10.10.174
next
end
set primary-name "test.fortinet.com"
set contact "fgt-ztna"
next
edit "qa.fortinet.com"
set domain "qa.fortinet.com"
set view shadow-ztna
config dns-entry
edit 1
set ttl 86400
set hostname "qa.fortinet.com"
set ip 10.10.10.174
next
end
set primary-name "qa.fortinet.com"
set contact "fgt-ztna"
next
end
When ZTNA is configured, a FortiClient can establish a tunnel to the FortiGate using the ZTNA web portal. Once
connected, it can retrieve the list of hosted services using https://10.10.10.174/fct-api-
xxyyzz?command=service.
The following JSON is returned:
{
"vips":[
{
"vip":"10.10.10.174:443",
"gateways":[
{
"type":"http",
"virtual-host":"qa.fortinet.com",
"path":"/",
"path-pattern":"sub-string",
"servers":[
{
"address":
{
"type":"fqdn",
"value":[
{
"fqdn":"pc4.qa.fortinet.com"
}
]
},
"port":"80"
}
]
},
{
"type":"bookmark-http",
"virtual-host":"172.16.200.55",
"path":"/",
"path-pattern":"sub-string"
},
{
"type":"https",
"virtual-host":"",
"path":"/",
"path-pattern":"sub-string",
"servers":[
{
"address":
{
"type":"ip",
"value":[
{
"ip":"172.16.200.44",
"mask":"255.255.255.255"
}
]
},
"port":"80"
}
]
},
{
"type":"tcp-fwd",
"virtual-host":"",
"path":"/tcp",
"path-pattern":"sub-string",
"servers":[
{
"address":
{
"type":"fqdn",
"value":[
{
"fqdn":"login.microsoft.com"
}
]
},
"mappedport":[
{
"start":"443",
"end":"443"
}
]
}
]
},
{
"type":"web-portal",
"virtual-host":"",
"path":"/",
"path-pattern":"sub-string"
}
]
}
]
}
Example 2
In this example, the FortiGate publishes two TCP forwarding rules to its ZTNA service portal. FortiClient EMS is
configured to push the FortiGate ZTNA service portal address to its managed endpoints. The FortiClient endpoint
queries the FortiGate for the list of ZTNA services and loads them in memory. Users can then access the ZTNA
destinations without manually defining the rules or retrieving them from EMS.
The configurations used in this example require FortiClient and FortiClient EMS 7.2.0. See
FortiGate ZTNA service portal support and Inline CASB solution for SaaS applications in the
FortiClient New Features Guide for more information.
end
next
end
next
end
To configure FortiClient EMS to push the ZTNA access portal gateway to managed endpoints:
1. Log in to the FortiClient EMS and go to Endpoint Profiles > ZTNA Destinations.
2. Select an existing profile and click Edit, or add a new profile.
3. Click XML to switch the view from basic to XML.
4. Click Edit to edit the XML content, and enter the ZTNA access portal gateway settings:
<?xml version="1.0" ?>
<forticlient_configuration>
<ztna>
<enabled>1</enabled>
<allow_personal_rules>1</allow_personal_rules>
<disallow_invalid_server_certificate>1</ disallow_invalid_server_certificate>
<rules/>
<portals>
<portal>
<addr>11.11.11.174:443</addr>
<query_interval_m>30</query_interval_m>
</portal>
</portals>
</ztna>
<endpoint_control>
<ui>
<display_ztna>1</display_ztna>
</ui>
</endpoint_control>
</forticlient_configuration>
5. Click Save. The service portal addresses will be automatically pushed to managed FortiClient endpoints.
To verify that a registered FortiClient endpoint can access the protected services:
1. On a remote PC that has FortiClient installed, ensure that it is registered to FortiClient EMS.
2. Follow the verification steps in FortiGate ZTNA service portal support.
3. On an SSH client, start a connection to the protected SSH server on 172.16.200.44:
ssh root@172.16.200.44
root@172.16.200.44's password:
FortiClient will match this traffic to the ZTNA rule learned from the FortiGate service portal and redirect the traffic to
it.
4. On an RDP client, start a connection to the protected RDP server on 172.16.200.188.
FortiClient will match this traffic to the ZTNA rule learned from the FortiGate service portal and redirect the traffic to
it.
The FortiGate ZTNA access proxy can be configured to act as an inline cloud access security broker (CASB) by
providing access control to software-as-a-service (SaaS) traffic using ZTNA access control rules. A CASB sits between
users and their cloud service to enforce security policies as they access cloud-based resources.
The following components are required to use the ZTNA inline CASB feature:
l The FortiGuard Inline CASB Database (ICDB) used by the FortiGate and FortiClient EMS, which is included with the
FortiClient ZTNA license. No separate license is needed for inline CASB.
l A FortiGate ZTNA TCP forwarding access proxy configuration that specifies SaaS application destinations using
application names defined in the ICDB
l ZTNA connection rules for SaaS traffic that are provisioned using FortiClient EMS
l FortiClient installed on the user's machine to receive the ZTNA connection rules for SaaS traffic from FortiClient
EMS
Support for this feature will be available in a future version of FortiClient and FortiClient EMS.
Previously, ZTNA SaaS access control was possible using the TCP forwarding access proxy configuration on FortiGate
and FortiClient:
l On the FortiGate, users would need to search all hostnames used by a SaaS application, configure these
hostnames as FQDN addresses, and configure these addresses as part of the ZTNA TCP forwarding settings.
l In FortiClient, users would need to manually add all the hostnames as destinations for ZTNA connection rules or
use FortiClient EMS to push those rules to FortiClient.
ZTNA inline CASB for SaaS application access control includes the following functionalities:
l The FortiGuard Inline CASB Database (ICDB) that includes all FQDNs related to specific SaaS applications and
corresponding FortiGuard packages for FortiOS and FortiClient. The inline CASB feature is included with the
FortiClient ZTNA license. No separate license is needed for inline CASB.
l With the CASB Security Service, users can configure the ZTNA access proxy with a new SaaS proxy access type
and conveniently specify SaaS application destinations by application name or by application group name without
needing to manually search for and enter FQDNs specific to each SaaS application. This can only be configured in
the CLI.
l Users can configure the SaaS application destination in config firewall proxy-address, which can be used
in config firewall proxy-policy.
l The FortiGate traffic log includes a saasname field when traffic is controlled by inline CASB for logging SaaS traffic
on the FortiGate and FortiAnalyzer.
The inline CASB database, as of version 1.00025, supports the following SaaS applications:
adp ADP
atlassian Atlassian
aws_s3 AWS S3
azure Azure
box Box
citrix Citrix
confluence Confluence
docusign DocuSign
dropbox Dropbox
egnyte Egnyte
github GitHub
gmail Gmail
jira Jira
salesforce Salesforce
sap SAP
sharepoint SharePoint
webex Webex
workplace Workplace
youtube YouTube
zendesk Zendesk
zoom Zoom
The inline CASB database, as of version 1.00025, supports the following SaaS application groups:
MS Microsoft SaaS
Example
In this example, the FortiGate is configured as a ZTNA access proxy with a VIP of 172.18.62.10 and uses the SaaS
access proxy type. Dropbox and Zoom SaaS applications are allowed, and the Microsoft SaaS application group is
allowed.
Although this topology shows an on-net FortiClient endpoint with respect to the FortiGate, this
configuration is also supported with an off-net FortiClient endpoint when the ZTNA access
proxy VIP is configured for an external IP address.
The FortiClient EMS in this example uses an external IP address, and it can also be configured
to use an internal IP address within the LAN of the FortiGate.
The topology in this example is used for demonstrative purposes only and is not a
recommended network topology.
2. Configure the firewall access proxy using the SaaS proxy access type and specify the SaaS application
destinations:
config firewall access-proxy
edit "ZTNA_SaaS"
set vip "ZTNA_SaaS"
set log-blocked-traffic enable
config api-gateway
edit 1
set url-map "/saas"
set service saas
set application "dropbox" "zoom" "MS"
next
end
next
end
3. Optionally, configure the SaaS proxy address, which can be applied in a ZTNA proxy policy:
config firewall proxy-address
edit "ztna_saas_dropbox"
set type saas
set application "dropbox"
next
end
4. Configure the ZTNA rule (proxy policy) using the SaaS proxy address as the destination:
config firewall proxy-policy
edit 2
set name "ZTNA_Rule_SaaS"
set proxy access-proxy
set access-proxy "ZTNA_SaaS"
set srcintf "internal"
set srcaddr "all"
set dstaddr "ztna_saas_dropbox"
set action accept
set schedule "always"
set logtraffic all
set users "ztnauser"
set ssl-ssh-profile "custom-deep-inspection"
next
end
5. Optionally, if user authentication is configured the ZTNA rule (set users or set groups), configure the
authentication scheme and rule (see Configuring the authentication scheme and rule in the ZTNA Deployment
guide). The authentication scheme and rule in this example correspond to the local user, ztnauser.
a. Configure the authentication scheme:
config authentication scheme
edit "ZTNA-Auth-scheme"
set method basic
set require-tfa disable
set fsso-guest disable
Before connecting, the users must have corresponding ZTNA connection rules in FortiClient.
Once ZTNA is configured on the FortiGate, ZTNA connection rules in FortiClient are provisioned using FortiClient EMS
in one of the following ways:
l In FortiClient EMS, configure SaaS applications in Endpoint Profiles > ZTNA Destinations and push application
destinations to FortiClient. Currently, SaaS application rules are only supported using XML.
l Use the Publishing ZTNA services through the ZTNA portal 7.2.1 on page 335 feature on the FortiGate. FortiClient
establishes a tunnel to the FortiGate using the ZTNA web portal and creates ZTNA connection rules based on the
SaaS application destinations.
Once connected, the FortiClient retrieves the list of hosted ZTNA services, including the SaaS service, and adds
corresponding ZTNA connection rules for the configured SaaS applications.
The ZTNA access proxy can determine whether a client device that does not have FortiClient installed is a mobile device
that is considered unmanageable, or is not a mobile device that is considered unknown. The ZTNA access proxy tags
the device as either ems-tag-unmanageable or ems-tag-unknown respectively. The FortiGate WAD process
achieves this by either matching device TLS fingerprints against a library or learning information from the HTTP User-
Agent header if the set user-agent-detect setting is enabled.
The ems-tag-unmanageable and ems-tag-unknown tags allow for ZTNA access control of unmanaged devices
using a proxy policy. The accept-unmanageable option for the empty-cert-action setting allows unmanageable
clients to continue ZTNA proxy rule processing.
config firewall access-proxy
edit <name>
set client-cert enable
set user-agent-detect {enable | disable}
set empty-cert-action {accept | block | accept-unmanageable}
next
end
user-agent-detect {enable Enable/disable detecting the device type by HTTP User-Agent if no client
| disable} certificate is provided (default = enable).
empty-cert-action {accept Set the action for an empty client certificate:
| block | accept- l accept: accept the SSL handshake if the client certificate is empty.
unmanageable}
l block: block the SSL handshake if the client certificate is empty.
unmanageable.
l Case 3: if WAD cannot match the TLS fingerprint with an existing original or temporary library, or cannot learn it from
User-Agent header, or user-agent-detect is disabled, then it will mark the device as ems-tag-unknown.
In the access proxy settings, if empty-cert-action is set to accept-unmanageable, then only case 1 and 2 would
go through the proxy policy. Case 3 would be denied, and a replacement message page would appear.
Example
HTTP2 connection coalescing and concurrent multiplexing for ZTNA, virtual server
load balancing, and explicit proxy - 7.2.4
l HTTP2 connection coalescing and concurrent multiplexing for virtual server load
balancing
l HTTP connection coalescing and concurrent multiplexing for explicit proxy
HTTP2 connection coalescing and concurrent multiplexing allows multiple HTTP2 requests to share the same TLS
connection when the destination IP is the same, and the host names are compatible in the certificate. This is supported
for ZTNA, virtual server load balancing, and explicit proxy.
Basic settings
svr-pool-multiplex Enable/disable server pool multiplexing. When enabled, share the connected
{enable | disable} server in HTTP, HTTPS, and web portal API gateway.
svr-pool-ttl <integer> Set the time-to-live in the server pool for idle connections to servers (in seconds, 0
- 2147483647, default = 15).
svr-pool-server-max- Set the maximum number of requests that servers in server pool handle before
request <integer> disconnecting (0 - 2147483647, default = 0).
Examples
In the following examples, multiple clients submit requests in HTTP2. The requests hit the VIP address, and then
FortiGate opens a session between itself (172.16.200.6) and the server (172.16.200.99). The coalescing occurs in this
session as the multiple streams share the same TLS session to connect to the same destination server.
ZTNA
In ZTNA scenarios, the FortiGate application gateway may accept multiple HTTP2 requests to the same ZTNA server
destined to different virtual hosts on the same real server. These HTTP2 requests can share the same TLS connection
between the FortiGate and the real server so that the handshake does not need to be performed multiple times for
multiple connections.
In order for the FortiGate to match the SNI (Server Name Indication), this SNI value must
appear under the SAN extension on the server certificate. Configuring the SNI value under the
CN alone will not work.
4. Get the clients to access a.ftnt.com and b.ftnt.com. The clients share access with the same real server and
certificate (CN=*.ftnt.com). The FortiGate shares the first TLS connection with second TLS connection.
5. Verify the sniffer packet capture on the FortiGate server side. There is one client hello.
7. Verify the sniffer packet capture. This time, the FortiGate does not coalesce the TLS connection, so there are two
client hellos.
To configure connection coalescing and concurrent multiplexing with virtual server load balancing:
next
end
3. Get the clients to access the VIP address (10.1.100.222). The FortiGate shares the first TLS connection with
second TLS connection.
4. Verify the sniffer packet capture on the FortiGate server side. There is one client hello.
6. Verify the sniffer packet capture. This time, the FortiGate does reuse the TLS connection, so there are two client
hellos sent to the real server.
Explicit proxy
Connection coalescing and concurrent multiplexing with an explicit proxy only supports
HTTP.
4. Get the clients to access the server through the explicit web proxy (10.1.100.6:8080). The FortiGate shares the first
connection TCP three-way handshake with later connections that connect to same destination address.
5. Verify the sniffer packet capture on the FortiGate server side. There is one TCP three-way handshake, but there are
two HTTP connections.
7. Verify the sniffer packet capture. This time, the FortiGate establishes a TCP connection for each client.
ZTNA policy access control of unmanageable and unknown devices with dynamic
address local tags - 7.2.4
The ZTNA application gateway can determine whether a client device that does not have FortiClient installed is a mobile
device that is considered unmanageable, or is not a mobile device that is considered unknown. The ZTNA access proxy
tags the device as either EMS_ALL_UNMANAGEABLE_CLIENTS or EMS_ALL_UNKNOWN_CLIENTS respectively. The
FortiGate WAD process achieves this by either matching device TLS fingerprints against a library or learning information
from the HTTP User-Agent header if the set user-agent-detect setting is enabled.
The EMS_ALL_UNMANAGEABLE_CLIENTS and EMS_ALL_UNKNOWN_CLIENTS tags allow for ZTNA access control of
unmanageable and unknown devices using a proxy policy. The accept-unmanageable option for the empty-cert-
action setting allows unmanageable clients to continue ZTNA proxy rule processing.
user-agent-detect {enable Enable/disable detecting the device type by HTTP User-Agent if no client
| disable} certificate is provided (default = enable).
empty-cert-action {accept Set the action for an empty client certificate:
| block | accept- l accept: accept the SSL handshake if the client certificate is empty.
unmanageable}
l block: block the SSL handshake if the client certificate is empty.
unmanageable.
The user-agent-detect and empty-cert-action settings can only be configured in the CLI.
config firewall proxy-policy
edit <id>
set ztna-ems-tag {EMS_ALL_UNMANAGEABLE_CLIENTS | EMS_ALL_UNKNOWN_CLIENTS}
next
end
2. Configure the proxy policy with the ZTNA EMS tag to control device access:
config firewall proxy-policy
edit 1
set proxy access-proxy
set access-proxy "zt1"
set srcintf "port2" "ag2"
set srcaddr "all"
set dstaddr "all"
set ztna-ems-tag "EMS_ALL_UNMANAGEABLE_CLIENTS"
next
end
...
'is_online' = 'true'
'is_ems_registered' = 'false'
'active_start_time' = '1668811449'
'is_fortiguard_src' = 'false'
'tags' = 'EMS_ALL_UNMANAGEABLE_CLIENTS'
...
interface_info
...
1. Go to Policy & Objects > ZTNA and select the ZTNA Tags tab.
2. Hover over a tag to view the tooltip, which displays matched endpoints and resolved addresses.
1. Go to Policy & Objects > ZTNA and select the ZTNA Rules tab.
2. Click Create New, or select and edit an existing entry.
3. In the ZTNA Tag field, click the + to add tags. The local tags appear in the IP section.
Local tag information is also available in the following GUI widgets and pages:
l Dashboard > FortiClient widget
ZTNA traffic logs include the following fields related to unmanageable and unknown devices.
l Client connection status with EMS server with possible values of unknown, offline, or online:
l CLI = emsconnection
l GUI = EMS Connection
l Device manageability status with possible values of unknown, manageable, or unmanageable:
l CLI = clientdevicemanageable
l GUI = Client Device Manageable
The device manageability status can have one of the following values:
l Unknown: traffic from a client with an unknown TLS fingerprint and where the user agent information is not available
for learning.
l Manageable: traffic from a non-mobile device (platform or operating system), with a known TLS fingerprint, or where
the user agent information is available for learning.
l Unmanageable: traffic from a mobile device with a known mobile TLS fingerprint or user agent information is
available for learning.
NGFW
This section includes information about NGFW policy mode related new features:
l Allow web filter category groups to be selected in NGFW policies on page 363
l Add option to set application default port as a service port on page 364
l Introduce learn mode in security policies in NGFW mode on page 367
When configuring security policies in NGFW policy-based mode, it is possible to select and apply web filter URL
categories and groups.
In this example, the potentially liable group (g01), adult/mature content group (g02), and file sharing and storage
category (24) are applied in a security policy.
To configure web filter URL categories and groups in a security policy in the GUI:
1. Go to Policy & Objects > Security Policy, and click Create New or edit an existing policy.
2. For URL Category, click the +.
3. Click the FortiGuard Web Filter Category Group section, select Potentially Liable and Adult/Mature Content.
4. In the FortiGuard Web Filter Category > Bandwidth Consuming section, select File Sharing and Storage.
To configure web filter URL categories and groups in a security policy in the CLI:
The default-app-port-as-service option can be used in NGFW mode to set the application default port as a
service port. This allows applications to match the policy and be blocked immediately the first time that traffic hits the
firewall. When this option is enabled, the NGFW policy aggregates the ports used by the applications in the policy and
performs a pre-match on the traffic. This has changed from previous behavior where the traffic must be identified by IPS
first, and then policy matching occurs based on the matched port.
This setting is enabled by default on new installations. When upgrading, the setting is disabled to retain the previous
behavior.
Sample logs
Traffic log with SSH and FTP traffic with port 2121:
Application log with SSH and FTP traffic with port 2121:
In NGFW mode, administrators can configure a security policy in learn mode to monitor traffic that passes through the
source and destination interfaces. All traffic is allowed between the interfaces and logged. The learn mode uses a
special prefix in the policymode and profile fields in traffic and UTM logs for use by FortiAnalyzer and the Policy
Analyzer Management Extension Application (MEA) that is available with FortiManager.
When enabled on FortiManager, Policy Analyzer MEA works with security policies in learning
mode to analyze logs sent from a managed FortiGate to FortiAnalyzer. Based on the analyzed
traffic, FortiManager administrators can choose to automatically create a policy in
FortiManager for the managed FortiGate. For more information about Policy Analyzer MEA,
see the Policy Analyzer Administration Guide.
The following limitations apply when learn mode is enabled in a security policy:
l Only interfaces with device-identification enable can be used as source interfaces in a security policy
with learning mode enabled.
l Incoming and outgoing interfaces do not support any.
l Internet service is not supported.
l NAT46 and NAT64 are not supported.
l Users and groups are not supported.
l Some negate options are not supported.
1 logs found.
1 logs returned.
1 logs found.
1 logs returned.
3 logs found.
3 logs returned.
profile="learn-ips" ref="http://www.fortinet.com/ids/VID29844"
incidentserialno=158335134 msg="file_transfer: Eicar.Virus.Test.File"
attackcontextid="0/2" rawdataid="1/1" rawdata="Response-Content-Type=application/x-
msdos-program"
2 logs found.
2 logs returned.
Policies
When multicast routing is enabled, a traffic shaper can be added to a multicast policy.
Only a shared traffic shaper with the per-policy option disabled can be used. This is the default state of the per-
policy option. The auto-asic-offload option must also be disabled on the multicast policy.
This feature is currently not supported on IPv6 multicast policies or on transparent mode
VDOMs.
Example
In this example, a traffic shaper is applied to the multicast policy. A multicast flow sender sends the multicast data
stream. The shaper attached to the multicast session is checked, and the shaping of the data stream is confirmed in the
multicast session.
3. Apply the traffic shaper to the multicast policy and disable NPU offloading:
config firewall multicast-policy
edit 1
set name "test_multicast-policy"
Two options, Policy change summary and Policy expiration, are added to Workflow Management. Policy change
summary enforces an audit trail for changes to firewall policies. Policy expiration allows administrators to set a date for
the firewall policy to be disabled.
There are three states for the Policy change summary:
l Disable: users will not be prompted to add a summary when editing a policy.
l Required: the Policy change summary will be enabled and will require users to add a summary when editing or
creating a firewall policy.
l Optional: the Policy change summary will be enabled but users can leave the summary empty, if preferred, when
editing or creating a firewall policy.
There are three states for Policy expiration:
l Disable: the firewall policy will not expire. This is the default setting for Policy expiration.
l Default: the firewall policy will expire after the default number of days.
l Specify: the firewall policy will expire at a set date and time.
The default value for Policy expiration is 30 days. This number can be changed in the CLI or in
System > Settings in the GUI to any value between zero and 365 days. If the default value is
set to zero, the Default state will disable the Policy expiration.
To configure the firewall policy change summary and default expiration in the GUI:
3. Click Apply.
4. Go to System > Settings.
5. In the Workflow Management section, set Policy change summary to Required. Policies expire by default is enabled
by default with an Expire after value of 30.
6. Click Apply.
1. Go to Policy & Objects > Firewall Policy and click Create New.
2. Name the policy and configure the necessary parameters.
3. Set Policy expiration to Specify. The Expiration date fields appears with the current date and time.
4. Select the date and time for the policy to expire from the Expiration date fields.
5. Click OK. The Workflow Management - Summarize Changes pane opens.
6. In the Change summary field, enter details about the changes made to the policy. These details can be referred to
later for auditing purposes.
7. Click OK.
Policy change summaries are used to track changes made to a firewall policy. The Audit trail allow users to review the
policy change summaries, including the date and time of the change and which user made the change.
3. In the right-side banner, click Audit Trail. The Audit trail for Firewall Policy pane opens and displays the policy
change summaries for the selected policy.
Virtual patching is a method of mitigating vulnerability exploits by using the FortiGate’s IPS engine to block known
vulnerabilities. Virtual patching can be applied to traffic destined to the FortiGate by applying IPS signatures to the local-
in interface using local-in policies. Attacks geared towards GUI and SSH management access, for example, can be
mitigated using IPS signatures pushed from FortiGuard, thereby virtually patching these vulnerabilities.
When the virtual-patch option is enabled in a local-in policy, the IPS engine queries the FortiGuard API server using
the WAD process to obtain a list of vulnerabilities targeting the FortiGate on a particular version. IPS enables
vulnerability rules to scan local-in traffic on the specified interface. All matched local-in traffic is dropped accordingly.
The FortiGate must have a valid IPS license, and the extended IPS database must be enabled for more vulnerabilities to
be covered in order to use the virtual-patch option.
Once virtual-patch is enabled, the WAD process will periodically query vulnerability items from the FortiGuard API
server and forward it to IPS.
{"vendor":"fortinet","min_version":"6.0.0","severity":"high","vuln_
type":"Permission/Priviledge/Access Control","refs":["CVE-2018-
13382"],"ID":108824,"product":"fortios","patch_sig_id":0,"description":"An Improper
Authorization vulnerability in Fortinet FortiOS 6.0.0 to 6.0.4, 5.6.0 to 5.6.8 and 5.4.1 to
5.4.10 and FortiProxy 2.0.0, 1.2.0 to 1.2.8, 1.1.0 to 1.1.6, 1.0.0 to 1.0.7 under SSL VPN
web portal allows an unauthenticated attacker to modify the password of an SSL VPN web
portal user via specially crafted HTTP requests","max_version":"6.0.4","date_added":"2022-
09-20 18:33:50.517577","date_updated":"2022-09-20 18:33:50.517594"}
FortiGuard can be queried from the FortiOS CLI for a list of vulnerability rules while specifying parameters for the vendor,
version, product, and model by running the diagnose wad dev-vuln query command. For example, to query
Fortinet's FortiOS 7.0.3:
# diagnose wad dev-vuln query vendor=fortinet&version=7.0.3&product=fortios
FortiGate-201E # Dev-Vuln fetching is in process...
Dev-Vuln Lookup result: success, cache: miss, fgd: found, item: 0x7fbd2f09e138
Vulnerability details:
info entry (1):
'vendor' = fortinet
'product' = fortios
'model' = N/A
'version.min' = 7.0.0
'version.max' = 7.0.3
'firmware' = N/A
'build' = N/A
After receiving the vulnerability rules from the WAD process, the IPS engine marks them as virtual patch rules mapped to
each CVE vulnerability signature. For example:
FortiOS.NodeJS.Proxy.Authentication.Bypass(CVE-2022-40684)
FortiOS.SSL.VPN.Web.Portal.Password.Improper.Authentication(CVE-2018-13382)
FortiOS.SSL.VPN.Web.Protoal.Pathname.Information.Disclosure(CVE-2018-13379)
Example
In this example, the FortiGate’s port2 is configured with virtual patching enabled. In the test scenario, the FortiGate is set
to debug mode in order to block a harmless attack. IPS will scan local-in traffic and all matched local-in traffic will be
dropped accordingly. Intrusion prevention logs will be recorded.
2. For testing purpose only, enable all signatures for the virtual patch feature:
# diagnose ips vpatch enable-all
The attack is blocked, and a security event log (intrusion prevention) is recorded.
Objects
Address groups with no members can be configured in the GUI, CLI, and through the API. In previous versions of
FortiOS, error messages appear for empty address groups and they cannot be configured.
1. Go to Policy & Objects > Addresses and click Create New > Address Group.
2. Enter a name.
3. Click OK. The This field is required. error is not displayed under the Members field.
The overlap check for VIPs was removed, so there are no constraints when configuring multiple VIPs with the same
external interface and IP. A new security rating report alerts users of any VIP overlaps.
To configure two VIPs with the same external interface and IP:
1. Go to Security Fabric > Security Rating and click the Optimization scorecard.
2. Expand the Failed section. The Virtual IP Overlap results show an overlap (test-vip44-1 and test-vip44-1_clone) on
the root FortiGate.
IPv6 addresses are supported in the Internet Service Database (ISDB), and they can be configured in firewall policies.
In this example, the Google Gmail IPv6 ISDB address is used as a destination in a firewall policy.
1. Go to Policy & Objects > Firewall Policy and click Create New.
2. In the Destination field, click the + and select the Internet Service tab.
3. In the IPV6 INTERNET SERVICE section, select Google Gmail.
4. Optionally, hover over the Google Gmail and click View/Edit Entries. A pane appears that displays the IPv6 address
ranges for this Internet Service.
To view summary details for the Google Gmail IPv6 ISDB address:
Version: 00007.02907
Timestamp: 202212161345
Total number of IP ranges: 36878
Number of Groups: 12
Group(0), Singularity(20), Number of IP ranges(60)
Group(1), Singularity(18), Number of IP ranges(12)
Group(2), Singularity(17), Number of IP ranges(2728)
Group(3), Singularity(16), Number of IP ranges(2812)
Group(4), Singularity(15), Number of IP ranges(4011)
Group(5), Singularity(10), Number of IP ranges(2345)
Group(6), Singularity(9), Number of IP ranges(14)
Group(7), Singularity(8), Number of IP ranges(1555)
Group(8), Singularity(7), Number of IP ranges(2704)
Group(9), Singularity(6), Number of IP ranges(7300)
Group(10), Singularity(5), Number of IP ranges(3154)
Group(11), Singularity(4), Number of IP ranges(10183)
Internet Service: 65646(Google-Gmail)
Number of IP ranges: 482
Singularity: 15
Icon Id: 510
Direction: both
Data source: isdb
Country: 32 36 56 76 124 152 158 203 208 246 250 276 344 348 356 372 376 380 392 404 458 484
528 616 634 643 682 702 710 724 752 756 784 826 840
Region: 65535
City: 65535
Add ISDB on-demand mode to reduce the size stored on the flash drive - 7.2.4
Internet Service Database (ISDB) on-demand mode replaces the full-sized ISDB file with a much smaller file that is
downloaded onto the flash drive. This file contains only the essential entries for Internet Services. When a service is
used in a firewall policy, the FortiGate queries FortiGuard to download the IP addresses and stores them on the flash
drive. The FortiGate also queries the local MAC Database (MADB) for corresponding MAC information. The content of
the ISDB entries used in firewall policies persists through reboots.
Shortly after, the ISDB (FFDB) data structure is downloaded on the FortiGate. The following message appears in
the debug messages:
do_ffsr_update[1567]-Starting Update FFDB ondemand:(not final retry)
3. Run diagnostics again to verify that the ISDB (FFDB) files are saved on the FortiGate flash drive:
# diagnose autoupdate versions | grep Internet -A 6
Internet-service On-Demand Database
---------
Version: 7.02950
Contract Expiry Date: n/a
Last Updated using manual update on Fri Jan 6 06:45:00 2023
Last Update Attempt: n/a
Result: Updates Installed
4. Since no services have been applied to a policy, the IP range and IP address values are blank in the the summary
details. For example, check the summary details for ID 1245187, Fortinet DNS:
# diagnose internet-service id-summary 1245187
Version: 00007.02950
Timestamp: 202301060645
Total number of IP ranges: 3085
Number of Groups: 1
Group(0), Singularity(90), Number of IP ranges(3085)
Internet Service: 1245187(Fortinet-DNS)
Number of IP ranges: 0
Number of IP addresses: 0
Singularity: 0
Icon Id: 19
Direction: dst
Data source: isdb
Country:
Region:
City:
next
end
6. Verify the summary details again for ID 1245187 (Fortinet DNS). There is now data for the IP range and IP address
values:
# diagnose internet-service id-summary 1245187
Version: 00007.02951
Timestamp: 202301061144
Total number of IP ranges: 3558
Number of Groups: 2
Group(0), Singularity(90), Number of IP ranges(3078)
Group(1), Singularity(10), Number of IP ranges(480)
Internet Service: 1245187(Fortinet-DNS)
Number of IP ranges: 480
Number of IP addresses: 55242
Singularity: 10
Icon Id: 19
Direction: dst
Data source: isdb
Country: 12 32 36 40 56 124 158 170 203 222 250 276 320 332 344 356 360 372 380 392 458
484
528 591 600 604 642 643 702 764 784 807 826 840
Region: 55 132 159 169 251 261 283 444 501 509 529 565 596 634 697 709 721 742 744 758
776 860
1002 1056 1073 1151 1180 1190 1195 1216 1264 1280 1283 1284 1287 1290 1315 1319
1348 1363 1373 1380 1387
1437 1457 1509 1536 1539 1660 1699 1740 1752 1776 1777 1826 1833 1874 1906 1965
2014 2028 2039 2060 2063
2147 2206 65535
City: 615 679 818 1001 1106 1117 1180 1207 1330 1668 1986 2139 2812 2868 3380 3438 3485
3670 4276 4588 4622 4904
5334 5549 5654 5827 6322 6325 6330 6355 6652 7844 9055 10199 10333 11420 12930
13426 13685 13769 14107 14813 15121
15220 15507 15670 16347 16561 16564 16567 16631 17646 17746 17885 17975 17995
18071 18476 19066 19285 20784 21065 21092 21136
21146 21266 21337 21779 21993 22292 22414 22912 23352 23367 23487 23574 23635
23871 23963 24076 24203 24298 24611 24955 25050
25332 26854 27192 27350 28825 28866 65535
# diagnose vendor-mac id 1
Vendor MAC: 1(ASUS)
Version: 0000100146
Timestamp: 202301031100
Number of MAC ranges: 85
00:04:0f:00:00:00 - 00:04:0f:ff:ff:ff
00:0c:6e:00:00:00 - 00:0c:6e:ff:ff:ff
00:0e:a6:00:00:00 - 00:0e:a6:ff:ff:ff
...
This section includes information about security profile related new features:
l Antivirus on page 386
l Web filter on page 397
l IPS on page 400
l Others on page 402
Antivirus
FortiOS supports FortiSandbox inline scanning in proxy inspection mode. When inline scanning is enabled, the client's
file is held while it is sent to FortiSandbox for inspection. During this time, the FortiGate may apply client comforting (see
Protocol options in the FortiOS Administration Guide). For example, leaking a certain amount of bytes at a certain time
interval to the client. Once a verdict is returned, the appropriate action (allow or block) is performed on the held file. If
there is an error connecting to the FortiSandbox or a timeout on the FortiSandbox scanning the file within the default 50
seconds, the file can be passed, logged, or blocked based on FortiGate's configuration.
Inline scanning requires a FortiSandbox appliance running version 4.2 or later, and the FortiSandbox must be reachable
by port 4443. This feature is not supported on FortiSandbox Cloud or FortiGate Cloud Sandbox. See Understanding
Inline Block feature in the FortiSandbox Best Practices for more information.
FortiSandbox inline scanning is disabled by default. FortiSandbox inline scanning is best used
in conjunction with AV engine scanning since there is a higher rate of detection by using both
at the same time.
l log-only: log the FortiSandbox inline scan error, but allow the file (default)
fortisandbox-timeout- Set the action to take if FortiSandbox inline scanning encounters a scan timeout:
action {ignore | l ignore: take no action
log-only | block}
l log-only: log the FortiSandbox inline scan timeout, but allow the file
(default)
l block: block the file upon FortiSandbox inline scan timeout
fortisandbox-max-upload Set the maximum size of files that can be uploaded to FortiSandbox (1 - 396,
<integer> default = 10).
av-scan {disable | block Enable the antivirus scan service. Set to block or monitor to work with
| monitor} FortiSandbox (default = disable).
fortisandbox {disable | Set the protocol level parameter for FortiSandbox file scanning:
block | monitor} l disable (default), block, and monitor are available for inline scanning
Basic configuration
This example assumes that Inline Block Policy is already enabled in FortiSandbox for the FortiGate with selected risk
levels (see FortiGate devices in the FortiSandbox Administration Guide for more information). The inline block policy in
this example blocks all risk levels: malicious, high risk, medium risk, and low risk.
f. Click OK.
end
config pop3
set av-scan block
set fortisandbox block
end
config smtp
set av-scan block
set fortisandbox block
end
config mapi
set av-scan block
set fortisandbox block
end
config cifs
set av-scan block
set fortisandbox block
end
config ssh
set av-scan block
set fortisandbox block
end
next
end
l In the CLI:
In this example, the HTTP protocol settings for av-scan and fortisandbox in the AV profile are both set to block. All
files traversing HTTP in this configuration are scanned by the AV engine first, and then by FortiSandbox inline scanning
for further file analysis. Based on the FortiSandbox results, FortiOS will take the appropriate action.
Files can be blocked if they contain a scan error or timeout. The scan timeout is configured in FortiSandbox and set to 50
seconds. If the file scan takes longer than 50 seconds, FortiSandbox returns a timeout to the FortiGate, and file is
dropped with the current configuration. If a user tries to download the same file again, the cached result is provided by
FortiSandbox to the FortiGate based on the previous file scan.
This example assumes FortiSandbox inline scanning has been configured globally. The FortiGate will block the file if
there is an inline scanning error or timeout.
To configure the antivirus profile to block files if there is an inline scanning error or timeout:
If the administrator decides to take more risk and scan all files traversing HTTP, but log or ignore an inline scanning error
or timeout, the profile is modified as follows:
config antivirus profile
edit "av"
set fortisandbox-error-action {log-only | ignore}
set fortisandbox-timeout-action {log-only | ignore}
next
end
The AV engine is still used first, followed by FortiSandbox inline scanning. The FortiGate will log or ignore the file if there
is an inline scanning error or timeout, and the file is allowed to pass through.
Inline scanning is now supported when the FortiGate is licensed with the FortiGuard AI-Based Sandbox Service (FAIS).
It works similar to inline scanning for the FortiSandbox appliance by holding a file up to 50 seconds for the verdict to be
returned. Timed out scans can be set to block, log, or ignore (see Configuration with FortiSandbox scanning error and
timeout actions for use case examples). Inline scanning can be enabled from the GUI on the Cloud Sandbox
configuration page.
Inline scanning is supported for FortiSandbox appliance, FortiNDR, and FAIS. On a FortiGate,
only a single inline scanning type can be configured at a time.
e. Click OK.
3. Configure the antivirus profile:
a. Go to Security Profiles > AntiVirus and click Create New.
b. Set the Feature set to Proxy-based.
c. Enable the protocols to inspect.
f. Click OK.
1. On a client, open a web browser and download an infected file using HTTP.
2. The file is held while being scanned by FortiGate Cloud Sandbox. Once FortiGate Cloud Sandbox determines that
file's risk level is not tolerated, the FortiGate drops the connection and displays a replacement message that the file
cannot be downloaded.
3. Verify the antivirus log:
# execute log display
1 logs found.
1 logs returned.
2. On a client, open a web browser and download an infected file using HTTP.
3. Verify the antivirus log:
# execute log display
1 logs found.
1 logs returned.
To verify that infected files are blocked inline if a scan timeout occurs:
1. Edit the antivirus profile to block files over HTTP and when there is a scan timeout:
config antivirus profile
edit "av"
set feature-set proxy
set fortisandbox-mode inline
config http
set fortisandbox block
end
set fortisandbox-timeout-action block
next
end
2. On a client, open a web browser and download a large ZIP file (clean file).
3. When the scan timeout occurs, a replacement message appears that The file "zipfile.zip" is still being scanned and
will be released once complete. Please try the transfer again in a few minutes.
The antivirus exempt list allows users to exempt known safe files that happen to be incorrectly classified as malicious by
the AV signature and AV engine scan. Users can specify file hashes in MD5, SHA1, or SHA256 for matching, which are
applied at a per-VDOM level. When matched, the FortiGate ignores the AV scan verdict so that the corresponding UTM
behavior defined in the AV profile is not performed.
config antivirus exempt-list
edit <name>
set hash-type {md5 | sha1 | sha256}
set hash <string>
set status {enable | disable}
next
end
The exempt list does not apply to results from outbreak prevention, machine learning,
FortiNDR, or FortiSandbox inline scans.
In this example, an antivirus exempt list is configured for the EICAR anti-malware test file. Although the antivirus profile is
configured to block HTTP, the client is able to download the file.
3. Get a client to access https://www.eicar.com/ and download the anti-malware test file.
The FortiGate exempts the AV scan verdict and bypasses the file. The client can download the file and no
replacement message is displayed.
Web filter
This section includes information about web filter related new features:
l Using the Websense Integrated Services Protocol in flow mode on page 397
l Inspecting HTTP3 traffic on page 398
Websense Integrated Services Protocol (WISP) servers can be used server in flow mode, which allows the FortiGate to
send traffic to the third-party web filtering service for rating. This feature was previously only supported in proxy-based
security profiles.
When a WISP server is used in a web filter profile, in flow or proxy mode, the following web filter scanning priority
sequence is used:
1. Local URL filter
2. Websense web filtering service
3. FortiGuard web filtering service
When using Chrome, the browser may switch the HTTP/3 connection to HTTP/2 when deep
inspection is applied, due to its sensitivity to delays caused by deep inspection.
Example
In this example, a web filter profile is created to block the words Welcome to aioquic, which appear in a website that uses
HTTP/3.
4. Access the website using a supported HTTP/3 client, such as Chrome or Firefox. The website is blocked by the
FortiGate.
IPS
When configuring IPS sensor profiles, IPS signatures can be filtered based on the attributes: default status, default
action, vulnerability type, and the last update date. When monitoring the specific, filtered signatures, logs are not
generated for other, irrelevant signatures.
This avoids generating a lot of false positives due to many signatures having the pass action, which is never logged.
default-action {pass | block | all} Filter by signatures' default actions (default = all).
last-modified {before | after | Filter by signatures' last modified date (default = before 00/00/00).
between} <date> [end-date] The date format is yyyy/mm/dd. The year range is 2001 - 2050.
When the IPS profile is used in a firewall profile and then the EICAR virus test file signature is triggered, the signature
matches the values set in the filter and logs are generated:
1:date=2022-02-15 time=14:07:03 eventtime=1644962823303491048 tz="-0800" logid="0419016384"
type="utm" subtype="ips" eventtype="signature" level="alert" vd="vd1" severity="info"
srcip=10.1.100.11 srccountry="Reserved" dstip=172.16.200.55 dstcountry="Reserved"
srcintf="port38" srcintfrole="undefined" dstintf="port37" dstintfrole="undefined"
sessionid=1171 action="detected" proto=6 service="HTTP" policyid=1 poluuid="623d2d28-8ea7-
51ec-00ef-7549685a77c2" policytype="policy" attack="Eicar.Virus.Test.File" srcport=47230
dstport=80 hostname="172.16.200.55" url="/virus/eicar" direction="incoming" attackid=29844
profile="test_default" ref="http://www.fortinet.com/ids/VID29844" incidentserialno=103809025
msg="file_transfer: Eicar.Virus.Test.File"
# get ips rule status | grep Eicar.Virus.Test.File -A 18
rule-name: "Eicar.Virus.Test.File"
rule-id: 29844
rev: 10.111
date: 1491926400
action: pass
status: enable
log: disable
log-packet: disable
severity: 0.info
service: TCP, HTTP, FTP, SMTP, POP3, IMAP, NNTP
location: server, client
os: All
application: Other
rate-count: 0
rate-duration: 0
rate-track: none
rate-mode: continuous
vuln_type: Anomaly
Support full extended IPS database for CP9 models and slim extended database for
other physical models
FortiGate models with the CP9 SPU receive the IPS full extended database (DB), and the other physical FortiGate
models receive a slim version of the extended DB. The slim-extended DB is a smaller version of the full extended DB that
contains top active IPS signatures. It is designed for customers who prefer performance.
Customers with non-CP9 SPU models need to upgrade to a CP9 SPU model (physical
FortiGate) in order to get full IPS signature coverage. All FortiGate models 200 (E and F) and
higher have a CP9 SPU.
See Determining the content processor in your FortiGate unit in the FortiOS Hardware Acceleration Guide to check if
your device has a CP9 SPU.
Support full extended IPS database for FortiGate VMs with eight cores or more - 7.2.5
FortiGate VMs with eight or more vCPUs can be configured to have a minimum of eight cores to be eligible to run the full
extended database (DB). Any FortiGate VM with less than eight cores will receive a slim version of the extended DB. The
slim-extended DB is a smaller version of the full extended DB that contains top active IPS signatures. It is designed for
customers who prefer performance.
Others
This section includes information about other security profile related new features:
l Add email filters for block allow lists on page 402
l Enhance the DLP backend and configurations on page 406
l Add option to disable the FortiGuard IP address rating on page 413
l ICAP scanning with SCP and FTP on page 413
l Add persistency for banned IP list 7.2.1 on page 416
l Reduce memory usage on FortiGate models with 2 GB RAM or less by not running WAD processes for unused
proxy features 7.2.1 on page 418
l Allow the YouTube channel override action to take precedence 7.2.1 on page 418
l Add REST API for IPS session monitoring 7.2.4 on page 418
l Hide proxy features in the GUI by default for models with 2 GB RAM or less 7.2.4 on page 420
l Re-introduce DLP profiles in the GUI 7.2.4 on page 422
l Remove option to block QUIC by default in application control 7.2.4 on page 428
l Improve replacement message displayed in blocked videos 7.2.5 on page 430
l Introduce SIP IPS profile as a complement to SIP ALG 7.2.5 on page 430
Two new email block/allow list filters have been added to match the recipient address (email-to) and subject
(subject). The email address type (email) in previous FortiOS versions has been changed to email sender (email-
from).
When upgrading, any email entries are converted to email-from.
config emailfilter block-allow-list
edit <id>
set name <string>
config entries
edit <id>
set type {ip | email-to | email-from | subject}
next
end
next
end
The new filter types are currently not supported in flow inspection mode.
When downgrading from 7.2 to earlier versions, email-from, email-to, and subject
entries could be lost.
In this example, an email filter is configured with three block/allow list entries that use the new email-related entry types.
c. Click OK. The Recipient Address filter type has been added to the Block/Allow List.
6. Create the sender address filter:
a. Click Create New.
b. Select the Sender Address filter Type, enter a Pattern, and select Mark as Spam.
c. Click OK. The Sender Address filter type has been added to the Block/Allow List.
7. Create the subject filter:
a. Click Create New.
b. Select the Subject filter Type, enter a Pattern, and select Mark as Spam.
c. Click OK. The Subject filter type has been added to the Block/Allow List.
8. Click OK.
9. Configure the firewall policy:
a. Go to Policy & Objects > Firewall Policy and click Create New, or edit an existing policy.
b. Configure the other settings as needed.
c. Enable the Email Filter option and select the previously created profile.
d. Configure the other settings as needed.
e. Click OK.
end
config pop3
set action tag
end
config smtp
set action discard
end
set spam-bal-table 3
next
end
When an email is detected as spam for one of the defined filter types, the FortiGate will reply to the SMTP message with
a 554 5.7.1 code and insert the following replacement messages:
Blocked for email-to This message has been blocked because mail to this email address is not
allowed.
Blocked for email-from This message has been blocked because mail from this email address is not
allowed.
Blocked for subject This message has been blocked because the subject contains a banned phrase.
To view the generated UTM logs in the GUI, go to Log & Report > Security Events and click the Anti-Spam card.
The DLP backend has been enhanced to use Hyperscan to perform a one-parse algorithm for scanning multiple
patterns. This allows DLP to scale up without any performance downgrade.
DLP configurations have been improved and changed in the following ways:
l Separate DLP settings into data type, dictionary, sensor, and profile configurations.
l Add DLP data type that includes five pre-defined data types to match for keyword, regex, hex, credit card, and social
security number (SSN). Custom data types can be added.
config dlp data-type
edit "keyword"
set pattern "built-in"
next
edit "regex"
set pattern "built-in"
next
edit "hex"
set pattern "built-in"
next
edit "credit-card"
set pattern "\\b([2-6]{1}\\d{3})[- ]?(\\d{4})[- ]?(\\d{2})[- ]?(\\d{2})[- ]?(\\d
{2,4})\\b"
set verify "built-in"
set look-back 20
set transform "\\b\\1[- ]?\\2[- ]?\\3[- ]?\\4[- ]?\\5\\b"
next
edit "ssn-us"
set pattern "\\b(\\d{3})-(\\d{2})-(\\d{4})\\b"
set verify "(?<!-)\\b(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}\\b
(?!-)"
set look-back 12
set transform "\\b\\1-\\2-\\3\\b"
next
end
l Add DLP dictionary (config dlp dictionary), which is a collection of data type entries.
config dlp dictionary
edit <name>
config entries
edit 1
set type {credit-card | hex | keyword | regex | ssn-us}
set pattern <string>
set repeat {enable | disable}
set status {enable | disable}
next
end
next
end
l Add new DLP sensor (config dlp sensor), which defines which dictionary to check. It counts the number of
dictionary matches to trigger the sensor.
config dlp sensor
edit <name>
set match-type {match-all | match-any | match-eval}
set eval <string>
config entries
edit <id>
set dictionary <dlp_dictionary>
set count <integer>
set status {enable | disable}
next
end
next
end
l Rename config dlp sensor to config dlp profile. DLP profiles allow filtering by size and file type.
config dlp profile
edit <name>
set feature-set {flow | proxy}
config rule
edit <id>
set proto <protocol> <protocol> ...
set sensor <dlp_sensor>
set action {allow | log-only | block | quarantine-ip}
next
end
next
end
pattern <string> Enter a regular expression pattern string without a look around.
verify <string> Enter a regular expression pattern string used to verify the data type.
transform <string> Enter the template to transform user input to a pattern using the capture group
from pattern.
Example 1
This configuration will block HTTPS upload traffic that includes credit card or social security number (SSN) information.
The pre-defined data types for credit-card and ssn-us are used in the dictionary.
To block HTTPS upload traffic that includes credit card or SSN information:
When a credit card or SSN is included in HTTP POST traffic, a replacement message appears because it is blocked. A
DLP log is generated.
Sample log
Example 2
This configuration will log FTP upload traffic with the following patterns:
l keyword = demo
l regex = demo(regex){1,5}
l hex = e6b58be8af95
The dictionary entries have repeat match enabled. The DLP sensor is set so this is repeated five times.
To log FTP upload traffic that has specific keyword, regex, and hex patterns repeated for five times:
5. Upload a Word document that contains "demo, demo, demo, demoregexregex," using FTP.
A DLP log is generated after the FTP traffic passes.
Sample log
Example 3
This configuration will block HTTPS downloads of EXE files and log HTTPS downloads of files larger than 500 KB.
To block HTTPS download of EXE files and log downloads larger than 500 KB:
4. Download an EXE file using HTTPS. The download is blocked, a replacement message appears, and a DLP log is
generated.
Sample log
url="https://2.na.dl.wireshark.org/win64/Wireshark-win64-3.6.2.exe" agent="curl/7.61.1"
filename="Wireshark-win64-3.6.2.exe" filesize=10502090 profile="profile-case3-type-size"
An option has been added to disable using the FortiGuard IP address rating for SSL exemptions and proxy addresses.
The ssl-exemption-ip-rating and address-ip-rating options are enabled by default, so when both a website
domain and its IP address return different categories after being rated by FortiGuard, the IP address category takes
precedence when evaluating SSL exemptions associated with the SSL inspection profile and proxy addresses
associated with the proxy protocol options profile. SSL exemptions and the ssl-exemption-ip-rating option work
in both inspection modes (proxy and flow).
When the categories associated with the website domain and IP address are different, disabling the FortiGuard IP rating
ensures that the FortiGuard domain category takes precedence when evaluating the preceding objects. For most
websites, the domain category is valid when its IP address is unrated by FortiGuard. Since being unrated is considered
as not having a category, the FortiGate uses the domain category as the website category.
A website might have an IP category that differs from its domain category. If they are different, the FortiGate uses the
rating weight of the IP address or domain name to determine the rating result and decision. The rating weight is hard-
coded in the FortiGate and depending on the relative category weights, the FortiGate may use the IP category instead of
the website category. If the ssl-exemption-ip-rating option is disabled in the SSL inspection profile, then the
FortiGate uses the domain category as the website category, which ensures SSL exemption operation as intended.
The address-ip-rating option in a proxy protocol options profile functions the same way as the ssl-exemption-
ip-rating option. If the address-ip-rating option is disabled in a profile that is used in an explicit proxy policy that
also uses a web filter profile, for HTTP or HTTPS traffic to a website that has different IP and domain categories and that
matches the policy, the FortiGate will use the domain category when it evaluates categories for the web filter.
A FortiGate can forward files transferred by SCP and FTP to an ICAP server for further scanning. Previously, only
HTTP and HTTPS were supported for ICAP forwarding.
Example
The FortiGate used in this example is operating in transparent mode. The SSH client, 172.16.200.11, sends a file named
today to the SSH server at 172.16.200.33 using SCP. Since SCP transfers are encrypted inside an SSH tunnel, for the
FortiGate to scan the traffic, deep inspection must be enabled in the SSL SSH profile.
1. On a Linux client, copy a filed named today to the SSH server using SCP:
scp today fosqa@172.16.200.33:/home/fosqa/ssh_depot/
2. Capture a sniffer trace between the FortiGate and ICAP server, then verify the output from the ICAP protocol
session.
a. The client request and the file to be inspected:
Icap_client REQMOD:
172.016.200.200.13185-172.016.200.044.01344: REQMOD icap://172.16.200.44:1344/ssh_
test ICAP/1.0
Host: 172.16.200.44:1344
X-Client-IP: 172.16.200.11
X-Server-IP: 172.16.200.33
X-Authenticated-User: TG9jYWw6Ly9hbm9ueW1vdXM=
X-Authenticated-Groups: TG9jYWw6Ly9sb2NhbGhvc3Qvbm8gYXV0aGVudGljYXRpb24=
User-Agent: FortiOS v7.2.0
Encapsulated: req-hdr=0, req-body=116
1d
Tue Sep 20 04:01:50 UTC 2022
Where:
X-Client-IP = the client sending the file
l
l Tue Sep 20 04:01:50 UTC 2022 = the content of the file, which is in clear text after the FortiGate
1d
Tue Sep 20 04:01:50 UTC 2022
3. On a Linux client, copy the file from the server locally using SCP:
scp fosqa@172.16.200.33:/home/fosqa/ssh_depot/today2/
4. Similar outputs are observed. The ICAP client request indicates that the file is copied from the SSH server:
PUT /scp/today2 HTTP/1.1
Host: 172.16.200.33
The banned-ip-persistency option configures whether the banned IP list persists through a power cycle.
config firewall global
set banned-ip-persistency {disabled | permanent-only | all}
end
The banned IP list is created from quarantining. For example, when quarantining is enabled for IPS, application control,
and DDoS. Permanent quarantining can be added manually using diagnose user banned-ip add src4.
The diagnose user quarantine <parameter> command has changed to diagnose user banned-ip
<parameter>.
When banned-ip-persistency is set to all, all the banned IPs are saved after a reboot. In this example, an
application control security profile with quarantining is already configured. After traffic is generated that triggers the
quarantine rule, a quarantine list is generated.
When banned-ip-persistency is set to permanent-only, only banned IPs with an indefinite expiry time are saved
after a reboot. The permanent IP ban was already configured for 10.1.100.11 using diagnose user banned-ip add
src4 10.1.100.11 0 ips.
Reduce memory usage on FortiGate models with 2 GB RAM or less by not running
WAD processes for unused proxy features - 7.2.1
Certain unused WAD proxy processes are not started by default on FortiGate models with 2 GB of RAM or less to reduce
memory usage. These process will only start when relevant proxy features are configured, such as explicit proxies,
transparent proxies, or ZTNA.
In a video filter profile, when the FortiGuard category-based filter and YouTube channel override are used together, by
default a video will be blocked if it matches either category or YouTube channel and the action is set to block. This
enhancement enables the channel action to override the category action. A category can be blocked, but certain
channels in that category can be allowed when the override-category option is enabled.
For more information about this feature, see Allow the YouTube channel override action to take precedence.
The /api/v2/monitor/ips/session/performance REST API can be used to query the FortiGate for its IPS
session information. This API retrieves the output of diagnose ips session performance, and it can provide the
diagnose ips session information to FortiManager.
}
}
],
"vdom":"vd1",
"path":"ips",
"name":"session",
"action":"performance",
"status":"success",
"serial":"FG1K5D3I13800000",
"version":"v7.2.2",
"build":1319
}
1. Configure the REST API administrator and generate the token (see REST API administrator in the
FortiOS Administration Guide for more details).
2. Create a new request in the client for the HTTP method, GET, and enter the URL (https://<FortiGate_IP_
address>/api/v2/monitor/ips/session/performance?access_token=<token>).
3. The client displays the output similar to the following:
{
"http_method":"GET",
"results":[
{
"pid":7475,
"memory":127750680,
"cycles":{
"decoder":1922,
"session":789,
"protocol":3692,
"application":907777,
"match":4997,
"nc_match":8029,
"cross_tag":0
},
"packets":{
"decoder":252,
"session":252,
"protocol":252,
"application":205,
"match":5,
"nc_match":16,
"cross_tag":0
}
}
],
"vdom":"vd1",
"path":"ips",
"name":"session",
"action":"performance",
"status":"success",
"serial":"FG1K5D3I13800000",
"version":"v7.2.2",
"build":1319
}
Hide proxy features in the GUI by default for models with 2 GB RAM or less - 7.2.4
This enhancement introduces the gui-proxy-inspection setting under config system settings, which is
enabled on most models except for low-end platforms with 2 GB of RAM or less. When this setting is disabled:
l Proxy-based only profiles such as ICAP, Web Application Firewall, Video Filter, and Zero Trust Network Access are
disabled (grayed out) on the System > Feature Visibility page.
l The Feature set field is disabled on UTM profiles. Only flow-based features are shown.
Example AV profile:
l Firewall policy pages do not have option to select a Flow-based or Proxy-based inspection mode.
l Proxy-based UTM profiles cannot be selected within policy configurations or other areas.
Note the following exceptions:
l If the proxy feature set is enabled from the CLI or carried over from upgrading, it can be displayed in the GUI.
l If proxy-based inspection mode is enabled from the CLI or carried over from upgrading, it can be displayed in GUI
firewall policy pages.
Example AV profile being edited from the New Policy page after upgrading:
The DLP profile is re-introduced in the GUI on the Security Profiles > Data Leak Prevention page. Users can configure
DLP settings within the Profiles, Sensors, and Dictionaries tabs. DLP profiles can be added to proxy-based firewall
policies and proxy policies. DLP profiles cannot be added to flow-based firewall policies and one-arm sniffers.
If Data Leak Prevention is not visible in the tree menu, go to System > Feature Visibility and
enable it.
Example 1
This configuration will block HTTPS upload traffic that includes credit card information. The pre-defined data type for
credit card is used in the dictionary.
a. Go to Security Profiles > Data Leak Prevention, select the Profiles tab, and click Create New.
b. Enter a name (profile-case1).
c. In the Rules section, click Create New.
d. Configure the following settings:
Name 1
Sensors sensor-case1
Severity Medium
Action Block
Type File
e. Click OK.
f. Click OK to save the profile.
4. Add the DLP profile to a firewall policy:
a. Go to Policy & Objects > Firewall Policy and click Create New.
b. Set the Inspection Mode to Proxy-based.
c. In the Security Profiles section, enable DLP Profile and select profile-case1.
d. Configure the other settings as needed.
e. Click OK.
When a credit card is included in HTTP POST traffic, the file is blocked and a DLP log is generated.
Sample log
Example 2
This configuration will log FTP upload traffic with the following patterns:
l keyword = demo
l regex = demo(regex){1,5}
l hex = e6b58be8af95
The dictionary entries have repeat match enabled. The DLP sensor is set so this is repeated five times.
To log FTP upload traffic that has specific keyword, regex, and hex patterns repeated for five times:
f. Repeat these steps to add dictionary entries for the following (with Repeats enabled):
i. Set the Type to regex and the Pattern to demo(regex){1,5}.
ii. Set the Type to hex and the Pattern to e6b58be8af95.
Name 1
Sensors sensor-case2
Severity Medium
Action Block
Type File
Protocol FTP
e. Click OK.
f. Click OK to save the profile.
4. Add the DLP profile to a firewall policy:
a. Go to Policy & Objects > Firewall Policy and click Create New.
b. Set the Inspection Mode to Proxy-based.
c. In the Security Profiles section, enable DLP Profile and select profile-case2.
d. Configure the other settings as needed.
e. Click OK.
5. Upload a Word document that contains "demo, demo, demo, demoregexregex," using FTP.
A DLP log is generated after the FTP traffic passes.
Sample log
Blocking QUIC by default in the application control profile is no longer necessary since HTTP3 over QUIC is fully
supported by FortiOS. The allow-quic option has been removed from the application control profile (config
application list) settings. The QUIC option has been removed from the Application Sensor configuration page in
the GUI. Users can still select the QUIC application signature (40169) to manually block QUIC.
d. Click OK.
This enhancement improves how a replacement message is displayed for YouTube videos blocked by video filtering.
When a user visits a video directly by a URL, a full page replacement message is displayed. When a user loads a video
from the YouTube website (homepage or recommended videos), the page loads and the replacement message is
displayed in the video frame.
For more information about this feature, see Improve replacement message displayed in blocked videos.
In FortiOS 7.0, flow-based SIP inspection was introduced, which is handled by the IPS Engine. When a VoIP profile is
applied to a firewall policy, the inspection mode determines whether SIP ALG or flow-based SIP is used. Therefore, SIP
ALG and flow-based SIP were mutually exclusive. You could not use both at the same time.
Proxy-based SIP ALG is able to handle features such as pin hole creation and NAT that flow-based SIP inspection
cannot. Flow-based SIP can handle features such as MSRP decoding and scanning that proxy-based SIP ALG cannot.
To solve this problem, FortiOS 7.2.5 introduces a new IPS-based VoIP profile (ips-voip-filter) that allows flow-
based SIP to complement SIP ALG while working together.
The VoIP profile selection within a firewall policy is restored to pre-7.0 behavior. The voip-profile can be selected
regardless of the inspection-mode in the firewall policy.
For more information about this feature, see Introduce SIP IPS profile as a complement to SIP ALG.
This section includes information about IPsec and SSL VPN related new features:
l Add log field to identify ADVPN shortcuts in VPN logs on page 431
l Show the SSL VPN portal login page in the browser's language on page 432
l SLA link monitoring for dynamic IPsec and SSL VPN tunnels on page 434
l IPsec IKE load balancing based on FortiSASE account information 7.2.5 on page 437
The advpnsc log field in VPN event logs indicates that a VPN event is based on an ADVPN shortcut. A value of 1
indicates the tunnel is an ADVPN shortcut, and 0 indicates it is not.
Sample log
This sample log is based on the following hub and spoke VPN configuration:
# diagnose vpn tunnel list
...
name=_OCVPN3-0a_0 ver=2 serial=c 192.168.15.3:4500->172.16.106.46:64916 tun_id=172.16.106.46
tun_id6=::172.16.106.46 dst_mtu=1500 dpd-link=on weight=1
bound_if=3 lgwy=static/1 tun=intf/0 mode=dial_inst/3 encap=none/976 options[03d0]=create_dev
no-sysctl rgwy-chg rport-chg frag-rfc accept_traffic=1 overlay_id=1
parent=_OCVPN3-0a index=0
proxyid_num=1 child_num=0 refcnt=6 ilast=9 olast=9 ad=r/2
Show the SSL VPN portal login page in the browser's language
By default, the browser's language preference is automatically detected and used by the SSL VPN portal login page. The
system language can still be used by changing the settings on the SSL-VPN Settings page of the GUI, or disabling
browser-language detection in the CLI:
config vpn ssl settings
set browser-language-detection disable
end
In this example, the sslvpnadmin user account is used for SSL VPN connections on the testportal1 SSL VPN portal. The
account is shared by users from different countries that use different browsers and different languages in their browsers.
The user on PC1 uses Chrome in English, and the user on PC2 uses Edge in Simplified Chinese. When a user logs in to
the SSL VPN web portal, all of the pages are shown in the same language as their browser.
To configure the SSL VPN portal to use the client's browser language:
c. Click OK.
2. Set the language preference:
a. Go to VPN > SSL-VPN Settings.
b. Under Web Mode Settings, set Language to Browser Preference.
c. Click Apply.
3. Add the sslvpnadmin user to the policy used by the SSL VPN portal.
l When the user on PC2 logs in to the SSL VPN portal using Edge in Simplified Chinese, all of the pages are
shown in Simplified Chinese.
SLA link monitoring for dynamic IPsec and SSL VPN tunnels
The link health monitor settings can measure SLA information of dynamic VPN interfaces, which assign IP addresses to
their clients during tunnel establishment. This includes SSL VPN tunnels, IPsec remote access, and IPsec site-to-site
tunnels.
This feature currently only supports IPv4 and the ICMP monitoring protocol. In the IPsec
tunnel settings, net-device must be disabled.
Example
In this example, endpoint users dial up using FortiClient to create IPSec tunnels with the FortiGate and obtain IP
addresses. The link monitor on the FortiGate's dynamic VPN interface detects the path quality to the endpoints.
5. Once endpoint users have connected using FortiClient, verify the tunnel information:
# get vpn ipsec tunnel summary
'for_Branch_0' 10.1.100.23:0 selectors(total,up): 1/1 rx(pkt,err): 21091/0 tx
(pkt,err): 20741/0
'for_Branch_1' 10.1.100.13:0 selectors(total,up): 1/1 rx(pkt,err): 19991/0 tx
(pkt,err): 20381/0
7. Manually add 200 ms latency on the path between the FortiGate and FortiClients.
The FortiGate device ID is carried by the IKEv2 message NOTIFY payload when it is configured.
config vpn ipsec phase1-interface
edit <name>
set dev-id-notification enable
set dev-id <string>
next
end
This device ID configuration is required when the FortiGate is configured as a secure edge LAN extension for FortiSASE.
It allows FortiSASE to distribute IKE/IPsec traffic according to the FortiGate device ID to achieve load balancing.
For more information about this feature, see IPsec IKE load balancing based on FortiSASE account information.
This section includes information about user and authentication related new features:
l Authentication on page 438
Authentication
When authenticating with RADIUS in a wired or wireless scenario, the FortiGate can support proper handling of the
Termination-Action AVP.
In a wired scenario, a hardware switch configured with 802.1X security authentication can read the Termination-Action
attribute value from the RADIUS Access-Accept response. If the Termination-Action is 1, the FortiGate will initiate re-
authentication when the session time has expired. During re-authentication, the port stays authorized. If the Termination-
Action is 0, the session will be terminated.
In a wireless scenario, when a virtual AP is configured with WPA2-Enterprise security with RADIUS and has CoA
enabled, it processes the RADIUS CoA request immediately upon receiving it and re-authenticates when the
Termination-Action is 1.
Wired example
This example has a FortiGate configured with a hardware switch with two ports: port3 and port5. The hardware switch is
enabled with 802.1X security and assigned to a RADIUS user group. Upon a successful authentication, the RADIUS
server responds with an Access-Accept containing the authentication Session-Timeout and Termination-Action
attributes. In this example, the Termination-Action value is 1, which informs the client to re-authenticate when the
session time expires. During this time, the FortiGate keeps the client/port authorized while it initiates the re-
authentication with the RADIUS server.
The message exchange is as follows:
To configure the RADIUS server and the FortiGate to handle the Termination-Action AVP:
1. On the RADIUS server, configure the Termination-Action AVP with the value RADIUS-Request (1) to indicate
that re-authentication should occur upon expiration of the Session-Time.
2. On the FortiGate, configure the RADIUS server:
config user radius
edit "rad1"
set server "172.18.60.203"
set secret ENC **********
set radius-coa enable
config accounting-server
edit 1
set status enable
set server "172.18.60.203"
set secret ENC **********
next
end
next
end
next
end
5. On the client device, initiate 802.1X authentication, then verify that the switch port shows as authorized:
# diagnose sys 802-1x status
Virtual switch 'hw2' (default mode) 802.1x member status:
port3: Link up, 802.1X state: unauthorized
port5: Link up, 802.1X state: authorized
Wireless example
In this example, a virtual AP is configured with WPA2-Enterprise security with RADIUS and has CoA enabled. After a
wireless user authenticates and connects to the wireless SSID, the RADIUS server triggers a CoA event with AVPs
Session-timeout and a Termination-Action of 1. This signals the FortiGate to trigger re-authentication of the client, which
the client immediately performs to stay connected to the wireless SSID.
The message exchange is as follows:
5. On the wireless station console, verify that the re-authentication happens immediately:
root@wifi-qa-01:/home/wpa-test# wlan1: CTRL-EVENT-EAP-STARTED EAP authentication started
wlan1: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=25
wlan1: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 25 (PEAP) selected
EAP-TLV: TLV Result - Success - EAP-TLV/Phase2 Completed
wlan1: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
wlan1: PMKSA-CACHE-REMOVED **:**:**:**:**:** 0
wlan1: PMKSA-CACHE-ADDED **:**:**:**:**:** 0
wlan1: WPA: Key negotiation completed with **:**:**:**:**:** [PTK=CCMP GTK=CCMP]
Upon receiving direct FSSO logon REST API requests, the FortiGate now returns the HTTP response code
instantaneously and offloads the LDAP group membership query to a backend API. This improves response times, and
prevents delays and backlogs when many requests are sent in a short time period.
The direct FSSO logon REST API was added to FortiOS in 6.4.4 to allow an authenticated
user from a third party service to be queried against LDAP by the FortiGate for group
membership. This provides SSO capabilities for the end user of the third party service when
integrated with the FortiGate.
Example
This example compares the difference in HTTP response time before and after the feature implementation.
The following process flow occurs:
1. A user logs on to the third party service.
2. The third party service calls the REST API to relay the authenticated user to the FortiGate, so that the FortiGate can
provide SSO service to this user.
3. The FortiGate receives the HTTP POST request and responds immediately.
4. In the meantime, the FortiGate sends the username to fnbamd to further query the user against LDAP for its group
membership.
5. The query is successful in the user group. The user, IP, and group are added to the firewall authentication table on
the FortiGate.
Before After
{ {
"http_method":"POST", "http_method":"POST",
"status":"success", "status":"success",
"http_status":200, "http_status":200,
"vdom":"root", "vdom":"root",
"path":"user", "path":"user",
"name":"firewall", "name":"firewall",
"action":"auth", "action":"auth",
"serial":"FG4H1E0000000000", "serial":"FG4H1E0000000000",
"version":"v7.0.4", "version":"v7.2.0",
"build":291 "build":1095
} }
real 0m3.770s real 0m0.115s
user 0m0.048s user 0m0.040s
sys 0m0.020s sys 0m0.032s
Administrators can configure a FortiGate client certificate in the LDAP server configuration when the FortiGate connects
to an LDAPS server that requires client certificate authentication.
config user ldap
edit <ldap_server>
set client-cert-auth {enable | disable}
set client-cert <source>
next
end
Example
In this example, the FortiGate is configured as an explicit web proxy. It connects to the Windows AD server through
LDAPS, where the Windows server requires a client certificate to connect. The client certificate is configured in the CLI.
The endpoint PC connecting to the web server will first need to authenticate to the explicit web proxy before accessing
the server.
While this example demonstrates an LDAP client certificate for an explicit proxy configuration, LDAP client certificates
can be used in firewall authentication, transparent proxy, ZTNA, and where ever LDAP configurations are used on the
FortiGate.
When traffic from the endpoint PC matches a policy and triggers authentication, the FortiGate starts the LDAPS TLS
connection handshake with the Windows AD. The LDAPS server requests a client certificate to identify the FortiGate as
a client. The FortiGate provides a configured client certificate, issued to zach.com, to the LDAPS server.
The following communication between the FortiGate and the LDAPS server shows the client certificate is sent by the
FortiGate:
Authenticated LDAP users can be tracked by logging the users' group memberships, logon timestamps, and logout
timestamps into local files on a log disk over a rolling four-week period. The historical records can be queried from the
CLI. This feature is only enabled on FortiGate models with a log disk.
Example
In this example, the FortiGate is configured with an explicit web proxy and an LDAP server. When an LDAP user is
authenticated by an IP-based authentication method in WAD, the WAD user is considered to be in an active logon
status. This WAD user is listed in the diagnose wad user list output. If the user is removed from WAD as an
authenticated, such as when the IP-based authentication expires, then the user is considered to become inactive (logout
status). The user is no longer listed in the diagnose wad user list output.
The WAD user's group membership information and their logon and logout timestamps are written into local files on the
FortiGate's disk. There is one log file for each day, and the FortiGate can maintain up to 28 log files over a rolling period
of 28 days (four weeks). This means after 28 days with 28 files stored, on the 29th day, the first file will be removed and a
new file will be created for the 29th day.
This feature works on other configurations such as firewall authentication, transparent web
proxy, ZTNA, and SSL VPN where an LDAP server is used.
When users pass through the explicit proxy and log in and out through LDAP, their login and logout records will be
logged to the disk.
In this example, there are two LDAP users, test1 and test3, with the following activity:
1. test3 logs on at 22:30:22 on February 23, 2022, then logs out at 22:31:09 on the same day.
2. test1 logs on at 23:55:02 on February 23, 2022, then logs out at 00:05:02 on February 24, 2022.
3. test3 logs on at 16:29:44 on February 24, 2022, then logs out at 16:39:44 on the same day.
The logon and logout timestamp information, and the group membership information for users test1 and test3 will be
logged into two local files on the log disk.
To view the active user logged information for two days back from February 24, 2022:
Record #0:
'username' = 'test3'
'groupname' = 'CN=Domain Admins,CN=Users,DC=FORTINETQA,DC=local'
'groupname' = 'CN=FSSO,OU=QA,DC=FORTINETQA,DC=local'
'logon' = '2022-02-23 22:30:22'
'logout' = '2022-02-23 22:31:09'
Record #1:
'username' = 'test1'
'groupname' = 'CN=Domain Admins,CN=Users,DC=FORTINETQA,DC=local'
'groupname' = 'CN=FSSO,OU=QA,DC=FORTINETQA,DC=local'
'groupname' = 'CN=mytest-grp,OU=QA,DC=FORTINETQA,DC=local'
'logon' = '2022-02-23 23:55:02'
Record #2:
'username' = 'test1'
'groupname' = 'CN=Domain Admins,CN=Users,DC=FORTINETQA,DC=local'
'groupname' = 'CN=FSSO,OU=QA,DC=FORTINETQA,DC=local'
'groupname' = 'CN=mytest-grp,OU=QA,DC=FORTINETQA,DC=local'
'logon' = '2022-02-23 23:55:02'
'logout' = '2022-02-24 00:05:02'
Record #3:
'username' = 'test3'
'groupname' = 'CN=Domain Admins,CN=Users,DC=FORTINETQA,DC=local'
'groupname' = 'CN=FSSO,OU=QA,DC=FORTINETQA,DC=local'
'logon' = '2022-02-24 16:29:44'
'logout' = '2022-02-24 16:39:44'
Returned 4 records.
There is one record (logon) for test1 on 2022-02-23 because they remained active after midnight (until 00:05:02).
There is another record for 2022-02-24 with logon and logout timestamps for test1.
The set delimiter RADIUS option allows the FortiGate to set the RADIUS accounting message group delimiter to a
comma (,) instead of a plus sign (+) when using RSSO. The default delimiter is still a plus sign.
config user radius
edit <name>
set delimiter {plus | comma}
next
end
Example
In this example, the FortiGate is configured for RSSO. The FortiGate will read accounting messages from the RADIUS
server to determine which user is logged in to which group.
Two users, test1 and test2, belong to multiple groups. The RADIUS server sends accounting messages where groups
are delimited by commas. With the comma delimiter, the FortiGate can parse the groups properly and assign users to
the correct user group. User test1 belongs to the rsso1 group, and test2 belongs to the rsso-group group.
Both users should be authenticated with the correct FortiGate RSSO groups. When the users log off and the FortiGate
receives a RSSO logoff event notification, the users should be removed from the list of authenticated firewall users.
1. Enable RADIUS debugging messages and verify the RADIUS accounting events:
# diagnose debug application radiusd -1
# diagnose debug enable
...
Received radius accounting event
vd 0:root Add/Update auth logon for IP 10.1.100.188 for user test1
DB 0 insert [ep='test1' pg='groupX,group5,group3' ip='10.1.100.188/32'] success
Send accounting response
Received radius accounting event
vd 0:root Add/Update auth logon for IP 10.1.100.185 for user test2
DB 0 insert [ep='test2' pg='groupY,group6,group1' ip='10.1.100.185/32'] success
Send accounting response
10.1.100.185, test2
type: rsso, id: 0, duration: 18, idled: 18
flag(10): radius
server: root
packets: in 0 out 3, bytes: in 0 out 152
group_id: 15
group_name: rsso-group
10.1.100.188, test1
type: rsso, id: 0, duration: 44, idled: 44
flag(10): radius
server: root
packets: in 0 out 0, bytes: in 0 out 0
group_id: 34
group_name: rsso1
3. Once the RSSO logoff events are triggered, verify the RADIUS accounting events in the debugging messages:
...
Received radius accounting event
vd 0:root Remove auth logon for IP 10.1.100.188 for user test1
DB 0 remove by IP [ep='test1' pg='groupX,group5,group3' ip='10.1.100.188/32'] success
Send accounting response
Received radius accounting event
vd 0:root Remove auth logon for IP 10.1.100.185 for user test2
DB 0 remove by IP [ep='test2' pg='groupY,group6,group1' ip='10.1.100.185/32'] success
Send accounting response
4. Verify the list of authenticated firewall users. Both users logged off, so there are no firewall users:
# diagnose firewall auth list l
Vendor-Specific Attributes (VSAs) can be used with TACACS authentication and authorization in wildcard system
administrator access to FortiGates from browsers and SSH. The memberof VSA can be used in remote TACACS user
group for group matching. The vdom VSA returned from TACACS can be used to overwrite the VDOM in the system
admin settings. The admin_prof VSA returned from TACACS can be used to overwrite the accprofile in the
system admin settings.
Example
In this example, a FortiGate is configured with multiple VDOMs, and the root acts as the management VDOM.
Administrators attempt to log in with SSH or HTTPS through each VDOM.
Using the VSA values for the vdom and admin_prof attributes returned from the TACACS server, the FortiGate can
allow access only to the VDOMs returned with the permissions from the corresponding administrator profile. If no VSA
values are returned from TACACS, then the FortiGate uses the default values under the config system admin
settings.
The TACACS server settings are configured as follows:
user = admin-all-vdom {
default service = permit
member = sys_admin_all_vdom
…
}
user = admin-vdom1 {
default service = permit
member = sys_admin_vdom1
…
}
group = sys_admin_all_vdom {
default service = permit
service = fortigate {
memberof = group3
admin_prof = admin_all_vdom
}
}
group = sys_admin_vdom1 {
default service = permit
service = fortigate {
memberof = group3
admin_prof = admin_vdom1
vdom = vdom1
}
}
For multiple VDOMs, each VDOM must be specified in a separate field. For example, for access to vdom1 and vdom2:
vdom = vdom1
vdom = vdom2
Some TACACS servers, such as Linux TACACS servers, may only return the last VDOM
specified.
1. The administrator attempts to log in to the FortiGate over the remote TACACS user group, remote-tacacs.
2. The FortiGate sends an authorization request to the TACACS server.
3. TACACS authenticates the admin-all-vdom user. The user matches the sys_admin_all_vdom TACACS group.
TACACS returns following VSA values:
l memberof = group3
l admin_prof = admin_all_vdom
4. The FortiGate authenticates and authorizes the user based on the returned memberof group. The admin_prof
value overwrites the accprofile setting configured under system admin. Since no other VDOM VSA is
returned, the FortiGate matches the user to the default VDOM configured under system admin, which is admin_
no_access.
1. The administrator attempts to log in to the FortiGate over the remote TACACS user group, remote-tacacs.
2. vdom1 forwards the request to the management VDOM, which is the root.
3. The FortiGate sends an authorization request to the TACACS server through the management VDOM.
4. TACACS authenticates the admin-vdom1 user. The user matches the sys_admin_vdom1 TACACS group.
TACACS returns following VSA values:
l memberof = group3
l admin_prof = admin_vdom1
l vdom = vdom1
5. The FortiGate authenticates and authorizes the user based on the returned memberof group. The other VSA
values overwrite the accprofile and VDOM settings configured under system admin. The user is only allowed
to access vdom1 with the administrative permissions allowed for admin_vdom1.
b. Configure admin_all_vdom who has read-write access to all VDOMs, but not with super_admin permissions:
config system accprofile
edit "admin_all_vdom"
set secfabgrp read-write
set ftviewgrp read-write
set authgrp read-write
set sysgrp read
set netgrp read-write
4. Configure the wildcard administrative user assigned to the remote TACACS group:
config system admin
edit "remote-admin"
set remote-auth enable
set accprofile "admin_no_access"
set vdom "root" "vdom1"
set wildcard enable
set remote-group "remote-tacacs"
set accprofile-override enable
set vdom-override enable
next
end
1. Log in as admin-vdom1 using a browser and SSH. The following behavior is expected:
l The user can only access vdom1 (returned by TACACS in the vdom VSA).
l The user can view firewall policies, but they cannot not create new policies.
l The user cannot run diagnose debug application commands in the PuTTY SSH session.
2. Log in as admin_all_vdom using a browser and SSH. The following behavior is expected:
l The user has no VSA VDOM configured on the TACACS server, so the default setting in the system admin
configuration should apply. The user can access the root and vdom1 VDOMs.
l The user has no access to system global in the CLI, and the prompt symbol is a $ instead of a #.
Synchronizing LDAP Active Directory users to FortiToken Cloud using the group
filter - 7.2.1
To synchronize Active Directory users and apply two-factor authentication using FortiToken Cloud, two-factor
authentication can be enabled in the user ldap object definition in FortiOS. By default, FortiOS retrieves all Active
Directory users in the LDAP server with a valid email or mobile number (mail and mobile attributes), and synchronizes
the users to FortiToken Cloud. Users are then created on FortiToken Cloud and activation is sent out using email or
SMS.
Group filters can be used to reduce the number of the Active Directory users returned, and only synchronize the users
who meet the group filter criteria.
For more information about this feature, see Synchronizing LDAP Active Directory users to FortiToken Cloud using the
group filter.
Specify the SAN field to use for LDAP-integrated certificate authentication - 7.2.4
Before this enhancement, certificate-based authentication against Active Directory LDAP (AD LDAP) only supported the
UserPrincipleName (UPN) as the unique identifier in the Subject Alternative Name (SAN) field in peer user certificates.
This enhancement extends the use case to cover the RFC 822 Name (corporate email address) defined in the SAN
extension of the certificate to contain the unique identifier used to match a user in AD LDAP. It also allows the DNS
defined in the user certificate to be used as a unique identifier.
config user ldap
edit <name>
set account-key-upn-san {othername | rfc822name | dnsname}
next
end
The LDAP server configurations are applied to the user peer configuration when the PKI user is configured.
config user peer
edit <name>
set ca <string>
set cn <string>
set ldap-server <string>
set ldap-mode principal-name
next
end
When a user authenticates to the FortiGate for an administrative log in, SSL VPN, IPsec dialup, or firewall authentication
using a user certificate, it presents a signed certificate issued by a trusted CA to the FortiGate. The following sequence of
events occurs as the FortiGate processes the certificate for authentication:
1. The FortiGate verifies if the certificate is issued by a trusted CA. If the CA is not a public CA, ensure that the CA
certificate is uploaded and trusted by the FortiGate, and is applied to the user peer configurations (set ca
<string>).
2. The FortiGate verifies that the CN field of the certificate matches the CN specified in the user peer configurations
(set cn <string>).
3. If the user peer configuration has ldap-server configured and the ldap-mode is set to principal-name,
the FortiGate uses the unique identifier in the certificate to authenticate against the LDAP server.
a. If set account-key-upn-san othername is configured (the default setting), the FortiGate uses the UPN
in the certificate’s SAN field to authenticate against LDAP.
b. If set account-key-upn-san rfc822name is configured, the FortiGate uses the RFC 822 Name in the
certificate’s SAN field to authenticate against LDAP.
c. If set account-key-upn-san dnsname is configured, the FortiGate uses the DNS name in the certificate
to authenticate against LDAP.
4. By default, the FortiGate tries to match the UserPrincipleName (UPN) attribute on the AD LDAP. If this needs to be
changed to another field, configure the account-key-filter setting on the LDAP configuration:
config user ldap
edit <name>
set account-key-filter <string>
next
end
Example
In this example, a user certificate is issued by a customer’s CA to a user. The user uses this certificate to authenticate to
the SSL VPN web portal. The administrator decides to use the RFC 822 Name in the SAN field to authenticate against
their corporate AD LDAP. The Active Directory attribute to check against the RFC 822 Name field is the mail attribute.
User certificate information:
next
end
By default, the account-key-filter filters on the UPN attribute uses the following string: (&
(userPrincipalName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2))).
l (userPrincipalName=%s) matches the UPN attribute on the AD LDAP.
l (!(UserAccountControl:1.2.840.113556.1.4.803:=2)) filters out inactive and locked AD accounts.
2. Configure the local peer user:
config user peer
edit "peer-RFC822-name"
set ca "CA_Cert_2"
set cn "test2"
set ldap-server "ad-ldap-peer-user"
set ldap-mode principal-name
next
end
4. Apply the user group to the SSL VPN configuration and firewall policy.
Verification
When the SSL VPN user authenticates in a browser, the FortiOS fnbamd daemon first validates the certificate supplied
by the user. If the certificate check is successful, the information in the SAN field of the user certificate is used to find a
matching user record on the AD LDAP.
l Bind to LDAP and try to match the content of the SAN in the user certificate with the user record in the AD LDAP:
...
_cert_ldap_query-LDAP query, idx 0
[448] __cert_ldap_query-UPN = 'test2@fortinet-fsso.com'
This section includes information about secure access related new features:
l Wireless on page 460
l Switch controller on page 530
l NAC on page 555
l FortiExtender on page 558
Wireless
This enhancement allows a FortiGate Wireless Controller to pre-authorize a FortiAP by specifying a Wildcard Serial
Number (SN) that represents the model of FortiAP you want to authorize. You can pre-configure and pre-authorize a
template FortiAP SN to represent the SN of specific FortiAP models. When a physical FortiAP connects, the pre-
configured SN is replaced by the actual SN of the FortiAP, and the FortiAP can be automatically authorized.
For example, a Wildcard Serial Number of FP231F****000001 will allow the first FortiAP-231F to register to the Wireless
Controller to be authorized automatically and adopt profile configurations.
A Wildcard Serial Number consists of three parts:
1. Go to WiFI & Switch Controller > Managed FortiAPs and click Create New > Managed AP.
2. In Serial number, enter a Wildcard Serial Number (example "FP231F****000001").
3. Select a FortiAP profile you want to apply to the FortiAP.
4. Click OK to save.
5. Connect the FortiAP unit to your topology.
Once the FortiAP is discovered by FortiGate, FortiGate will try to find a matching Wildcard SN. When FortiGate finds
a matching Wildcard SN, the template Serial Number is renamed to match the newly discovered physical
FortiAP SN.
6. Go to WiFI & Switch Controller > Managed FortiAPs to verify that the FortiAP is pre-authorized.
The pre-configured template FortiAP SN is successfully renamed to match the FortiAP SN "FP231FTF20026472".
3. The new FortiAP is now pre-authorized and can be managed from the FortiGate without manual authorization. Note
that the UUID does not change.
config wireless-controller wtp
edit "FP231FTF20026472"
set uuid 47ab50f8-5f7c-51ec-0a60-4ff00a3eba2e
set admin enable
set wtp-profile "FAP231F-test"
config radio-1
end
config radio-2
end
next
end
The FortiAP F-series product family supports two radios while a third radio performs dedicated scans at all times.
However, due to wireless chipset limitations on the third radio, some of the data packets cannot be scanned, which may
impact the detection capabilities for FPS and other related solutions. You can disable dedicated scanning which then
allows background scanning using WIDS profile to be enabled on Radios 1 and 2.
1. Go to WiFi & Switch Controller > FortiAP Profiles and select the FortiAP F-series profile you want to disable
dedicated scanning for.
After you disable Dedicated scan, the WIDS profile option becomes available under Radio 1 and Radio 2
configuration.
3. Set the Mode of the Radio to Access Point.
4. Enable WIDS profile and select a WIDS profile to perform background scanning.
5. Go to Dashboard > WiFi > Rogue APs to verify that the Rogue AP list is on the same channel as the Radio you
configured.
When you create a new FortiAP F-series profile, dedicated scanning is automatically enabled.
next
end
This GUI enhancement improves the channel selection for each of the 2.4GHz and 5GHz wireless radios. For 2.4GHz,
you can select two default channel plans—Three Channels and Four Channels—to automatically configure non-
overlapping channels. For 5.0GHz, a new slide-in page with improved visualization is added to help users select
channels.
You can select channels for the 5GHz radio by clicking Set Channels. The following image shows the channel selector
panel:
You can select individual channels or click Toggle DFS Channels and Toggle Weather Radar Channels to
select/deselect those channels . The channel chart also shows channel availability for 40MHz or 80MHz channel-
bonding.
This feature supports Layer 3 roaming between different VLANs and subnets on the same or different Wireless
Controller. A client connected to the tunnel mode SSID on one FortiAP can roam to the same SSID on another FortiAP
managed by the same or different FortiGate Wireless Controller, and continue to use the same IP. When the client idles
longer than the client-idle-rehome-timeout, the client will rehome and receive an address on the new subnet
from the new FortiAP.
Currently, this feature can only be configured using the CLI on the FortiGate Wireless Controllers.
This feature supports two topologies:
l L3 roaming intra-controller
In this example, there are two FortiAPs (FAP1 and FAP2) being managed by a controller. The FortiAPs are located
on different floors of the same building. Each FAP is mapped to a different VLAN, but are on the same SSID. The
client roams from FAP1 to FAP 2 and the L3 handoff is handled by the controller. The client maintains the same IP
address.
l L3 roaming inter-controller
In this example, there are two controllers (Controller1 and Controller2) each managing a FortiAP (FAP1 and FAP2)
respectively. The L3 client roams from Controller1's FAP1 to Controller 2's FAP2. Both FAPs have the same SSID,
and each FAP has the SSID tied to a different VLAN. The client roams between the two FAPs and the L3 handoff is
handled by Controller1 and Controller2's mobility tunnel. The client maintains the same IP address.
This configuration requires two FortiGate units. In order to enable L3 roaming supported VAP, both FortiGate units must
have the same SSID, security, and passphrase.
The following example uses:
l AC1 as FGT40F
o FAP1 as FAP433E
l AC2 as FGT81EP
o FAP2 as FAP831F
end
next
end
config wireless-controller wtp
edit "FP433FXX00000000"
set uuid b04f1cca-8528-51ec-2dc0-c744cbef4179
set admin enable
set wtp-profile "433F"
config radio-2
end
next
end
next
end
When the wireless client is connected with "l3.roaming" on AP1 in AC1, the client receives IP 10.40.1.10 from AP1 in
AC1:
FortiGate-40F # diagnose wireless-controller wlac -d sta online
vf=0 wtp=2 rId=2 wlan=l3_rm1 vlan_id=0 ip=10.40.1.10 ip6=fe80::7766:7ffe:ee4d:c396
mac=a4:c3:f0:6d:69:33 vci= host=test-wifi user= group= signal=-65 noise=-95 idle=1 bw=3
use=7 chan=36 radio_type=11AC(wave2) security=wpa2_only_personal mpsk= encrypt=aes cp_
authed=no l3r=1,1 10.43.1.81:5247 -- 10.43.1.40:5247 33,0 online=yes mimo=2
When the client leaves AP1 and roams towards AP2, it connects with the same SSID "l3.roaming" on AP2. Wireless
traffic passed from AP2 and is sent to AC2. Eventually the wireless traffic is transferred from AC2 to AC1 and traffic is
maintained from AC1. The wireless client maintains the original IP of 10.40.1.10:
FortiGate-81E-POE # diagnose wireless-controller wlac -d sta online
vf=0 wtp=3 rId=2 wlan=l3_rm1 vlan_id=0 ip=10.40.1.10 ip6=:: mac=a4:c3:f0:6d:69:33 vci=
host= user= group= signal=-66 noise=-95 idle=0 bw=2 use=7 chan=36 radio_type=11AC(wave2)
security=wpa2_only_personal mpsk= encrypt=aes cp_authed=no l3r=0,1 0.0.0.0:0 -- 0.0.0.0:0
0,0 online=yes mimo=2
If the wireless client idle time exceeds client-idle-rehome-timeout, it triggers the rehome event. The wireless
client will send a DHCP request and obtain a new IP address from AC2 (10.81.2.20). Now the wireless client traffic is
maintained from AC2:
FortiGate-81E-POE # diagnose wireless-controller wlac -d sta online
vf=0 wtp=3 rId=2 wlan=l3_rm1 vlan_id=0 ip=10.81.2.20 ip6=:: mac=a4:c3:f0:6d:69:33 vci=
host=test-wifi user= group= signal=-65 noise=-95 idle=0 bw=0 use=6 chan=36 radio_type=11AC
(wave2) security=wpa2_only_personal mpsk= encrypt=aes cp_authed=no l3r=1,0 0.0.0.0:0 --
0.0.0.0:0 0,0 online=yes mimo=2
Report wireless client app usage for clients connected to bridge mode SSIDs
This feature enhances the CLI command "diagnose wireless-controller wlac -d sta online" to include
application usage data for each wireless client connected to a bridge mode SSID. FortiGate receives the wireless client
application information from FortiAPs and analyzes the traffic information on each application.
FortiAP is updated to capture application information of wireless client traffic passing through it when this feature has
been configured; it requires managed FortiAPs to run firmware version 7.2.0 and later.
The following CLI commands have been added under config wireless-controller vap:
FortiAP-231F # vcfg
-------------------------------VAP Configuration 1----------------------------
Radio Id 1 WLAN Id 0 SSID_NDPI ADMIN_UP(INTF_UP) init_done 0.0.0.0/0.0.0.0 unknown (-1)
vlanid=0, intf=wlan10, vap=0x3db5702c, bssid=e0:23:ff:d7:74:b0
11ax high-efficiency=enabled target-wake-time=enabled
bss-color-partial=enabled
mesh backhaul=disabled
local_auth=disabled standalone=disabled nat_mode=disabled
local_bridging=enabled split_tunnel=disabled
intra_ssid_priv=disabled
mcast_enhance=disabled igmp_snooping=disabled
mac_auth=disabled fail_through_mode=disabled sta_info=1/0
mac=local, tunnel=8023, cap=8ce0, qos=disabled
prob_resp_suppress=disabled
rx sop=disabled
sticky client remove=disabled
mu mimo=enabled ldpc_config=rxtx
dhcp_option43_insertion=enabled dhcp_option82_insertion=disabled
dhcp_enforcement=disabled
access_control_list=disabled
bc_suppression=dhcp dhcp-ucast arp
auth=WPA2, PSK, AES WPA keyIdx=1, keyLen=16, keyStatus=1, gTsc=000000000000
key=f4cf7fd6 32dbced5 6d9fb25c 8894ad9b
pmf=disable
okc=disabled, dynamic_vlan=disabled, extern_roaming=disabled
voice_ent(802.11kv)=disabled, fast_bss_trans(802.11r)=disabled mbo=disabled
port_macauth=disable
airfairness weight: 20%
schedules=SMTWTFS 00:00->00:00,
ratelimit(Kbps): ul=0 dl=0 ul_user=0 dl_user=0 burst=disabled
primary wag:
secondary wag:
application detection engine: enabled, report-interval=60, configured
-------------------------------Total 1 VAP Configurations----------------------------
Id 1979 App:ssl
Tx:474313 Rx:64787 Age:9
Id 2182 App:quic
Tx:1028073 Rx:138326 Age:9
Id 1090 App:adobeanalytics
Tx:23201 Rx:7608 Age:9
Id 1141 App:casale
Tx:7160 Rx:2030 Age:9
Id 1218 App:rubiconproject
Tx:5226 Rx:2002 Age:9
This enhancement adds the ability to toggle 802.11d support for 2.4 GHz radios through a FortiAP profile. In previous
versions, 802.11d was always enabled on FortiAPs. When 802.11d is enabled, the FortiAPs broadcast the country code
in beacons, probe responses, and probe requests. This led to some older legacy clients failing to associate to the
FortiAP. The ability to disable 802.11d prevents the broadcasting of country code settings and provides backwards
compatibility with those clients.
Since IEEE 802.11d only applies to 2.4 GHz radios operating in the 802.11g band, disabling
802.11d only applies to radios configured to operate in the 802.11g band.
To disable 802.11d:
2. When the previous FortiGate setting are applied to a Managed FortiAP, the settings can be verified on the FortiAP
CLI through the rcfg and iwpriv commands:
FortiAP-231F # rcfg | grep 802
802.11d enable : disabled
FortiAP-231F #
Check iwpriv
3. Sniff the packets in the air before and after disabling the feature:
a. Before enabling the feature, use a packet analyzer to check the sample beacon packet for the Country
Information Tag in Tagged parameters.
b. After disabling the 802.11d on a 2.4Ghz radio, use a packet analyzer to check the beacon and verify that the
Country Information Tag is no longer under in Tagged Parameters.
This enhancement adds GUI support for configuring MAC address filters in the WiFi & Switch Controller > SSIDs page
and introduces a new address-group-policy command that applies MAC filters directly from the SSID. Using
address groups, you can choose if you want to permit or exclude clients based on their MAC addresses.
1. Go to Policy & Objects > Addresses and select Create New > Address.
2. Name the address and set the Type as Device (MAC Address).
3. Enter the MAC address(es) you want to filter.
default.
l Allow: Permit clients with MAC addresses that are in the address group.
l Deny: Deny clients with MAC addresses that are in the address group.
1. Create the firewall address entry and set the type to mac:
config firewall address
edit "client-1"
set uuid f35b2080-a199-51ec-7d97-00495859217e
set type mac
set macaddr "f8:e4:e3:d8:5e:af"
next
end
2. Create a firewall address group and select the address entry you just created.
config firewall addrgrp
edit "mac-group"
set uuid 26260750-a19a-51ec-b054-b385dab00c07
set member "client-1"
next
end
3. Under a wireless vap interface, there is a new address-group-policy option to help control the mac filter
function.
l To allow the connection, select the created address-group and set the address-group-policy to
allow:
config wireless-controller vap
edit "wifi.fap.01"
set ssid "ExampleSSID"
set passphrase ENC *
set schedule "always"
set address-group "mac-group"
l To deny the connection, select the created address-group and set the address-group-policy to
deny:
config wireless-controller vap
edit "wifi.fap.02"
set ssid "ExampleSSID"
set passphrase ENC *
set schedule "always"
set address-group "mac-group"
set address-group-policy deny
next
end
Support for Layer 3 roaming with tunnel mode SSIDs was added in FortiOS 7.2.0. FortiOS
7.2.1 expands support to bridge mode SSIDs. For more information on Layer 3 roaming and
supported topologies, see Support Layer 3 roaming for tunnel mode on page 467.
A client connected to the bridge mode SSID on one FortiAP can roam to the same SSID on another FortiAP managed by
the same or different FortiGate Wireless Controller, and continue to use the same IP. When the client idles longer than
the client-idle-rehome-timeout, then the client will rehome and receive an address on the new subnet from the
new FortiAP.
For the L3 roaming inter-controller topology, bridge mode SSIDs support two Layer 3 roaming modes: indirect and direct.
l Indirect Mode
In indirect mode, the L3 handoff is handled by the mobility tunnel between the FortiGate Wireless Controllers.
l Direct Mode
In direct mode, the two FortiAPs must be able to reach each other with no NAT in the path and the L3 handoff occurs
between the FortiAPs directly.
The following configurations require dynamic user VLAN assignment by RADIUS to be configured for RADIUS users per
the steps in VLAN assignment by RADIUS in the FortiWiFi and FortiAP Configuration Guide, specifically, configuring
RADIUS user attributes that are used for the VLAN ID assignment.
2. configure the L3 roaming support bridge mode SSID and related VLAN interface:
config wireless-controller vap
edit "l3_br1"
set ssid "L3Roaming_br1"
set security wpa2-only-enterprise
set auth radius
set radius-server "wifi-radius"
set local-bridging enable
set schedule "always"
set dynamic-vlan enable
set l3-roaming enable
next
end
config system interface
edit "lan"
set vdom "root"
set ip 10.40.0.1 255.255.255.0
set allowaccess ping https ssh http fabric
set type hard-switch
set stp enable
set role lan
set snmp-index 4
next
end
config system interface
edit "lan_100"
set vdom "root"
set ip 10.43.100.1 255.255.255.0
set allowaccess ping
set device-identification enable
set role lan
set snmp-index 10
set interface "lan"
set vlanid 100
next
end
This configuration requires two FortiGate units. In order to enable L3 roaming supported VAP, both FortiGate units must
have the same SSID, security, and passphrase.
The following example uses:
l AC1 as FGT40F
o FAP1 as FAP433E
l AC2 as FGT81EP
o FAP2 as FAP831F
1. Configure the L3 roaming peer IP for AC1 (FGT-40F):
config system interface
edit "wan"
set vdom "root"
set ip 10.43.1.40 255.255.255.0
set allowaccess ping https ssh http fabric
set type physical
b. Configure the L3 roaming support bridge mode SSID and related VLAN interface:
config wireless-controller vap
edit "l3_br1"
set ssid "L3Roaming_br1"
set security wpa2-only-enterprise
set auth radius
set radius-server "wifi-radius"
set local-bridging enable
set schedule "always"
set dynamic-vlan enable
set l3-roaming enable
set l3-roaming-mode indirect
next
end
config system interface
edit "lan"
set vdom "root"
set ip 10.40.0.1 255.255.255.0
set allowaccess ping https ssh http fabric
set type hard-switch
set stp enable
set role lan
set snmp-index 4
next
end
config system interface
edit "lan_100"
set vdom "root"
set ip 10.43.100.1 255.255.255.0
set allowaccess ping
set device-identification enable
set role lan
set snmp-index 10
set interface "lan"
set vlanid 100
next
end
b. Configure the L3 roaming support bridge mode SSID and related VLAN interface:
config wireless-controller vap
edit "l3_br1"
set ssid "L3Roaming_br1"
set security wpa2-only-enterprise
set auth radius
set radius-server "wifi-radius"
set local-bridging enable
set schedule "always"
set dynamic-vlan enable
set l3-roaming enable
set l3-roaming-mode indirect
next
end
config system interface
edit "lan_hw"
set vdom "root"
set ip 10.81.0.129 255.255.255.0
set allowaccess ping https ssh http fabric
set type hard-switch
set stp enable
set role lan
set snmp-index 52
next
end
config system interface
edit "lan_100"
set vdom "root"
set ip 10.81.100.1 255.255.255.0
set allowaccess ping
set device-identification enable
set role lan
set snmp-index 34
set interface "lan_hw"
set vlanid 100
next
end
set power-level 99
set vap-all manual
set vaps "l3_br1"
set channel "36" "40"
end
config radio-3
set mode disabled
end
next
end
config wireless-controller wtp
edit "FP831FXX00000000"
set uuid b867ca7c-cbc5-51ec-d5ac-4a395282be68
set admin enable
set wtp-profile "831F.1"
config radio-2
end
next
end
When the wireless client is connected with "L3Roaming_br1" on AP1 in AC1, the client receives IP 10.43.100.2 from AP1
in AC1, bridged to “lan_100” VLAN interface:
FortiGate-40F # diagnose wireless-controller wlac -d sta online
vf=0 wtp=2 rId=2 wlan=l3_br1 vlan_id=100 ip=10.43.100.2 ip6=fe80::c84:737e:2ba0:7ae2
mac=22:cf:0e:1a:7f:d2 vci= host= user=vlan0100 group=wifi-radius signal=-67 noise=-95 idle=6
bw=0 use=6 chan=36 radio_type=11AC security=wpa2_only_enterprise mpsk= encrypt=aes cp_
authed=no l3r=1,0 G=0.0.0.0:0,0.0.0.0:0-0-0 -- 0.0.0.0:0 0,0 online=yes mimo=2
When the client leaves AP1 and roams towards AP2, it connects with the same SSID "L3Roaming_br1" on AP2.
Wireless traffic passes from AP2 and is sent to AC2. Eventually the wireless traffic is transferred from AC2 to AC1 and
traffic is maintained from AC1. The wireless client maintains the original IP of 10.43.100.2:
FortiGate-81E-POE # diagnose wireless-controller wlac -d sta online
vf=0 wtp=10 rId=2 wlan=l3_br1 vlan_id=0 ip=10.43.100.2 ip6=:: mac=22:cf:0e:1a:7f:d2 vci=
host= user=vlan0100 group=wifi-radius signal=-58 noise=-95 idle=1 bw=5 use=7 chan=36 radio_
If the wireless client idle time exceeds client-idle-rehome-timeout, it triggers the rehome event. The wireless
client will send a DHCP request and obtain a new IP address from AC2 (10.81.100.2). Now the wireless client traffic is
maintained from AC2:
FortiGate-81E-POE # diagnose wireless-controller wlac -d sta online
L vf=0 wtp=10 rId=2 wlan=l3_br1 vlan_id=100 ip=10.81.100.2 ip6=fe80::c84:737e:2ba0:7ae2
mac=22:cf:0e:1a:7f:d2 vci= host= user=vlan0100 group=wifi-radius signal=-55 noise=-95 idle=3
bw=0 use=6 chan=36 radio_type=11AC security=wpa2_only_enterprise mpsk= encrypt=aes cp_
authed=no l3r=1,0 G=0.0.0.0:0,0.0.0.0:0-0-0 -- 0.0.0.0:0 0,0 online=yes mimo=2
This implementation redesigns wireless controller VAP CLI commands to support allowed data rates based on the
802.11ac operating band and ax standards. This update provides flexibility to disable any spatial streams from the
setting and options to set rate control on the VAP level based on the number of spatial streams. You can configure data
rates on up to 8 spatial streams under the newer VHT (802.11ac) and HE (802.11ax) standards, an upgrade from the
previous syntax that only allowed up to 4 spatial streams. This redesign also supports 8x8 AP models.
This following old CLI commands are removed from config wireless-controller vap and replaced with new
commands to configure 802.11ac and 802.11ax Modulation and Coding Scheme (MCS) rates:
set rates-11ax-ss12
Allowed data rates for 802.11ax
with 1 or 2 spatial streams.
set rates-11ax-ss34
Allowed data rates for 802.11ax
with 3 or 4 spatial streams.
l Enabling MCS data rate with MCS index 9 will automatically enable data rate with MCS
index 8.
l For 8x8 FortiAPs, users can set 8 values for 8 streams separated by commas.
l If the values rates-11ax-mcs-map and rates-11ac-mcs-map are not set, the
maximum data rate setting is set by default
The following example configuration on a 4x4 AP shows how to set data rates for four streams where stream 5-8 are not
supported. The numbers used in this example are separated by commas that correspond to MCS values in the 802.11ax
and 802.11ac WiFi standards.
1. Set data rates in the wireless controller VAP.
config wireless-controller vap
edit "new_rate_test"
set ssid "newratetest"
set security wpa-personal
set passphrase ENC ******
set rates-11ac-mcs-map "7,8,9,8"
set rates-11ax-mcs-map "7,9,11,7"
next
end
3. Once the FortiGate settings are applied to a manged FortiAP, you can verify the configurations from the FortiAP
CLI.
Note: The maximum rates in 802.11ac and 802.11ax streams 1-4 under the rates control configuration
output are bolded to show how the configurations directly correspond to set rates-11ac-mcs-map
"7,8,9,8" and set rates-11ax-mcs-map "7,9,11,7", configured in Step 1.
FortiAP-431F # vcfg
-------------------------------VAP Configuration 1----------------------------
Radio Id 0 WLAN Id 0 newratetest ADMIN_UP(INTF_UP) init_done 0.0.0.0/0.0.0.0 unknown
(-1)
vlanid=0, intf=wlan00, vap=0x37e7e02c, bssid=04:d5:90:e9:f3:18
11ax high-efficiency=enabled target-wake-time=enabled
...
rates control configuration:
11ac_ss12: mcs0/1 mcs1/1 mcs2/1 mcs3/1 mcs4/1 mcs5/1 mcs6/1 mcs7/1 mcs0/2
mcs1/2 mcs2/2 mcs3/2 mcs4/2 mcs5/2 mcs6/2 mcs7/2 mcs8/2
11ac_ss34: mcs0/3 mcs1/3 mcs2/3 mcs3/3 mcs4/3 mcs5/3 mcs6/3 mcs7/3 mcs8/3
mcs9/3 mcs0/4 mcs1/4 mcs2/4 mcs3/4 mcs4/4 mcs5/4 mcs6/4 mcs7/4 mcs8/4
11ac_ss56: mcs0/5 mcs1/5 mcs2/5 mcs3/5 mcs4/5 mcs5/5 mcs6/5 mcs7/5 mcs8/5
mcs9/5 mcs10/5 mcs11/5 mcs0/6 mcs1/6 mcs2/6 mcs3/6 mcs4/6 mcs5/6 mcs6/6 mcs7/6 mcs8/6
mcs9/6 mcs10/6 mcs11/6
11ac_ss78: mcs0/7 mcs1/7 mcs2/7 mcs3/7 mcs4/7 mcs5/7 mcs6/7 mcs7/7 mcs8/7
mcs9/7 mcs10/7 mcs11/7 mcs0/8 mcs1/8 mcs2/8 mcs3/8 mcs4/8 mcs5/8 mcs6/8 mcs7/8 mcs8/8
mcs9/8 mcs10/8 mcs11/8
11ax_ss12: mcs0/1 mcs1/1 mcs2/1 mcs3/1 mcs4/1 mcs5/1 mcs6/1 mcs7/1 mcs0/2
mcs1/2 mcs2/2 mcs3/2 mcs4/2 mcs5/2 mcs6/2 mcs7/2 mcs8/2 mcs9/2
11ax_ss34: mcs0/3 mcs1/3 mcs2/3 mcs3/3 mcs4/3 mcs5/3 mcs6/3 mcs7/3 mcs8/3
mcs9/3 mcs10/3 mcs11/3 mcs0/4 mcs1/4 mcs2/4 mcs3/4 mcs4/4 mcs5/4 mcs6/4 mcs7/4
11ax_ss56: mcs0/5 mcs1/5 mcs2/5 mcs3/5 mcs4/5 mcs5/5 mcs6/5 mcs7/5 mcs8/5
mcs9/5 mcs10/5 mcs11/5 mcs0/6 mcs1/6 mcs2/6 mcs3/6 mcs4/6 mcs5/6 mcs6/6 mcs7/6 mcs8/6
mcs9/6 mcs10/6 mcs11/6
11ax_ss78: mcs0/7 mcs1/7 mcs2/7 mcs3/7 mcs4/7 mcs5/7 mcs6/7 mcs7/7 mcs8/7
mcs9/7 mcs10/7 mcs11/7 mcs0/8 mcs1/8 mcs2/8 mcs3/8 mcs4/8 mcs5/8 mcs6/8 mcs7/8 mcs8/8
mcs9/8 mcs10/8 mcs11/8
application detection engine: disabled
-------------------------------VAP Configuration 2----------------------------
Radio Id 1 WLAN Id 0 newratetest ADMIN_UP(INTF_UP) init_done 0.0.0.0/0.0.0.0 unknown
(-1)
vlanid=0, intf=wlan10, vap=0x37e7e8b1, bssid=04:d5:90:e9:f3:20
11ax high-efficiency=enabled target-wake-time=enabled
...
rates control configuration:
11ac_ss12: mcs0/1 mcs1/1 mcs2/1 mcs3/1 mcs4/1 mcs5/1 mcs6/1 mcs7/1 mcs0/2
mcs1/2 mcs2/2 mcs3/2 mcs4/2 mcs5/2 mcs6/2 mcs7/2 mcs8/2
11ac_ss34: mcs0/3 mcs1/3 mcs2/3 mcs3/3 mcs4/3 mcs5/3 mcs6/3 mcs7/3 mcs8/3
mcs9/3 mcs0/4 mcs1/4 mcs2/4 mcs3/4 mcs4/4 mcs5/4 mcs6/4 mcs7/4 mcs8/4
11ac_ss56: mcs0/5 mcs1/5 mcs2/5 mcs3/5 mcs4/5 mcs5/5 mcs6/5 mcs7/5 mcs8/5
mcs9/5 mcs10/5 mcs11/5 mcs0/6 mcs1/6 mcs2/6 mcs3/6 mcs4/6 mcs5/6 mcs6/6 mcs7/6 mcs8/6
mcs9/6 mcs10/6 mcs11/6
11ac_ss78: mcs0/7 mcs1/7 mcs2/7 mcs3/7 mcs4/7 mcs5/7 mcs6/7 mcs7/7 mcs8/7
mcs9/7 mcs10/7 mcs11/7 mcs0/8 mcs1/8 mcs2/8 mcs3/8 mcs4/8 mcs5/8 mcs6/8 mcs7/8 mcs8/8
mcs9/8 mcs10/8 mcs11/8
11ax_ss12: mcs0/1 mcs1/1 mcs2/1 mcs3/1 mcs4/1 mcs5/1 mcs6/1 mcs7/1 mcs0/2
mcs1/2 mcs2/2 mcs3/2 mcs4/2 mcs5/2 mcs6/2 mcs7/2 mcs8/2 mcs9/2
11ax_ss34: mcs0/3 mcs1/3 mcs2/3 mcs3/3 mcs4/3 mcs5/3 mcs6/3 mcs7/3 mcs8/3
mcs9/3 mcs10/3 mcs11/3 mcs0/4 mcs1/4 mcs2/4 mcs3/4 mcs4/4 mcs5/4 mcs6/4 mcs7/4
11ax_ss56: mcs0/5 mcs1/5 mcs2/5 mcs3/5 mcs4/5 mcs5/5 mcs6/5 mcs7/5 mcs8/5
mcs9/5 mcs10/5 mcs11/5 mcs0/6 mcs1/6 mcs2/6 mcs3/6 mcs4/6 mcs5/6 mcs6/6 mcs7/6 mcs8/6
mcs9/6 mcs10/6 mcs11/6
11ax_ss78: mcs0/7 mcs1/7 mcs2/7 mcs3/7 mcs4/7 mcs5/7 mcs6/7 mcs7/7 mcs8/7
mcs9/7 mcs10/7 mcs11/7 mcs0/8 mcs1/8 mcs2/8 mcs3/8 mcs4/8 mcs5/8 mcs6/8 mcs7/8 mcs8/8
mcs9/8 mcs10/8 mcs11/8
application detection engine: disabled
-------------------------------Total 2 VAP Configurations----------------------------
Previously configured rate control values are converted to the new data rate values when you upgrade to FOS 7.2.1. The
following example shows how an old value would be converted:
Old rate control value Converted rate control value in FOS 7.2.1
config wireless-controller vap config wireless-controller vap
edit "upgrade" edit "upgrade"
set ssid "upgrade" set ssid "upgrade"
set security wpa-personal set security wpa-personal
set passphrase ENC ****** set passphrase ENC ******
set rates-11ac-ss12 mcs5/1 mcs7/2 set rates-11ac-mcs-map "7,7,7,9,"
set rates-11ac-ss34 mcs7/3 mcs9/4 set rates-11ax-mcs-map "7,9,9,11,"
set rates-11ax-ss12 mcs7/1 mcs8/2 next
set rates-11ax-ss34 mcs9/3 mcs11/4 end
next
end
Conversion of old syntax settings to upgraded new syntax settings is based on the following points:
l In the old syntax, mcsX/n means MCS index value X for n spatial streams. For example, mcs5/1 means MCS
index value 5 for 1 spatial stream.
l Enabling MCS data rate with MCS index 9 will automatically enable data rate with MCS index 8.
l rates-11ac-mcs-map syntax:
7 support for VHT-MCS 0-7 for n spatial streams.
8 support for VHT-MCS 0-8 for n spatial streams.
9 support for VHT-MCS 0-9 for n spatial streams.
11 support for VHT-MCS 0-11 for n spatial streams.
For example, mcs5/1 is converted to 7 to represent VHT-MCS 0-7 for n spatial streams.
l rates-11ax-mcs-map syntax:
7 support for HE-MCS 0-7 for n spatial streams.
9 support for HE-MCS 0-9 for n spatial streams.
This enhancement adds visibility for configuring advanced options for wireless features in the FortiGate GUI. You can go
to Feature Visibility and enable Advanced Wireless Features to access the following:
l New navigation entries under WiFi & Switch Controller.
o Operation Profiles: FortiAP, QoS, and FortiAP Configuration.
o Connectivity Profiles: MPSK and Bonjour.
o Protection Profiles: WIDS and L3 Firewall (also known as L3 Access Control List configurations for FortiAPs).
l Additional advanced options for wireless features under the SSIDs and WiFi Settings entries.
o SSIDs > Edit Interface: Voice-Enterprise, Multiband operation, Fast BSS transition, Probe response
suppression, Sticky client removal, multicast enhancement, IGMP snooping, Radio sensitivity, Airtime weight,
QoS profile, and L3 firewall profile.
o WiFi Settings: Duplicate SSID, DARRP, Phishing SSID detection, and SNMP settings.
A new CLI command is added under system settings to enable the advanced WiFi features on GUI.
3. Click Apply.
The Navigation bar reloads with the new features visible.
When you enable Advanced Wireless Features, FortiAP Profiles is renamed to Operation Profiles and contains
additional tabs that enable you to manage QoS and FortiAP Configuration profiles.
When you create or edit a FortiAP profile, you can configure additional advanced settings.
QoS Profiles
You can create or edit Quality of Service (QoS) profiles by clicking the QoS Profiles tab.
You can create or edit FortiAP Configuration Profile for managing local FortiAP configuration by clicking the FortiAP
Configuration Profiles tab.
You can access Connectivity Profiles to manage your MPSK and Bonjour profiles.
MPSK Profiles
After you click Connectivity Profile, the MPSK Profiles tab loads by default. From there you can create or edit MPSK
profiles to manage multiple pre-shared keys.
Click Create new to create an MPSK profile.
From there you can create and add MPSK groups and determine how you want to add your MPSK keys.
Bonjour Profiles
Bonjour is Apple's zero configuration networking protocol. Bonjour profiles allow APs and FortiAPs to connect to
networks using Bonjour. You can create or edit Bonjour profiles by clicking the Bonjour Profiles tab.
From there you can create and add policies that determine which services you want to advertise across the network.
When you enable Advanced Wireless Features, WIDS Profiles is renamed to Protection Profiles and contains additional
tabs that enable you to manage L3 Firewall Profiles.
WIDS Profiles
After you click Protection Profiles, the WIDS Profiles tab loads by default. From there you can create or edit WIDS
profiles to configure the type of security threats you want to monitor.
L3 Firewall Profile
You can create or edit L3 Firewall Profiles to configure the WiFi bridge access control list by clicking the L3 Firewall
Profiles tab.
From there, you can create IPv4 or IPv6 rule lists to allow or deny traffic that matches the configured policy.
When you create or edit an SSID, you can configure additional advanced settings.
More options are exposed on WiFi Settings page, including Duplicate SSID, DARRP related settings, Phishing SSID
detection setting, and SNMP settings.
Add profile support for FortiAP G-series models supporting WiFi 6E Tri-band and
Dual 5 GHz modes - 7.2.1
WTP profiles are supported for FortiAP G series access points (FAP-231G, FAP-233G, FAP-431G, FAP-433G). The G
series models support Wi-Fi 6E IEEE 802.11ax Tri-band 2.4 GHz/5 GHz/6 GHz mode and dual 5 GHz mode.
1. From the FortiGate GUI, navigate to WiFi & Switch Controller > FortiAP Profiles and click Create New.
2. In Platform, you can select a FortiAP G series model that supports WiFi 6E.
Once you select a platform type, you can begin to configure the profile.
FortiAP G series models support three different radio configuration setups:
l Tri-band mode: Single 5G, with Dedicated scan disabled
This is the default setup when creating a new FortiAP G series profile.
In this setup, Radio 1 works on the 2.4GHz 802.11ax/n/g bands, Radio 2 works on the 5GHz 802.11ax/ac/n/a
bands, and Radio 3 works on the Wi-Fi 6E 6GHz 802.11ax bands.
config radio-3
set band 802.11ax-6G
set channel "1" "5" "9" "13" "17" "21" "25" "29" "33" "37" "41" "45" "49" "53"
"57" "61" "65" "69" "73" "77" "81" "85" "89" "93" "97" "101" "105" "109" "113" "117"
"121" "125" "129" "133" "137" "141" "145" "149" "153" "157" "161" "165" "169" "173"
"177" "181" "189" "193" "197" "201" "205" "209" "213" "217" "221" "225" "229" "233"
end
next
end
Note: The default value of platform mode is single-5G, and the default value of ddscan is disabled, so they are
not shown in CLI.
Note: For FortiAP G series models, 6GHz radio-3 as access point requires that VAPs must select one security
mode from pure OWE, WPA3-SAE (sae-h2e-only must be enabled), WPA3-Enterprise, and WPA3-only-
Enterprise.
l Platform mode: Single 5G, Dedicated scan enabled
When ddscan is enabled, radio-3 works only in monitor mode.
config wireless-controller wtp-profile
edit "FAP231G-setup2"
config platform
set type 231G
set ddscan enable
end
set handoff-sta-thresh 55
config radio-1
set band 802.11ax,n,g-only
set channel "1" "6" "11"
end
config radio-2
set band 802.11ax-5G
set channel "36" "40" "44" "48" "149" "153" "157" "161" "165"
end
config radio-3
set mode monitor
end
next
end
This release supports WiFi 6 Release 2 security enhancements by adding support for Hash-to-Element (H2E) only and
Simultaneous Authentication of Equals Public Key (SAE-PK) for FortiAP models that support WPA3-SAE security
modes.
When the security mode is set to WPA3-SAE or WPA3-SAE-Transition, the following options are available:
l Hash-to-Element (H2E) only: Use hash-to-element-only mechanism for PWE derivation.
l Simultaneous Authentication of Equals Public Key (SAE-PK): Enable or disable WPA3 SAE-PK.
o When SAE-PK authentication is enabled, you are required to set an SAE-PK private-key.
1. From the FortiGate GUI, navigate to WiFi & Switch Controller > SSIDs and click Create New > SSID.
2. In Security mode, select either WPA3-SAE or WPA3-SAE-Transition.
3. In SAE password, enter a password.
4. Enable Hash-to-Element (H2E) only.
1. From the FortiGate GUI, navigate to WiFi & Switch Controller > SSIDs and click Create New > SSID.
2. In Security mode, select either WPA3-SAE or WPA3-SAE-Transition.
3. In SAE password, enter a password.
4. Enable SAE-PK authentication.
When SAE-PK authentication option is enabled, the SAE-PK private key is mandatory.
5. In SAE-PK private key, enter a private key.
The private key can be generated by a third-party tool (for example, sae_pk_gen in wpa_supplicant v2.10) to meet
the encryption requirement. FortiOS will verify the private key and reject invalid input.
Note: When SAE-PK authentication option is enabled, the sae-private-key is mandatory. The sae-private-key can be
generated by a third-party tool (for example, sae_pk_gen in wpa_supplicant v2.10) to meet the encryption requirement.
FortiOS will verify the private key and reject invalid input.
This information is also available in the FortiWiFi and FortiAP 7.2 Configuration Guide:
l How to implement multi-processing for large-scale FortiAP management
This release adds the ability to configure multiple processors for the wireless daemon (cw_acd) by leveraging multi-core
CPU to scale large numbers of FortiAP per FortiGate Controller.
The new acd-process-count option allows users to specify the number of cw_acd processes to manage FortiAPs.
For FortiGate managed APs, it splits the total number of FortiAPs into smaller groups where each cw_acd process
manages a group. The cw_acd process won't be as overloaded, and if one cw_acd has an issue, it only affects that
group of FortiAPs instead of all the FortiAPs managed by the FortiGate.
The maximum value you can specify in acd-process-count varies according to the wireless-controller.wtp in
table size from different platforms.
8192 32
4096 16
512-1024 8
128-256 4
16-64 2
In this example, there are about 1300 FortiAPs managed by a FortiGate with 16 cw_acd processes to handle all the
FortiAPs.
1. Set the acd-process-count to 0 in wireless-controller global:
config wireless-controller global
set acd-process-count 16
end
This information is also available in the FortiWiFi and FortiAP 7.2 Configuration Guide:
l Custom RADIUS NAS-ID
This enhancement allows users to configure the RADIUS NAS-ID as a custom ID or the hostname. When deploying a
wireless network with WPA-Enterprise and RADIUS authentication, or using the RADIUS MAC authentication feature,
FortiGate can use the custom NAS-ID in its Access-Request.
New CLI:
To create an SSID with WPA2-Enterprise security mode using RADIUS authentication - CLI:
4. After the station connects to the SSID, check the radius packets to confirm the NAS-Identifier value matches the
hostname FortiWiFi-80F-2R:
(64) Received Access-Request Id 35 from 172.16.200.254:63111 to 172.16.200.55:1812
length 367
(64) User-Name = "tester"
(64) NAS-IP-Address = 0.0.0.0
(64) NAS-Identifier = "FortiWiFi-80F-2R"
next
end
3. After the station connects to the SSID, check the radius packets to confirm the NAS-Identifier value matches the
custom value you configured, "FWF-80F-LR":
(87) Received Access-Request Id 3 from 172.16.200.254:62884 to 172.16.200.55:1812 length
228
(87) User-Name = "F1-A4-23-75-9F-B1"
(87) User-Password = "F1-A4-23-75-9F-B1"
(87) Calling-Station-Id = "F1-A4-23-75-9F-B1"
(87) NAS-IP-Address = 0.0.0.0
(87) NAS-Identifier = "FWF-80F-LR"
This information is also available in the FortiWiFi and FortiAP 7.2 Configuration Guide:
l FortiWiFi unit as a wireless client
This release supports wireless client mode on FortiWiFi 80F series models. When wireless client mode is successfully
configured, a default static route to the "aplink" interface is automatically created. To allow outgoing traffic to use this
wireless client connection, you must configure a firewall policy from the wired internal/LAN interface as the source
interface to the "aplink" interface as the destination interface.
Before setting up the FortiWiFi unit as a wireless client using the steps described below, make
sure to remove any AP WiFi configurations such as SSIDs, DHCP servers, policies, and
software switch members using the CLI or GUI.
1. Go to WiFi and Switch Controller > Local WiFi Radio and change the Mode to Wireless Client.
Note: You must remove any AP WiFi configurations such as SSIDs, DHCP servers, policies, and software switch
members before you can change the mode to Wireless Client. Once you select Wireless Client, the FortiWiFi unit
will reboot.
2. Click Add Network and select an SSID to set up the WiFi connection.
5. Go to Policy & Object > Firewall Policy and click Create New to create a firewall policy.
6. Enter the following policy information:
For FortiWiFi 80F series models, you must select "aplink" as the destination interface in
the firewall policy. Older FortiWiFi models must select "wifi" as the destination interface.
7. Configure remaining fields as needed, when you are finished, click OK.
8. Connect a wired station to the internal ports of the FortiWiFi to verify that it can pass traffic to the Internet.
Note: You must remove any AP WiFi configurations such as SSIDs, DHCP servers, policies, and software switch
members before you can change the mode to Wireless Client. Once you select Wireless Client, the FortiWiFi unit
will reboot.
2. 2. Set up a wifi-network entry under interface "wifi".
config system interface
edit "wifi"
config wifi-networks
edit 1
set wifi-ssid "FOS_61F_psk"
set wifi-passphrase *
next
end
next
end
4. Once you verify the connection, confirm that the default routing to "aplink" is added as static entry.
config router static
edit 1
set gateway 192.168.80.2
set device "aplink"
next
end
FortiWiFi-80F-2R # get router info routing-table details
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
V - BGP VPNv4
* - candidate default
For FortiWiFi 80F series models, you must select "aplink" as the destination interface in
the firewall policy. Older FortiWiFi models must select "wifi" as the destination interface.
next
end
6. Connect a wired station to the internal ports of the FortiWiFi to verify that it can pass traffic to the Internet.
Support displaying details about wired clients connected to the FortiAP LAN port -
7.2.4
This information is also available in the FortiWiFi and FortiAP 7.2.4 Configuration Guide:
l LAN port options
This enhancement enables the FortiGate to display details about wired clients when they are connected to a FortiAP
LAN port and both the FortiGate and FortiAP have WAN-LAN operation and LAN Port Mode options configured. The
wired clients must be connected to FortiAP via the following:
l Connected to the LAN port on FortiAP models with LAN and WAN ports.
l Connected to the LAN2 port on FortiAP models with dual LAN1 and LAN2 ports.
By default, LAN1 and LAN2 are direct pass-through ports and must be re-configured for WAN-LAN operation. See
Configuring a port to WAN-LAN operation mode for more information.
Important information such as the client's mode of connection, Tx/Rx rate, authentication status, OS details are pushed
from the FortiAP to the FortiGate. The information is displayed in the FortiGate CLI using diagnose wireless-
controller wlac -c lan-sta and in the FortiAP CLI using cw_diag -c k-lan-host.
To see client application usage over bridge mode SSIDs, see Report wireless client app usage for clients connected to
bridge mode SSIDs on page 474.
To configure FortiAP models with dual LAN ports for WAN-LAN operation:
2. Create an SSID for the FortiAP profile. You can create either a tunnel or bridge SSID.
3. In the FortiAP profile you created, configure WAN-LAN mode and then select a port mode option.
Note: This example uses bridge-to-ssid as the port mode, but you can use other port modes such as nat-to-wan or
bridge-to-wan for collecting wired client details.
config wireless-controller wtp-profile
edit "231F-lann"
set wan-port-mode wan-lan
config lan
set port-mode bridge-to-ssid
set port-ssid "Example_SSID"
end
next
end
5. From the FortiAP CLI, execute the following commands to enable LAN-WAN mode.
FortiAP-231F # cfg -a WANLAN_MODE=WAN-LAN
FortiAP-231F # cfg -c
Once the FortiGate and FortiAP have WAN-LAN operation and LAN Port Mode options configured, you can collect data
about the connected wired clients.
1. Connect a wired client to the FortiAP and connect the FortiAP to the FortiGate.
2. On the FortiAP CLI, run command cw_diag -c k-lan-host (or) lsta to verify collected wired client
information.
FortiAP-231F # lsta
WTP Kernel LAN Hosts:
Idle timeout: 300
index= 0/ 1 pId= 0 mac=00:24:9b:79:df:48 vlanid=0 auth=No
host_info=VAN-301127-PC1 vci=MSFT 5.0 os_info=Windows
ip=95.1.1.2 ip_proto=arp ip_age=36
3. Confirm that FortiGate has received the wired client details from the AP by running the diagnostic command
diagnose wireless-controller wlac -c lan-sta.
FortiGate-81E-POE (root) # diagnose wireless-controller wlac -c lan-sta
-------------------------------LAN STA 1----------------------------
LAN STA mac : 00:24:9b:79:df:48 (0-1.1.1.2:5246)
pId : 0 BR-TO-TUN-SSID Example_SSID
vlan : 0
macauth : No
ip : 95.1.1.2 ARP 48 seconds
ip6 : fe80::ddaa:41b0:4633:30dd ARP 4945 seconds 666 pkts
host info : VAN-301127-PC1
vci info : MSFT 5.0
os info : Windows
uplink : 226.00bps 33637 pkts 7221244 bytes 9 seconds
downlink : 31.00bps 29085 pkts 15442358 bytes 9 seconds
-------------------------------Total 1 LAN STAs----------------------------
This information is also available in the FortiWiFi and FortiAP 7.2.5 Configuration Guide:
l Bluetooth Low Energy scan
This enhancement simplifies Bluetooth Low Energy (BLE) iBeacon provisioning for the BLE major and minor IDs with the
following changes:
l The BLE major ID can be set in WTP settings and WTP group settings as well as in the BLE profile settings.
o The BLE major ID set in the WTP settings overrides the ID set in the WTP group and the BLE profile.
o The BLE major ID set in the WTP group settings overrides the ID set in the BLE profile.
l The BLE minor ID can be set in WTP settings and in the BLE profile settings.
o The BLE minor ID set in the WTP settings overrides the ID set in the BLE profile.
To set BLE major and minor IDs from the WTP settings:
4. Verify that the BLE IDs have been changed from the FortiAP CLI.
FortiAP-431F # cw_diag -c ble-config
major ID : 10013
minor ID : 1008
eddystone namespace ID : 0102030405
eddystone instance ID : abcdef
eddystone URL : http://www.fortinet.com
txpower : 8
beacon interval : 100
ble scanning : enabled
5. You can also override the ble-major-id from the WTP group.
config wireless-controller wtp-group
edit "FP-GROUP"
set ble-major-id 45666
set wtps "FP431FTF00000001"
next
end
Switch controller
Automatic updating of the port list when switch split ports are changed
In previous releases, changing FortiSwitch split ports and then restarting the managed FortiSwitch unit caused the
FortiGate device to have to rediscover and re-authorize the FortiSwitch unit. Now, the FortiGate device automatically
updates the port list after split ports are changed and the FortiSwitch unit restarts. When split ports are added or
removed, the changes are logged.
If there are any configuration errors with the split ports, you can use one of the following commands to check the errors
and fix them:
l execute switch-controller get-sync-status all
l execute switch-controller get-sync-status switch-id <FortiSwitch_serial_number>
You can now use asterisks as a wildcard character when you pre-authorize FortiSwitch units. Using a FortiSwitch
template, you can name the managed switch and configure the ports. When the FortiSwitch unit is turned on and
discovered by the FortiGate device, the wildcard serial number is replaced by the actual serial number and the settings in
the FortiSwitch template are applied to the discovered FortiSwitch unit.
When you create the FortiSwitch template, use the following format for the wildcard serial number:
PREFIX****nnnnnn
PREFIX The first six digits of a valid FortiSwitch serial number, such as S248EP, S124EN,
S548DF, and S524DF.
**** Asterisks are the only wildcard characters allowed. You can have any number of
asterisks, as long as ****nnnnnn is no longer than 10 characters.
nnnnnn You can have any number of valid alphanumeric characters, as long as
****nnnnnn is no longer than 10 characters.
You can now add multiple managed FortiSwitch VLANs to a software switch using the GUI or CLI. In previous releases,
you could add only one managed FortiSwitch VLAN per FortiGate device to a software switch.
Traffic between two VLANs is controlled by the intra-switch-policy setting under the config system switch-
interface command. By default, intra-switch-policy is set to implicit, which allows traffic between software
switch members.
In the following example, you create two managed FortiSwitch VLANs and then add them to a software switch.
config system interface
edit "vlan1"
set vdom "root"
set device-identification enable
set role lan
set snmp-index 46
set interface "fortilink"
set vlanid 3501
next
edit "vlan2"
You can now configure a link-aggregation group (LAG) as a member of a software switch that is being used for FortiLink.
Previously, you could not add a LAG to a software switch that was being used for FortiLink.
In the following example, aggregate1 and aggregate2 are FortiGate aggregate interfaces. The third interface, switch3, is
a software switch with FortiLink enabled. The three interfaces are configured, and then aggregate1 and aggregate2 are
added to the software switch interface.
config system interface
edit "aggregate1"
set vdom "root"
set type aggregate
set member "port11"
set device-identification enable
set role lan
set snmp-index 25
next
edit "aggregate2"
set vdom "root"
set type aggregate
set member "port7"
set device-identification enable
set role lan
set snmp-index 34
next
edit "switch3"
set vdom "root"
set fortilink enable
set ip 10.255.1.1 255.255.255.0
set allowaccess ping fabric
You can enable the MAC Authentication Bypass (MAB) option for devices (such as network printers) that cannot
respond to the 802.1x authentication request. With MAB enabled on the port, the system will use the device MAC
address as the user name and password for authentication. If a link goes down, you can select whether the impacted
devices must reauthenticate. By default, reauthentication is disabled. You can use the FortiOS CLI to enable MAB
reauthentication globally or locally:
l On the global level, use the new set mab-reauth command to enable or disable MAB reauthentication.
l On the local level, you can override the 802.1x settings for a specific managed switch and then use the new set
mab-reauth command to enable or disable MAB reauthentication.
There are three enhancements in the GUI for managed FortiSwitch units:
l The port health is now reported on the Diagnostics and Tools pane.
Go to WiFi & Switch Controller > Managed FortiSwitches, right-click a FortiSwitch unit in Topology view or List view,
and select Diagnostics and Tools. When there are error frames, the port health is shown as Poor. When there are
no error frames, the port health is shown as Good.
l The new Legend button in the General pane displays the Health Thresholds pane, which lists the thresholds for the
good, fair, and poor ratings of the general health, port health, and MC-LAG health.
l You can now clear port counters by going to the WiFi & Switch Controller > FortiSwitch Ports page, right-clicking a
port, and selecting Clear port counters.
With this enhancement, dynamic discovery in FortiLink mode over a layer-3 network detects FortiSwitch split ports and
newer FortiSwitch models. Split ports on all supported FortiSwitch models can be managed and displayed correctly on a
FortiGate device.
In previous releases, dynamic discovery did not support FortiSwitch split ports or newer FortiSwitch models.
A flapping port is a port that changes status rapidly from up to down. A flapping port can create instability in protocols
such as Spanning Tree Protocol (STP). If a port is flapping, STP must continually recalculate the role for each port. Flap
guard also prevents unwanted access to the physical ports.
Flap guard detects how many times a port changes status during a specified number of seconds, and the system shuts
down the port if necessary. You can manually reset the port and restore it to the active state.
Flap guard is configured and enabled on each port through the switch controller. The default setting is disabled.
The flap rate counts how many times a port changes status during a specified number of seconds. The range is 1 to 30
with a default setting of 5.
The flap duration is the number of seconds during which the flap rate is counted. The range is 5 to 300 seconds with a
default setting of 30 seconds.
The flap timeout is the number of minutes before the flap guard is reset. The range is 0 to 120 minutes. The default
setting of 0 means that there is no timeout.
l If a triggered port times out while the switch is in a down state, the port is initially in a
triggered state until the switch has fully booted up and calculated that the timeout has
occurred.
l The following models do not store time across reboot; therefore, any triggered port is
initially in a triggered state until the switch has fully booted up—at which point the trigger
is cleared:
l FS-1xxE
l FS-2xxD/E
l FS-4xxD
l FS-4xxE
For example:
config switch-controller managed-switch
edit S424ENTF19000007
config ports
edit port10
set flapguard enable
set flap-rate 15
set flap-duration 100
set flap-timeout 30
next
end
end
Resetting a port
After flap guard detects that a port is changing status rapidly and the system shuts down the port, you can reset the port
and restore it to service.
To reset a port:
For example:
execute switch-controller flapguard reset S424ENTF19000007 port10
For example:
diagnose switch-controller switch-info flapguard status S424ENTF19000007
Administrators can now use the FortiSwitch profile to control whether users can log in with the managed FortiSwitchOS
console port. By default, users can log in with the managed FortiSwitchOS console port.
To disable logging in to the managed FortiSwitch consort port in the default FortiSwitch profile:
For example:
You can now configure multiple flow-export collectors using the config collectors command. For each collector,
you can specify the collector IP address, the collector port number, and the collector layer-4 transport protocol for
exporting packets.
Using multiple flow-export collectors requires FortiSwitchOS 7.0.0 or later. If you are using an
earlier version of FortiSwitchOS, only the first flow-export collector is supported.
You can also specify how often a template packet is sent using the new set template-export-period command.
By default, a template packet is sent every 5 minutes. The range of values is 1-60 minutes.
For example:
config switch-controller flow-tracking
config collectors
edit "Analyzer_1"
set ip 172.16.201.55
set port 4739
set transport sctp
next
edit "Collector_HQ"
set ip 172.16.116.82
set port 2055
next
end
set template-export-period 10
end
The WiFi & Switch Controller > FortiSwitch Ports page and Diagnostics and Tools pane have been improved, and a new
Port Statistics pane is available.
In Trunk view, the FortiSwitch Ports page has been improved in the following ways:
l The LLDP Profile, Loop Guard , and Security Policy columns were removed.
l When you right-click a port, the menu now contains a Mode submenu.
l The Enabled Features column lists LACP when it has been enabled.
In Port view, the FortiSwitch Ports page has been improved in the following ways:
l New VLAN and Transceiver Power (Transmitted/Received) columns are now available.
l When you double-click a port, a new Port Statistics pane is displayed, which shows the transmitted and received
traffic, frame errors by type, and transmitted and received frames. You can also select a port and then click the View
Statistics button in the upper right corner. The Compare with dropdown list allows you to select another port to
compare with the currently selected port. The statistics are refreshed every 15 seconds.
The Diagnostics and Tools pane (from WiFi & Switch Controller > Managed FortiSwitches) has been improved in the
following ways:
l The fan status and power supply unit (PSU) status are now reported in the General pane.
l A new Clients tab lists the clients connected to each port of the selected FortiSwitch unit.
You can use Virtual Extensible LAN (VXLAN) interfaces to create a layer-2 overlay network when managing a
FortiSwitch unit over a layer-3 network. After a VXLAN tunnel is set up between a FortiGate device and a FortiSwitch
unit, the FortiGate device can use the VXLAN interface to manage the FortiSwitch unit. Only the management traffic
uses the VXLAN tunnel; the FortiSwitch data traffic does not go through the VXLAN tunnel to the FortiGate device.
In the following configuration example, the FG-500E device is connected with a VXLAN tunnel to the FS-524D unit. After
FortiLink is enabled on the VXLAN interface, the FortiGate device can managed the FortiSwitch unit.
next
end
4. Set up the switch port that physically connects to the router and enable FortiLink mode over layer-3 network.
config switch interface
edit port19
set fortilink-l3-mode enable
end
5. Configure the switch trunk to make it static and disable the automatic VLAN provisioning.
config switch trunk
edit "__FoRtILnk0L3__"
set auto-isl 1
set static-isl enable
set static-isl-auto-vlan disable
set members "port19"
next
end
6. Configure the FortiLink interface to set the native VLAN to match the VLAN used for the VXLAN defined in step 1.
config switch interface
edit "__FoRtILnk0L3__"
set native-vlan 1000
set allowed-vlans 1,1000,4088-4094
set dhcp-snooping trusted
....
next
end
7. Enable DHCP discovery.
config switch-controller global
set ac-discovery-type dhcp
end
The new WiFi & Switch Controller > FortiSwitch Clients page lists all devices connected to the FortiSwitch unit for a
particular VDOM.
The Device Info pane displays the NAC policies and dynamic port policies that the device matches.
From the Actions dropdown menu, you can do the following:
l Create a firewall device address.
l Quarantine the host.
Hover over the device name in the FortiSwitch Clients page to get more details.
You can specify whether your managed FortiSwitch configuration is automatically backed up each time a user logs out or
before a system upgrade is started. By default, both options are disabled.
To specify that the managed FortiSwitch unit creates a revision configuration file each time a user logs
out:
To specify that the managed FortiSwitch unit creates a revision configuration file before a system
upgrade is started:
You can now use the FortiOS CLI to specify how often the managed FortiSwitch unit will send IGMP version-2 queries
when the IGMP-snooping querier is configured:
config switch-controller igmp-snooping
set query-interval <10-1200 seconds>
end
By default, queries are sent every 125 seconds. The value for aging-time must be greater than the value for query-
interval.
When you sample IP packets on managed FortiSwitch units with flow tracking, you can use the FortiView Internal Hubs
monitor in FortiOS to report the IP addresses and the number of bytes collected from devices behind a FortiSwitch unit. If
you drill down on one of the devices, you can see a chart displaying the devices and how they are connected.
l The IP address for the flow collector (collector-ip) must be the same IP address as
the FortiLink interface.
l The FortiGate model must have a hard drive, and you must enable historical FortiView
and disk logging in the Log & Report > Log Settings page.
l FortiAnalyzer is not supported.
For example, to configure port11 as the FortiLink interface, enable the collection of data in NetFlow format from the
switch controller, enable flow tracking in the managed switch, and send NetFlow data to the FortiGate device:
config system interface
edit "port11"
set fortilink enable
set ip 10.255.1.1 255.255.255.0
For example:
FGT_A (vdom1) # diagnose switch-controller flow-collector status
status : enabled
interface : port11
netflow packets : 1300
unknown packets : 0
flows : 42
flows filtered : 201
flowsets skipped : 17129
8. You can select the Chart or Table tab to change how the details are displayed.
After you enable DHCP snooping for a VLAN, you can configure static entries by binding an IPv4 address with a MAC
address for a specific switch interface:
l Specify a VLAN that has DHCP snooping enabled. The VLAN must be a native VLAN or allowed VLAN for the port.
l Specify a port that is not defined as trusted.
l Specify the MAC address in the form of xx:xx:xx:xx:xx:xx.
l Bind a single MAC address to a single IPv4 address. Multiple IP addresses cannot be bound to the same MAC
address. The MAC address cannot be used in more than one static entry. Duplicate static entries are not supported
on a VLAN.
DHCP-snooping static entries must be configured to be able to use dynamic ARP inspection
(DAI) for IP/MAC entries not discovered by DHCP snooping.
Specifying the VLAN, IP address, MAC address, and interface name is required.
You can specify a maximum of 64 DHCP static entries for the entire FortiSwitch unit.
l You cannot use a DHCP trusted switch interface or an 802.1X interface for the static
entryʼs switch interface.
l After you configure a DHCP-snooping static entry for a VLAN, you cannot remove that
VLAN from the switch interface.
l After you configure a DHCP-snooping static entry for a switch interface, the switch
interface cannot be included as a member of a trunk until the DHCP-snooping static entry
is deleted.
l If you configure a DHCP-snooping static entry for a trunk, the trunk cannot be deleted until
the DHCP-snooping static entry is deleted.
For example:
config switch-controller managed-switch
edit S524DN4K16000116
config dhcp-snooping-static-client
edit DHCPclient
set vlan 100
set ip 192.168.101.1
set mac 00:21:cc:d2:76:72
set port port19
next
next
end
Starting in FortiOS 7.2.4 with FortiSwitchOS 7.2.3, you can use the FortiOS CLI to report device statistics when NAC is
enabled. The device statistics report the MAC addresses of known devices, the number of packets and bytes received,
the number of seconds since the last update, and the age of the MAC counter in seconds.
1. Enable NAC.
config user nac-policy
edit <NAC_policy_name>
set status enable
next
end
2. Enable packet counting in the MAC policy. By default, packet counting is disabled.
config switch-controller mac-policy
edit <MAC_policy_name>
set count enable
next
end
3. Specify how long inactive MAC addresses are kept before being removed from the client database. By default, MAC
addresses are kept for 24 hours. The range of values is 0-168 hours. If you set this option to 0, the value for the
mac-aging-interval setting is used instead.
config switch-controller global
set mac-retention-period <number_of_hours>
end
4. Enter the following command to display the device statistics:
diagnose switch-controller telemetry show mac-stats
For example:
diagnose switch-controller telemetry show mac-stats
Starting in FortiOS 7.2.4 with FortiSwitchOS 7.2.3, you can configure the following PoE port settings on managed
switches:
l Port mode—You can set the port mode to IEEE802.3 AF or IEEE802.3 AT.
l Port priority—You can set the port priority to critical, high, medium, or low. If there is not enough power, power is
allotted first to critical-priority ports, then to high-priority ports, then to medium-priority ports, and then to low-priority
ports. Medium priority is available only on the following models: FS-224D-FPOE, FS-224E-POE, FS-248E-POE,
FS-248E-FPOE, FS-424E-POE, FS-424E-FPOE, FS-M426E-FPOE, FS-448E-POE, FS-448E-FPOE, FS-524D-
FPOE, and FS-548D-FPOE.
l Port power—You can set the port to use normal, power, perpetual power, or perpetual-fast power. Refer to the
FortiSwitchOS feature matrix to see which FortiSwitch models support this feature.
perpetual PoE power is provided during a soft reboot (switch is restarted while powered up).
perpetual-fast PoE power is provided during a hard reboot (the switchʼs power is physically
turned off and then on again).
NAC now supports more connected devices—up to 48 times the maximum number of managed FortiSwitch units
supported on the FortiGate device. You can use the diagnose switch-controller mac-device nac known
command to check the number of known devices. When 95 percent of the maximum number of devices is reached, a
warning icon is displayed in the Matched NAC Devices widget in the FortiOS GUI. When the maximum number is
reached, a switch-controller event is logged.
The range and default values for the set nac-periodic-interval command (under config switch-
controller system) have changed. The default value is now 60, and the range of values is now 5-180.
The range and default values for the set dynamic-periodic-interval command (under config switch-
controller system) have changed. The default value is now 60, and the range of values is now 5-180.
NAC
You can configure NAC LAN segments in three places in the GUI:
l When you select a NAC VLAN in the WiFi & Switch Controller > NAC Policies page and click Edit, the Edit NAC
Settings page allows you to enable or disable NAC VLAN segmentation and select the primary interface,
onboarding VLAN, and segment VLANs.
l The Network > Interfaces page shows each LAN segment VLAN as a child of the parent NAC segment.
l The VLAN segment buttons allow you to enable or disable VLAN segments in the New Interface and Edit Interface
pages.
Configuration example
In the configuration example, a FortiLink aggregate interface flk_aggr is created on the FortiGate device and connected
to the two downstream FortiSwitch units. A nac_segment VLAN is created on the FortiLink aggregate interface flk_aggr.
The DHCP server is created on this interface to assign addresses from 10.255.13.2-10.255.13.254. Under nac_
segment, there are three LAN segments, onboarding, video, and voice.
When a device connects to a FortiSwitch port that is configured with a NAC policy, the device is assigned first to the
onboarding VLAN, and nac_segment issues an IP address to the device. After the NAC policy is processed and a match
occurs, the device is moved to either the video or the voice VLAN.
The IP address is not changed in this process. All sessions continue to flow according to the firewall policies for that
VLAN.
FortiExtender
The VDOM must get an interface (lan2) with Security Fabric Connection and a DHCP
server. Then the FortiExtender can be discovered when connecting to lan2 port11.
The FortiExtender can be authorized to bond a FortiExtender type interface to the LTE
modem.
The FortiGate gets the IP and gateway for the FortiExtender type interface in the VDOM.
3. Authorize the discovered FortiExtender and bond the FortiExtender type interface.
config extender-controller extender
edit "FX004TQ21000005"
set id "FXA11FTQ21000005"
set authorized enable
set device-id 1
set extension-type wan-extension
set profile "FXA11F-wanext-default"
config wan-extension
set modem1-extension "fext-vdom1"
end
next
end
* - candidate default
The Managed FortiExtenders tab on the Network > FortiExtenders page has been enhanced with the following additional
monitoring features:
l Profile tab on the Network > FortiExtenders page has two new charts: Status and Mode.
l Updated Status column with Online, Offline, Waiting For Authorization states.
l A new default Details column filled with the data used by the modem/SIM card when FortiExtender is in WAN-
extension mode, or filled with the connected IPsec tunnel used with the FortiGate when FortiExtender is in LAN-
extension mode.
l When FortiExtender is in WAN-extension mode, you can view modem information by left-clicking or hovering the
mouse over the FortiExtender name to show a tooltip, and then clicking "Diagnostics and Tools".
l The "Serial #" column which used to be a default column is now optional.
By default, the page shows the name of each FortiExtender, but Serial number is not in default display.
You can click in the default column to view more options and add more columns, such as "Serial #".
l The "Modem 1 Interface #" column shows the FortiGate virtual interface which is built on
the FortiExtender. This is the FortiGate WAN interface which extends to the FortiExtender
LTE-modem.
l The "Details" column shows the data used on Modem1 / SIM1 in FXA21FTQ22000014.
You can left-click the name of an FortiExtender or hover the mouse over the name to get the
tooltip, as shown in the following image.
2. Click "Diagnostics and Tools" to open the Diagnostics and Tools page.
The "Details" column shows the IPSec tunnel between FortiGate and FortiExtender.
l You can set the IPsec tunnel connection between FortiExtender and FortiGate on this
page.
l After multiple connections from FortiExtender (as uplink) are established, you can select
load balance mode on this page.
l Each data plan is associated with a carrier name. After the SIM card is active, the modem
will detect the carrier and use the corresponding plan.
l Each data plan has a data limit (capacity) that can be used by the SIM card. The data limit
is reset after the billing date.
FortiExtender is now able to automatically perform firmware provisioning using CLI commands. This allows for federated
upgrade of multiple FortiExtender units upon discovery and authorization by the FortiGate. Each FortiExtender device
will be upgraded to the latest firmware from FortiGuard, based on the matching FortiExtender firmware version that
matches each FortiOS firmware version.
1. FortiGuard has a matrix which contains the following table for each FortiExtender. The matrix code is FEXV.
FGTVersion=7.2.1|FGTBuildNum=01247|FEXPlatform=FX201E|FEXVersion=7.2.0|FEXBuildNum=00113
|ImageIdentifier=07002000FIMG1000102000
2. Test condition: The FortiGate has v7.2.1 b1247 and the FortiExtender has v7.0.3 b056.
config system global
set fortiextender-provision-on-authorization enable
end
3. Once the FortiGate has authorized the FortiExtender, automatic update is enabled for one time.
config extension-controller extender
edit "FX0015919000272"
set id "FX201E5919000272"
set authorized enable <<-------------------- Upon user auth,
set device-id 1
set extension-type wan-extension
set profile "FX201E-wanext-default"
set override-allowaccess enable
set allowaccess ping telnet
set override-login-password-change enable
config wan-extension
set modem1-extension "fext-201"
end
set firmware-provision-latest once <<------- Config is automatically set to
"once"
next
end
4. Once the FortiGate starts to manage the FortiExtender and detects that the FortiExtender's build number is lower
than that in the matrix (v7.2.0 b0113), the FortiGate will push the image (b0113) to the FortiExtender.
FortiExtenders discovered by the FortiGate configured as a controller used to show up on the FortiGate GUI as pending
authorization, causing confusion in certain situation. This enhancement enables you to disable a discovered
FortiExtender device on a FortiGate configured as a FortiExtender controller from the GUI or the CLI.
GUI
2. Select the FortiExtender and click "Edit". Note: The original status is "Deauthorized"
The following image shows the status of the FortiExtender after it is being rejected.
CLI
You can change it to "disable" state. It will be shown as "Reject" in the GUI.
config extension-controller extender
edit "FX0135921000036"
set id "FX511F5921000036"
set authorized disable
This section includes information about logging and reporting related new features:
l Logging on page 572
Logging
Indicator of compromise (IOC) detection for local out traffic helps detect any FortiGate locally-generated traffic that is
destined for a known compromised location. The FortiGate will generate an event log to warn administrators of an IOC
detection. This feature currently only supports IPv4 traffic.
These settings are both enabled by default. IOC detection is a VDOM-specific feature, so
logging must be enabled on each VDOM.
In the GUI, go to Log & Report > System Events, click the General System Events card, and click the Details tab.
HTTP transaction related logs are updated to improve log analysis coverage.
l An httpmethod field is added.
l The URL rating method field is renamed from method to ratemethod.
l The agent field includes the entire User-Agent header.
l The referer field is removed from the rawdata field and added to the referralurl field.
Log samples
WAF log
1: date=2022-02-03 time=17:44:29 eventtime=1643939069074906029 tz="-0800" logid="1203030257"
type="utm" subtype="waf" eventtype="waf-http-constraint" level="warning" vd="vdom1"
policyid=1 policytype="policy" sessionid=157514 profile="waf-profile" srcip=10.1.100.18
srcport=36206 srccountry="Reserved" srcuuid="a27c19fc-8499-51ec-b63d-7ff51b02a295"
dstip=89.238.73.97 dstport=443 dstcountry="Germany" dstuuid="a27c19fc-8499-51ec-b63d-
7ff51b02a295" srcintf="port2" srcintfrole="undefined" dstintf="port1"
dstintfrole="undefined" proto=6 httpmethod="GET" service="HTTPS"
url="https://secure.eicar.org/eicar.com" direction="https://example.com/referer.html"
severity="medium" action="blocked" direction="request" agent="curl/7.56.0"
constraint="header-number"
IPS log
1: date=2022-02-03 time=23:02:37 eventtime=1643958157685566389 tz="-0800" logid="0419016384"
type="utm" subtype="ips" eventtype="signature" level="alert" vd="vdom1" severity="info"
srcip=10.1.100.18 srccountry="Reserved" dstip=89.238.73.97 dstcountry="Germany"
srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined"
sessionid=201497 action="dropped" proto=6 service="HTTPS" policyid=1 poluuid="917edc76-84b1-
51ec-bdb5-b8cb1b308a99" policytype="policy" attack="Eicar.Virus.Test.File" srcport=37042
dstport=443 hostname="secure.eicar.org" url="/eicar.com" agent="curl/7.56.0"
httpmethod="GET" referralurl="https://example.com/referer.html" direction="incoming"
attackid=29844 profile="eicar-test" ref="http://www.fortinet.com/ids/VID29844"
incidentserialno=70256054 msg="file_transfer: Eicar.Virus.Test.File" rawdataid="1/1"
forwardedfor="192.168.0.99" rawdata="Response-Content-Type=application/x-msdownload|X-
Forwarded-For=192.168.0.99"
The Log & Report > Events page is now renamed System Events. The System Events page includes:
l A Summary tab that displays the top five most frequent events in each type of event log and a line chart to show
aggregated events by each severity level. Clicking on a peak in the line chart will display the specific event count for
the selected severity level.
l A Details tab that displays individual, detailed log views for event type.
Clicking on an event in the Summary tab will automatically bring users to the Details tab with the appropriate filters
applied.
Disk logging and historical FortiView must be enabled for the Summary tab to display valid
data.
1. Go to Log & Report > System Events. The Summary tab opens.
2. On the right-side of the screen, select the time range from the dropdown list.
The line chart will display all of the system events, and the non-empty event cards will list up to five Top Event
entries within the time range set.
Data is retrieved from FortiView with the 5 minutes range updated first. When selecting
either the 1 hour or 24 hours time range, there may be a delay to update Top Event entries.
Up to 100 Top Event entries can be listed in the CLI using the diagnose fortiview result event-log
command.
data(1646760000-1646846401):
0). subtype-ha | eventname-HA device interface failed | level-warning | count-1 |
1). subtype-system | eventname-DHCP statistics | level-information | count-40 |
2). subtype-system | eventname-Super admin left VDOM | level-information | count-13 |
3). subtype-system | eventname-Admin performed an action from GUI | level-warning |
count-5 |
4). subtype-system | eventname-Super admin entered VDOM | level-information | count-4 |
5). subtype-system | eventname-Global setting changed | level-notice | count-3 |
6). subtype-system | eventname-Attribute configured | level-information | count-2 |
7). subtype-system | eventname-Clear active sessions | level-warning | count-2 |
8). subtype-system | eventname-Disk log rolled | level-notice | count-2 |
9). subtype-system | eventname-Log rotation requested by FortiCron | level-notice |
count-1 |
10). subtype-system | eventname-Report generated successfully | level-notice | count-1 |
11). subtype-system | eventname-Test | level-warning | count-1 |
12). subtype-system | eventname-VDOM added | level-notice | count-1 |
13). subtype-user | eventname-Authentication failed | level-notice | count-1 |
14). subtype-user | eventname-Authentication lockout | level-warning | count-1 |
15). subtype-user | eventname-FortiGuard override failed | level-warning | count-1 |
The data is collected from FortiView for the last 24 hours by default. To specify a specific time range, customize the time
filter using the diagnose fortiview time command.
Where <arg1> is the start time in YYYY-MM-DD HH:MM:SS and <arg2> is the end time in YYYY-MM-DD HH:MM:SS.
The Log & Report UTM log subtypes have been combined into the Security Events log page. The Security Events log
page includes:
l A Summary tab that displays the five most frequent events for all of the enabled UTM security events.
l A Details tab that displays individual, detailed logs for each UTM type.
Clicking on an event in the Summary tab will bring users to the Details tab with the appropriate filters automatically
applied.
Disk logging and historical FortiView must be enabled for the Summary tab to display valid
data.
2. On the right-side of the screen, select the time range from the dropdown list.
The non-empty security event cards will list up to five top entries within the time range set.
Data is retrieved from FortiView with the 5 minutes range updated first. When selecting
either the 1 hour or 24 hours time range, there may be a delay to update top security event
entries.
Up to 100 top security event entries can be listed in the CLI using the diagnose fortiview result security-
log command.
data(1646862300-1646948701):
0). logcat-2 | logcatname-virus | logid-0211008192 | eventname-EICAR_TEST_FILE |
eventname_field-virus | action-blocked | count-1 |
1). logcat-2 | logcatname-virus | logid-0211008192 | eventname-virus_test3 | eventname_
field-virus | action-passthrough | count-1 |
2). logcat-2 | logcatname-virus | logid-0212008448 | eventname-filename | eventname_
field-virus | action-passthrough | count-1 |
3). logcat-3 | logcatname-webfilter | logid-0318012800 | eventname- | eventname_field-
catdesc | action-blocked | count-2 |
4). logcat-3 | logcatname-webfilter | logid-0316013056 | eventname-Information
Technology | eventname_field-catdesc | action-blocked | count-1 |
5). logcat-3 | logcatname-webfilter | logid-0316013056 | eventname-Malicious Websites |
eventname_field-catdesc | action-blocked | count-1 |
6). logcat-4 | logcatname-ips | logid-0419016384 | eventname-Eicar.Virus.Test.File |
eventname_field-attack | action-dropped | count-3 |
7). logcat-4 | logcatname-ips | logid-0422016400 | eventname-test_botnet | eventname_
field-attack | action-detected | count-1 |
8). logcat-7 | logcatname-anomaly | logid-0720018432 | eventname-tcp_syn_flood |
eventname_field-attack | action-clear_session | count-1 |
9). logcat-10 | logcatname-app-ctrl | logid-1059028704 | eventname-Storage.Backup |
eventname_field-appcat | action-pass | count-9 |
10). logcat-10 | logcatname-app-ctrl | logid-1059028704 | eventname-Video/Audio |
eventname_field-appcat | action-pass | count-3 |
11). logcat-10 | logcatname-app-ctrl | logid-1059028672 | eventname-im | eventname_
field-appcat | action-pass | count-1 |
12). logcat-10 | logcatname-app-ctrl | logid-1059028704 | eventname-P2P | eventname_
field-appcat | action-pass | count-1 |
13). logcat-15 | logcatname-dns | logid-1501054400 | eventname-Domain blocked because it
is in the domain-filter list | eventname_field-logid | action-block | count-1 |
14). logcat-17 | logcatname-ssl | logid-1700062300 | eventname-SSL connection is blocked
due to the server certificate is blocklisted | eventname_field-logid | action-blocked |
count-1 |
15). logcat-16 | logcatname-ssh | logid-1600061002 | eventname-SSH shell command is
detected | eventname_field-logid | action-passthrough | count-1 |
16). logcat-16 | logcatname-ssh | logid-1601061010 | eventname-SSH channel is blocked |
eventname_field-logid | action-blocked | count-1 |
17). logcat-12 | logcatname-waf | logid-1200030248 | eventname-Web application firewall
blocked application by signature | eventname_field-logid | action-blocked | count-1 |
18). logcat-8 | logcatname-voip | logid-0814044032 | eventname-Logid_44032 | eventname_
field-logid | action-permit | count-1 |
19). logcat-5 | logcatname-emailfilter | logid-0513020480 | eventname-SPAM notification
| eventname_field-logid | action-blocked | count-1 |
data(1646862600-1646949001):
0). logcat-2 | logcatname-virus | logid-0211008192 | eventname-EICAR_TEST_FILE |
eventname_field-virus | action-blocked | count-1 |
1). logcat-3 | logcatname-webfilter | logid-0318012800 | eventname- | eventname_field-
catdesc | action-blocked | count-2 |
Reliable logging to FortiAnalyzer is improved to prevent lost logs when the connection between FortiOS and
FortiAnalyzer is disrupted. When reliable mode is enabled:
1. Logs are cached in a FortiOS memory queue.
2. FortiOS sends logs to FortiAnalyzer, and FortiAnalyzer uses seq_no to track received logs.
3. After FortiOS sends logs to FortiAnalyzer, logs are moved to a confirm queue in FortiOS.
4. FortiOS periodically queries FortiAnalyzer for the latest seq_no of the last log received, and clears logs from the
confirm queue up to the seq_no.
5. If the connection between FortiOS and FortiAnalyzer is disrupted, FortiOS resends the logs in the confirm queue to
FortiAnalyzer when the connection is reestablished.
fortilog:
faz: global , enabled
server=172.16.200.251, realtime=1, ssl=1, state=connected
server_log_status=Log is allowed.,
src=, mgmt_name=FGh_Log_root_172.16.200.251, reliable=1, sni_prefix_type=none,
required_entitlement=none, region=ca-west-1,,
logsync_enabled:1, logsync_conn_id:65535, seq_no:790
...
2. When a network disruption disconnects FortiOS from FortiAnalyzer and FortiOS continues to generate logs, the
logs are cached in the memory queue.
l View the number of logs in the cache and queue:
# diagnose test application fgtlogd 41
VDOM:root
Memory queue for: global-faz
queue:
num:9 size:6976(0MB) total size:26068(0MB) max:189516595(180MB) logs:28
Confirm queue for: global-faz
queue:
num:29 size:19092(0MB) total size:27051(0MB) max:189516595(180MB) logs:7
# diagnose test application fgtlogd 30
VDOM:root
Memory queue for: global-faz
queue:
num:9 size:6976(0MB) total size:26068(0MB) max:189516595(180MB)
type:3, cat=1, log_count=1, seq_no=0, data len=359 size:435
type:3, cat=1, log_count=1, seq_no=0, data len=307 size:383
......
type:3, cat=0, log_count=4, seq_no=0, data len=1347 size:1423
type:3, cat=4, log_count=1, seq_no=0, data len=653 size:729
'total log count':28, 'total data len':6292
There are nine OFTP items cached to the memory queue, and 29 OFTP items to send from FortiOS to
FortiAnalyzer that are waiting for confirmation from FortiAnalyzer.
l Go to Log & Report > Log Settings to view the queue in the GUI:
3. Re-establish the connection between FortiOS and FortiAnalyzer and confirm that the queue has cleared by
checking the seq_no, which indicates the latest confirmation log from FortiAnalyzer:
# diagnose test application fgtlogd 30
VDOM:root
Memory queue for: global-faz
queue:
num:0 size:0(0MB) total size:0(0MB) max:189516595(180MB)
'total log count':0, 'total data len':0
The queue has been cleared, meaning that FortiOS received confirmation from FortiAnalyzer and cleared the
confirm queue.
# diagnose test application fgtlogd 1
vdom-admin=0
mgmt=root
fortilog:
faz: global , enabled
server=172.16.200.251, realtime=1, ssl=1, state=connected
server_log_status=Log is allowed.,
src=, mgmt_name=FGh_Log_root_172.16.200.251, reliable=1, sni_prefix_type=none,
required_entitlement=none, region=ca-west-1,
logsync_enabled:1, logsync_conn_id:65535, seq_no:67
status: ver=6, used_disk=0, total_disk=0, global=0, vfid=0 conn_verified=Y
SNs: last sn update:38 seconds ago.
Sn list:
(FAZ-VMTM21000000,age=38s)
queue: qlen=0.
OFTP items with a seq_no lower than 67 have been sent to FortiAnalyzer and were confirmed.
FortiAnalyzer reports can be viewed in the GUI on the Log & Report > FortiAnalyzer Reports page. Administrators can
generate, delete, and edit report schedules, and view and download generated reports.
When the Security Fabric is enabled, only the root FortiGate can run, edit, and delete FortiAnalyzer reports. Downstream
FortiGates can only view the generated reports.
1. Go to Log & Report > FortiAnalyzer Reports and select the Scheduled Reports tab.
2. Select a report and click Edit Schedule. The Edit Schedule pane opens. In this example, the schedule for the
Bandwidth and Applications report is changed to run from every week to every two weeks.
3. In the Schedule section, set the values for Generate report every to 2 week(s).
4. Click OK.
The schedule is also updated automatically in FortiAnalyzer for the same report (go to Reports > Report Definitions
> All Reports and edit the report to view the settings).
1. Go to Log & Report > FortiAnalyzer Reports and select the Generated Reports tab.
A pie chart displays the total count of FortiAnalyzer reports, categorized by report title. Generated reports are listed
below and arranged by title, which includes reports from all VDOMs.
In this example, the Self-Harm and Risk Indicators reports are filtered, and the report for vdom1 is downloaded.
2. In the pie chart, click the green segment to filter the Self-Harm and Risk Indicators reports.
3. In the filtered results, select the report for vdom1. Right-click and select Download.
4. Select a file format. The report is saved to the default download location.
Summary tabs on System Events and Security Events log pages - 7.2.1
The Summary tabs on the Log & Report > System Events and Log & Report > Security Events pages are enabled on
devices that support disk logging and have historical FortiView enabled. They include the following enhancements:
l Event list footers show a count of the events that relate to the type.
l A count of the total events is shown at the top of the Summary. Hovering over the count shows the number of events
with a time stamp.
l On System Events > Summary, hovering over the Total Events By Level shows the shows the number of events
with a time stamp.
l Clicking on any event type title opens the Logs page for that event type filtered by the selected time span.
For example, on the System Events > Summary page, clicking WiFi Events opens the following page:
l Clicking on any event entry opens the Logs page for that event type filtered by the selected time span and log
description.
For example, on the System Events > Summary page in the General System Events box, clicking Admin logout
successful opens the following page:
Logs can be filtered by date and time in the Log & Report > System Events and Security Events pages. The log viewer
can be filtered with a custom range or with specific time frames.
The time frame available is dependent on the source:
l Logs sourced from FortiAnalyzer, FortiGate Cloud, and FortiAnalyzer Cloud have the same time frame options as
FortiView (5 minutes, 1 hour, 24 hours, or 7 days).
l Logs sourced from the Disk have the time frame options of 5 minutes, 1 hour, 24 hours, 7 days, or None.
4. Select Range.
5. Click the From calendar icon and select a date.
6. Enter a time in the From field using the form HH:MM:SS.
7. Click the To calendar icon and select a date.
8. Enter a time in the To time using the form HH:MM:SS.
9. Click Apply. The logs that match the set time frame are displayed and the time frame is set to custom.
If a custom time frame filter is set, a new time frame cannot be selected until the first filter is
removed. Click the X in the search bar or select Remove in the Filter dialog to remove the filter.
The Log & Report > System Events and Security Events pages have been updated:
l The Details tab has been renamed the Logs tab.
l Filters used in the log viewer have been updated to adjust the log filters and the Log Details pane.
l Time frame settings for each Log & Report pages are independent of each other.
7. Select the filters you want and click Apply. The logs that match the set filters are displayed and the filter is listed in
the search bar.
8. Select the log you want to see more information on.
3. Select a new time frame. The Top Events will adjust for the new time frame.
4. Go to Log & Report > System Events. The system events will display the time frame set for the System Events page
The time frame will be different than that of the Security Events page unless it is changed
in the System Events page to match.
Consolidate log reports and settings into dedicated Reports and Log Settings
pages - 7.2.4
Log & Report reports and settings pages have been consolidated into two dedicated pages:
l The FortiAnalyzer, FortiGate Cloud, and local report pages have been consolidated into the Log & Report > Reports
page.
l Global, local, and threat weight settings have been consolidated into the Log & Report > Log Settings page.
The Log & Report > Reports page includes tabs dedicated to FortiAnalyzer, FortiGate Cloud, and Local reports.
The FortiAnalyzer Reports > Generated Reports and Scheduled Reports tabs have been merged into the FortiAnalyzer
tab of Log & Report > Reports. The Generated report data is displayed by default. You can review scheduled report data
by selecting Scheduled.
The Log & Report > Log Settings page organizes settings into the Global Settings, Local Logs, and Threat Weight tabs.
The Local Reports toggle has been removed from the System > Feature Visibility page. Local reports can now only be
enabled from the Local Logs tab of Log & Report > Log Settings.
Add Logs Sent Daily chart for remote logging sources - 7.2.4
The Logs Sent Daily chart for remote logging sources (FortiAnalyzer, FortiGate Cloud, and FortiAnalyzer Cloud) has
been added to the Logging & Analytics Fabric connector card within the Security Fabric > Fabric Connectors page, and
to the Dashboard as a widget for a selected remote logging source.
1. Go to Security Fabric > Fabric Connectors and double-click the Logging & Analytics Fabric connector card.
The Logging Settings pane is displayed.
2. In the Settings tab, click either FortiAnalyzer or Cloud Logging to view the Remote Logs Sent Daily chart.
FortiAnalyzer Cloud is used in this example.
This section includes information about public and private cloud-related new features:
l Allow grace period for FortiFlex to begin passing traffic upon activation on page 598
l Azure new instance type support on page 602
l OCI X7 and X9 instance shapes on page 604
l GCP DPDK support on page 605
l External ID support in STS for AWS SDN connector 7.2.1 on page 614
l Permanent trial mode for FortiGate-VM 7.2.1 on page 617
l Allow FortiManager to apply license to a BYOL FortiGate-VM instance 7.2.1 on page 620
l Enable high encryption on FGFM protocol for unlicensed FortiGate-VMs 7.2.1 on page 623
l Support Ampere A1 Compute instances on OCI 7.2.4 on page 627
l Implement sysrq for kernel crash 7.2.4 on page 627
l Support various AWS endpoint ENI IP addresses in AWS SDN Connector 7.2.4 on page 629
l Support automatic vCPU hot-add in FortiGate-VM for S-series and FortiFlex licenses 7.2.4 on page 630
l Support for GCP ARM CPU-based T2A instance family 7.2.4 on page 630
l Support for GCP shielded and confidential VM service 7.2.4 on page 631
Allow grace period for FortiFlex to begin passing traffic upon activation
This enhancement allows for a two-hour grace period for FortiFlex to begin passing traffic upon retrieving the license
from FortiCare without VM entitlement verification from FortiGuard Distribution Servers (FDS). In the past, after
retrieving the license from FortiCare, traffic was not allowed to pass until the license entitlement was verified with FDS.
Since FDS must communicate with FortiCare to retrieve license and entitlement updates, this delayed the entitlement
check from the FortiGate. Such delays negatively impacted autoscaling and on-demand instances.
The following shows the topology for this enhancement. The topology shows two step 2s because they happen
concurrently.
Scenario 1
In this scenario, the FortiGate-VM can reach FDS and FortiCare. The FortiGate-VM activates a newly generated
FortiFlex license token before FDS synchronizes the license information from FortiCare. The FortiGate-VM is granted
the two-hour license grace period.
1. Create a FortiGate-VM with an evaluation license. The following shows the get system status output at this
point:
Version: FortiGate-VM64 v7.2.0,build1115,220218 (interim)
Serial-Number: FGVMEVVEWEABZJ10
2. Generate a new FortiFlex license on FortiCare and activate the FortiFlex license token in FortiOS immediately:
FGT-TEMP68 # exec vm-license AC6A134D807CDA4B75F8
This operation will reboot the system !
Do you want to continue? (y/n)y
3. The FortiGate-VM sets the VM license status as Grace Period before it can validate the license with FDS. The
following shows the get system status output at this point:
Version: FortiGate-VM64 v7.2.0,build1115,220218 (interim)
...
Serial-Number: FGVMMLTM22000386
License Status: Grace Period
License Expiration Date: 2022-08-03
VM Resources: 1 CPU/4 allowed, 2007 MB RAM
Log hard disk: Available
The following shows the diagnose debug vm-print-license output at this point:
SerialNumber: FGVMMLTM22000386
CreateDate: Fri Feb 18 16:30:02 2022
The following shows the diagnose hardware sysinfo vm full output at this point:
UUID: 4213ad10566d26bf8128bcce13ee457c
valid: 1
status: 6
code: 400
warn: 0
copy: 0
received: 4294939603
warning: 4294939603
recv: 202202181631
dup:
4. FDS synchronizes the license information from FortiCare. The followwing shows the output at this point:
Version: FortiGate-VM64 v7.2.0,build1115,220218 (interim)
...
Serial-Number: FGVMMLTM22000386
License Status: Valid
License Expiration Date: 2022-08-03
VM Resources: 1 CPU/4 allowed, 2007 MB RAM
Max number of virtual domains: 1
Virtual domains status: 1 in NAT mode, 0 in TP mode
Virtual domain configuration: disable
The following shows the diagnose debug vm-print-license output at this point:
SerialNumber: FGVMMLTM22000386
CreateDate: Fri Feb 18 16:30:02 2022
License expires: Wed Aug 3 00:00:00 2022
Default Contract:
FMWR:6:20220218:20220803,ENHN:20:20220218:20220803,COMP:20:20220218:20220803,AVDB:6
:20220218:20220803,NIDS:6:20220218:20220803,FURL:6:20220218:20220803,SPAM:6:2022021
8:20220803,VMLS:6:20220218:20220803:4
Key: yes
Cert: yes
Key2: yes
Cert2: yes
Model: ML (21)
CPU: 4 (subscription:4)
MEM: 2147483647
VDOM license:
permanent: 1
subscription: 0
The following shows the diagnose hardware sysinfo vm full output at this point:
UUID: 4213ad10566d26bf8128bcce13ee457c
valid: 1
status: 1
code: 200
warn: 0
copy: 0
received: 4294939603
warning: 4294939603
recv: 202202181631
dup:
5. You can check the license logs using the following commands:
execute log filter category event
execute log filter field service license
execute log display
3 logs found.
3 logs returned.
Scenario 2
In this scenario, the FortiGate-VM cannot reach FDS but can reach FortiCare. When the FortiGate-VM receives the
license file from FortiCare with the token, the two-hour grace period begins.
This scenario is unlikely to happen in production. If a FortiGate-VM can reach FortiCare, it can also likely reach FDS.
This scenario illustrates what occurs if the two-hour grace period passes without communication with FDS.
The following shows the license logs in this scenario during the two-hour grace period:
2: date=2022-02-17 time=22:57:43 eventtime=1645167462076672946 tz="-0800" logid="0100022804"
type="event" subtype="system" level="critical" vd="root" logdesc="License status
changed" service="license" sn="FGVMMLTM123123" status="VALID" msg="License is in grace
period"
The following shows the license logs in this scenario after the two-hour grace period has passed and the FortiGate-VM
still cannot reach FDN, and the license status changes to invalid:
1: date=2022-02-18 time=00:57:45 eventtime=1645174666108212880 tz="-0800" logid="0100022804"
type="event" subtype="system" level="critical" vd="root" logdesc="License status
changed" service="license" sn="FGVMMLTM22000351" status="INVALID" msg="License status
changed to INVALID"
The following shows the output from diagnose sys vd list | grep index after the two-hour grace period has
passed and the FortiGate-VM still cannot reach FDN, and the license status changes to invalid:
name=root/root index=0 disabled fib_ver=22 rpdb_ver=0 use=144 rt_num=26 asym_rt=0 sip_
helper=0, sip_nat_trace=1, mc_fwd=0, mc_ttl_nc=0, tpmc_sk_pl=0
name=vsys_ha/vsys_ha index=1 enabled fib_ver=5 rpdb_ver=1 use=75 rt_num=0 asym_rt=0 sip_
helper=0, sip_nat_trace=1, mc_fwd=0, mc_ttl_nc=0, tpmc_sk_pl=0
name=vsys_fgfm/vsys_fgfm index=2 enabled fib_ver=4 rpdb_ver=0 use=72 rt_num=0 asym_rt=0 sip_
helper=0, sip_nat_trace=1, mc_fwd=0, mc_ttl_nc=0, tpmc_sk_pl=0
FortiOS 7.2.0 adds support for new Azure instance types as follows:
l DV4 and DsV4-series
l Dav4 and Dasv4-series
l Dv5 and Dsv5-series
l Dasv5 and Dadsv5-series
The DV4 and DsV4-series contain support for Intel Xeon (Ice Lake [2020] and Cascade Lake [2018]) for general purpose
workloads. The DsV4 series has the option for premium storage:
DV4 series
DsV4 series
The Dav4 and Dasv4-series contain support for second generation AMD EPYC 7452 (Rome 2019) for
production/multithreaded workloads. The DaSV4 series has the option for premium storage:
DaV4 series
DasV4 series
The Dv5 and Dsv5-series contain support exclusively for Intel Xeon (Ice Lake [2020]) for general purpose workloads. A
premium storage tier is available on Dsv5:
DV5 series
DsV5 Series
The Dasv5 and Dadsv5-series contain support for third generation AMD EPYC 7763v (Milan 2021) for
production/multithreaded workloads:
DasV5 Series
DadsV5 Series
FortiOS 7.2.0 adds support for new OCI instance shapes as follows:
AMD
Intel
You can now enable DPDK on FortiGate-VMs deployed on the Google Cloud Platform (GCP). DPDK allows improved
network performance.
The following example enables DPDK on a FortiGate-VM deployed on GCP, passes UDP and TCP traffic with an
antivirus (AV)/IPS/application firewall policy enabled, then checks the engine and vNP statistics.
1. In the FortiOS CLI, enable DPDK, reboot, then check the DPDK status:
config dpdk global
(global) # set status enable
(global) # get
status : enable
interface :
multiqueue : disable
sleep-on-idle : disable
elasticbuffer : disable
per-session-accounting: traffic-log-only
ipsec-offload : disable
hugepage-percentage : 30
mbufpool-percentage : 25
port3: eth2
port4: eth3
port5: eth4
port6: eth5
port7: eth6
port8: eth7
port9: eth8
port10: eth9
port11: eth10
port12: eth11
port13: eth12
port14: eth13
port15: eth14
port16: eth15
port17: eth16
port18: eth17
port19: eth18
port20: eth19
port21: eth20
port22: eth21
port23: eth22
port24: eth23
#---------------EAL INIT-----------------
#----------------------------------------
#----------------------------------------
# port oid dev_name pci_id
#----------------------------------------
0 0 eth0 0000:00:04.0
1 1 eth1 0000:00:05.0
2 2 eth2 0000:00:06.0
3 3 eth3 0000:00:07.0
#----------------------------------------
DPDK sanity test passed
3. Pass UDP and TCP traffic with AV/IPS/application firewall policy enabled, then check engine and vNP statistics:
diagnose dpdk statistics show engine
--------------------------------------------------------------------------------
FortiOS DPDK Helper Engine Stats
--------------------------------------------------------------------------------
0 0
ipsec_sa_del: 0 0 0
0 0
ipsec_spi_add: 0 0 0
0 0
ipsec_spi_add_fail: 0 0 0
0 0
ipsec_spi_del: 0 0 0
0 0
ipsec_spi_del_fail: 0 0 0
0 0
ipsec_spi_lookup: 0 0 0
0 0
ipsec_spi_lookup_fail: 0 0 0
0 0
ipsec_spi_reclaim: 0 0 0
0 0
ipsec_ib_sa_hit: 0 0 0
0 0
ipsec_ib_sa_miss: 0 0 0
0 0
ipsec_ib_headroom_err: 0 0 0
0 0
ipsec_ib_cryptodev_err: 0 0 0
0 0
ipsec_ib_post_proc_err: 0 0 0
0 0
ipsec_ib_uesp_dport_err: 0 0 0
0 0
ipsec_ib_uesp_not_enabled: 0 0 0
0 0
ipsec_ob_sa_hit: 0 0 0
0 0
ipsec_ob_sa_miss: 0 0 0
0 0
ipsec_ob_headroom_err: 0 0 0
0 0
ipsec_ob_cryptodev_err: 0 0 0
0 0
ipsec_ob_post_proc_err: 0 0 0
0 0
0 0
ips_vdct_pkts: 0 0 0
0 0
ips_inv_pkts: 0 0 0
0 0
from_ips_rx_pkts: 0 0 0
0 0
from_ips_tx_pkts: 0 0 0
0 0
from_ips_drop_pkts: 0 0 0
0 0
from_ips_fallback_pkts: 0 0 0
0 0
--------------------------------------------------------------------------------
FortiOS DPDK Helper VNP Stats
--------------------------------------------------------------------------------
ctr_sse_entries: 8 2 2
3 1
err_sse_batch_size: 0 0 0
0 0
err_sse_unknown_cmd: 0 0 0
0 0
err_sse_full: 0 0 0
0 0
err_sse_tbl_alloc_fail: 0 0 0
0 0
err_sse_inv_oid: 0 0 0
0 0
err_fp_no_act: 0 0 0
0 0
err_fp_no_port: 0 0 0
0 0
drop_inv_l3: 0 0 0
0 0
drop_inv_l4: 0 0 0
0 0
drop_fp_act: 0 0 0
0 0
drop_inv_port: 0 0 0
0 0
drop_inv_ip_cksum: 0 0 0
0 0
drop_oversized_pkt: 0 0 0
0 0
drop_unsupported: 0 0 0
0 0
drop_looping_pkt: 0 0 0
0 0
drop_ipsec_ob_fail: 0 0 0
0 0
--------------------------------------------------------------------------------
This enhancement builds on the AWS SDN connector, which can use the AWS security token service (STS) to connect
to multiple AWS accounts concurrently. To enhance security, the SDN connector now supports using an external ID,
which allows the target account owner to permit the source account to assume the role only under specific
circumstances.
See How to use an external ID when granting access to your AWS resources to a third party for details.
The example demonstrates a source account, the AWS account that FortiOS is connected to, accessing a target
account. The target account must explicitly allow an external ID string in its role definition. The role definition has a trust
policy that allows the source account on the condition that it connects with the specified external ID. You can configure
these definitions on the target account in AWS.
This example uses two AWS accounts:
l Target account: 601xxxxxx685
l Source account: 269xxxxxx203
The example demonstrates that a FortiGate-VM in the source account can retrieve dynamic objects from the target
account if it has the specified external ID.
To configure SDN connector support for AWS STS with an external ID:
f. Click Next.
g. Continue with the configuration until the Review step. In the Role name field, enter the desired role name. In
this example, the role name is cross-account-with-external-id-demo.
3. Create an inline policy on the target account:
a. Go to IAM > Roles.
b. Select the role that you created.
c. Click Add inline policy > JSON.
d. Paste the following in to the text box:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeRegions"
],
"Resource": "*"
}
]
}
e. Continue to create the policy. Name the policy as desired. In this example, the policy name is
CrossAccountPolicy.
You can also create a standalone policy in IAM > Policies, and attach the policy to the
IAM role, instead of adding an inline policy as this procedure describes.
e. Continue to create the policy. Name the policy as desired. The resource should be the Amazon resource name
(ARN) of the IAM role that you created in the target account. You can find the ARN by logging in to the
AWS portal under the target account and going to the IAM web portal.
You can also create a standalone policy in IAM > Policies, and attach the policy to the
IAM role, instead of adding an inline policy as this procedure describes.
next
end
next
end
b. Configure a dynamic address. This address checks whether the FortiGate-VM can retrieve the instance
address in the target account:
config firewall address
edit "sdn1"
set type dynamic
set sdn "aws1"
set filter "InstanceId=i-02c5141c75e6aed4f"
next
end
c. Confirm that the FortiGate-VM can retrieve the dynamic IP address from the target account:
show firewall address sdn1
config firewall address
edit "sdn1"
set type dynamic
set sdn "aws1"
set filter "InstanceId=i-02c5141c75e6aed4f"
set sdn-addr-type all
config list
edit "172.31.24.149"
next
edit "54.172.135.95"
next
end
next
end
A permanent evaluation VM license replaces the 15 day evaluation period for FortiGate-VM. The evaluation VM license
applies to all private cloud (VMware ESXi, KVM, and so on) and all bring your own license public cloud instances.
When spinning up a new FortiGate-VM, you choose to log in to FortiCare to activate the VM trial or upload a new license.
Limitations of the evaluation VM license include the following:
l Maximum of one free evaluation copy per FortiCare account
l Support for low encryption operation only, except for GUI management access and FortiManager communications
l Maximum of 1 CPU and 2 GB of memory
l Maximum of three interfaces, firewall policies, and routes
l No FortiCare support
l No FortiGuard support
l Support for a maximum of two virtual domains (VDOM). When using multi-VDOM mode, the root VDOM must be an
admin type and the other can be a traffic VDOM. See VDOM types.
To obtain the permanent VM trial license from FortiCare using the CLI:
1. A newly deployed FortiGate-VM no longer has a valid evaluation license, even if the instance has only 1 CPU and 2
GB of memory. Run get system status. The following output is expected:
Version: FortiGate-VM64 v7.2.1,build1242,220715 (interim)
...
Serial-Number: FGVMEVNXFLTGKOBC
License Status: Invalid
VM Resources: 1 CPU/1 allowed, 2007 MB RAM/2048 MB allowed
2. Obtain the permanent VM trial license from FortiCare:
exec vm-license-options account-id xxxx@fortinet.com
exec vm-license
This VM is using the evaluation license. This license does not expire.
Limitations of the Evaluation VM license include:
1.Support for low encryption operation only
2.Maximum of 1 CPU and 2GiB of memory
3.Maximum of three interfaces, firewall policies, and routes each
4.No FortiCare Support
This operation will reboot the system !
Do you want to continue? (y/n)y
3. You can run the following commands to check that the permanent VM trial license is valid:
l get sys stat. The following output is expected:
Key: yes
Cert: yes
Key2: yes
Cert2: yes
Model: EVAL (1)
CPU: 1
MEM: 2048
VDOM license:
permanent: 2
subscription: 0
To obtain the permanent VM trial license from FortiCare using the GUI:
1. When unlicensed, the FortiOS GUI allows you to download the permanent VM trial license from FortiCare with your
FortiCare account credentials. In the FortiGate VM License page, for How will you license this VM?, select
Evaluation License.
1. Confirm that the FortiGate is unlicensed by running get system status in the FortiOS CLI. The following shows
expected output for this command:
Version: FortiGate-VM64-AZURE v7.2.1,build1252,220728 (interim)
...
Serial-Number: FGVMEVTN8UP4KIA6
License Status: Invalid
VM Resources: 1 CPU/1 allowed, 1945 MB RAM/2048 MB allowed
This enhancement allows FortiManager to apply a license to a bring your own license (BYOL) FortiGate-VM instance.
For example, when launching a BYOL FortiGate-VM on Azure, the FortiGate receives a serial number (SN) with the
FGVMEV prefix and a VM license with an invalid status by default. This unlicensed FortiGate-VM can register to a
FortiManager for authorization and management. Subsequently, the FortiManager can apply a VM license to the
FortiGate-VM instance.
1. Confirm that the FortiGate is unlicensed by running get system status in the FortiOS CLI. The following shows
expected output for this command:
Version: FortiGate-VM64-AZURE v7.2.1,build1252,220728 (interim)
...
Serial-Number: FGVMEVTN8UP4KIA6
License Status: Invalid
VM Resources: 1 CPU/1 allowed, 1945 MB RAM/2048 MB allowed
4. In the FortiOS CLI, confirm that the FortiGate-VM can connect to FortiManager by running diagnose fdsm
central-mgmt-status. The following shows expected output for this command:
Connection status: Handshake
Registration status: Unknown
8. In the FortiOS GUI, confirm that the FortiGate-VM has received a license from the FortiManager.
For FortiManager to manage unlicensed FortiGate-VMs, FortiOS enables high encryption on the FortiGate to
FortiManager (FGFM) protocol for secure connection between the FortiGate and FortiManager. In this context, a
FortiGate-VM is considered unlicensed if it does not have any license applied, including evaluation licenses. After adding
the FortiGate-VMs to device manager, FortiManager can install VM licenses to the managed FortiGate-VMs.
For example, in a situation where you deployed five unlicensed FortiGate-VMs, you can configure the CLI to point to the
FortiManager for central management for all five VMs. FortiManager can then communicate with these VMs over high
encryption and manage them.
The example below demonstrates that after configuring central management from the unlicensed VM's CLI (in this case
a VM with an invalid license), FortiOS can initiate a secure TLS 1.3 session to the FortiManager and establish a
connection. Subsequently, FortiManager can add this device to device management and install a VM license to it.
1. Confirm that the FortiGate is unlicensed by running get system status in the FortiOS CLI. The following shows
expected output for this command:
Version: FortiGate-VM64 v7.2.1,build1242,220715 (interim)
...
Serial-Number: FGVMEVNXFLTGKOBC
License Status: Invalid
VM Resources: 2 CPU/1 allowed, 3963 MB RAM/2048 MB allowed
3. In the FortiOS CLI, confirm that the FortiGate-VM can connect to FortiManager by running diagnose fdsm
central-mgmt-status. The following shows expected output for this command:
Connection status: Handshake
Registration status: Unknown
mgmtport=443
8. In the FortiOS GUI, confirm that the FortiGate-VM has received a license from the FortiManager.
This enhancement allows FortiGate-VM for OCI to work on ARM-based Oracle Cloud Ampere A1 Compute instances.
For more information about this feature, see Support Ampere A1 Compute instances on OCI.
In some scenarios where it is necessary to simulate a system crash, these new commands allow a super administrator to
safely trigger a kernel crash using the sysrq key. A kernel crash dump is outputted to the console, and FortiOS reboots
and recovers without function loss. Only FortiGate-VM supports this feature.
Following are the new commands for this feature:
Command Description
diagnose debug kernel Verify if the feature is enabled or disabled.
sysrq status
diagnose debug kernel Enable or disable the feature.
sysrq enable |
disable
diagnose debug kernel Trigger the safe kernel crash.
sysrq command crash
Scenarios where you may need to simulate a system crash without a reboot include high availability failover tests, virtual
network function (VNF) healing tests, and third party VNF certification tests.
The following shows a sample kernel crash dump:
fgt01 # diagnose debug kernel sysrq status
Magic SysRq is disable
fgt01 #
fgt01 # diagnose debug kernel sysrq command
crash Perform a system crash.
fgt01 #
fgt01 # diagnose debug kernel sysrq enable
fgt01 #
fgt01 # diagnose debug kernel sysrq status
Magic SysRq is enabled (val=0x8)
fgt01 #
fgt01 # diagnose debug kernel sysrq command crash
This operation will generate a kernel crash and cause the firewall to reboot.
Do you want to continue? (y/n)y
Call Trace:
? __handle_sysrq.cold+0x48/0xf7
write_sysrq_trigger+0x26/0x35
proc_reg_write+0x36/0x74
__vfs_write+0x36/0x16c
? __se_sys_newfstat+0x89/0xa5
? _cond_resched+0x15/0x3c
vfs_write+0xa0/0x198
ksys_write+0x4f/0xad
__x64_sys_write+0x15/0x17
do_syscall_64+0x66/0x281
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7f017a341fa3
Code: 8b 15 f1 ce 0c 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 64 8b 04 25 18 00
00 00 85 c0 75 14 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 55 c3 0f 1f 40 00 48 83 ec 28
48 89 54 24 18
RSP: 002b:00007ffe608b46d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f017a341fa3
RDX: 0000000000000001 RSI: 000000001138a000 RDI: 0000000000000007
RBP: 000000001138a000 R08: 0000000000000000 R09: 0000000000000001
R10: 00000000000001b6 R11: 0000000000000246 R12: 0000000000000001
R13: 000000001137f2a0 R14: 0000000000000001 R15: 00007f017a40b880
Modules linked in: filter4(P)
CR2: 0000000000000000
---[ end trace 1a3b9e86e8978153 ]---
RIP: 0010:sysrq_handle_crash+0xd/0x16
Code: 89 f7 e8 d6 15 dd ff eb d2 45 89 ec eb f1 41 bc fb ff ff ff eb c5 e8 ca 06 c6 ff 90 90
c7 05 7e 04 19 01 01 00 00 00 0f ae f8 <c6> 04 25 00 00 00 00 01 c3 55 48 89 e5 bf 02 00 00
00 e8 44 89 c8
RSP: 0018:ffffc9000480fd58 EFLAGS: 00010246
RAX: ffffffff8068fe00 RBX: 0000000000000001 RCX: 0000000000000006
RDX: 0000000000000000 RSI: 0000000000000092 RDI: 0000000000000063
RBP: ffffc9000480fd80 R08: 0000000000000233 R09: 0000000000000004
R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000063
R13: 0000000000000004 R14: ffffffff81673560 R15: 0000000000000000
FS: 00007f0177113fc0(0000) GS:ffff8882b7b00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000289899001 CR4: 00000000003606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Kernel panic - not syncing: Fatal exception
Kernel Offset: disabled
Rebooting in 5 seconds..
System is starting...
Starting system maintenance...
Scanning /dev/sda1... (100%)
Scanning /dev/sda2... (100%)
Serial number is FGT123456
Support various AWS endpoint ENI IP addresses in AWS SDN Connector - 7.2.4
This enhancement allows the FortiGate AWS SDN connector to resolve various AWS endpoint ENI IP addresses:
Support automatic vCPU hot-add in FortiGate-VM for S-series and FortiFlex licenses
- 7.2.4
FortiGate-VM supports automatic vCPU hot-add/hot-remove to the limit of the license entitlement after activating an S-
series license or a FortiFlex license. This enhancement removes the requirement for the CLI command execute cpu
add <number_of_new_vCPUs> to be run or a reboot to be performed when the FortiGate-VM has a lower number of
vCPUs allocated than the licensed number of vCPUs.
The following example spins up a new FortiGate-VM assigned with four vCPU:
FGT-CPU-Demo # get system status
Version: FortiGate-VM64 v7.2.4,build1371,221129 (interim)
...
Serial-Number: FGVM123456
License Status: Invalid
VM Resources: 1 CPU/1 allowed, 1993 MB RAM/2048 MB allowed
Log hard disk: Available
Hostname: FGT-CPU-Demo
FGT-CPU-Demo # execute cpu show
Active CPU number: 1
Total CPU number: 4
When activating an S-series license with four vCPU seats on the FortiGate-VM, you do not need to run execute cpu
add <number_of_new_vCPUs> or reboot the FortiGate-VM. The FortiGate-VM automatically consumes four vCPUs
out of four vCPUs allowed:
FGT-CPU-Demo # get system status
Version: FortiGate-VM64 v7.2.4,build1371,221129 (interim)
...
Serial-Number: FGVM123456
License Status: Valid
License Expiration Date: 2023-05-05
VM Resources: 4 CPU/4 allowed, 1993 MB RAM <===before this spec, without a reboot or "exec
cpu add x" manually, FGT v7.2.3 shows "VM Resources: 1 CPU/4 allowed, 2007 MB RAM"
Log hard disk: Available
Hostname: FGT-CPU-Demo
FGT-CPU-Demo # execute cpu show
Active CPU number: 4
Total CPU number: 4
FortiGate-VM supports the GCP T2A instance family. See Deploying a FortiGate-VM using a GCP ARM CPU-based
T2A instance.
FortiGate-VM for GCP supports shielded and confidential VM modes where a UEFI VM image is used for secure boot
and data-in-use is encrypted during processing. These flavors use AMD EPYC Rome CPUs with vTPM. Using UEFI
support with a signed bootloader ensures that the FortiGate-VM for GCP can be validated and verified to use the
confidential and shielded VM flavors and modes. This allows you to encrypt your data during CPU processing. See What
is Shielded VM? and Confidential Computing concepts.
You can directly deploy a FortiGate-VM in shielded or confidential VM mode by using the premade marketplace image
onto cvm and shielded-vm flavors/modes. Running get hardware cpu on an instance in shielded or confidential
mode outputs the following:
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 49
model name : AMD EPYC 7B12
stepping : 0
microcode : 0x1000065
cpu MHz : 2249.998
cache size : 512 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_
good nopl xtopology nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma
cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_
legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibrs ibpb stibp vmmcall
fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt
xsavec xgetbv1 clzero xsaveerptr arat npt nrip_save umip rdpi
FortiOS supports deploying a VMware ESXi FortiGate-VM directly as a zero trust application gateway using the OVF
template (.vapp). You can configure zero trust network access (ZTNA)-related parameters such as the EMS server,
external and internal interface IP addresses, and the application server mapping, during OVF deployment. The
deployment also bootstraps ZTNA policy, authentication scheme, rules, and user group configurations.
For more information about this feature, see VMware ESXi FortiGate-VM as ZTNA gateway.
GUI
This section includes information about GUI related Operational Technology new features:
l Add OT asset visibility and network topology to Asset Identity Center page on page 632
Add OT asset visibility and network topology to Asset Identity Center page
Tabs are added in the Asset Identity Center page to view the OT asset list and OT network topology using Purdue
Levels. This feature is available regardless of whether a Security Fabric is enabled.
Once enabled, the Security Fabric > Asset Identity Center page displays an Asset Identity List tab and an OT View tab.
l The Asset Identity List tab includes a configurable Purdue Level column and a Show in OT View option for selected
devices in the table.
l The OT View tab shows a topology of detected components and connections mapped to Purdue Levels. The default
view is locked, but devices can be dragged and dropped to other Purdue Levels if the view is unlocked.
FortiGates and managed FortiSwitches are statically assigned Purdue Level 2 and cannot be changed. Other detected
devices are assigned Purdue Level 3 by default and can be changed (except to level S, 0, or external).
The following diagram lists the Purdue Levels based on OT network topologies:
1. Go to Security Fabric > Asset Identity Center and select the Asset Identity List tab.
2. Add the Purdue Level column to the table:
a. Hover over the table header and click the gear icon (Configure Table).
b. Select Purdue Level.
c. Click Apply.
3. Select a device and hover over the Purdue Level value.
4. Click the pencil icon to edit the level.
6. Click Apply.
1. Go to Security Fabric > Asset Identity Center and select the OT View tab.
2. Click Unlock View.
3. Select a device.
System
This section includes information about system related Operational Technology new features:
l Allow manual licensing for FortiGates in air-gap environments on page 635
In the Operational Technology industry, industrial equipment is critical and must not be connected to the internet.
However, the equipment is still required to be protected by a firewall in this air-gap environment. Without a gateway to
FortiGuard in air-gap environments, FortiGuard packages, such as AntiVirus and IPS, must be manually uploaded to the
FortiGate. FortiGate licenses can be downloaded from FortiCloud and uploaded manually to the FortiGate.
1. Register the FortiGuard license on FortiCloud. See Registration in the FortiOS Administration Guide for more
information.
2. Download the product entitlement file in FortiCloud:
a. Go to Products > Product List.
b. Select the serial number of the FortiGate. The product page opens.
c. In the License & Key section, click Get The License File. The file downloads to your device in the format
FG201E*********ProductEntitlement.lic.
3. In FortiOS, go to System > FortiGuard. Currently, the status for all services is Pending.
6. Click Apply.
# execute restore manual-license {ftp | tftp} <license file name> <server> [args]
The following index provides a list of all new features added to FortiOS 7.2. The index allows you to quickly identify the
version where the feature first became available in FortiOS.
Select a version number to navigate in the index to the new features available for that patch:
l 7.2.0 on page 639
l 7.2.1 on page 643
l 7.2.4 on page 646
7.2.0
GUI
General usability enhancements l Look up IP address information from the Internet Service Database page on
page 14
l Embed real-time packet capture and analysis tool on Diagnostics page on
page 15
l Embed real-time debug flow tool on Diagnostics page on page 19
l Display detailed FortiSandbox analysis and downloadable PDF report on
page 23
Security Fabric
Automation stitches l Add new automation triggers for event logs on page 75
Network
SD-WAN l Allow application category as an option for SD-WAN rule destination on page
92
l Add mean opinion score calculation and logging in performance SLA health
checks on page 97
l Multiple members per SD-WAN neighbor configuration on page 99
l Duplication on-demand when SLAs in the configured service are matched on
page 105
l SD-WAN in large scale deployments on page 110
l SD-WAN segmentation over a single overlay on page 121
System
Zero Trust Network Access l ZTNA scalability support for up to 50 thousand concurrent endpoints on page
319
NGFW l Allow web filter category groups to be selected in NGFW policies on page
363
l Add option to set application default port as a service port on page 364
l Introduce learn mode in security policies in NGFW mode on page 367
Security Profiles
Web filter l Using the Websense Integrated Services Protocol in flow mode on page 397
l Inspecting HTTP3 traffic on page 398
Others l Add email filters for block allow lists on page 402
l Enhance the DLP backend and configurations on page 406
l Add option to disable the FortiGuard IP address rating on page 413
l ICAP scanning with SCP and FTP on page 413
VPN
IPsec and SSL VPN l Add log field to identify ADVPN shortcuts in VPN logs on page 431
l Show the SSL VPN portal login page in the browser's language on page 432
l SLA link monitoring for dynamic IPsec and SSL VPN tunnels on page 434
Secure Access
Switch Controller l Automatic updating of the port list when switch split ports are changed on
page 531
l Use wildcard serial numbers to pre-authorize FortiSwitch units on page 531
l Allow multiple managed FortiSwitch VLANs to be used in a software switch
on page 532
l Allow a LAG on a FortiLink-enabled software switch on page 533
l Configure MAB reauthentication globally or locally on page 534
l Enhanced FortiSwitch Topology view on page 535
l Support dynamic discovery in FortiLink mode over a layer-3 network on page
537
l Configure flap guard through the switch controller on page 538
l Allow FortiSwitch console port login to be disabled on page 539
l Configure multiple flow-export collectors on page 540
l Enhanced FortiSwitch Ports page and Diagnostics and Tools pane on page
541
l Manage FortiSwitch units on VXLAN interfaces on page 541
l Add new FortiSwitch Clients page on page 544
NAC l Allow the configuration of NAC LAN segments in the GUI on page 555
Logging l Add IOC detection for local out traffic on page 572
l HTTP transaction log fields on page 574
l Updated System Events log page on page 578
l New Security Events log page on page 581
l Improve FortiAnalyzer log caching on page 584
l Add FortiAnalyzer Reports page on page 587
Cloud
Public and private cloud l Allow grace period for FortiFlex to begin passing traffic upon activation on
page 598
l Azure new instance type support on page 602
l OCI X7 and X9 instance shapes on page 604
l GCP DPDK support on page 605
Operational Technology
GUI l Add OT asset visibility and network topology to Asset Identity Center page on
page 632
System l Allow manual licensing for FortiGates in air-gap environments on page 635
7.2.1
GUI
General usability enhancements l Update naming of FortiCare support levels 7.2.1 on page 27
Security Fabric
Fabric settings l Add support for multitenant FortiClient EMS deployments 7.2.1 on page 44
l Add IoT devices to Asset Identity Center page 7.2.1 on page 47
l Introduce distributed topology and security rating reports 7.2.1 on page 48
Security ratings l Add PSIRT vulnerabilities to security ratings and notifications for critical
vulnerabilities found on Fabric devices 7.2.1 on page 88
Network
SD-WAN l Embedded SD-WAN SLA information in ICMP probes 7.2.1 on page 136
l Exchange underlay link cost property with remote peer in IPsec VPN phase 1
negotiation 7.2.1 on page 143
l Copying the DSCP value from the session original direction to its reply
direction 7.2.1 on page 148
General l GUI support for advanced BGP options 7.2.1 on page 190
l Support BGP AS number input in asdot and asdot+ format 7.2.1 on page 192
l SNMP OIDs with details about authenticated users 7.2.1 on page 194
l Add new IPAM GUI page 7.2.1 on page 199
l Assign multiple IP pools and subnets using IPAM Rules 7.2.1 on page 201
l Add VCI pattern matching as a condition for IP or DHCP option assignment
7.2.1 on page 204
l Support cross-VRF local-in and local-out traffic for local services 7.2.1 on
page 206
l FortiGate as FortiGate LAN extension 7.2.1 on page 208
Web proxy l HTTPS download of PAC files for explicit proxy 7.2.1 on page 238
l Support CORS protocol in explicit web proxy when using session-based,
cookie-enabled, and captive portal-enabled SAML authentication 7.2.1 on
page 240
System
General l Restrict SSH and telnet jump host capabilities 7.2.1 on page 250
l Enable automatic firmware updates 7.2.1 on page 251
l Deregistration from the GUI 7.2.1 on page 253
l Add government end user option for FortiCare registration 7.2.1 on page 255
l Support backing up configurations with password masking 7.2.1 on page 255
l New default certificate for HTTPS administrative access 7.2.1 on page 257
FortiGuard l FortiManager as override server for IoT query services 7.2.1 on page 317
Zero Trust Network Access l ZTNA device certificate verification from EMS for SSL VPN connections
7.2.1 on page 325
l Mapping ZTNA virtual host and TCP forwarding domains to the DNS
database 7.2.1 on page 331
l Publishing ZTNA services through the ZTNA portal 7.2.1 on page 335
l ZTNA inline CASB for SaaS application access control 7.2.1 on page 343
l ZTNA policy access control of unmanaged devices 7.2.1 on page 349
Security Profiles
Antivirus l Inline scanning with FortiGuard AI-Based Sandbox Service 7.2.1 on page
392
Secure Access
Switch Controller l Automatic revision backup upon FortiSwitch logout or firmware upgrade
7.2.1 on page 547
l Configure the frequency of IGMP queries 7.2.1 on page 547
Logging l Summary tabs on System Events and Security Events log pages 7.2.1 on
page 589
l Add time frame selector to log viewer pages 7.2.1 on page 590
l Updating log viewer and log filters 7.2.1 on page 591
Cloud
Public and private cloud l External ID support in STS for AWS SDN connector 7.2.1 on page 614
l Permanent trial mode for FortiGate-VM 7.2.1 on page 617
l Allow FortiManager to apply license to a BYOL FortiGate-VM instance 7.2.1
on page 620
l Enable high encryption on FGFM protocol for unlicensed FortiGate-VMs
7.2.1 on page 623
7.2.4
GUI
General usability enhancements l Add FortiAnswers top three questions to the information pane 7.2.4 on page
28
Security Fabric
Fabric settings l Add IoT vulnerabilities to the asset identity list and FortiGuard IoT security
rating checks 7.2.4 on page 49
l Enhance the Fabric Connectors page 7.2.4 on page 52
l Add FortiPolicy as Security Fabric device 7.2.4 on page 58
l Allow FortiClient EMS connectors to trust EMS server certificate renewals
based on the CN field 7.2.4 on page 63
Network
SD-WAN l Matching BGP extended community route targets in route maps 7.2.4 on
page 152
General l Allow VLAN sub-interfaces to be used in virtual wire pairs 7.2.4 on page 213
l Add static route tag and BGP neighbor password 7.2.4 on page 215
l DHCP enhancements 7.2.4 on page 218
System
Zero Trust Network Access l HTTP2 connection coalescing and concurrent multiplexing for ZTNA, virtual
server load balancing, and explicit proxy 7.2.4 on page 350
l ZTNA policy access control of unmanageable and unknown devices with
dynamic address local tags 7.2.4 on page 357
Policies l Virtual patching on the local-in management interface 7.2.4 on page 376
Security Profiles
Antivirus l Antivirus exempt list for files based on individual hash 7.2.4 on page 396
Others l Add REST API for IPS session monitoring 7.2.4 on page 418
l Hide proxy features in the GUI by default for models with 2 GB RAM or less
7.2.4 on page 420
l Re-introduce DLP profiles in the GUI 7.2.4 on page 422
l Remove option to block QUIC by default in application control 7.2.4 on page
428
Authentication l Specify the SAN field to use for LDAP-integrated certificate authentication
7.2.4 on page 456
Secure Access
Switch Controller l Add FortiView Internal Hubs monitor 7.2.4 on page 548
l Configure DHCP-snooping static entries 7.2.4 on page 551
l Track device traffic statistics when NAC is enabled 7.2.4 on page 552
l Enhance switch PoE port settings 7.2.4 on page 554
l Increase the number of NAC devices supported 7.2.4 on page 554
Logging l Consolidate log reports and settings into dedicated Reports and Log Settings
pages 7.2.4 on page 594
l Add Logs Sent Daily chart for remote logging sources 7.2.4 on page 596
Cloud
Public and private cloud l Support Ampere A1 Compute instances on OCI 7.2.4 on page 627
l Implement sysrq for kernel crash 7.2.4 on page 627
l Support various AWS endpoint ENI IP addresses in AWS SDN Connector
7.2.4 on page 629
l Support automatic vCPU hot-add in FortiGate-VM for S-series and FortiFlex
licenses 7.2.4 on page 630
l Support for GCP ARM CPU-based T2A instance family 7.2.4 on page 630
l Support for GCP shielded and confidential VM service 7.2.4 on page 631
7.2.5
Network
General l Improve DVLAN QinQ performance for NP7 platforms 7.2.5 on page 223
System
General l Display warnings for supported Fabric devices passing their hardware EOS
date 7.2.5 on page 268
l Enhance BIOS-level signature and file integrity checking 7.2.5 on page 268
Security Profiles
IPS l Support full extended IPS database for FortiGate VMs with eight cores or
more 7.2.5 on page 402
VPN
IPsec and SSL VPN l IPsec IKE load balancing based on FortiSASE account information 7.2.5 on
page 437
Secure Access
Wireless l Simplify BLE iBeacon provisioning for RTLS deployments 7.2.5 on page 528
Cloud
Public and private cloud l VMware ESXi FortiGate-VM as ZTNA gateway 7.2.5 on page 631
Copyright© 2023 Fortinet, Inc. All rights reserved. Fortinet®, FortiGate®, FortiCare® and FortiGuard®, and certain other marks are registered trademarks of Fortinet, Inc., and other Fortinet names herein
may also be registered and/or common law trademarks of Fortinet. All other product or company names may be trademarks of their respective owners. Performance and other metrics contained herein were
attained in internal lab tests under ideal conditions, and actual performance and other results may vary. Network variables, different network environments and other conditions may affect performance
results. Nothing herein represents any binding commitment by Fortinet, and Fortinet disclaims all warranties, whether express or implied, except to the extent Fortinet enters a binding written contract,
signed by Fortinet’s General Counsel, with a purchaser that expressly warrants that the identified product will perform according to certain expressly-identified performance metrics and, in such event, only
the specific performance metrics expressly identified in such binding written contract shall be binding on Fortinet. For absolute clarity, any such warranty will be limited to performance in the same ideal
conditions as in Fortinet’s internal lab tests. Fortinet disclaims in full any covenants, representations, and guarantees pursuant hereto, whether express or implied. Fortinet reserves the right to change,
modify, transfer, or otherwise revise this publication without notice, and the most current version of the publication shall be applicable.