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.

Scroll al inicio