We recommend sending FortiGate logs to a FortiAnalyzer as it produces great reports and great, usable information.  However sometimes, you need to send logs to other platforms such as SIEMs.  When sending to a SIEM, you usually have an EPS or Event Per-Second charge, although some have moved to total amount of data.  You may want to filter some logs from being sent to a particular syslog server.   Here is a quick How-To setting up syslog-ng and FortiGate Syslog Filters.

I am going to install syslog-ng on a CentOS 7 in my lab.  I always deploy the minimum install.

Installing Syslog-NG

This will be a brief install and not a log of customization.  Syslog-NG has a corporate edition with support.  Syslog-NG (paid and community versions) allow you to create a distributed syslog environment.  In another life, I owned an MSSP and we had an instance of syslog-ng running on our Linux firewalls and they would collect locally and forward to our SOC for processing and archival.

After you have a vanilla CentOS box up and running, you will need to install the repository and then the packages.

yum install wget
rpm -Uvh epel-release-latest-7.noarch.rpm

cd /etc/yum.repos.d/
yum install syslog-ng
#Ensure you answer yes when prompted

Remove the default syslog package
yum erase rsyslog

Enable auto start and manually start syslog-ng
systemctl enable syslog-ng
systemctl start syslog-ng


After you install syslog-ng you will need to configure the /etc/syslog-ng/syslog-ng.conf file.

Look for the ling that is remarked out with the # and remove the #.  The config should like the one below.

Note: You will need to sudo or su if not the file will be read-only.  If you are using vi as I do, the command to allow you to edit the file will be i and once you are done, you need to hit esc then x


You will also need to either disable the firewall or create a rule allowing UDP 514 or whatever port you defined in the /etc/syslog-ng/syslog-ng.conf


Configuring the FortiGate

The FortiGate allows you to configure multiple FortiAnalyzers (FAZ) and multiple syslog servers.  I will not cover FAZ in this article but will cover syslog.

LAB-FW-01 # config log syslogd
syslogd Configure first syslog device.
syslogd2 Configure second syslog device.
syslogd3 Configure third syslog device.
syslogd4 Configure fourth syslog device.

When configuring  syslog servers on the FortiGate, you can see on the snippet above that you have 4 syslog servers you can create.  In this example I will use syslogd the first one available to me.

config log syslogd setting
    set status enable
    set server ""
    set source-ip ""

In my example, I am enabling this syslog instance with the set status enable then I will set the IP address of the server using set server "" and the source-ip with the set source-ip "".

There are other configurations you can add such as format (default, csv, or cef), etc.

config log syslogd setting
       set status enable
       set server ""
       set mode udp
       set port 514
       set facility local7
      set source-ip ""
      set format default
      set priority default
      set max-log-rate 0

Configuring Filters

By replacing the settings in the syslog configuration to filter you can now define filters for that syslog instance's configuration.  Remember that each filter is tied to the syslog instance number.  That is, if you want to create a filter for your syslogd2 instance, you would need to enter config log syslogd2 filter and so on for the others.

config log syslogd filter
    set severity information
    set forward-traffic enable
    set local-traffic enable
    set multicast-traffic enable
    set sniffer-traffic enable
    set anomaly enable
    set voip enable
    set filter "logid(0100032002)"
    set filter-type include

As you can see in my filter, I ONLY want authentication messages with the following message id 0100032002

The other important command above is the filter-type .   With this command, you can make the matched message ID's from the previous line either include or exclude meaning that I want everything except 0100032002 or I ONLY want 0100032002.

To find the message IDs, you should go to the Fortinet Docs repository.  The link provided is specifically for 6.4 but you can look for your version for FortiOS.  Look for the Log Message Reference section of the doc page.