This document describes how to integrate ThreatSTOP’s Policy and Reporting services with a Fortinet Fortigate device:
- Automated retrieval and updates of IP Defense policies from ThreatSTOP’s systems to the Fortigate.
- Automated collection and upload of log files from the Fortigate to ThreatSTOP’s systems.
The integration is performed by a Linux-based virtual machine provided by ThreatSTOP, named ThreatSTOP Centralized Manager (TSCM). After its initial installation, the TSCM will retrieve the list of subnets matching the policy configured via the ThreatSTOP Admin portal and update the Fortigate using an SSH connection. Optionally, the Fortigate can be configured to send the connection log events to the TSCM via syslog and the TSCM will package and upload log files to ThreatSTOP’s Portal, for analysis and reporting.
Fig 1. : Network traffic between ThreatSTOP services, the TSCM and the Fortigate. (click to expand)
Web Automation features
This document provides the steps when using the Web Automation features of ThreatSTOP. For the command line-based installation, please read this document instead. The Web Automation features are:
- Client configuration settings are managed on the ThreatSTOP portal, instead of using the TSCM command line.
- Changes to the policy selection are automatically propagated from the portal to the TSCM
- The TSCM reports problems applying policies or uploading logs to the ThreatSTOP Portal, providing more visibility into potentials system or network problems.
The current version of TSCM is compatible with all Fortigate devices running FortiOS version 4.x, 5.0-5.6 and 6.0.
- The Maximum Policy Size is the maximum number of ACLs that your device can support. It depends on the model number and version of FortiOS. It is documented by Fortinet in the Fortinet Document Library : search for “Maximum Values:, select your version of FortiOS and look for for the number of Firewall Addresses supported by your model number.
FortiOS 5.4 introduced new features to the address object, which significantly impacts the performance of ACL updates. It is recommended to limit policies to 2000 ACLs or less on models smaller than FG-1000c when running FortiOS 5.4 and later.
VDOMs are supported
- The Maximum Policy Size is the maximum number of ACLs than your device can support. It depends on the hardware and memory available on the device. Please contact your Fortinet reseller to find out the capacity of your device.
Current version of TSCM
The current version of the TSCM OVA is 1.48. If your TSCM image is older, please download the latest version from the device configuration page in the Admin Portal. You can find out the TSCM version by running
$ tsadmin version
The current version of the Fortigate module is ** (included with TSCM 1.48 images)
Installation parameters for experienced users
If you have already created a device entry in the portal, and are familiar with the installation procedure, you can access the TSCM parameters below if you access this document from the Portal Device page.
|Device ID||Retrieved from the device settings page|
|Device Key||Retrieved from the device settings page|
$ tsadmin add --type auto --device_id=[Device ID] --auto_key=[Device Key]
The TSCM is delivered as an OVA or VHD image, built using Ubuntu 20.04 as the base Operating System. It is preconfigured with:
- 2 CPUs
- 2 GB of RAM
- 20 GB of disk space
You will need a Hypervisor such as vSphere, ESXi, Virtualbox or Hyper-V to deploy the image.
To retrieve its configuration and policy, and to upload log data, the TSCM needs the following connectivity:
- DNS over TCP - Policy service
- Hostname: dns.threatstop.com
- IP Range: 18.104.22.168/24
- Outbound TCP port 53 or 5353
- DNS over TLS - Configuration service
- Hostname: ts-ctp.threatstop.com
- IP Range: 22.214.171.124/28
- Outbound TCP port 5353
- HTTPS - Log service
- Hostname: logs.threatstop.com
- IP range: 126.96.36.199/28
- Outbound TCP port 443
- Direct Connection or via Proxy
- Hostname: ntp.ubuntu.com
- Outbound UDP port 123
It must also be able to communicate with the Fortigate device:
- TCP Port 22
- From the TSCM to the Fortigate
- TCP or UDP Port 514
- From the Fortigate to the TSCM
To perform this installation, you need an account reachable via SSH on the Fortigate.
Integration ThreatSTOP with a Fortigate device using Web Automation is performed in 4 steps:
- Configuring the device settings on the Admin Portal
- Downloading and loading the VM image
- Linking the TSCM to the Portal device configuration
- Apply ACLs and configure log forwarding on the Fortigate
Step 1: Portal
During this step, you will create a device entry on the Admin Portal. You will select a device type (Fortinet Fortigate) and enter the configuration settings. A minimum configuration only requires a handful of settings but optional, advanced options are also available.
To create a Fortigate device entry:
- Log into the Admin Portal with your ThreatSTOP account
- Browse to the Device page and click Add Device
- Select the Fortigate model:
- Type: IP Defense
- Manufacturer: Fortinet
- Model: Fortigate
- Integration Type: TSCM with Web Automation
The Admin Portal will display a form to enter the device settings described below and the links to retrieve the TSCM image.
Nickname: this is a mnemonic name used to identify the device. It can be set to any string (A-Z, 0-9, - and _). If you create multiple device entries, each entry must have a unique nickname. The Nickname will be used to identify the device on the TSCM and in the Reporting user interface.
Policy: select a pre-defined policy or a customized policy. It must be an IP Defense Policy.
IP Type: Access to the ThreatSTOP services is controlled in part using an ACL allowing the device IP to connect. If your device has a static public IP address (the most common case), select static. If your device has a dynamic public IP address, the ThreatSTOP services can lookup the IP address using a DNS fully-qualified name (FQDN).
Public IP address: In static mode, this is the public IP address of the device. It is possible to configure multiple device entries with the same public IP address.
Domain name: In Dynamic mode, this is a DNS FQDN which must be kept up-to-date as an A record pointing to the device’s dynamic IP.
Internal IP address: This is the internal address of the device. The TSCM will communicate with the Fortigate via SSH using this IP address. Note: Authentication credentials are documented below.
Note: An optional field to store a note of your choice about the device - location, identifiers, model…
Trusted Interface(s): one or multiple trusted interfaces (e.g. internal networks). If the device has multiple trusted interface, enter a comma-separated list.
Untrusted Interface(s): one or multiple untrusted interfaces (e.g. external networks). If the device has multiple untrusted interface, enter a comma-separated list. If you have enabled FortiOS’s SD-WAN feature, the name of the virtual interface is virtual-wan-link.
Policy Name prefix: provide a prefix to easily identify ACLs managed by ThreatSTOP’s integration.
Maximum Policy Size: select the maximum number of ACLs (Addresses) supported by your combination of device model and FortiOS. Fortinet’s documentation is linked here.
Maximum Policy Group Size: select the maximum number of Addresses per group documented by Fortinet. Fortinet’s documentation is linked here. The TSCM will split the policy into groups of the specified size.
Configure syslog: Set to Yes to automatically configure the Fortigate device to send logs to the TSCM.
Enable VDOM support: Must be set to Enabled if your Fortigate is configured to use the Virtual Domains feature. VDOMs can be used to divide a single FortiGate unit into two or more virtual instances of FortiOS that function as independent FortiGate units. ThreatSTOP ACLs can be assigned to a VDOM.
VDOM name: if VDOM support is enabled, enter the name of the VDOM to use.
Enable Log Upload: If enabled, the TSCM will send logs received from the device to the ThreatSTOP reporting system. This is the recommended setting. When disabled, logs for this device will not be available for reporting in the Portal.
Upon saving the form, a device entry will be created in ThreatSTOP’s cloud.
The TSCM supports the following advanced settings, which cover uncommon Fortigate configurations or network environments.
DNS Port: The TSCM uses TCP Port 53 (outbound connections) to retrieve policy data. If this port is blocked or filtered (for example, networks using a DNS Application Layer Gateway), use this setting to switch to TCP Port 5353.
Syslog IP address: Typically, logs will sent over syslog by the device itself. If logs are sent by another IP address (for example, after being processed by a SIEM, that IP address should be configured in this field.
Enable policy updates: this setting can be used to temporarily disabled policy updates by the TSCM. This is not recommended but can be used if device configuration changes needed to be suspended.
Log file size: the TSCM will upload logs after 15 minutes and when the log file size is reached. For systems under very heavy network traffic with many blocked connections, lowering this value will cause logs to be uploaded more often.
Rules Visibility: By default, the Fortinet Web GUI will display the details of the policy (list of IP addresses). To hide them, set this setting to No. This doesn’t change the policy being applied. The setting takes effects the next time the policy is updated. Also see Fortinet’s documentation.
Log Upload Proxy: If your environment requires using a proxy to reach HTTPs URLs, you can specify the address of a proxy. The proxy must support HTTPs using the CONNECT protocol. The proxy address must be http://address:port, where address is either an IP address or a fully-qualified domain name. HTTPs proxies are not supported. If you provide a proxy URL, the TSCM configuration will also prompt you for an optional user and password during the TSCM installation. Provide them if the proxy requires authentication.
Step 2: Download and boot image
After creating the device entry, the next step is the download using FTP and installation of the TSCM image.
You can choose between the OVA format (ESXi/vSphere, VirtualBox, Xen…) and the VHD format (Microsoft Hyper-V).
The download link is listed in the Step 2 section, as shown in this image.
- Click on the “Copy Download Link” to copy the link to your clipboard
- Use an ftp client of your choice, or a tool such as curl
- For your security: after downloading the file, we encourage you to validate its SHA 256 checksum. Compute it as shown below and compare it to the checksum in the Portal.
$ shasum -a 256 <filename>
- Import the OVA or VHD file in your Hypervisor to create the virtual machine and start it.
Log into the TSCM
The TSCM virtual machine will use DHCP to obtain its IP address. If your Hypervisor doesn’t show the IP address assigned to the virtual machine, you can retrieve it from the console of the TSCM: it is displayed as part of the login prompt.
The virtual machine will be reachable using ssh:
- The default username is: threatstop
- The default password is: threatstop
Step 3: Link the TSCM to the Device entry
After booting the TSCM and logging in via ssh, the third setup step will link the virtual machine to the device entry created in Step 1.
The TSCM has a configuration utility named tsadmin. A reference for the utility is provided here but we will cover the full installation steps below.
- Login with the threatstop account using ssh
- Obtain the Device ID and Device Key from the device configuration page. You can copy them to your clipboard by clicking the icon. The Device ID is the string tdid_ followed by 8 alpha-numerical characters.
- Validate that the TSCM can reach the Fortigate using SSH
ssh admin@<Fortigate IP address> The authenticity of host '<ip address>' can't be established. ECDSA key fingerprint is SHA256:UW05wRgAblpwjfObj4ZklSYfau8PnoE1GXXuSCO5Zfs. Are you sure you want to continue connecting (yes/no)?
- Accept the host key
- Login to validate the password
- Run the following command:
$ tsadmin add --type auto --device_id=[Device ID] --auto_key=[Device Key]
The tsadmin command will first retrieve the device settings from the ThreatSTOP Portal. If the command fails, check the Troubleshooting section.
- Once the configuration is retrieved, tsadmin will prompt for credentials for the Fortigate device. They will be used to connect to the device but will not be stored outside of the TSCM image.
- a username (typically, admin)
- a password
- the enable password
- tsadmin will verify the connectivity to the device. If you are prompted to access an SSH Host key, please proceed.
At this time, the TSCM has succesfully linked itself to the device entry, and validated its ability to reach the Fortigate device.
$ tsadmin add --type auto --device_id=tdid_abcd1234 --auto_key=BTFDWvEepY2z3LcSjmp3lgW+jUiVjAIF6lYvd2cnCikKO855YiUKfhmEcWvK1Ztouw== Web Automation - Retrieving configuration from ThreatSTOP Portal Next, please provide credentials for the Fortigate device (not stored on the portal) Device username : admin Device password : [INFO ] : Validating access with DNS server [INFO ] : Assuming device default user name and password prompts [INFO ] : Checking connectivity to the Fortinet Fortigate at 172.21.50.3 Successfully added tstest
You can view the list of devices linked on the TSCM image:
$ tsadmin list | Device name | Type | Device ID | Management IP | Log upload ID | Log | Log uploads | | tstest | fortigate | tdid_abcd1234 | 172.21.50.3 | tdid_abcd1234 | 100k | enabled |
- From this point on, the TSCM will retrieve policy data (IP subnets) and configure them on the Fortigate, every hour.
- To force the initial update and proceed with testing, run the following command
$ tsadmin update <device name>
This will create (if not already created) and populate the policy defined in the device settings.
To verify that the Object Group have been created, open an SSH session to the device and execute the following commands:
- If you have a VDOM configured:
config vdom edit <vdom name>
- followed by
config firewall policy show end
config firewall address edit "TSb1" show end
You should find the ThreatSTOP ACL configuration for the interfaces and the IP addresses currently contained in the first block group.
Step 4: Fortigate configuration
With the ACLs groups populated, the last step is to configure the Fortigate. Open the web console and perform the following actions:
- Browse to Policy Objects > Policy > IPv4
- Highlight the rules, right-clik and select Enable
You can test that the policy is correctly applied by pinging bad.threatstop.com (188.8.131.52) through the device, a test IP included in all policies. The ping command should fail.
Logging and Reporting
If log upload is enabled, the TSCM will now upload logs every 15 minutes, as long as there were connections blocked by the policy since the last upload. The logs can be analyzed in the IP Defense Reports 15 minutes after they’ve been uploaded.
To check that the log upload feature is able to reach the server:
- After applying the ACLs, generate log entries by trying to reach our test address through the device. The command should fail to connect.
- Run the following command on the TSCM to rotate and upload the log file
$ tsadmin logs
If the command doesn’t file a log file, it will exit immediately:
threatstop@tsclient:~$ tsadmin logs [INFO ] : Starting log upload client [INFO ] : Log upload client exited
- Log files are stored in /var/log/threatstop/devices/<device name>/syslog.
- If no log file is present, check the syslog forwarding configuration on the device and check that the ACL is applied.
threatstop@tsclient:~$ tsadmin logs [INFO ] : Starting log upload client [INFO ] : [Uploader] Loading device configuration [INFO ] : Processing logs for device [devicename] [INFO ] : Starting ThreatSTOP logupload operation v2.00 at 24/05/2018 19:34:05 [INFO ] : Verifying log file [/var/log/threatstop/devices/asa135/syslog.1] stats [INFO ] : Processing [/var/log/threatstop/devices/devicename/syslog.1] log file [INFO ] : Start sending data [INFO ] : Preparing connection data [INFO ] : Connecting to https://logs.threatstop.com:443/logupload.pl [INFO ] : Upload was successful [200 OK] [INFO ] : Completed processing for device [asa135] [INFO ] : Finish ThreatSTOP logupload operation at 24/05/2018 19:34:10 after 00:00:05 [INFO ] : Log upload client exited
If the command attempts to upload a log but fails, check the connectivity of the TSCM to ThreatSTOP’s log service, described in the connectivity section of this document.
Support for multiple devices
If your Fortigate is part of a High-Availability cluster, the configuration will be sync’ed across devices by FortiOS. Logs are routed through the primary node and it is not needed to configure additional Syslog IP addresses.
To view the current settings on the TSCM, run
$ tsadmin show <device name>
After the initial configuration is completed, settings can be edited on the Admin Portal and will be reflected on the device within 5 minutes, including Policy configuration changes.
If you change the credentials on the Fortigate device, you will need to run tsadmin configure <device name> and update them on TSCM to allow the virtual machine to continue to connect.
The TSCM update process wil report failures such as:
- failure to download the policy
- failure to apply the policy on the Fortigate
- failure to connect to the log upload service
Failures are reported on the Device List page of the portal.
To update the TIP and retrieve new versions of the ThreatSTOP software, login as threatstop and run the following command:
$ sudo apt-get update && sudo apt-get -y dist-upgrade
To disable the integration, the first step is to disable the rules via the FortiOS web interface, under Policy Objects > Policy > IPv4.
Next, delete the device entry on the TSCM. This will stop any policy updates or changes to the Fortigate device.
$ tsadmin remove <devicename>
- The last step is to delete the device entry on the Portal, using the Device List page. This step will caused the log data from the device to be unavailable in the Reporting interface of the Portal. If needed, you can recreate a new device entry for the same device, with the same or different settings. Note that the new entry will have a different Device ID for linking the TSCM.
Failure to link the device: tsadmin add fails with this error: “Failed to connect to Web Automation services”. The common cause is a network connectivity problem using DNS over TLS (Outbound TCP connection to ts-ctp.threatstop.com on port 5353).
- Failure to link the device: tsadmin add fails with this error: “Failed to retrieve settings using Web Automation. There are three common causes:
- The Device ID or Device Key is not correct.
- The system time is not correct. The virtual machine run an NTP client which must be up-to-date. Check its status with the timedatectl command.
- The new device entry has not been activated yet. Wait 2-3 minutes and retry.
- Failure to retrieve policy: tsadmin add fails with this error: “block or allow list [name] could not be fetched from ThreatSTOP DNS servers.” There are two common causes:
- A network connectivity problem using DNS over TCP (Outbound connection to ts-dns.threatstop.com on Port 53).
- The policy is not available yet. It typically takes less than 15 minutes for new devices and new policies to be activated in the Policy Service.
If the network connectivity is ok, and 15 minutes have elapsed since the device entry was created, please contact ThreatSTOP Support at email@example.com.
- If tsadmin add fails to connect to the device, check the credentials (username, password and enable password). If they are correct, find out if the Username and Password prompts have been changed from Fortigate’s defaults.
|1.38||2018-10-09||Support for proxy-based log uploads|
|1.37||2018-10-04||Added network configuration tool|
|1.36||2018-08-08||Remove uncessessary duplicate IP warning; support for Firepower|
|1.35||2018-05-08||Support for advanced settings|
|1.31||2018-03-25||Fix for log upload script|
|1.30||2018-02-06||Support for Web Automation|
- Fortigate Module
|3.36||2018-10-09||Added support for SD-WAN and Rules visibility setting|
|3.35||2018-05-08||Support for advanced settings and improved ssh connection handling|
|3.30||2018-02-14||Improve SSH connection error handling|