Cómo instalar Elastic Stack en Ubuntu 18.04 LTS

Elasticsearch es un motor de búsqueda de código abierto basado en Lucene, desarrollado en Java. Proporciona un motor de búsqueda de texto completo distribuido y multitante con una interfaz web HTTP Dashboard (Kibana). Los datos se consultan, se recuperan y se almacenan en un esquema de documentos JSON. Elasticsearch es un motor de búsqueda escalable que puede utilizarse para buscar todo tipo de documentos de texto, incluidos los archivos de registro. Elasticsearch es el corazón de la «pila elástica» o pila ELK.

Logstash es una herramienta de código abierto para gestionar eventos y registros. Proporciona una canalización en tiempo real para la recogida de datos. Logstash recogerá tus datos de registro, los convertirá en documentos JSON y los almacenará en Elasticsearch.

Kibana es una herramienta de visualización de datos de código abierto para Elasticsearch. Kibana proporciona una bonita interfaz web de panel de control. Te permite gestionar y visualizar los datos de Elasticsearch. No sólo es bonito, sino también potente.

En este tutorial, te mostraré cómo instalar y configurar Elastic Stack en un servidor Ubuntu 18.04 para supervisar los registros del servidor. Luego te mostraré cómo instalar y configurar ‘Elastic beats’ en un servidor Ubuntu 18.04 y en un servidor cliente CentOS 7.

Requisitos previos

  • 3 Servidores
    • Ubuntu 18.04 con 4GB de Ram/memoria como ‘elk-master’ – 10.0.15.10
    • Ubuntu 18.04 con 512MB/1GB Ram/Memoria como ‘elk-client01’ – 10.0.15.21
    • CentOS 7.5 con 512MB/1GB Ram/Memoria como ‘elk-client02’ – 10.0.15.22
  • Privilegios de root

¿Qué vamos a hacer?

  1. Instalar Elastic Stack
    1. Instalar Java
    2. Instalar y configurar ElasticSearch
    3. Instalar y configurar Kibana
    4. Instalar y configurar Nginx como proxy inverso para Kibana
    5. Instalar y configurar Logstash
  2. Instalar y configurar Filebeat en Ubuntu 18.04
  3. Instalar y configurar Filebeat en CentOS 7.5
  4. Prueba de

Paso 1 – Instalar Elastic Stack

En este primer paso, instalaremos y configuraremos el ‘Elastic Stack’ en el servidor ‘elk-master’, así que ejecuta todos los comandos y etapas de este paso sólo en el servidor ‘elk-master’. Instalaremos y configuraremos cada uno de los componentes de la pila elástica, incluyendo Elasticsearch, Logstash shipper y Kibana Dashboard con el servidor web Nginx.

Instalar Java

Java es necesario para la implementación de la pila elástica. Elasticsearch requiere Java 8. Se recomienda utilizar el JDK 1.8 de Oracle, y nosotros instalaremos Java 8 desde un repositorio PPA.

Instala los paquetes ‘software-properties-common’ y ‘apt-transport-https’, y luego añade el repositorio PPA ‘webupd8team’ de Java. Ejecuta el comando ‘apt install’ y ‘add-apt-repository’ que aparecen a continuación.

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -y

Ahora instala el instalador de java8.

sudo apt install oracle-java8-installer -y

Una vez completada la instalación, comprueba la versión de java.

java -version

Prueba de la versión de Java instalada

Java 1.8 instalada en el sistema.

A continuación, configuraremos el entorno java. Comprueba el archivo binario de java con el siguiente comando.

update-alternatives --config java

Y obtendrás el archivo binario de java en el directorio‘/usr/lib/jvm/java-8-oracle‘.

Ahora crea el archivo de perfil ‘java.sh’ en el directorio ‘profile.d’.

vim /etc/profile.d/java.sh

Pega la configuración del entorno de java a continuación.

#Set JAVA_HOME
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export JAVA_HOME
PATH=$PATH:$JAVA_HOME
export PATH

Guarda y sal.

Haz que el archivo sea ejecutable y carga el archivo de configuración.

chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Ahora comprueba el entorno java con el comando que aparece a continuación.

echo $JAVA_HOME

Y obtendrás que el directorio java se encuentra en el directorio‘/usr/lib/jvm/java-8-oracle‘.

Configurar Java

Instalar Elasticsearch

Después de instalar Java, vamos a instalar el primer componente de Elastic Stack, vamos a instalar elasticsearch.

Añade la clave de la pila elástica y añade el repositorio elástico al sistema.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Ahora actualiza el repositorio e instala el paquete elasticsearch utilizando el comando que aparece a continuación.

sudo apt update
sudo apt install elasticsearch -y

Una vez completada la instalación, ve al directorio ‘/etc/elasticsearch’ y edita el archivo de configuración ‘elasticsearch.yml’.

cd /etc/elasticsearch/
vim elasticsearch.yml

Descomenta la línea ‘network.host’ y cambia el valor a ‘localhost’, y descomenta la línea ‘http.port’ para la configuración del puerto de elasticsearch.

network.host: localhost
http.port: 9200

Guarda y sal.

Ahora inicia el servicio elasticsearch y habilítalo para que se inicie cada vez que el sistema arranque.

systemctl start elasticsearch
systemctl enable elasticsearch

Instalar Elasticsearch

El elasticsearch ya está en marcha, compruébalo con los comandos netstat y curl que aparecen a continuación.

netstat -plntu
curl -XGET 'localhost:9200/?pretty'

Ahora obtendrás que la versión de elasticsearch ‘6.2.4’ se está ejecutando en el puerto por defecto ‘9200’.

Comprueba el puerto de elasticsearch

La instalación de elasticsearch se ha completado.

Instalar y configurar el panel de control de Kibana

El segundo componente es el Dashboard de Kibana. Instalaremos el dashboard de Kibana desde el repositorio de elasticsearch, y configuraremos el servicio de kibana para que se ejecute en la dirección localhost.

Instala el tablero de instrumentos de Kibana utilizando el comando apt que aparece a continuación.

sudo apt install kibana -y

Ahora ve al directorio ‘/etc/kibana’ y edita el archivo de configuración ‘kibana.yml’.

cd /etc/kibana/
vim kibana.yml

Descomenta las líneas ‘server.port’, ‘server.host’ y ‘elasticsearch.url’.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Guarda y sal.

Ahora inicia el servicio de kibana y habilítalo para que se inicie siempre al arrancar el sistema.

sudo systemctl enable kibana
sudo systemctl start kibana

El panel de control de kibana ya está funcionando en la dirección «localhost» y en el puerto por defecto «5601». Compruébalo con el siguiente comando netstat.

netstat -plntu

Instalar Kibana

La instalación del panel de control de Kibana se ha completado.

Instalar y configurar Nginx como proxy inverso para Kibana

En este tutorial, utilizaremos el servidor web Nginx como proxy inverso para el tablero de instrumentos de Kibana.

Instala Nginx y los paquetes ‘apache2-utils’ en el sistema.

sudo apt install nginx apache2-utils -y

Una vez completada la instalación, ve al directorio de configuración ‘/etc/nginx’ y crea un nuevo archivo de host virtual llamado ‘kibana’.

cd /etc/nginx/
vim sites-available/kibana

Pega la configuración del host virtual de Nginx a continuación.

server {
    listen 80;
 
    server_name elastic-stack.io;
 
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;
 
    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Guarda y sal.

A continuación, crearemos un nuevo servidor web de autenticación básica para acceder al panel de control de Kibana. Crearemos la autenticación básica utilizando el comando htpasswd como se indica a continuación.

sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password

Activa el host virtual del kibana y prueba toda la configuración de nginx.

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t

Asegúrate de que no hay ningún error, ahora inicia el servicio Nginx y habilítalo para que se inicie siempre al arrancar el sistema.

systemctl enable nginx
systemctl restart nginx

La instalación y configuración de Nginx como Reverse-proxy para el dashboard de Kibana se ha completado.

Configurar Nginx

Instalar y configurar Logstash

El último componente de la Pila Elástica para esta guía es el «Logstash». Instalaremos y configuraremos Logsatash para centralizar los logs del servidor desde las fuentes del cliente con filebeat, para luego filtrar y transformar todos los datos (Syslog) y transportarlos al stash (Elasticsearch).

Antes de instalar logstash, asegúrate de comprobar la versión de OpenSSL de tu servidor.

openssl version -a

Instalar y configurar Logstash

Para esta guía, utilizaremos el OpenSSL ‘1.0.2o’. Si todavía utilizas la versión 1.1.2 de OpenSSL, obtendrás un error en la conexión SSL de logstash y filebeat.

Instala logstash con el comando apt que aparece a continuación.

sudo apt install logstash -y

Una vez completada la instalación, generaremos la clave del certificado SSL para asegurar la transferencia de datos de registro desde el cliente filebeat al servidor logstash.

Edita el archivo ‘/etc/hosts’ utilizando vim.

vim /etc/hosts

Añade la siguiente configuración.

10.0.15.10  elk-master  elk-master

Guarda y sal.

Ahora crea un nuevo directorio SSL bajo el directorio de configuración de logstash ‘/etc/logstash’ y ve a ese directorio.

mkdir -p /etc/logstash/ssl
cd /etc/logstash/

Genera el certificado SSL para Logstash utilizando el comando openssl como se indica a continuación.

openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt

Los archivos del certificado SSL para Logstash se han creado en el directorio ‘/etc/logstash/ssl’.

A continuación, crearemos nuevos archivos de configuración para logstash. Crearemos un archivo de configuración ‘filebeat-input.conf’ como archivo de entrada de filebeat, ‘syslog-filter.conf’ para el procesamiento de syslog, y luego un archivo ‘output-elasticsearch.conf’ para definir la salida de Elasticsearch.

Ve al directorio de configuración de logstash y crea los nuevos archivos de configuración ‘filebeat-input.conf’ en el directorio ‘conf.d’.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Pega allí la siguiente configuración.

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt"
    ssl_key => "/etc/logstash/ssl/logstash-forwarder.key"
  }
}

Guarda y sal.

Para el procesamiento de datos de registro syslog, estamos utilizando el plugin de filtro llamado ‘grok’ para analizar los archivos syslog.

Crea una nueva configuración ‘syslog-filter.conf’.

vim conf.d/syslog-filter.conf

Pega allí la siguiente configuración.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Guarda y sal.

Y para la salida de elasticsearch, crearemos el archivo de configuración llamado ‘output-elasticsearch.conf’.

vim conf.d/output-elasticsearch.conf

Pega allí la siguiente configuración.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Guarda y sal.

Una vez hecho esto, inicia el servicio logstash y habilítalo para que se inicie siempre al arrancar el sistema.

sudo systemctl enable logstash
sudo systemctl start logstash

Activar e iniciar logstah

Comprueba el servicio logstash utilizando los comandos netstat y systemctl que aparecen a continuación.

netstat -plntu
systemctl status logstash

Y el servicio logstash ya está en marcha. Se ejecuta en la dirección IP pública con el puerto ‘5443’.

Comprobar los puertos

La instalación de Elastic Stack se ha completado.

Paso 2 – Instalar y configurar Filebeat en Ubuntu 18.04

En este paso, configuraremos el cliente ‘elk-client01’ de Ubuntu 18.04 instalando en él el cargador de datos de Elastic Beats ‘Filebeat’.

Antes de instalar el filebeat en el sistema, necesitamos editar el ‘/etc/hosts’ y descargar el archivo de certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client01’.

Edita el archivo ‘/etc/hosts’ con el editor vim.

vim /etc/hosts

Pega allí la siguiente configuración.

10.0.15.10      elk-master      elk-master

Guarda y sal.

Copia el archivo del certificado logstash ‘logstash-forwarder.crt’ utilizando el comando scp.

scp root@elk-master:/etc/logstash/ssl/logstash-forwarder.crt .

Instalar Filebeat

A continuación, instala el Elastic Beats ‘Filebeat’ añadiendo la clave elástica y añade el repositorio elástico.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Actualiza el repositorio e instala el paquete ‘filebeat’ utilizando el comando apt que aparece a continuación.

sudo apt update
sudo apt install filebeat -y

Una vez completada la instalación, ve al directorio ‘/etc/filebeat’ y edita el archivo de configuración ‘filebeat.yml’.

cd /etc/filebeat/
vim filebeat.yml

Ahora activa los prospectores de filebeat cambiando el valor de la línea ‘enabled’ a ‘true’.

  enabled: true

Define los archivos de registro del sistema que se enviarán al servidor logstash. Para esta guía, añadiremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Configura la salida a logstash comentando la salida por defecto ‘elasticsearch’ y descomenta la línea de salida de logstash como se indica a continuación.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

Guarda y sal.

A continuación, tenemos que editar el archivo ‘filebeat.reference.yml’ para habilitar los módulos de filebeat, y habilitaremos el módulo ‘syslog’.

vim filebeat.reference.yml

Habilita el módulo de sistema syslog para filebeat como se indica a continuación.

- module: system
  # Syslog
  syslog:
    enabled: true

Guarda y sal.

Copia el archivo de certificado de logstash ‘logstash-forwarder.crt’ al directorio ‘/etc/filebeat’.

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

La instalación y configuración de Filebeat se ha completado. Ahora inicia el servicio filebeat y habilítalo para que se inicie cada vez al arrancar el sistema.

systemctl start filebeat
systemctl enable filebeat

Configurar Filebeat

Comprueba el servicio filebeat con los siguientes comandos.

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

Los cargadores de filebeat están funcionando en el servidor Ubuntu 18.04.

Filebeat está en funcionamiento

Paso 3 – Instalar y configurar Filebeat en CentOS 7.5

En este paso, configuraremos el cliente CentOS 7.5 ‘elk-client02’ instalando en él los cargadores de datos de Elastic Beats ‘Filebeat’.

Antes de instalar el Filebeat en el sistema, tenemos que editar el archivo ‘/etc/hosts’ y descargar el archivo del certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client02’.

Edita el archivo ‘/etc/hosts’ utilizando vim.

vim /etc/hosts

Pega la configuración de abajo.

10.0.15.10      elk-master      elk-master

Guarda y sal.

Copia el archivo del certificado logstash ‘logstash-forwarder.crt’ utilizando el comando scp.

scp root@elk-master:/etc/logstash/ssl/logstash-forwarder.crt .

Instalar Filebeat en CentOS

A continuación, instala el Elastic Beats ‘Filebeat’ añadiendo la clave elástica y añade el repositorio elástico.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

cat <<EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Instala filebeat utilizando el comando yum que aparece a continuación.

yum install filebeat -y

Una vez completada la instalación, ve al directorio ‘/etc/filebeat’ y edita el archivo de configuración ‘filebeat.yml’.

cd /etc/filebeat/
vim filebeat.yml

Ahora activa los prospectores de filebeat cambiando el valor de la línea ‘enabled’ a ‘true’.

  enabled: true

Define los archivos de registro del sistema que se enviarán al servidor logstash. Para esta guía, añadiremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.

  paths:
    - /var/log/secure
    - /var/log/messages

Configura la salida a logstash comentando la salida por defecto ‘elasticsearch’ y descomenta la línea de salida de logstash como se indica a continuación.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]

Guarda y sal.

A continuación, tenemos que editar el archivo ‘filebeat.reference.yml’ para habilitar los módulos de filebeat, y habilitaremos el módulo ‘syslog’.

vim filebeat.reference.yml

Habilita el módulo de sistema syslog para filebeat como se indica a continuación.

- module: system
  # Syslog
  syslog:
    enabled: true

Guarda y sal.

Copia el archivo de certificado de logstash ‘logstash-forwarder.crt’ al directorio ‘/etc/filebeat’.

cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt

La instalación y configuración de Filebeat se ha completado. Ahora inicia el servicio filebeat y añádelo al tiempo de arranque.

systemctl start filebeat
systemctl enable filebeat

Configurar Filebeat

Comprueba el servicio filebeat con los siguientes comandos.

systemctl status filebeat
tail -f /var/log/filebeat/filebeat

Los cargadores de filebeat están funcionando en el servidor CentOS 7.5.

Filebeat está funcionando

Paso 4 – Prueba

Abre tu navegador web y escribe el nombre de dominio de elastic stack, el mío es: ‘elastic-stack.io’.

Se te pedirá el nombre de usuario y la contraseña de la autenticación básica del panel de control de Kibana.

Escribe el nombre de usuario ‘elastic’ con tu contraseña.

Ahora obtendrás el bonito panel de control de Kibana, haz clic en el botón «Configurar patrones de índice» de la derecha.

Panel de control de Kibana

Define el patrón de índice ‘filebeat-*’ y haz clic en el botón ‘Paso siguiente’.

Definir un latido de archivo

Para el ‘nombre del campo de filtro de tiempo’, elige el ‘@timestamp’ y haz clic en ‘Crear patrón de índice’.

Crear índice

Y el patrón de índice filebeat ha sido creado.

Patrón de índice Filebeat creado

A continuación, intentaremos obtener la información del registro del inicio de sesión SSH fallido en cada uno de los servidores cliente ‘elk-client01’ del sistema Ubuntu y ‘elk-client02’ del sistema CentOS.

Dentro del panel de control de Kibana, haz clic en el menú «Descubrir» para obtener todos los registros del servidor.

Establece el ‘beat.hostname’ en el servidor ‘elk-client01’, el ‘source’ es el archivo ‘/var/log/auth.log’, y obtendrás el resultado que se muestra a continuación.

Resultado del registro

Y a continuación se muestran los detalles del registro de muestra de la contraseña fallida de SSH del archivo ‘auth.log’.

Fallo en el inicio de sesión SSH

Para el servidor CentOS ‘elk-client02’, establece el ‘beat.hostname’ en el servidor ‘elk-client02’, el ‘source’ es el archivo ‘/var/log/secure’, y obtendrás el resultado que se muestra a continuación.

Informe para el servidor 2

Y a continuación se muestran los detalles del registro de muestra de la contraseña fallida de SSH del archivo ‘secure’.

Informe de inicio de sesión

La instalación y configuración de Elastic Stack y de Elastic Beat ‘Filebeat’ se ha completado con éxito.

Referencia

También te podría gustar...