Cómo instalar FileBeat en Ubuntu
Elastic Stack es una combinación de cuatro componentes principales: Elasticsearch, Logstash, Kibana y Beats. Filebeat es uno de los miembros más famosos de esta familia que recopila, reenvía y centraliza los datos de registro de eventos a Elasticsearch o Logstash para su indexación. Filebeat tiene muchos módulos, como Apache, Nginx, System, MySQL, auditd, y muchos más, que simplifican la visualización de los formatos de registro más comunes a un solo comando.
En este tutorial, te mostraremos cómo instalar y configurar Filebeat para reenviar registros de eventos, eventos de autenticación SSH a Logstash en Ubuntu 18.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 18.04 con Elasticsearch, Kibana y Logstash instalados y configurados.
- Una contraseña de root configurada en tu servidor.
Cómo empezar
Antes de empezar, actualiza tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:
apt-get update -y apt-get upgrade -y
Una vez actualizado tu sistema, reinícialo para aplicar los cambios.
Instalar Filebeat
Por defecto, el Filebeat no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio APT de Elastic Stack 7 en tu sistema.
Primero, instala el paquete necesario con el siguiente comando:
apt-get install apt-transport-https -y
A continuación, descarga y añade la clave de Elastic Stack con el siguiente comando:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
A continuación, añade el repositorio Elastic Stack 7 Apt con el siguiente comando:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
A continuación, actualiza el repositorio e instala Filebeat con el siguiente comando:
apt-get update -y apt-get install filebeat -y
Una vez completada la instalación, puedes pasar al siguiente paso.
Configurar Filebeat
Por defecto, el Filebeat está configurado para enviar datos de eventos a Elasticsearc. Aquí configuraremos Filebeat para que envíe los datos de eventos a Logstash. Puedes hacerlo editando el archivo /etc/filebeat/filebeat.yml:
nano /etc/filebeat/filebeat.yml
Comenta la salida de elasticsearch y descomenta la salida de Logstash como se muestra a continuación:
#-------------------------- Elasticsearch output ------------------------------ # output.elasticsearch: # Array of hosts to connect to. # hosts: ["localhost:9200"] #----------------------------- Logstash output -------------------------------- output.logstash: # The Logstash hosts hosts: ["localhost:5044"]
Una vez que hayas terminado, puedes continuar con el siguiente paso.
Habilitar el módulo de sistema Filebeat
Por defecto, Filebeat viene con un montón de módulos. Puedes listar todos los módulos con el siguiente comando:
filebeat modules list
Deberías ver la siguiente salida:
Enabled: Disabled: apache auditd aws cef cisco coredns elasticsearch envoyproxy googlecloud haproxy ibmmq icinga iis iptables kafka kibana logstash mongodb mssql mysql nats netflow nginx osquery panw postgresql rabbitmq redis santa suricata system traefik zeek
Por defecto, todos los módulos están desactivados. Por tanto, tendrás que activar el módulo del sistema para que recoja y analice los registros creados por el servicio de registro del sistema. Puedes habilitar el módulo del sistema con el siguiente comando:
filebeat modules enable system
A continuación, puedes verificar el módulo del sistema con el siguiente comando:
filebeat modules list
Deberías ver que el módulo del sistema ya está habilitado:
Enabled: system
A continuación, tendrás que configurar el módulo del sistema para que sólo lea los registros de autenticación. Puedes hacerlo editando el archivo /etc/filebeat/modules.d/system.yml:
nano /etc/filebeat/modules.d/system.yml
Cambia las siguientes líneas:
- module: system # Syslog syslog: enabled: false ... # Authorization logs auth: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/var/log/auth.log"]
Guarda y cierra el archivo cuando hayas terminado.
Carga la plantilla de índice en Elasticsearch
A continuación, tendrás que cargar la plantilla en Elasticsearch manualmente. Puedes hacerlo con el siguiente comando:
filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Deberías ver la siguiente salida:
Index setup finished.
A continuación, genera la plantilla de índice e instala la plantilla en el servidor Elastic Stack con el siguiente comando:
filebeat export template > filebeat.template.json curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/filebeat-7.0.1 [email protected]
Por último, inicia el servicio Filebeat y habilítalo para que se inicie tras reiniciar el sistema con el siguiente comando:
systemctl start filebeat systemctl enable filebeat
Puedes comprobar el estado de Filebeat con el siguiente comando:
systemctl status filebeat
Deberías ver la siguiente salida:
? filebeat.service - Filebeat sends log files to Logstash or directly to Elasticsearch. Loaded: loaded (/lib/systemd/system/filebeat.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2019-11-26 06:45:18 UTC; 14s ago Docs: https://www.elastic.co/products/beats/filebeat Main PID: 13059 (filebeat) Tasks: 28 (limit: 463975) CGroup: /system.slice/filebeat.service ??13059 /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.485Z INFO add_cloud_metadata/add_cloud_metadata.go:87 add_clou Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.486Z INFO log/harvester.go:251 Harvester started for file: /va Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.485Z INFO pipeline/output.go:95 Connecting to backoff(async(tc Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.487Z INFO pipeline/output.go:105 Connection to backoff(async(t
Prueba de recepción de datos de Elasticsearch
Ahora, comprueba si Elasticsearch está recibiendo datos o no con el siguiente comando:
curl -X GET localhost:9200/_cat/indices?v
Deberías ver la siguiente salida:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana_task_manager_1 fpHT_GhXT3i_w_0Ob1bmrA 1 0 2 0 46.1kb 46.1kb yellow open ssh_auth-2019.11 mtyIxhUFTp65WqVoriFvGA 1 1 15154 0 5.7mb 5.7mb yellow open filebeat-7.4.2-2019.11.26-000001 MXSpQH4MSZywzA5cEMk0ww 1 1 0 0 283b 283b green open .apm-agent-configuration Ft_kn1XXR16twRhcZE4xdQ 1 0 0 0 283b 283b green open .kibana_1 79FslznfTw6LfTLc60vAqA 1 0 8 0 31.9kb 31.9kb
También puedes verificar el índice ssh_auth-2019.05 con el siguiente comando:
curl -X GET localhost:9200/ssh_auth-*/_search?pretty
Deberías ver la siguiente salida:
{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : 1.0, "hits" : [ { "_index" : "ssh_auth-2019.11", "_type" : "_doc", "_id" : "g7OXpm4Bi50dVWRYAyK4", "_score" : 1.0, "_source" : { "log" : { "offset" : 479086, "file" : { "path" : "/var/log/elasticsearch/gc.log" } }, "event" : { "timezone" : "+00:00", "dataset" : "elasticsearch.server", "module" : "elasticsearch" },
Añadir índice en Kibana
Ahora, accede a tu panel de control de Kibana y haz clic en Patrones de Índice. Deberías ver la siguiente página:
Ahora, haz clic en Crear patrón de índice. Deberías ver la siguiente página:
Añade el índice ssh_auth-* y haz clic en el botón Paso siguiente. Deberías ver la siguiente página:
Ahora, selecciona @timestamp y pulsa el botón Crear patrón de índice. Deberías ver la página siguiente:
Ahora, haz clic en la pestaña Descubrir del panel izquierdo. Deberías poder ver tus datos en la siguiente pantalla:
¡Enhorabuena! Has instalado y configurado correctamente Filebeat para enviar datos de eventos a Logstash. Ahora puedes proceder a crear cuadros de mando Kibana tras recibir todos los datos.