Cómo habilitar el envío de log/eventos de un firewall Fortigate a un servidor de SIEM con Splunk (válido para otros SIEM). Conectaremos Fortigate con Splunk mediante el puerto 514 UDP, de esta forma no necesitaremos instalar app en Splunk. Mostramos cómo configurar Fortigate desde la interfaz web y también por comando, pudiendo modificar parámetros como el puerto, el nivel de log, el tipo de protocolo, etc.

Requisitos para enviar log/eventos desde Fortigate a SIEM Splunk

Deberemos disponer, como es lógico, de un firewall Fortigate, que será el que se monitorizará con Splunk.

Por otro lado, necesitaremos disponer de un servidor de SIEM con Splunk. En el siguiente enlace explicamos cómo montarlo en Linux/Windows:

Necesitaremos conocer la IP del servidor SIEM Splunk (en nuestro caso 192.168.1.26) y la del firewall Fortigate, para acceso a su gestión (en nuestro caso 192.168.1.100).

El equipo del SIEM Splunk tendrá que tener visibilidad en la red con el dispositivo Fortigate, al menos por el puerto que decidamos usar.

Según la documentación de Fortigate, se admite el envío de log/eventos a un sistema externo a partir de la versión 5.0 o superior.

Requisitos iniciales para enviar eventos de switch Cisco a Splunk

Configurar data input en Splunk para recibir datos de Fortigate

En el servidor de SIEM Splunk, desde la consola de gestión web, agregaremos un data input de tipo UDP. Para ello, desde la consola web de Splunk, pulsaremos en «Settings» – «Data inputs»:

Configurar data input en Splunk para recibir datos de Fortigate

Pulsaremos en «UDP»:

Configurar data input en Splunk para recibir datos de Fortigate

Pulsaremos en «New Local UDP»:

Configurar data input en Splunk para recibir datos de Fortigate

Introduciremos los datos del input, en este caso, dado que usaremos este input para todos nuestros swiches, estableceremos un puerto, por ejemplo el 516. Una opción es usar este puerto únicamente para el dispositivo Fortigate, de forma que tendremos más identificada la fuente. Si decidimos usar el puerto 516 sólo para Fortigate, podremos incluso limitar la conexión en Splunk por este puerto a la IP de Fortigate (en «Only accept connection from»). No estableceremos un nombre de origen (source name), para que Splunk establezca IP:puerto:

Configurar data input en Splunk para recibir datos de Fortigate

En el tipo de fuente, si no es una estándar que ya exista en Splunk, pulsaremos en «New» [1]. Introduciremos el nombre del tipo de fuente en «Source Type» [2], por ejemplo «fgt_log». En «Source Type Category» [3], elegiremos «Custom» y en «Source Type Description» [4], introduciremos, por ejemplo, «Fortigate»:

Configurar data input en Splunk para recibir datos de Fortigate

El asistente para agregar un nuevo receptor de datos nos mostrará las opciones elegidas. Si son correctas pulsaremos en Submit para crearlo:

Configurar data input en Splunk para recibir datos de Fortigate

En cuanto a usar un puerto UDP diferente para cada dispositivo del que queramos recolectar datos, deberemos seguir una estrategia común en la organización. Si tenemos muchos dispositivos y queremos conectarlos con Splunk, por ejemplo muchos switches, lo habitual es usar un puerto para los switches, otro puerto diferente para los dispositivos más importantes (firewall, san, antivirus EDR centralizado), y dejar algún puerto más para los forwarder de los equipos servidores Linux y equipos servidores Windows. Únicamente crear puertos diferentes de uso único para los dispositivos más importantes que compongan el SOC y el core de nuestra organización. Lógicamente no sería una buena estrategia usar un puerto diferente para cada dispositivo de nuestra organización si tenemos centenares, pero sí intentar usar un puerto diferente al menos para los más importantes.

Configurar Fortigate para enviar datos a servidor SIEM Splunk

Si tenemos acceso al cliente web de Fortigate, pulsaremos en «Bitácora y Reportes» y en «Configurar Registros» (esto puede variar en función de la versión del firware de Forti que tengamos y también del idioma de la interfaz, buscaremos «Log Settings» si lo tenemos en inglés). Para activar el envío de log al SIEM Splunk activaremos la opción «Enviar registros a Syslog» y en «Dirección IP/FQDN» introduciremos la dirección IP del servidor de Splunk, en nuestro caso 192.168.1.26.

En función de la versión del firmware de Forti y del modelo, puede que no tengamos más datos desde la interfaz gráfica, sólo la activación y la IP del SIEM:

Configurar Fortigate par enviar datos a servidor SIEM Splunk

Si queremos afinar más la configuración, por ejemplo definir el nivel de log que queramos enviar, o bien modificar el puerto, que por defecto es el 514, tendremos que acceder desde la consola y hacerlo por comando, como indicamos a continuación.

Para activar el envío de log a syslog SIEM Splunk desde Fortigate, usando la consola de comandos, nos conectaremos a Fortigate, bien por SSH, bien por telnet o bien desde la Consola CLI de la interfaz gráfica:

Configurar Fortigate par enviar datos a servidor SIEM Splunk

Una vez dentro de la consola CLI de comandos, accederemos al modo de configuración del log con el comando:

Para mostrar la configuración actual de envío de datos a syslog/SIEM, ejecutaremos el comando:

Que nos devolverá algo así:

config log syslogd setting
set status enable
set server «192.168.1.26»
set mode udp
set port 514

set facility local7
set source-ip »
set format default
set priority default
set max-log-rate 0
set interface-select-method auto
end

Configurar Fortigate par enviar datos a servidor SIEM Splunk

En este caso, como ya lo teníamos habilitado, nos devuelve el parámetro «status» a enable y el server con la IP del Splunk. Si no lo tenemos habilitado y queremos hacerlo por comando, introduciremos los siguientes comandos (dentro del modo config log syslogd setting):

Configurar Fortigate par enviar datos a servidor SIEM Splunk

En los comandos anteriores, podemos cambiar el puerto por defecto 514 que establece Fortigate a otro que deseemos, con set port x. En nuestro caso, al haber creado un data input específico para Fortigate con el puerto 516, estableceremos el parámetro port a 516 con set port 516. También podemos modificar el tipo de protocolo para el envío de datos set mode x (udp, tcp).

Desde la línea de comandos pueden añadirse más parámetros de configuración del envío a syslog y más opciones de cada parámetro. A continuación mostramos las opciones posibles para cada parámetro (los más importantes):

ParámetroValores posibles
mode* udp: envío de datos por protocolo UDP.
* reliable: envío de datos por protocolo TCP.
* legacy-reliable: envío de datos por protocolo TCP RFC3195.
status* enable: envío de datos habilitado.
* disable: envío de datos deshabilitado.
format* default: formato Syslog.
* csv: formato CSV (Comma Separated Values).
* cef: formato CEF (Common Event Format).
enc-algorithmSi queremos habilitar el envío cifrado TLS:
* high-medium: comunicación SSL con algoritmos de cifrado de nivel alto y medio.
* high: comunicación SSL con algoritmos de encriptación de nivel altos.
* low: comunicación SSL con algoritmos de encriptación bajos.
* disable: deshabilitar la comunicación SSL.
facilityLas opciones posibles son: kernel, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, ntp, audit, alert, clock, local0, local1, local2, local3, local4, local5, local6, local7.
ssl-min-proto-versionSi queremos activar el envío cifrado de información a syslog SIEM, con este parámetro podremos indicar la versión de SSL a usar:
* default: usará la establecida en la configuración global del equipo.
* SSLv3: SSLv3.
* TLSv1: TLSv1.
* TLSv1-1: TLSv1.1.
* TLSv1-2: TLSv1.2.

También podremos configurar el nivel de log a enviar al SIEM Splunk, accediendo al módulo config log syslogd filter con el comando:

Dentro del módulo «filter», si ejecutamos el comando:

Nos devolverá la configuración actual:

config log syslogd filter
set severity warning
set forward-traffic enable
set local-traffic enable
set multicast-traffic enable
set sniffer-traffic enable
set anomaly enable
set voip enable
set filter »
set filter-type include
end

Si queremos modificar algún parámetro, por ejemplo el nivel de log, que actualmente lo tenemos en «warning», subirlo a «error», introduciremos el comando:

Los niveles de log posibles en Fortigate:

  • emergency
  • alert
  • critical
  • error
  • warning
  • notification
  • information
  • debug

Hay que tener cierta precaución con el nivel de log elegido, niveles bajos como notification, information, debug pueden enviar millones de eventos al día, en función del volumen de nuestra organización.

Consultar datos recibidos de Fortigate en Splunk

Desde la consola web de Splunk, una vez configurados Fortigate y Splunk, pulsaremos en «» para consultar los log/eventos recibidos de Fortigate:

Consultar datos recibidos de Fortigate en Splunk

Podremos usar el filtro:

sourcetype=»fgt_log»

Que nos mostrará todos los eventos de la fuente «fgt_log» (Fortigate configurada anteriormente):

Consultar datos recibidos de Fortigate en Splunk