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

Jarrai dezagun beste dokumentu batekin non gure LOG guztiak Elasticsearch-en zentralizatzen saiatuko garen, oraingoan gure Fortigate firewall-en txanda da. Ideia ez da soilik LOG-ak biltzea, baita modu bisualean ulertzea eta egunerokoan lagunduko diguten tresnak izatea ere.

Esan dut, helburua hurrengoa da, lehenik eta behin gure Fortigate suteen hesietan ditugun LOGak bildu, leku bakar batean izateko, gure maitea den Elasticsearch izango da. LOGak bertan ditugunean, Kibana erabil dezakegu zer gertatzen den ikusteko, nor bisitatzen duen zein web, zein aplikazio dira gehien erabiltzen direnak edo zein trafiko sortzen duten… eta kuriositatea alde batera utzita, pentsamendu nagusia Grafana-n ere ikusgai egitea izango da, jakinaraz dezakegu panel mota mordoa ditugula, log hauek erregistratzen duguna ulertzeko edo ulertarazteko.

Quesito motako panelak egin ditzakegu, Taulak, Barra motako grafikoak, nola ez Sankey motakoak, edo munduko mapa jarri eta Helbide IPak Helbidea edo Jatorria geo-lokalizatu, 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 “Hasiera” > “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, beraz, 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, baina ez badugu, estos últimos los dejamos deshabilitados. También a considerar 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,

Esan dut, 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 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…

Esan dut, 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!

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!