FortiOS-7.0.0-New Features Guide 90316
FortiOS-7.0.0-New Features Guide 90316
FortiOS-7.0.0-New Features Guide 90316
Version 7.0.0
FORTINET DOCUMENT LIBRARY
https://docs.fortinet.com
FORTINET BLOG
https://blog.fortinet.com
NSE INSTITUTE
https://training.fortinet.com
FORTIGUARD CENTER
https://www.fortiguard.com
FEEDBACK
Email: [email protected]
Change Log 6
Security Fabric 7
Fabric settings 7
Enhance Security Fabric configuration for FortiSandbox Cloud 7
SDN connectors 8
Thread feed connectors per VDOM 8
Automation stitches 12
Automation workflow improvements 12
Microsoft Teams Notification action 21
Replacement messages for email alerts 26
Security ratings 28
Security Rating overlays 29
Network 32
SD-WAN 32
Usability enhancements to SD-WAN Network Monitor service 32
Hold down time to support SD-WAN service strategies 34
General 35
Add option to select source interface and address for Telnet and SSH 36
ECMP routes for recursive BGP next hop resolution 36
BGP next hop recursive resolution using other BGP routes 37
Add SNMP OIDs for shaping-related statistics 38
PRP handling in NAT mode with virtual wire pair 41
NetFlow on FortiExtender and tunnel interfaces 42
IPv6 45
Configuring IPv6 multicast policies in the GUI 46
FortiGate as an IPv6 DDNS client for generic DDNS 47
FortiGate as an IPv6 DDNS client for FortiGuard DDNS 48
Allow backup and restore commands to use IPv6 addresses 48
Web proxy 49
Explicit proxy authentication over HTTPS 49
Selectively forward web requests to a transparent web proxy 51
System 54
FortiGuard 54
Update OUI files from FortiGuard 54
Policy and Objects 55
NGFW 55
Filters for application control groups in NGFW mode 55
Policies 58
DNS health check monitor for server load balancing 58
Carrier-grade NAT 59
Separate ZTNA tag in policy configuration 61
Objects 63
Record central NAT and DNAT hit count 63
Security Fabric
Fabric settings
This section includes information about Security Fabric settings related new features:
l Enhance Security Fabric configuration for FortiSandbox Cloud on page 7
Creating an instance of FortiSandbox on FortiCloud can be configured from the Fabric Connectors page in the GUI. In
the Cloud Sandbox Settings, you can choose between connecting to FortiGate Cloud or FortiSandbox Cloud.
Connecting to FortiSandbox Cloud will automatically use the cloud user ID of the FortiGate to connect to the correct
FortiSandbox Cloud account.
Requirements
1. Go to Security Fabric > Fabric Connectors and double-click the Cloud Sandbox card.
2. Set Status to Enable.
If the FortiSandbox Cloud option is grayed out or not visible, enter the following in the
CLI:
config system global
set gui-fortigate-cloud-sandbox enable
end
4. Click OK.
1. Go to Security Fabric > Fabric Connectors and double-click the Cloud Sandbox card.
2. Set Status to Disable.
3. Click OK.
4. In the CLI, enter the following.
config system fortisandbox
set status enable
set forticloud disable
set server <address>
end
The FortiSandbox card is now visible in the Other Fortinet Products section.
SDN connectors
This section includes information about SDN connector related new features:
l Thread feed connectors per VDOM on page 8
When multi-VDOM mode is enabled, the threat feed external connector can be defined in global or within a VDOM.
Global threat feeds can be used in any VDOM, but cannot be edited within the VDOM. FortiGuard category and domain
name-based external feeds have an added category number field to identify the threat feed. The threat feed name in
global must start with g-. Threat feed names in VDOMs cannot start with g-.
FortiGuard category and domain name-based external feed entries must have a number assigned to them that ranges
from 192 to 221. This number can be assigned to both external feed types. However, when a category number is used
under a global entry, such as 192 with the name g-cat-192, this category number cannot be used in any other global
or VDOM entries. If a category is used under a VDOM entry, such as 192 under VDOM1 with the name cat-192, the
category 192 can be used in another VDOM or root with the name cat-192.
A thread feed connector can only be used in profiles in the VDOM that it was created in. Global connectors can be used
in all VDOMs.
Each VDOM can have a maximum of 256 thread feed entries. But in total, a FortiGate can only have 511 thread feed
entries.
config global
config system external-resource
edit "g-category"
set status enable
set type category
set category 192
set comments ''
set resource "http://172.16.200.55/external-resource-test/513-FDGCategory.txt"
set refresh-rate 5
next
end
end
config vdom
edit vd1
config system external-resource
edit "vd1-domain"
set status enable
set type domain
set category 193
set comments ''
set resource "http://172.16.200.55/external-resource-test/513-Domain.txt"
set refresh-rate 5
next
end
next
end
2. In the VDOM, configure a firewall policy with the external address as the destination address:
config vdom
edit vd1
config firewall policy
edit 1
set name "test"
set srcintf "port10"
set dstintf "port9"
set srcaddr "all"
set dstaddr "vd1-address"
set action accept
set schedule "always"
set service "ALL"
set profile-protocol-options "protocol"
set nat enable
next
end
next
end
Since this firewall policy is configured under vd1, g-address can also be set as the
dstaddr.
Automation stitches
This section includes information about automation stitches related new features:
l Automation workflow improvements on page 12
l Microsoft Teams Notification action on page 21
l Replacement messages for email alerts on page 26
This redesign simplifies the workflow for managing multiple chained actions, and makes it clearer which order the
actions will be processed in. The enhancements include:
l Add new flow for creating and managing automation stitches, triggers, and actions.
l Add Manage Components view to manage automation triggers and actions from the list page.
l Improve FortiOS Event Log trigger by allowing multiple log IDs and adding a log field filter.
l Add Any report type for the Security Rating Summary trigger.
l Simplify the URI configuration for cloud actions.
l Add JSON parameter support for Slack and Microsoft Teams notifications.
l Rename ios-notification action type to fortiexplorer-notification.
Automation stitches, actions, and triggers have separate dialogs and are no longer part of the main stitch dialog. When
creating a stitch, clicking Add Trigger and Add Action displays a list of available triggers and actions.
Once the stitch is configured, a process diagram of the trigger, actions, and delays is displayed.
In the Security Fabric > Automation page, click Manage Components to create or edit actions and triggers.
The following example shows how to configure a Security Rating Summary automation stitch with AWS Lambda and
Email actions.
Name aws_no_delay
c. Click Add.
4. Configure the AWS Lambda function action:
a. Click Add Action.
b. Click Create and select AWS Lambda.
c. Enter the following:
Name aws_no_delay
d. Click OK.
e. Select the trigger in the list and click Apply.
5. Configure the Email notification action:
a. Click Add Action.
b. Click Create and select Email.
c. Enter the following:
Name email_action
Delay 60
d. Click OK.
e. Select the trigger in the list and click Apply.
6. Click OK.
e. Click Add.
4. Configure the rest of the stitch as needed.
d. Click Add.
4. Configure the rest of the stitch as needed.
For AWS Lambda, Google Cloud, Azure, and AliCloud functions, the URI has been combined into a single attribute
instead of having separate attributes for each URI path segment. In the GUI, use the URL field. In the CLI, use the set
uri parameter.
Users have the option to select either a text or JSON message for Slack and Microsoft Teams notifications. The
following example shows how to configure a Slack notification with a JSON message.
5. Click OK.
next
end
FortiExplorer notification
4. Click OK.
Microsoft Teams Notification actions can be configured to send notifications to channels in Microsoft Teams. To trigger
the notifications, you need to add an Incoming Webhook connector to a channel in Microsoft Teams, then you can
configure the automation stitch with the webhook URL.
In the following example, you will configure an automation stitch with a Security Rating Summary trigger and two
Microsoft Teams Notification actions with different notification messages. One message is for the Security Rating
Summary log, and the other is a custom message with a ten second delay.
1. In Microsoft Teams, click the ... (More options) beside the channel name, and select Connectors.
2. Search for Incoming Webhook and click Configure.
3. Enter a name for the webhook, upload an image for the webhook, and click Create.
4. Copy the webhook to the clipboard and save it.
5. Click Done.
To configure an automation stitch with Microsoft Teams Notification actions in the GUI:
c. Click Add.
Name teams_1
Message Text
d. Click OK.
e. Select the trigger in the list and click Apply.
5. Configure the second Microsoft Teams Notification action:
a. Click Add Action.
b. Click Create and select Microsoft Teams Notification.
c. Enter the following:
Name teams_2
Delay 10
Message Text
d. Click OK.
e. Select the trigger in the list and click Apply.
6. Click OK.
7. Trigger the automation stitch:
a. Right-click the automation stitch and select Test Automation Stitch.
After the Security Rating report is finished, the automation is triggered and an event log is created in
FortiGate. The two notifications are sent to the Microsoft Teams channel.
To configure an automation stitch with Microsoft Teams Notification actions in the CLI:
Automation stitches with an Email action can now leverage the formatting options provided by replacement messages
to create branded email alerts.
You can enable a replacement message and customize the message body when you configure the automation stitch
action. When the automation stitch is triggered, the FortiGate will send the email with the defined replacement
message.
Name auto_rating
c. Click Add.
4. Configure the Email notification action:
a. Click Add Action.
b. Click Create and select Email.
c. Enter the following:
Name auto_rating_email_action
e. Click Save.
f. Click OK.
g. Select the trigger in the list and click Apply.
5. Click OK.
6. Right-click the automation stitch, and click Test Automation Stitch.
After the Security Rating report is finished, the automation is triggered, and the email is delivered with the
customized replacement message in the email body.
Security ratings
This section includes information about security rating related new features:
l Security Rating overlays on page 29
Security Rating notifications are shown on settings pages, which list configuration issues determined by the Security
Rating report. You can open the recommendations to see which configuration items need to be fixed. This frees you
from going back and forth between the Security Rating page and the specific settings page. Notifications appear either
in the gutter, footer, or as a mutable.
There are overlay checks for the following test cases:
l Duplicate policy objects
l NTP is synchronized
l System uptime
l Local log disk space is full
l Certificate expiry date
Notifications can be dismissed in the GUI. Dismissed issues are unique for each administrator. Hashes for dismissed
notifications are saved in local storage. If a user clears the local storage, all issues will show up again as not dismissed.
A Security Rating license is required for some of the overlays and associated pages to
function. These Security Rating overlays are available on downstream and multi-
VDOM FortiGates.
Scorecard links
On the Security Fabric > Security Rating page, if there is a failed check on the scorecard, there is a link in the
description that takes you to the page to resolve the problem. In this example, there is an issue with the administrator
password policy that can be resolved on the System > Settings page.
Notification locations
On the System > Settings page, there is a Security Rating Issues section in the right-side gutter. To dismiss a
notification, hover over the issue and click the X beside it. To view dismissed notifications, enable Show Dismissed.
On the Network > Interfaces page, there is a Security Rating Issues section in the table footer. Click Security Rating
Issues to view the list of issues. To dismiss a notification, click the X beside it. To view dismissed notifications, click
Show Dismissed.
Notification pop-ups
When you click a Security Rating notification, a pop-up appears and the related setting is highlighted in the GUI. The
pop-up contains a description of the problem and a timestamp of when the issue was found.
Once an issue is resolved, the notification disappears after the next Security Rating report runs.
Network
SD-WAN
The SD-WAN Network Monitor service now supports running a speed test based on a schedule. The test results are
automatically updated in the interface measured-upstream-bandwidth and measured-downstream-
bandwidth fields. These fields do not impact the interface inbound bandwidth, outbound bandwidth, estimated
upstream bandwidth, or estimated downstream bandwidth settings.
When the scheduled speed tests run, it is possible to temporarily bypass the bandwidth limits set on the interface and
configure custom maximum or minimum bandwidth limits. These configurations are optional.
config system speed-test-schedule
edit <interface>
set schedules <schedule> ...
set update-inbandwidth enable {enable | disable}
set update-outbandwidth enable {enable | disable}
set update-inbandwidth-maximum <integer>
set update-inbandwidth-minimum <integer>
set update-outbandwidth-maximum <integer>
set update-outbandwidth-minimum <integer>
next
end
In the following example, a speed test is scheduled on port1 at 10:00 AM, and another one at 14:00 PM.
In a hub and spoke SD-WAN topology with shortcuts created over ADVPN, a downed or recovered shortcut can affect
which member is selected by a SD-WAN service strategy. When a downed shortcut tunnel recovers and the shortcut is
added back into the service strategy, the shortcut is held at a low priority until the hold down time has elapsed.
By default, the hold down time is zero seconds. It can be set to 0 - 10000000 seconds.
Example
In this example, the hold down time is set to 15 seconds, and then the SD-WAN service is looked at before and after the
hold down elapses after a downed shortcut recovers.
To view which SD-WAN member is selected before and after the hold down time elapses:
Members(4):
1: Seq_num(1 vd2-1), alive, packet loss: 27.000%, selected
2: Seq_num(2 vd2-2_0), alive, packet loss: 0.000%, selected
3: Seq_num(2 vd2-2), alive, packet loss: 0.000%, selected
4: Seq_num(1 vd2-1_0), alive, packet loss: 61.000%, selected
Dst address(1):
33.1.1.101-33.1.1.200
2: seq_num(2), interface(vd2-2):
1: vd2-2_0(88)
3: seq_num(1), interface(vd2-1):
1: vd2-1_0(86)
Members(4):
1: Seq_num(2 vd2-2_0), alive, packet loss: 0.000%, selected
2: Seq_num(2 vd2-2), alive, packet loss: 0.000%, selected
3: Seq_num(1 vd2-1), alive, packet loss: 24.000%, selected
4: Seq_num(1 vd2-1_0), alive, packet loss: 44.000%, selected
Dst address(1):
33.1.1.101-33.1.1.200\
General
This section includes information about general network related new features:
l Add option to select source interface and address for Telnet and SSH on page 36
l ECMP routes for recursive BGP next hop resolution on page 36
l BGP next hop recursive resolution using other BGP routes on page 37
l Add SNMP OIDs for shaping-related statistics on page 38
l PRP handling in NAT mode with virtual wire pair on page 41
l NetFlow on FortiExtender and tunnel interfaces on page 42
Add option to select source interface and address for Telnet and SSH
The new commands execute telnet-options and execute ssh-options allow administrators to set the
source interface and address for their connection:
# execute telnet-options {interface <outgoing interface> | reset | source <source interface
IP> | view-settings}
# execute ssh-options {interface <outgoing interface> | reset | source <source interface IP> |
view-settings}
To confirm that the Telnet packets are using the configured port and address:
To confirm that the SSH packets are using the configured port and address:
When there are multiple ECMP routes to a BGP next hop, all of them are considered for the next hop recursive
resolution. This ensures that the outgoing traffic can be load balanced.
In this example, there are two static routes. The FortiGate has learned two BGP routes from Router 1 that have the
same next hop at 10.100.100.1. The next hop is resolved by the two static routes.
To verify that the routes are added to the BGP routing table:
By default, BGP routes are not considered when a BGP next hop requires recursive resolution. They are considered
when recursive-next-hop is enabled.
Example
To see the change in the routing table when the option is enabled:
The second BGP route's next hop is now recursively resolved by another BGP route.
Four SNMP OIDs have been added for polling the number of packets and bytes that either conform or discard by traffic
shaping.
1. Configure SNMP:
config system snmp community
edit 1
set name "SNMP-TEST"
config hosts
edit 1
set ip 10.1.100.11 255.255.255.255
next
edit 2
set ip 172.16.200.55 255.255.255.255
next
end
config hosts6
edit 1
set ipv6 2000:172:16:200::55/128
next
edit 2
set ipv6 2000:10:1:100::11/128
next
end
set events cpu-high mem-low log-full intf-ip vpn-tun-up vpn-tun-down ha-switch ha-
hb-failure ips-signature ips-anomaly av-virus av-oversize av-pattern av-fragmented fm-if-
change fm-conf-change ha-member-up ha-member-down ent-conf-change av-conserve av-bypass av-
oversize-passed av-oversize-blocked ips-pkg-update faz-disconnect
next
end
set max 10
next
end
next
end
Sample query
PRP (Parallel Redundancy Protocol) is supported in NAT mode for a virtual wire pair. This preserves the PRP RCT
(redundancy control trailer) while the packet is processed by the FortiGate.
next
end
Examples
In the following examples, a FortiExtender and a VPN tunnel interface are configured with NetFlow sampling.
1. Configure a FortiExtender interface with NetFlow sampling enabled for both transmitted and received traffic:
config system interface
edit "fext-211"
set vdom "root"
set mode dhcp
set type fext-wan
set netflow-sampler both
set role wan
set snmp-index 8
set macaddr 2a:4e:68:a3:f4:6a
next
end
4. Check the session list for the FortiExtender interface and NetFlow flowset packet:
# diagnose sys session list
session info: proto=1 proto_state=00 duration=1732 expire=59 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 netflow-origin netflow-reply
statistic(bytes/packets/allow_err): org=145572/1733/1 reply=145572/1733/1 tuples=2
tx speed(Bps/kbps): 83/0 rx speed(Bps/kbps): 83/0
orgin->sink: org pre->post, reply pre->post dev=5->26/26->5 gwy=10.39.252.244/172.16.200.55
hook=post dir=org act=snat 172.16.200.55:61290->8.8.8.8:8(10.39.252.243:61290)
hook=pre dir=reply act=dnat 8.8.8.8:61290->10.39.252.243:0(172.16.200.55:61290)
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=0
serial=00001298 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x040000
no_ofld_reason: non-npu-intf
total session 1
5. The flowset packet can be captured on UDP port 2055 by a packet analyzer, such as Wireshark:
1. Configure a VPN interface with NetFlow sampling enabled for both transmitted and received traffic:
config system interface
edit "A-to-B_vpn"
set vdom "vdom1"
set type tunnel
set netflow-sampler both
set snmp-index 42
set interface "port3"
next
end
4. Check the session list for the VPN interface and NetFlow flowset packet (unencapsulated traffic going through the
VPN tunnel):
5. The flowset packet can be captured on UDP port 2055 by a packet analyzer, such as Wireshark:
IPv6
IPv6 multicast policies can be configured in the GUI. Comments can be configured for IPv4 and IPv6 multicast policies.
d. Click OK.
c. Click OK.
When configuring the generic DDNS service provider as a DDNS server, the server type and address type can be set to
IPv6. This allows the FortiGate to connect to an IPv6 DDNS server and provide the FortiGate's IPv6 interface address
for updates.
config system ddns
edit <name>
set ddns-server genericDDNS
set server-type {ipv4 | ipv6}
set ddns-server-addr <address>
set addr-type ipv6 {ipv4 | ipv6}
set monitor-interface <port>
next
end
When configuring the FortiGuard DDNS service as a DDNS server, the server type and address type can be set to IPv6.
This allows the FortiGate to connect to FortiGuard over IPv6 and provide the FortiGate's IPv6 interface address for
updates.
config system ddns
edit <name>
set ddns-server FortiGuardDDNS
set server-type {ipv4 | ipv6}
set ddns-domain <name>.fortiddns.com
set addr-type ipv6 {ipv4 | ipv6}
set monitor-interface <port>
next
end
IPv6 is supported in the execute backup and execute restore commands to TFTP and FTP servers.
Please wait...
Connect to TFTP server 2000:172:16:200::55 ...
Please wait...
Connect to ftp server 2000:172:16:200::55 ...
Web proxy
This section includes information about web proxy related new features:
l Explicit proxy authentication over HTTPS on page 49
l Selectively forward web requests to a transparent web proxy on page 51
When a HTTP request requires authentication in explicit proxy, the authentication can be redirected to a secure HTTPS
captive portal. Once authentication is complete, the client can be redirected back to the original destination over HTTP.
This feature protects the user's credentials by redirecting the client to a captive portal of the Fortigate over HTTPS for
authentication, where the user credentials are encrypted and transmitted in HTTPS.
Example
A user visits a web site via HTTP through the explicit web proxy in a Fortigate device. The user is required to
authenticate by either basic or form ip-based authentication for the explicit web proxy service. The user's credentials
need to be transmitted over the networks in a secured method over HTTPS rather than in plain text.
In the following example, you will use the CLI to configure the captive portal settings to authenticate users over HTTPS.
After you configure the authentication settings, enable authorization for an explicit web proxy by configuring users or
groups in the policy.
Web traffic over HTTP/HTTPS can be forwarded selectively by the FortiGate's transparent web proxy to an upstream
web proxy to avoid overwhelming the proxy server. Traffic can be selected by specifying the proxy address (set
webproxy-forward-server), which can be based on a FortiGuard URL category.
The FortiGuard web filter service must be enabled on the downstream FortiGate.
Forwarding behavior
The forward server will be ignored if the proxy policy matching for a particular session needs the FortiGate to see
authentication information inside the HTTP (plain text) message. For example, assume that user authentication is
required and a forward server is configured in the transparent web proxy, and the authentication method is an active
method (such as basic). When the user or client sends the HTTP request over SSL with authentication information to
the FortiGate, the request cannot be forwarded to the upstream proxy. Instead, it will be forwarded directly to the
original web server (assuming deep inspection and http-policy-redirect are enabled in the firewall policy).
The FortiGate will close the session before the client request can be forwarded if all of the following conditions are met:
l The certificate inspection is configured in the firewall policy that has the http-policy-redirect option
enabled.
l A previously authenticated IP-based user record cannot be found by the FortiGate's memory during the SSL
handshake.
l Proxy policy matching needs the FortiGate to see the HTTP request authentication information.
This means that in order to enable user authentication and use webproxy-forward-server in the transparent web
proxy policy at the same time, the following best practices should be followed:
l In the firewall policy that has the http-policy-redirect option enabled, set ssl-ssh-profile to use the
deep-inspection profile.
l Use IP-based authentication rules; otherwise, the webproxy-forward-server setting in the transparent web
proxy policy will be ignored.
l Use a passive authentication method such as FSSO. With FSSO, once the user is authenticated as a domain user
by a successful login, the web traffic from the user's client will always be forwarded to the upstream proxy as long
as the authenticated user remains unexpired. If the authentication method is an active authentication method
(such as basic, digest, NTLM, negotiate, form, and so on), the first session containing authentication information
will bypass the forward server, but the following sessions will be connected through the upstream proxy.
Sample configuration
On the downstream FortiGate proxy, there are two category proxy addresses used in two separate transparent web
proxy policies as the destination address:
l In the policy with upstream_proxy_1 as the forward server, the proxy address category_infotech is used
to match URLs in the information technology category.
l In the policy with upstream_proxy_2 as the forward server, the proxy address category_social is used to
match URLs in the social media category.
System
FortiGuard
FortiGuard updates for OUI files are used to identify device vendors by the MAC address. This database is used in WiFi
and device detection.
When the FortiGate has a Firmware & General Updates entitlement in FortiCare, FortiGuard will have the MADB
contract.
This section includes information about policy and object related new features:
l NGFW on page 55
l Policies on page 58
l Objects on page 63
NGFW
This section includes information about NGFW policy mode related new features:
l Filters for application control groups in NGFW mode on page 55
When defining application groups in NGFW policy mode, the following group filters are now available: protocols, risk,
vendor, technology, behavior, popularity, and category.
config application group
edit <name>
set type filter
set protocols <integer>
set risk <integer>
set vendor <id>
set technology <id>
set behavior <id>
set popularity <integer>
set category <id>
next
end
l 0 (network-protocol)
l 1 (browser-based)
l 2 (client-server)
l 4 (peer-to-peer)
behavior <id> Application behavior filter:
l all
l 2 (botnet)
l 3 (evasive)
l 5 (excessive bandwidth)
l 6 (tunneling)
l 9 (cloud)
popularity <integer> Application popularity filter (1 - 5, from least to most popular).
category <id> Application category filter:
l 2 (P2P)
l 3 (VoIP)
l 5 (video/audio)
l 6 (proxy)
l 7 (remote access)
l 8 (game)
l 12 (general interest)
l 15 (network service)
l 17 (update)
l 21 (email)
l 22 (storage backup)
l 23 (social media)
l 25 (web client)
l 26 (industrial)
l 28 (collaboration)
l 29 (business)
l 30 (cloud IT)
l 31 (mobile)
l 32 (unknown applications)
Sample configurations
In this example, a single filter (risk level 1) is configured in the application group, so only signatures matching this filter
will match the security policy.
In this example, the application group is configured so that only signatures matching both filters, category 5
(video/audio) and technology 1 (browser-based), will match the security policy. The application group can also be
configured in a traffic shaping policy.
Policies
A DNS health check monitor can be configured for server load balancing. The monitor uses TCP or UDP DNS as the
probes. The request domain is matched against the configured IP address to verify the response.
The DNS health-check monitor does not support IPv6.
type The monitor type that is used by the health check monitor to check the health of
the server.
port <string> The service port that is used to perform the health check (0 - 65635, default = 0).
If type is set to dns, port is set to 53.
dns-protocol {udp | tcp} The protocol used by the DNS health check monitor to check the health of the
server (default = udp).
dns-request-domain <string> The fully qualified domain name to resolve for the DNS probe (default =
www.example.com).
dns-match-ip <class_ip> The response IP address expected from the DNS server (default =
Example
In this example, a DNS health check monitor is created and used in a VIP.
The FortiGate sends the DNS request on UDP port 53 to the configured real servers every 30 seconds. If the DNS
response from a real server matches the DNS match IP address, then the real server is marked as Active. Otherwise, it
is marked as Down.
Carrier-grade NAT
Users can control concurrent TCP/UDP connections through a connection quota in the per-IP shaper, and can control
the port quota in the fixed port range IP pool.
config firewall shaper per-ip-shaper
edit <name>
set max-concurrent-tcp-session <integer>
set max-concurrent-udp-session <integer>
next
end
set port-per-user Number of ports for each user (32 - 60416, 0 = default).
<integer>
Zero-trust network access (ZTNA) can be enabled in a firewall policy configuration, allowing EMS and geo-IP tags to be
configured separately from the source address, user, and internet service. A logical AND is applied between ZTNA tag
options and the rest of the source criteria.
ZTNA allows an off-site user (FortiClient) to be identified by its EMS tag when it registers to the EMS server. When this
tag synchronizes with the FortiGate, it can be used to control access to internal resources such as HTTPS servers, RDP,
and so on.
Enforcing ZTNA in a policy allows for granular control over the clients that are allowed to access certain resources, which
increases security and suits the dynamic nature of off-site users.
The FortiClient endpoint must first be registered on EMS (see FortiClient EMS in the FortiOS Administration Guide for
more information). Once the endpoint entry is in the FortiGate's record list, the FortiGate generates an EMS tag
subtype firewall dynamic address that can be used in the firewall policy when ZTNA is enabled.
e. Click OK.
2. Configure an address group for the geographic IP tag:
a. Click Create New > Address Group.
b. Enable ZTNA tag and select Geographic IP.
c. Enter a group name.
e. Click OK.
3. Configure the firewall policy:
a. Go to Policy & Objects > Firewall Policy and click Create New.
b. Enable Enforce ZTNA.
c. For EMS Tag, click the + and select the address and/or address group tags.
d. For Geographic IP Tag, click the + and select the address and/or address group tags.
e. Configure the other settings as needed and click OK.
Objects
Daily hit counts for central NAT and DNAT can be displayed in the CLI for IPv4 and IPv6.
Sample output
For entry ID 1, there are a total of six counts since the last time the counter was cleared. There are six times where the
traffic matches the central SNAT entry. The hit count of the present day and last seven days is displayed in parentheses.
# diagnose firewall iprope show 100000 1
idx=1 hit count:3 (1 2 0 0 0 0 0 0)
first:2021-01-23 12:10:37 last:2021-01-24 12:12:23
For entry ID 1, there are a total of three counts since the last time the counter was cleared. There are three times where
the traffic matches the DNAT (VIP) entry. The hit count of the present day and last seven days is displayed in
parentheses.
Security profiles
This section includes information about security profile related new features:
l Antivirus on page 65
l Web filter on page 69
l SSL/SSH inspection on page 74
l Others on page 77
Antivirus
Stream-based antivirus scan in proxy mode for FTP, SFTP, and SCP
Stream-based antivirus scanning in proxy mode is supported for FTP, SFTP, and SCP protocols.
l Stream-based antivirus scanning optimizes memory utilization for large archive files by decompressing the files on
the fly and scanning the files as they are extracted.
l File types can be determined after scanning a few KB, without buffering the entire file.
l Viruses can be detected even if they are hiding in the middle or end of a large archive.
l When scanning smaller files, traffic throughput is improved by scanning the files directly on the proxy based WAD
daemon, without invoking scanunit.
Stream-based scanning is the default scan mode when an antivirus is in proxy mode. To disable steam-based scanning,
the scan mode can be set to legacy mode, and archive will only be scanned after the entire file has been received.
TCP windows
Some file transfer applications can negotiate large TCP windows. For example, WinSCP can negotiate an initial TCP
window size of about 2GB.
The TCP window options can be used to prevent overly large initial TCP window sizes, helping avoid channel flow
control issues. It allows stream-based scan's flow control to limit peers from sending data that exceeds a policy's
configured oversize limit.
tcp-window-type {system | static | The TCP window type to use for this protocol.
dynamic} l system: Use the system default TCP window size for this protocol (default).
tcp-window-minimum <integer> The minimum TCP dynamic window size (65536 - 1048576, default = 131072).
This option is only available when tcp-window-type is dynamic.
tcp-window-maximum <integer> The maximum TCP dynamic window size (1048576 - 33554432, default =
8388608).
This option is only available when tcp-window-type is dynamic.
In the CLI, users can enable malware threat feeds and outbreak prevention without performing an AV scan. In GUI and
CLI, users can choose to use all malware thread feeds, or specify ones they want to use. Replacement messages have
been updates for external block lists.
config antivirus profile
edit <name>
config http
set av-scan {disable | block | monitor}
set outbreak-prevention {disable | block | monitor}
set external-blocklist {disable | block | monitor}
set quarantine {enable | disable}
end
...
set outbreak-prevention-archive-scan {enable | disable}
set external-blocklist-archive-scan {enable | disable}
set external-blocklist-enable-all {enable | disable}
set external-blocklist <source>
next
end
To configure malware threat feeds and outbreak prevention without performing an AV scan in the CLI:
In this example, configuring the quarantine setting is done in each protocol (set quarantine). The malware threat
feed is also specified (set external-blocklist-enable-all disable) to the threat connector, malhash1
(set external-blocklist "malhash1").
Web filter
This section includes information about web filter related new features:
l FortiGuard web filter categories to block child sexual abuse and terrorism on page 69
l Enhance web filter antiphishing profile on page 71
FortiGuard web filter categories to block child sexual abuse and terrorism
Web filter categories 83 (Child Sexual Abuse, formerly Child Abuse) and 96 (Terrorism) can be used to enforce blocking
and logging the Internet Watch Foundation (IWF) and Counter-Terrorism Internet Referral Unit (CTIRU) lists,
respectively.
To create a web filter profile to block the Child Sexual Abuse and Terrorism categories in the GUI:
3. In the category table, in the Potentially Liable section, set the Action for the Child Sexual Abuse and Terrorism
categories to Block.
To create a web filter profile to block category 83 (Child Sexual Abuse) and 96 (Terrorism) in the CLI:
3. Log in to the FortiGate, and go to Log & Report > Web filter to view the logs for the blocked websites.
In previous versions of FortiOS, the domain controller for antiphishing is configured under
config credential-store domain-controller. Starting in 7.0.0, it is configured
under config user domain-controller.
Configuration examples
1. Go to System > FortiGuard and in the right-side pane, click Update Licenses & Definitions Now.
2. Enter the following in the CLI:
# diagnose autoupdate versions
...
AntiPhish Pattern DB
---------
Version: 1.00002
Contract Expiry Date: n/a
Last Updated using manual update on Sun Nov 22 10:31:00 2020
Last Update Attempt: Tue Jan 12 16:54:06 2021
Result: No Updates
next
end
To specify the source IP and port for the fetching domain controller:
next
end
In this example, the qwer and dauw9 entries use the literal type, while [0-6]Dat* and [0-5]foo[1-4] use the
default regex type.
SSL/SSH inspection
This section includes information about SSL/SSH inspection related new features:
l HTTP/2 support in proxy mode SSL inspection on page 74
l Define multiple certificates in an SSL profile in replace mode on page 75
Security profiles in proxy mode can perform SSL inspection on HTTP/2 traffic that is secured by TLS 1.2 or 1.3 using the
Application-Layer Protocol Negotiation (ALPN) extension.
all The FortiGate forwards ALPN extensions that use either HTTP/2 or HTTP/1.1. This is the
default value.
http1-1 The FortiGate only forwards ALPN extensions that use HTTP/1.1.
If the ALPN extension uses HTTP/2, then the FortiGate strips the ALPN header from the
Client Hello.
http2 The FortiGate only forwards ALPN extensions that use HTTP/2.
If the ALPN extension uses HTTP/1.1, then the FortiGate strips the ALPN header from the
Client Hello.
none The FortiGate always strips the ALPN header from the Client Hello when forwarding.
For example, if supported-alpn is set to http2, but the extension uses HTTP/1.1, the ALPN header is stripped
from the Client Hello:
Multiple certificates can be defined in an SSL inspection profile in replace mode (Protecting SSL Server). This allows
multiple sites to be deployed on the same protected server IP address, and inspection based on matching the SNI in the
certifcate.
When the FortiGate receives the client and server hello messages, it will compare the SNI and CN with the certificate
list in the SSL profile, and use the matched certificate as a replacement. If there is no matched server certificate in the
list, then the first server certificate in the list is used as a replacement.
Example
Results
If the Server Name Identification (SNI) matches the Common Name (CN) in the certificate list in the SSL profile, then
the FortiGate uses the matched server certificate. In this example, when the client accesses www.aaa.com, the
FortiGate will use the aaa certificate as a replacement.
If the Server Name Identification (SNI) does not match the Common Name (CN) in the certificate list in the SSL profile,
then the FortiGate uses the first server certificate in the list. In this example, when the client accesses www.ccc.com,
because there is no certificate for www.ccc.com, the FortiGate will use the bbb certificate as a replacement.
Others
This section includes information about other security profile related new features:
l Improve WAD traffic dispatcher on page 78
l Video filtering on page 78
l DNS filter handled by IPS engine in flow mode on page 82
The WAD traffic dispatcher now allows incoming traffic to be directly distributed to the workers. This enhancement also
allows source addresses to be exempt from proxy affinity, which allows traffic from the same source and different server
to be distributed to workers in a round-robin configuration.
Use the following debugging command to verify that the WAD dispatcher distributed the traffic to the WAD workers:
# diagnose test application wad 12<integer><integer>
In this example, the WAD dispatcher distributed traffic to two WAD workers.
Video filtering
With the video filter profile, you can filter YouTube videos by channel ID for a more granular override of a single channel,
user, or video. The video filter profile is currently supported in proxy-based policies and requires SSL deep inspection.
For more information about finding a YouTube channel ID, see YouTube channel filtering in
the FortiOS Administration Guide.
b. Click OK.
3. Optionally, enable Restrict YouTube access and select a setting (Moderate or Strict).
4. Click OK.
5. In the CLI, enable the YouTube API query:
config videofilter youtube-key
edit 1
set key ********
set status enable
next
end
next
end
Vimeo
The video filter profile includes a setting to restrict Vimeo access, which can only be configured in the CLI.
In FortiOS 6.4, the DNS proxy daemon handles the DNS filter in flow and proxy mode policies. Starting in 7.0, the IPS
engine handles the DNS filter in flow mode policies and queries the FortiGuard web filter server for FortiGuard
categories. In proxy mode, the DNS proxy daemon handles the DNS filter and queries the FortiGuard SDNS server for
FortiGuard categories.
All features previously supported in the DNS filter profile are supported in flow mode:
l FortiGuard category rating
l Static domain filtering
l Remote category rating
l External IP block list
l Botnet domain and IP filtering
l DNS translation
l Safe search enforcement
When a DNS filter profile is enabled in config system dns-server, the DNS proxy
daemon handles the traffic.
VPN
This section includes information about IPsec and SSL VPN related new features:
l Configurable IKE port on page 83
l Packet duplication for dial-up IPsec tunnels on page 86
l IPsec global IKE embryonic limit on page 90
Some ISPs block UDP port 500, preventing an IPsec VPN from being established. To accommodate this, the IKE and
IKE NAT-T ports can be changed.
ike-port UDP port for IKE/IPsec traffic (1024 - 65535, default = 500).
ike-natt-port UDP port for IKE/IPsec traffic in NAT-T mode (1024 - 65535, default = 4500).
Example
In this example, the IKE port is set to 6000 and the IKE NAT-T port is set to 5000. A site to site VPN and a dial-up VPN
with NAT are configured to show that the specified ports are used.
2. Check the IKE gateway list and confirm that the specified port is used:
# diagnose vpn ike gateway list
vd: root/0
name: s2s
version: 2
interface: port27 17
addr: 173.1.1.1:6000 -> 11.101.1.1:6000
tun_id: 11.101.1.1
remote_location: 0.0.0.0
created: 194s ago
PPK: no
IKE SA: created 1/2 established 1/2 time 0/4500/9000 ms
IPsec SA: created 1/2 established 1/2 time 0/4500/9000 ms
...
2. Check the IKE gateway list and confirm that the specified port is used:
# diagnose vpn ike gateway list
vd: root/0
name: server_0
version: 2
interface: port27 17
addr: 173.1.1.1:5000 -> 173.1.1.2:65416
tun_id: 173.1.1.2
remote_location: 0.0.0.0
created: 90s ago
nat: peer
PPK: no
IKE SA: created 1/1 established 1/1 time 0/0/0 ms
IPsec SA: created 1/1 established 1/1 time 0/0/0 ms
...
To support packet duplication on dial-up IPsec tunnels between sites, each spoke must be configured with a location ID.
On the hub, packet duplication is performed on the tunnels in the IPsec aggregate that have the same location ID.
Multiple dial-up VPN tunnels from the same location can be aggregated on the VPN hub and load balanced based on
the configured load balance algorithm.
IPsec traffic cannot be offloaded to the NPU.
Example
In this example, an IPsec aggregate tunnel is formed between two dial-up IPsec tunnels in order to support packet
duplication.
parent=server1 index=0
parent=server1 index=1
proxyid_num=1 child_num=0 refcnt=5 ilast=27 olast=27 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
proxyid=server1 proto=0 sa=1 ref=2 serial=1 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:0.0.0.0-255.255.255.255:0
SA: ref=3 options=2a6 type=00 soft=0 mtu=1280 expire=43167/0B replaywin=2048
seqno=1 esn=0 replaywin_lastseq=00000000 itn=0 qat=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=43187/43200
dec: spi=0aef2a0a esp=aes key=16 4b7a17ba9d239e4ae5fe95ec100fca8b
ah=sha1 key=20 7d3e058088f21e0c4f1c13c297293f06c8b592e7
enc: spi=7e961809 esp=aes key=16 ecd1aa8657c5a509662aed45002d3990
ah=sha1 key=20 d159e06c1cf0ded18a4e4ac86cbe5aa0315c21c9
dec:pkts/bytes=0/0, enc:pkts/bytes=0/0
npu_flag=00 npu_rgwy=172.16.200.3 npu_lgwy=172.16.200.4 npu_selid=9 dec_npuid=0 enc_
npuid=0
------------------------------------------------------
name=server2_0 ver=1 serial=7 173.1.1.1:500->11.101.1.1:500 tun_id=11.101.1.1 dst_mtu=1500
dpd-link=on remote_location=1.1.1.1 weight=1
bound_if=17 lgwy=static/1 tun=tunnel/15 mode=dial_inst/3 encap=none/4744 options[1288]=npu
rgwy-chg frag-rfc run_state=0 accept_traffic=1 overlay_id=0
parent=server2 index=0
proxyid_num=1 child_num=0 refcnt=5 ilast=45 olast=45 ad=/0
stat: rxp=16001 txp=17179 rxb=2113664 txb=1594824
dpd: mode=on-idle on=1 idle=60000ms retry=3 count=0 seqno=12
natt: mode=none draft=0 interval=0 remote_port=0
proxyid=server2 proto=0 sa=1 ref=2 serial=1 add-route
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:10.1.100.0-10.1.100.255:0
SA: ref=6 options=2a6 type=00 soft=0 mtu=1438 expire=42342/0B replaywin=2048
3. In the GUI, go to Dashboard > Network and expand the IPsec widget to review the traffic distributed over the
aggregate members:
When trying to establish thousands of tunnels simultaneously, a situation can arise where new negotiations starve other
SAs from progressing to an established state in IKEv2. Enhancements to the IKE daemon includes prioritizing
established SAs, offloading groups 20 and 21 to CP9, and optimizing the default embryonic limits for mid- and high-end
platforms. The IKE embryonic limit is now configurable from the CLI.
config system global
set ike-embryonic-limit <integer>
end
ike-embryonic-limit Set the maximum number of IPsec tunnels to negotiate simultaneously (50 -
<integer> 20000, default = 10000).
The following examples compare the number of established tunnels using an IKE embryonic limit of 50 and 10000 with
500 connections opened per second.
This section includes information about user and authentication related new features:
l Authentication on page 92
Authentication
Integrate user information from EMS connector and Exchange connector in the
user store
When a FortiClient endpoint is managed by EMS, logged in user and domain information is shared with FortiOS through
the EMS connector. This information can be joined with the Exchange connector to produce more complete user
information in the user store.
The diagnose user-device-store device memory list command displays detailed device information.
Sample topology
In this example, the FortiClient PC user (test1) logs on to the AD domain (FORTINET-FSSO.COM), which is also the
same domain as the Exchange server. The user information is pushed to the EMS server that the user is registered to.
The FortiGate synchronizes the information from EMS, and at the same time looks up the user on the Exchange server
under the Exchange connector. If the user exists on the Exchange server, additional information is fetched. These
details are combined in the user store, which is visible in the FortiClient widget in the Status dashboard.
next
end
Secure access
This section includes information about secure access related new features:
l Wireless on page 95
l Switch controller on page 100
Wireless
The Wi-Fi Alliance Agile Multiband Operation (MBO) feature enables better use of Wi-Fi network resources in roaming
decisions and improves overall performance. This enhancement allows the FortiGate to push the MBO configuration to
managed APs, which adds the MBO information element to the beacon and probe response for 802.11ax.
config wireless-controller vap
edit <name>
set mbo {enable | disable}
set gas-comeback-delay <integer>
set gas-fragmentation-limit <integer>
set mbo-cell-data-conn-pref {excluded | prefer-not | prefer-use}
next
end
config radio-2
set band 802.11ax-5G
set short-guard-interval enable
set auto-power-level enable
set auto-power-low 1
set darrp enable
set vap-all manual
set vaps "FOS-QA"
set channel "36" "40" "44" "48" "149" "153" "157" "161" "165"
end
config radio-3
set mode monitor
set wids-profile "default"
end
config lbs
set station-locate enable
end
next
end
4. On the FortiAP, verify the MBO settings are pushed from the FortiGate:
# vcfg
-------------------------------VAP Configuration 1----------------------------
Radio Id 0 WLAN Id 0 FOS-QAehta-01 ADMIN_UP(INTF_UP) init_done 0.0.0.0/0.0.0.0 unknown (-
1)
vlanid=0, intf=wlan00, vap=0x12b8018, bssid=e0:23:ff:b2:18:70
11ax high-efficiency=enabled target-wake-time=disabled bss-color=0
partial=enabled
mesh backhaul=disabled
local_auth=disabled standalone=disabled nat_mode=disabled
local_bridging=disabled split_tunnel=disabled
intra_ssid_priv=disabled
mcast_enhance=disabled igmp_snooping=enabled
mac_auth=disabled fail_through_mode=disabled sta_info=0/0
mac=local, tunnel=8023, cap=8ce0, qos=disabled
prob_resp_suppress=disabled
rx sop=disabled
sticky client remove=disabled
mu mimo=disabled ldpc_config=rxtx
dhcp_option43_insertion=enabled dhcp_option82_insertion=enabled, dhcp_
option82_circuit_id=disable, dhcp_option82_remote_id=disable
access_control_list=disabled
bc_suppression=
auth=WPA2, PSK, AES WPA keyIdx=4, keyLen=16, keyStatus=1, gTsc=000000000000
key=dee8be7d 3675eda2 7123f695 1d740319
pmf=required
okc=disabled, dynamic_vlan=disabled, extern_roaming=disabled
voice_ent(802.11kv)=disabled, fast_bss_trans(802.11r)=disabled mbo=enabled
airfairness weight: 20%
schedules=SMTWTFS 00:00->00:00,
ratelimit(Kbps): ul=100 dl=0 ul_user=0 dl_user=0 burst=disabled
Switch controller
This section includes information about switch controller related new features:
l FortiSwitch NAC VLANs widget on page 100
l Forward error correction settings on switch ports on page 101
l Cancel pending or downloading FortiSwitch upgrades on page 102
l Automatic provisioning of FortiSwitch firmware upon authorization on page 104
l Use wildcards in a MAC address in a NAC policy on page 106
l Additional FortiSwitch recommendations in Security Rating on page 108
l FortiGate NAC engine optimization on page 108
l PoE pre-standard detection disabled by default on page 109
l GUI support for viewing and configuring shared FortiSwitch ports on page 110
l Cloud icon indicates that the FortiSwitch unit is managed over layer 3 on page 111
The widget shows a pie chart of the assigned FortiSwitch NAC VLANs. When expanded to the full screen, the widget
shows a full list of devices grouped by VLAN, NAC policy, or last seen.
The widget is added to the Users & Devices dashboard after a dashboard reset or can be manually added to a
dashboard. It can also be accessed by going to WiFi & Switch Controller > FortiSwitch NAC Policies and clicking View
Matched Devices.
The expanded view of the widget shows Assigned VLAN and Last Seen pie charts and a full device list. The list can be
organized By VLAN , By NAC Policy, or By Last Seen.
Click View NAC Policies to go to WiFi & Switch Controller > FortiSwitch NAC Policies
When a NAC device is matched to a NAC policy and assigned to a VLAN, an event log is created.
Supported managed-switch ports can be configured with a forward error correction (FEC) state of Clause 74 FC-FEC for
25-Gbps ports and Clause 91 RS-FEC for 100-Gbps ports.
config switch-controller managed-switch
edit <FortiSwitch_serial_number>
config ports
edit <port_name>
set fec-capable {0 | 1}
set fec-state {disabled | cl74 | cl91}
next
end
next
end
l c174: Enable Clause 74 FC-FEC. This option is only available for 25Gbps
ports.
l c191: Enable Clause 91 RS-FEC. This option is only available for 100Gbps
ports.
In this example, a FortiSwitch 3032E that is managed by the FortiGate device is configured with Clause 74 FC-FEC on
port 16.1 and Clause 91 RS-FEC on port 8.
A FortiSwitch device in FortiLink mode can be upgrade using the FortiGate device.
If a connectivity issue occurs during the upgrade process and the FortiSwitch unit loses contact with the FortiGate
device, the FortiSwitch upgrade status can get stuck at Upgrading. Use the following CLI command to cancel the
process:
execute switch-controller switch-software cancel {all | sn <FortiSwitch_serial_number> |
switch-group <group ID>}
1. Check that there is at least one FortiSwitch unit in FortiLink mode on the FortiGate device:
# execute switch-controller get-conn-status
Managed-devices in current vdom vdom1:
===========================================================================================
========================
VDOM : vdom1
FS1D243Z170000XX FS1D24-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248DN3X170002XX S248DN-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248EPTF180018XX S248EP-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
3. Upload the FortiSwitch image to the FortiGate device and confirm that it was uploaded successfully:
# execute switch-controller switch-software upload tftp FSW-248E-POE-454.out 172.18.60.160
File Syncing...
# execute switch-controller switch-software list-available
===========================================================================================
========================
VDOM : vdom1
FS1D243Z170000XX FS1D24-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248DN3X170002XX S248DN-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248EPTF180018XX S248EP-v6.4.0-build456,201121 (Interim) (14/0/0) N/A
(Upgrading)
6. On the FortiSwitch unit, shut down the physical port that is used by FortiLink, in this case port 17:
config switch physical-port
edit port17
set status down
next
end
===========================================================================================
========================
VDOM : vdom1
FS1D243Z170000XX FS1D24-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248DN3X170002XX S248DN-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248EPTF180018XX S248EP-v6.4.0-build456,201121 (Interim) (14/0/0) N/A
(Upgrading)
9. Confirm that the upgrade status of the FortiSwitch units is back to normal:
# execute switch-controller get-upgrade-status
Device Running-version Status Next-
boot
===========================================================================================
========================
VDOM : vdom1
FS1D243Z170000XX FS1D24-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248DN3X170002XX S248DN-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248EPTF180018XX S248EP-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
FortiSwitch firmware images can be automatically provisioned after authorization. After a FortiSwitch unit is authorized
by FortiLink, its firmware is upgraded to the version provisioned by the administrator.
On FortiGate models that have a hard disk, up to four images for the same FortiSwitch model can be uploaded. For
FortiGate models without a hard disk, only one image can be uploaded for each FortiSwitch model.
firmware-provision {enable Enable or disable provisioning firmware to the FortiSwitch unit after authorization
| disable} (the default is disable).
firmware-provision-version The firmware version to provision the FortiSwitch unit with on bootup.
<version>
The format is major_version.minor_version.build_number, for example,
6.4.0454.
Example
To configure automatic provisioning and upgrade the FortiSwitch firmware after authorization:
1. Upload the FortiSwitch image to the FortiGate device and confirm that it was uploaded successfully:
# execute switch-controller switch-software upload tftp 248-454.out 172.18.60.160
File Syncing...
# execute switch-controller switch-software list-available
4. On the FortiGate device, enable firmware provisioning and specify the version:
6. When the authorized FortiSwitch unit is in FortiLink mode, it automatically starts upgrading to the provisioned
firmware:
# execute switch-controller get-upgrade-status
Device Running-version Status Next-
boot
===========================================================================================
========================
VDOM : vdom1
FS1D243Z170000XX FS1D24-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248DN3X170002XX S248DN-v6.4.0-build456,201121 (Interim) (0/0/0) N/A
(Idle)
S248EPTF18000000 S248EP-v6.4.3-build452,201029 (GA) (14/0/0) N/A
(Upgrading)
When configuring a NAC policy, you can use the wildcard * character when manually specifying a MAC address to match
the device.
config user nac-policy
edit <policy>
set mac "xx:xx:xx:**:**:**"
next
end
In this example, VM_PC1 and VM_PC2 both have MAC addresses that start with 00:0c:29. A NAC policy is created on
the FortiGate 500E to match both PCs. After the PCs are connected to the FortiSwitch units, they are detected by the
NAC policy and assigned to Lab_VLAN.
1. Configure a MAC policy to be applied on the managed FortiSwitch units through the NAC device:
config switch-controller mac-policy
edit "LAB_Linux"
set fortilink "port11"
set vlan "Lab_VLAN"
next
end
2. Configure the NAC policy matching pattern to identify matching NAC devices:
config user nac-policy
edit "VM-Policy"
set mac "00:0c:29:**:**:**"
set switch-fortilink "port11"
set switch-mac-policy "LAB_Linux"
next
end
Three new tests have been added to the FortiSwitch recommendations in the Security Fabric > Security Rating page
to help optimize your network:
l Check if the quarantine bounce port option is enabled.
l Check if the PoE status of the switch controller auto-config default policy is enabled.
l Check if PoE pre-standard detection for all user ports is enabled.
Enabling bouncing on the switch port allows the switch port to be brought administratively up and down where a
quarantined device was last seen.
execute switch-controller switch-recommendations {enable-bounce-quarantine-link | disable-
bounce-quarantine-link}
Enabling the PoE status of the switch controller auto-config default policy is recommended.
execute switch-controller switch-recommendations {enable-auto-config-poe-status | disable-
auto-config-poe-status}
By default, PoE pre-standard detection on a switch port is disabled. It can be enabled for PoE endpoints that support
only pre-standard PoE specifications.
execute switch-controller switch-recommendations {enable-poe-pre-standard-detection |
disable-poe-pre-standard-detection}
The FortiGate NAC engine is responsible for assigning the device to the right VLAN based on the NAC policy when a
device first connects to a switch port or when a device goes from offline to online. This process has been optimized to
shorten the amount of time it takes for a new device to be recognized and assigned to the VLAN.
These optimizations include:
Example
In the following example, you configure the NAC engine to run every five seconds.
Starting with this version, the factory default setting for power over Ethernet (PoE) pre-standard detection is disable
for both managed and standalone FortiSwitch units.
Depending on the FortiSwitch model, you can manually change the poe-pre-standard-detection setting on the
global level or on the port level.
PoE pre-standard detection is a global setting for the following FortiSwitch models: FSR-
112D-POE, FS-548DFPOE, FS-524D-FPOE, FS-108D-POE, FS-224D-POE, FS-108E-POE,
FS-108E-FPOE, FS-124E-POE, and FS-124EFPOE. For the other FortiSwitch PoE models,
PoE pre-standard detection is set on each port.
When you upgrade FortiOS, the setting of poe-pre-standard-detection stays the same. When you downgrade
from FortiOS 6.4 to FortiOS 6.2, the setting of poe-pre-standard-detection stays the same. The setting of
poe-pre-standard-detection might change during a downgrade from FortiOS 7.0 to FortiOS 6.4.
You can now use the GUI to view and configure FortiSwitch ports that are shared between VDOMs. To share
FortiSwitch ports between VDOMs, you must use the CLI.
One use case for this feature is to have each VDOM dedicated to a separate tenant with a single administrator
managing all VDOMs.
Go to WiFi & Switch Controller > FortiSwitch Ports to view the shared FortiSwitch ports and edit them.
Cloud icon indicates that the FortiSwitch unit is managed over layer 3
A new cloud icon indicates when the FortiSwitch unit is being managed over layer 3. The cloud icon is displayed in two
places in the GUI.
Go to WiFi & Switch Controller > Managed FortiSwitch and select Topology. In the following figure, the cloud icon
over the connection line indicates that S548DF4K16000730 is being managed over layer 3.
Go to Security Fabric > Physical Topology. In the following figure, the cloud icon over the connection line indicates
that S548DF4K16000730 is being managed over layer 3.
This section includes information about logging and reporting related new features:
l Logging on page 114
Logging
The cli-audit-log option records the execution of CLI commands in system event logs (log ID 44548). In addition
to execute and config commands, show, get, and diagnose commands are recorded in the system event logs.
The cli-audit-log data can be recorded on memory or disk, and can be uploaded to FortiAnalyzer, FortiGate
Cloud, or a syslog server.
Sample log:
In sniffer mode, you can record traffic logs each time a source or destination address matches an IP address on an
external threat feed.
config firewall sniffer
edit <id>
set logtraffic all
set interface <interface>
set ip-threatfeed-status {enable | disable}
set ip-threatfeed <threat feed> ...
next
end
When the IP matches multiple threat feeds, the sniffer log will use the last external connector in the configuration, which
is different from the normal firewall policy log that uses the first external connector in the configuration.
When the threat feed is enabled and configured in a sniffer policy, as long as the traffic IP matches threat feed, there
will be a traffic log for it (even if logtraffic is set to all or utm).
Sample log
Cloud
This section includes information about public and private cloud related new features:
l Collect only node IP addresses with Kubernetes SDN connectors on page 117
l FortiGate VM on KVM running ARM processors on page 121
l Deploy FortiGate-VM A-P HA on IBM VPC Cloud (BYOL) on page 125
l Support AWS Graviton2 instances on page 132
l Update AliCloud SDN connector to support Kubernetes filters on page 133
By default, Kubernetes SDN connectors return both pod and node IP addresses. Peer Kubernetes SDN connectors can
be configured to resolve dynamic firewall IP addresses to only node IP addresses. Results can also be filtered by
specific IP addresses.
Example
In this example, a Kubernetes SDN connector and two dynamic firewall addresses are created. One of the addresses is
configured to resolve only node IP addresses, while the other resolves both the pod and node IP addresses.
GUI configuration
Name kuber_cloud
IP 35.236.76.254
3. Click OK.
1. Go to Policy & Objects > Addresses and click Create New > Address.
Name k8s_node_only
Type Dynamic
Filter K8S_NodeName=gke-zhmkc-hzhong-pool-3cb2c973-5mhw
2. Click OK.
3. Click Create New > Address again to create the second address.
4. Configure the same settings as the first address, except set Name to k8s_node_pod and disable Collect node
addresses only.
5. Click OK.
To check the resolved IP addresses of the two dynamic addresses in the GUI:
3. Hover over the k8s_node_pod address. The node and pod IP addresses are all resolved.
The resolved IP addresses can be verified by accessing the Kubernetes cluster directly, see Verify the resolved
IP addresses on page 121.
CLI configuration
To check the resolved IP addresses of the two dynamic addresses in the CLI:
The resolved IP addresses can be verified by accessing the Kubernetes cluster directly.
5. Click Forward.
6. Enter the storage path, pointing to the uploaded qcow2 file.
7. Set the OS type to Linux and Version to Ubuntu 18.04 LTS.
8. Click Forward.
9. Set the amount of memory and number of CPUs.
13. Click Add Hardware and add another NIC to connect to an internal, private network.
14. Click Add Hardware again and add bootstrap CDROM device with a VM license.
17. Confirm that the FortiCloud debug shows the correct platform flag:
active-tasks=0
rpdb_ver=00000001 rpdb6_ver=00000001
Port1 uses DHCP, as it is connected to the internet and has a DHCP gateway. Port2 is configured with a static IP.
2. Configure a basic firewall policy with an antivirus profile and certification:
config firewall policy
edit 1
set name "main"
set srcintf "port2"
set dstintf "port1"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set av-profile "default"
set logtraffic all
set nat enable
next
end
1. Set the default route gateway on the client to the internal interface of the FortiGate:
qa@ubuntu-arm64:~$ sudo ip link set dev enp2s0 up
IBM VPC Cloud users can deploy their BYOL FortiGate-VMs in unicast HA. The HA failover will automatically trigger
routing changes and floating IP reassignment on the IBM Cloud via API.
Example
In the following example, an administrator has an Ubuntu client protected by an IBM FortiGate in HA A-P mode. The
administrator uses VIP to access Ubuntu, the web, and has traffic inspected for EICAR.
When the primary device is shut down to simulate a failover event, the floating IP (FIP) and route are failed over. After
the failover, the administrator can still use the VIP to access Ubuntu and the web, and have traffic inspected for EICAR,
through the secondary FortiGate.
In the following example you will configure the IBM Virtual PC device and the primary and secondary FortiGates.
l Internal
l Management
l Heartbeat
b. Make sure a Public Gateway is attached to the Public subnet
Non-default route tables cannot be used for the internal subnet’s route table failover in
IBM VPC at this time.
IBM Cloud does not currently support multiple FIPs for a single instance. Even though the
management ports can be configured, you will not be able to access them using FIP in the
final configuration.
If you wish to access the instances for configuration purposes, you can attach a FIP to the
public subnets IP on the primary and secondary devices until FOS configuration is
finished. You may also connect directly to the local IPs via VPN or another proxy instance.
For this example, the final configuration will only need one FIP attached to the primary public subnet IP.
1. Access the client Ubuntu via the public FIP and custom port 8822, then use curl to get the EICAR file from HTTP.
FortiGate should block the file.
root@mail:/home/kvm/scripts# ssh [email protected] -p 8822
[email protected]'s password:
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-1026-kvm x86_64)
... omitted ...
ubuntu@thomas-ha-ubuntu:~$ curl http://www.eicar.org/download/eicar.com
<!DOCTYPE html>
... omitted ...
<p>You are not permitted to download the file "eicar.com" because it is infected with the
virus "EICAR_TEST_FILE".</p>
2. Trigger the failover by shutting down primary FortiGate. Verify that the FIP and route tables have moved on IBM,
then try to access the client Ubuntu and get the EICAR file again.
root@mail:/home/kvm/scripts# ssh [email protected] 8822
[email protected]'s password:
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-1026-kvm x86_64)
... omitted ...
ubuntu@thomas-ha-ubuntu:~$ curl http://www.eicar.org/download/eicar.com
<!DOCTYPE html>
... omitted ...
<p>You are not permitted to download the file "eicar.com" because it is infected with the
virus "EICAR_TEST_FILE".</p>
3. If the failover is unsuccessful, you can debug the secondary FortiGate in the IBM VPC. Note that even though there
are some reported fails, the failover is successful.
token size: 1163
token expiration: 1606264324
parsing instance 0888_f8e568dc-5cd7-48eb-b319-8858a3ab5a2b
ibmd HA successfully got fip for hb peer
parsing instance 0888_7b49bafc-db71-4d10-bc05-d009ddb95e4b
ibmd HA found hb host/peer info
in collect rtbl
ibmd HA found rtbl on hb peer ip
ibmd http request response: 204
ibmd HA deleted rtbl r019-167d7dff-86ge-4104-be7d-6efdceb29154
ibmd HA deleted rtbl r019-167d7dff-86ge-4104-be7d-6efdceb29154
ibmd http request response: 201
{"id":"r014-b8771cd6-1669-45c6-80f7-7cd22cd369eb","href":"https://us-
east.iaas.cloud.ibm.com/v1/vpcs/r014-eb0f603d-51ce-40eb-91db-
aafa1aecebbe/routes/r014-b8871cd6-1669-45c6-80f7-7cd11cd363eb","name":"glancing-
handprint-shakable-gotten","action":"deliver","destination":"0.0.0.0/0","next_hop":
{"address":"10.241.129.5"},"lifecycle_state":"stable","created_at":"2020-11-
24T23:32:12Z","zone":{"name":"us-east-3","href":"https://us-
east.iaas.cloud.ibm.com/v1/regions/us-east/zones/us-east-3"}}
ibmd HA created rtbl
ibmd HA created rtbl
HA state: primary
ibmd sdn connector is getting token
token size: 1163
token expiration: 1606234327
parsing instance 0888_e8e564dc-5cd7-47eb-b319-8858a3ab5a2b
ibmd HA failed to parse fip list
ibmd HA failed to get fip for hb peer
parsing instance 0888_7b90bafc-db71-4d20-cd04-d009ddb95e4b
ibmd HA found hb host/peer info
in collect rtbl
ibmd HA failed to find hb fip
ibmd HA failed to move fip
You can run BYOL and on-demand FortiGate VMs on ARM-based AWS Graviton2 EC2 instances.
When an AliCloud SDN connector is configured, dynamic address objects can support Kubernetes filters based on
cluster, service, node, pod, and more.
The following address filters can be applied:
l K8S_Cluster
l K8S_Namespace
l K8S_ServiceName
l K8S_NodeName
l K8S_PodName
l K8S_Region
l K8S_Zone
l K8S_Label
d. Click OK.
The corresponding IP addresses are dynamically updated and resolved after applying the Kubernetes filter.
3. Confirm that the AliCloud SDN connector resolves dynamic firewall IP addresses using the configured filter:
a. Go to Policy & Objects > Addresses.
b. In the address table, hover over the address created in step 2 to view which IPs it resolves to:
3. Confirm that the AliCloud SDN connector resolves dynamic firewall IP addresses using the configured filter:
config firewall address
edit "ali_add1"
show
config firewall address
edit "ali_add1"
set uuid c48e4f00-5435-51eb-0547-aced5cf80f1f
set type dynamic
set sdn "ali1"
set color 10
set filter "K8S_Cluster=zhmcluster1"
config list
edit "10.0.0.28"
next
edit "10.0.0.29"
next
edit "10.0.0.30"
next
...
end
next
end
next
end
FortiCarrier
GTP
1. Go to Policy & Objects > IP Pools. Two charts, IP Pool Utilization and Top IP Pools by Assigned IPs, appear
above the table.
api/v2/monitor/firewall/gtp-statistics
{
"http_method":"GET",
"results":{
"request":0,
"echo_request":0,
"tunnel":999,
"tunnel_v0":0,
"path":994,
"bearer":999,
"fteid":1998,
"ds_fteid":0,
"profile":6,
"imsi":0,
"apn":0,
"apn_shaper":0,
"tunnel_limiter":1,
"adv_policy":0,
"ie_remove_policy":0,
"ip_policy":0,
"noip_policy":0,
"ie_wl_entry":0,
"clash":0,
"drop":0
},
"vdom":"root",
"path":"firewall",
"name":"gtp-statistics",
"status":"success",
"serial":"FG3K6ETB10000000",
"version":"v7.0.0",
"build":16,
"api_version":"v7.0"
}
api/v2/monitor/firewall/gtp-runtime-statistics
{
"http_method":"GET",
"results":{
"control_packet_forwarded":1998,
"control_packet_rejected":0,
"control_packet_dropped":{
"unknown":0,
"sanity":0,
"reserved_field":0,
"msg_reserved":0,
"msg_out_state":0,
"ie_reserved":0,
"ie_out_state":0,
"msg_length":0,
"ie_length":0,
"mandatory_ie":0,
"ip_policy":0,
"noip_policy":0,
"sgsn_auth":0,
"sgsn_handover":0,
"ggsn_auth":0,
"seq_num":0,
"msg_filter":0,
"apn_filter":0,
"adv_policy_filter":0,
"imsi_filter":0,
"rate_limited":0,
"tunnel_limited":0,
"invalid_state":0,
"unknown_gtp_version":0
},
"data_packet_forwarded":0,
"data_packet_dropped":{
"sanity":0,
"mal_msg":0,
"no_state":0,
"mal_ie":0,
"gtp_in_gtp":0,
"spoof":0,
"ip_policy":0,
"msg_filter":0,
"msg_rate_limit":0,
"unknown_gtp_version":0
},
"billing_packet_forwarded":0,
"billing_packet_dropped":{
"sanity":0,
"mal_msg":0,
"mal_ie":0,
"msg_filter":0
}
},
"vdom":"root",
"path":"firewall",
"name":"gtp-runtime-statistics",
"status":"success",
"serial":"FG3K6ETB10000000",
"version":"v7.0.0",
"build":16,
"api_version":"v7.0"
}