Recopilando los LOGs de Fortigate en Elasticsearch y visualizándolos en Grafana

Seguimos con otro documento donde intentaremos centralizar todos nuestros LOGs en Elasticsearch, en esta ocasión le tocan a nuestros firewalls de Fortigate. La idea no sólo será recopilar los LOGs si no además comprenderlos de manera visual y tener herramientas que nos ayuden en el día a día.

Lo dicho, el objetivo es el siguiente, primero recopilar los LOGs que tenemos en los firewalls de Fortigate, para tenerlos en un único sitio, que será nuestro querido Elasticsearch. Una vez tengamos ahí los LOGs podremos usar Kibana para cotillear qué pasa, quién visita qué web, que aplicaciones son las más usadas o qué tráfico generan… y a parte de curiosearlo, pues la idea será también visualizarlo en Grafana, que sabemos que tenemos un montón de tipos de Paneles para comprender o hacer comprender lo que estamos registrando en dichos LOGs.

Podremos hacer paneles de tipo Quesito, Tablas, Gráficas de tipo barras, cómo no de tipo Sankey, o colocar un Mapa mundi y geo localizar las direcciones IP de Destino u Origen, y saber quién y cuándo acceden a nuestros recursos, así como nuestros usuarios para qué usan Internet.

 

Lo más cómodo será hacerlo desde Kibana, ahí también nos indicará ciertos pasos necesarios que veremos a continuación, desde Kibana vamos a su «Home» > «Add data» > «Fortinet logs», lo bueno es que este asistente verificará si hemos seguido los pasos bien y está recopilando datos, y nos creará el índice si todo es OK.

 

Instalación de Filebeat,

Tenemos que instalar Filebeat en una máquina Windows o Linux para que éste servicio escuche en un puerto (al que el Fortigate le mandará los LOGs), y luego Filebeat almacene en el índice de Elasticsearch que nos interese los LOGs. Así que si no sabes donde instalarlo, la propia máquina de ELK nos puede ser totalmente válida, los pasos que seguiremos son si recopilamos desde un Linux, así que, instalamos Filebeat:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.12.0-amd64.deb
sudo dpkg -i filebeat-7.12.0-amd64.deb

 

Editamos lo primero de todo como siempre el fichero de configuración de Filebeat «/etc/filebeat/filebeat.yml» e indicaremos al menos los datos de conexión a Elasticsearch y Kibana:

...
output.elasticsearch:
  hosts: ["http://DIRECCION_IP:9200"]
...
setup.kibana:
  host: "http://DIRECION_IP:5601"
...

 

A continuación habilitaremos el módulo de Fortinet:

sudo filebeat modules enable fortinet

 

Editamos también el fichero de configuración del módulo de Fortigate «/etc/filebeat/modules.d/fortinet.yml», habilitamos la recolección de ‘firewall’ y si tenemos Forticlients, FortiMail o FortiManager también, si no, estos últimos los dejamos deshabilitados. También a considerar seleccionar cuáles son las interfaces Internas y las Externas; & por supuesto el puerto de escucha que tenremos (en este ejemplo el 9005):

- module: fortinet
  firewall:
    enabled: true
    var.input: udp
    var.syslog_host: 0.0.0.0
    var.syslog_port: 9005
    var.internal_interfaces: [ "lan1" ]
    var.external_interfaces: [ "wan" ]
    var.tags: [fortinet-firewall, fortigate]
  clientendpoint:
    enabled: false
  fortimail:
    enabled: false
  fortimanager:
    enabled: false

 

Y probamos la configuración:

filebeat test config -c /etc/filebeat/filebeat.yml -e

 

Cargamos los índices y los dashboards para Kibana, iniciamos el servicio, lo habilitamos para que arranque de manera automática y verificamos que el servicio arrancó de manera correcta:

sudo filebeat setup --pipelines --modules fortinet

sudo systemctl start filebeat
sudo systemctl enable filebeat
sudo systemctl status filebeat

 

Habilitar los LOGs en el Fortigate,

Y configuramos el Fortigate que escupa los LOGs a un syslog, lo mejor por linea de comandos, ya que la GUI no nos permite especificar el puerto, y por CLI sí:

config log syslogd setting
    set status enable
    set server "DIRECCION_IP_FILEBEAT"
    set port 9005
end

 

Jugando con los LOGs,

Lo dicho, si la recolección de datos es correcta y el índice se ha creado correctamente poco más tenemos que hacer (el índice podemos crearlo nosotros manualmente si no seguimos el asistente inicial que comentamos). Podremos desde Kibana descubrir lo que recopila, añaquir o quitar campos, hacer búsquedas en formato Lucene o en formato KQL (Kibana Query Language).

 

Y podremos ya disfrutar por ejemplo de Grafana para interpretar los datos recopilados!! Haremos una conexión mediante un Data Source en Grafana de Tipo Elasticsearch e indicar los datos de conexión y luego con las mismas querys de Lucene que hicimos en Kibana, pues podremos hacer preciosos Dashboards.

 

Os dejo un ejemplo de cómo hacer un Donut o un quesito con el Top de consumo de Apps descubiertas por el Forti.

 

Y luego ya es dejar correr la imaginación y añadir las visualizaciones que queramos.

 

El el blog iréis viendo distintos ejemplos de visualización, que si en formato Tree Map…

 

Ejemplo de Tabla, donde podemos hacer filtrados en la GUI…

 

Ejemplo de diagrama tipo Sankey…

 

Unos mapas del mundo, donde podemos ver las conexiones entrantes o salientes, aceptadas o denegadas, en tiempo real o en histórico de las últimas 24h, 7 días, 1 año…

Lo dicho, en otros documentos verás cómo hacer cada tipo de panel que ves en este post, ¡espero que os guste y como siempre agradeceros esos likes en las redes sociales!

 

Héctor Herrero