Cómo instalar Logstash en Ubuntu 18.04

Logstash es una herramienta gratuita y de código abierto, y la plataforma de análisis de registros más popular del mundo para recopilar, analizar y almacenar registros para su uso futuro. Logstash viene con un rico conjunto de plugins y un lenguaje de plantillas muy expresivo que facilita la transformación de los flujos de datos. Logstash forma parte de la pila ELK, pero también puedes utilizarlo de forma independiente. Logstash tiene la capacidad de extraer de cualquier fuente de datos utilizando plugins de entrada, aplicar una amplia variedad de transformaciones de datos y enviar los datos a un gran número de destinos utilizando plugins de salida.

En este tutorial, te mostraremos cómo instalar y configurar Logstash en un servidor Ubuntu 18.04.

Requisitos previos

  • Un servidor con Ubuntu 18.04.
  • 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 Java

Antes de instalar Java, asegúrate de que tienes instalado Java 8 o Java 11. Puedes instalar Java 8 con el siguiente comando:

apt-get install openjdk-8-jdk -y

Después de instalar Java, comprueba la versión de Java con el siguiente comando:

java -version

Deberías ver la siguiente salida:

openjdk version "1.8.0_162"
OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12)
OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)

Instalar Logstash

Antes de instalar Logstash, tendrás que instalar Elasticsearch en tu servidor. Por defecto, Elasticsearch no está disponible en el servidor de Ubuntu 18.04. Así que tendrás que añadir el repositorio de Elasticsearch.

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 GPG de Elasticsearch con el siguiente comando:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -

A continuación, añade el repositorio con el siguiente comando:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list

A continuación, instala Elasticsearch y Logstash con el siguiente comando:

apt-get install elasticsearch logstash -y

Una vez instalados ambos paquetes, inicia Logstash y Elasticsearch, y habilítalos para que se inicien tras el reinicio del sistema con el siguiente comando:

systemctl start logstash
systemctl enable logstash
systemctl start elasticsearch
systemctl enable elasticsearch

También puedes comprobar el estado de Logstash con el siguiente comando:

systemctl status logstash

Deberías ver la siguiente salida:

? logstash.service - logstash
   Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-11-20 10:13:22 UTC; 5s ago
 Main PID: 3790 (java)
    Tasks: 13 (limit: 1110)
   CGroup: /system.slice/logstash.service
           ??3790 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly 

Nov 20 10:13:22 ubuntu systemd[1]: Started logstash.

Por defecto, Elasticsearch escucha en el puerto 9200. Puedes comprobarlo con el siguiente comando:

netstat -ant | grep 9200

Deberías ver la siguiente salida:

tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN     
tcp6       0      0 ::1:9200                :::*                    LISTEN  

Configurar Logstash

La configuración de Logstash es una de las partes más difíciles para cualquier administrador de sistemas. La configuración de Logstash consta de tres secciones principales de configuración, Logstash Inputs, Logstash Filters y Logstash Outputs. Cada sección es responsable de diferentes funciones y utiliza diferentes plugins de Logstash.

Configurar Logstash Input

En primer lugar, tendrás que crear un archivo de configuración de entrada beats-input.conf para recibir datos de Beats en el puerto TCP 5044:

nano /etc/logstash/conf.d/beats-input.conf

Añade las siguientes líneas:

input {
  beats {
    port => 5044
  }
}

Guarda y cierra el archivo cuando hayas terminado.

Configurar los filtros de Logstash

A continuación, tendrás que configurar un plugin de filtros para procesar los eventos recibidos de los beats. En este caso, configuraremos los latidos para que recojan los eventos de autenticación SSH de los sistemas Ubuntu. Para ello, crea un nuevo archivo de configuración de filtros ssh-auth-filter.conf:

nano /etc/logstash/conf.d/ssh-auth-filter.conf

Añade las siguientes líneas:

filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?\w+\s+password)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" }
    add_field => { "activity" => "SSH Logins" }
    add_tag => "linux_auth"
    }
}

Guarda y cierra el archivo cuando hayas terminado.

Configurar la salida de Logstash

A continuación, tendrás que configurar los plugins de salida para que Logstash envíe los datos de los eventos a destinos específicos.

Aquí crearemos un archivo de configuración de salida de Logstash que envíe los datos a Elasticsearch que se ejecuta en un host local.

nano /etc/logstash/conf.d/elasticsearch-output.conf

Añade las siguientes líneas:

output {
   elasticsearch {
     hosts => ["localhost:9200"]
     manage_template => false
     index => "ssh_auth-%{+YYYY.MM}"
 }
  stdout { codec => rubydebug }
}

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Logstash para aplicar los cambios:

systemctl restart logstash

Prueba Logstash

Logstash ya está instalado y configurado. Es hora de probar si funciona o no.

Puedes verificar la configuración de Logstash con el siguiente comando:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Si todo está bien, deberías ver la siguiente salida:

Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
[2019-11-26T06:27:48,104][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/var/lib/logstash/queue"}
[2019-11-26T06:27:48,119][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/var/lib/logstash/dead_letter_queue"}
[2019-11-26T06:27:50,331][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 20 keys and 40 values 
Configuration OK
[2019-11-26T06:27:51,899][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

Enhorabuena! has instalado y configurado con éxito Logstash en el servidor Ubuntu 18.04.

También te podría gustar...