Cómo instalar Elastic Stack en Ubuntu 20.04 LTS

Elastic Stack (antes ELK Stack) es un grupo de software de código abierto desarrollado por Elastic para recopilar datos de diversas fuentes. Te permite recopilar, almacenar, procesar, analizar y visualizar datos de diversas fuentes en cualquier formato en la plataforma central Elastic Stack.

Elastic Stack consta de varios paquetes de software: «Elasticsearch» para almacenar tus datos, «Kibana» como panel de control para acceder a tus datos y visualizarlos, la canalización dinámica de recopilación de datos «Logstash» con plugins extensibles para procesar cualquier dato, y «Beats» como plataforma ligera de envío de datos desde máquinas edge.

Elastic Stack puede desplegarse en Promises en tu servidor o puedes adquirir el SaaS (Software como Servicio) oficial de Elastic Cloud.

En este tutorial te mostraremos cómo instalar Elastic Stack en un servidor Ubuntu 20.04. Instalaremos Elasticsearch y Kibana en el mismo servidor y luego instalaremos y configuraremos «Filebeat» en el otro servidor para enviar los registros directamente al servidor Elasticsearch.

Requisitos

Para este tutorial, utilizaremos dos servidores con Ubuntu 20.04. El software Elastic Stack se instalará en el servidor con 4 GB de RAM, y utilizaremos otro servidor con 1 GB como cliente para Filebeat.

¿Qué haremos?

  • Añadir el repositorio de Elastic Stack
  • Instalar y configurar Elasticsearch
  • Instalar y configurar Kibana
  • Configura Nginx como Proxy Inverso para Kibana
  • Instalar y configurar Filebeat
  • Configurar un nuevo rol para el usuario de Kibana
  • Crear un nuevo patrón de índice Filebeat

Paso 1 – Añadir el repositorio Elastic Stack

En primer lugar, añadiremos la clave GPG y el repositorio del software Elastic stack a ambos servidores Ubuntu.

Antes de continuar, instala el ‘apt-transport-https’ para asegurar la instalación de tu software a través de una conexión segura HTTPS.

sudo apt install apt-transport-https

A continuación, añade la clave GPG y el repositorio de la pila Elastic utilizando el siguiente comando.

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

Ahora actualiza todos los repositorios disponibles en el sistema Ubuntu.

sudo apt update

Y ya estás listo para instalar toda la pila de software Elastic en ambos servidores.

añadir repositorio elástico

Paso 2 – Instalar y Configurar Elasticsearch

En este paso, instalaremos y configuraremos Elasticsearch en el servidor de nodo único ‘ELK20’ con la dirección IP interna ‘172.16.0.3’.

Antes de instalar Elasticsearch, edita el archivo ‘/etc/hosts’ utilizando el editor vim.

vim /etc/hosts

Ahora escribe tu nombre de host con la dirección IP interna como se indica a continuación.

172.16.0.3    ELK20

Guárdalo y ciérralo.

A continuación, instala el paquete Elasticsearch utilizando el comando apt que se indica a continuación.

sudo apt install elasticsearch

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

cd /etc/elasticsearch/
vim elasticsearch.yml

Descomenta ‘node.name’ y escribe el nombre de host de tu servidor.

node.name: ELK20

En la línea ‘network.host’, escribe la dirección IP del servidor en el que se ejecutará el servicio elasticsearch, y se recomienda utilizar sólo la dirección IP interna.

network.host: 172.16.0.3

Descomenta la línea ‘http.port’ y déjala por defecto, el servicio elasticsearch se ejecutará en el puerto por defecto ‘9200’.

http.port: 9200

Descomenta la línea ‘cluster.initial_master_nodes’ e introduce el nombre de host de tu servidor.

cluster.initial_master_nodes: ["ELK20"]

Y por último, habilita la seguridad de Elasticsearch añadiendo la siguiente configuración al final de la línea.

xpack.security.enabled: true

Guarda y cierra.

A continuación, recarga el gestor de servicios systemd, luego inicia el servicio elasticsearch y añádelo al arranque del sistema.

systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch

El servicio Elasticsearch ya está en marcha en el servidor Ubuntu 20.04.

instalar y configurar elasticsearch

A continuación, generaremos la contraseña para el usuario integrado en Elasticsearch.

Ve al directorio ‘/usr/share/elasticsearch’ y ejecuta el comando de la utilidad elasticsearch ‘elasticsearch-setup-passwords’ como se indica a continuación.

cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords auto -u "http://172.16.0.3:9200"

Escribe ‘y ‘ para confirmar y generar la contraseña.

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N] y

A continuación se muestra el resultado que obtendrás.

Changed password for user apm_system
PASSWORD apm_system = DP5RpFfbCyL6UpIFO8Q3
Changed password for user kibana_system
PASSWORD kibana_system = U6gDLoJCqqChqcbD1IYV

Changed password for user kibana
PASSWORD kibana = U6gDLoJCqqChqcbD1IYV

Changed password for user logstash_system
PASSWORD logstash_system = KrHaGvHGfkAz12dcSeWo

Changed password for user beats_system
PASSWORD beats_system = VnUUOtShQoFAGEZ62G7m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = xgaLXw6jp3Ses6CZ2hEB

Changed password for user elastic
PASSWORD elastic = elu2ZlMm4mOkM7fgCeUM

Como se puede ver, se ha generado la contraseña para algún usuario integrado en elasticsearch.

Gambar

Para probar nuestra instalación de Elasticsearch, ejecuta el comando curl con el usuario por defecto ‘elastic‘ como se indica a continuación.

curl -X GET -u elastic "http://172.16.0.3:9200/?pretty"

Escribe la contraseña para el usuario ‘elastic‘, y a continuación se muestra el resultado que obtendrás.

probar la autenticación de elasticsearch

Como resultado, el servidor Elasticsearch está funcionando con la autenticación habilitada en él.

Paso 3 – Instalar y Configurar Kibana

En este paso, instalaremos y configuraremos Kibana en el mismo servidor que Elasticsearch. Conectaremos Kibana al servidor Elasticsearch con el usuario por defecto «kibana_system» y la contraseña generada.

Instala Kibana utilizando el siguiente comando apt.

sudo apt install kibana

Una vez finalizada la instalación, ve al directorio ‘/etc/kibana’ y edita la configuración ‘kibana.yml’ utilizando el editor vim.

cd /etc/kibana/
vim kibana.yml

Descomenta las siguientes líneas y cambia los valores por los tuyos. Se recomienda ejecutar Kibana en la red local porque utilizaremos Nginx como proxy inverso para Kibana.

server.port: 5601
server.host: "172.16.0.3"
server.name: "ELK20"

Después, cambia «elasticsearch.url» por tu dirección IP de elasticsearch.

elasticsearch.url: "http://172.16.0.3:9200"

Descomenta las siguientes líneas «elasticsearch.username» y ‘elasticsearch.password’, y cambia los datos con el usuario y la contraseña por los tuyos.

elasticsearch.username: "kibana_system"
elasticsearch.password: "N88VBkkelfSV3mBfO6Vh"

Guarda y cierra.

A continuación, recarga el gestor systemd utilizando el siguiente comando.

systemctl daemon-reload

Después, inicia el servicio Kibana y añádelo al arranque del sistema.

systemctl start kibana
systemctl enable kibana

Y el servicio Kibana ya está en marcha en el sistema Ubuntu 20.04.

instalar y configurar kibana

A continuación, crearemos un nuevo usuario que se utilizará para iniciar sesión en el panel de control de Kibana.

Crea un nuevo usuario llamado ‘hakase’ y la contraseña ‘hakasepasskibana’ con el rol ‘kibana_admin’ como se indica a continuación.

curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'
{
  "password" : "hakasepasskibana",
  "roles" : [ "kibana_admin" ]
}
'

Escribe la contraseña para el usuario ‘elastic’, y obtendrás el resultado que se muestra a continuación.

crear usuario kibana con rol kibana_admin

Como resultado, se ha creado el nuevo usuario ‘hakase’ y podrá iniciar sesión en el panel de control de Kibana.

Paso 4 – Configurar Nginx como Proxy Inverso para Kibana

En este paso, instalaremos y configuraremos Nginx como proxy inverso para el Kibana.

Instala los paquetes de Nginx utilizando el comando apt que aparece a continuación.

sudo apt install nginx -y

Una vez finalizada la instalación, ve al directorio ‘/etc/nginx/sites-available/’ y crea un nuevo archivo de host virtual ‘kibana’ utilizando el editor vim.

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

Cambia el nombre de dominio y la dirección IP ‘proxy_pass’ por los tuyos, y pégalos en él.

server {
    listen 80;
 
    server_name elk.hakase-labs.io;
 
    location / {
        proxy_pass http://172.16.0.3: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;
    }
}

Guárdalo y ciérralo.

A continuación, activa el host virtual Nginx para Kibana y verifica 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 y, a continuación, reinicia el servicio Nginx.

systemctl restart nginx

Como resultado, la instalación y configuración de Nginx como Proxy Inverso para Kibana se han completado. Y ahora se puede acceder al panel de control de Kibana a través del nombre de dominio «elk.hakase-labs.io».

configurar nginx como proxy inverso para kibana

Abre tu navegador web y escribe el nombre de dominio de tu instalación de Kibana en la barra de direcciones.

http://elk.hakase-labs.io/

Y obtendrás la página de inicio de sesión de Kibana que se muestra a continuación.

página de inicio de sesión de kibana

Escribe el usuario ‘hakase’ con la contraseña ‘hakasepass’ y pulsa el botón‘Iniciar sesión‘.

Una vez que hayas iniciado sesión, se te pedirá que importes los datos de muestra o que explores tus propios datos.

kibana selecciona la opción para explorar los datos

Haz clic en el botón «Explorarmis propios datos«.

Ahora obtendrás el panel de control de Kibana como se muestra a continuación.

Panel Kibana

Como resultado, la instalación de Kibana y Nginx se ha completado.

Paso 4 – Instalar y configurar Filebeat

En este paso, instalaremos y «Filebeat» en la máquina cliente con el nombre de host «client01» y la dirección IP «xxx.xxx.xxx.xxx». El «Filebeat» enviará los registros directamente al servidor Elasticsearch.

Antes de instalar el «Filebeat», asegúrate de que el repositorio Elastic Stack ha sido añadido a tu sistema.

Ahora instala el paquete «Filebeat» utilizando el siguiente comando apt.

sudo apt install filebeat

Una vez finalizada la instalación, ve al directorio ‘/etc/filebeat’ y edita la configuración ‘filebeat.yml’ utilizando el editor vim.

cd /etc/filebeat/
vim filebeat.yml

En la parte superior de la configuración ‘filebeat.inputs’, cambia ‘enabled: false’ por ‘enabled: true’ como se indica a continuación.

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log

A continuación, pasa a la configuración de Kibana y cambia el host por la dirección IP y el puerto de Kibana, cambia el nombre de usuario por el usuario predeterminado ‘kibana’, y la contraseña generada en la parte superior.

setup.kibana:
  host: "172.16.0.3:5601"
  username: "kibana"  
  password: "U6gDLoJCqqChqcbD1IYV"

Después, pasa a la configuración de ‘output.elasticsearch’ y cambia los detalles por los tuyos.

output.elasticsearch:
  hosts: ["172.16.0.3:9200"]
  username: "elastic"
  password: "elu2ZlMm4mOkM7fgCeUM"

Guarda y cierra.

Ahora vuelve a cargar el gestor systemd, inicia el servicio filebeat y añádelo al arranque del sistema.

systemctl daemon-reload

systemctl start filebeat
systemctl enable filebeat

El servicio filebeat está en marcha en la máquina«cliente01«.

Instalar y configurar Filebeat

A continuación, tenemos que cargar la plantilla de índice filebeat en el servidor Elasticsearch utilizando el siguiente comando.

filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["http://172.16.0.3:9200"]'

A continuación se muestra el resultado que obtendrás.

cargar plantilla de índice filebeat en servidor elasticsearch

Como resultado, la plantilla de índice filebeat se carga en el servidor Elasticsearch, y estará disponible en el panel de control de Kibana como patrón de índice «filebeat-*».

Paso 5 – Configurar un nuevo rol para el usuario Kibana

En este paso, crearemos un nuevo rol de Elasticsearch que permita a nuestro usuario ‘hakase’ acceder y gestionar todos los índices del servidor Elasticsearch a través de la API de Elasticsearch.

Crea un nuevo rol llamado ‘events_index‘ que sólo permita a los usuarios gestionar índices en el servidor Elasticsearch utilizando el siguiente comando.

curl -XPOST -u elastic 'http://172.16.0.3:9200/_security/role/events_index' -H "Content-Type: application/json" -d '{
  "indices" : [
    {
      "names" : [ "*" ],
      "privileges" : [ "all" ]
    }
  ]
}'

Crear nuevo rol elasticsearch

Después, comprueba el rol ‘events_index‘ utilizando el siguiente comando.

curl -X GET -u elastic "http://172.16.0.3:9200/_security/role/events_index?pretty"

A continuación se muestra el resultado que obtendrás.

comprobar rol elasticsearch

Como puedes ver, el rol ‘ events_index ‘ sólo tendrá privilegios para gestionar índices.

A continuación, añade el rol ‘events_index’ a nuestro usuario ‘hakase’ utilizando el siguiente comando.

curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'
{
  "password" : "hakasepasskibana",
  "roles" : [ "kibana_admin", "events_index" ]
}
'

Escribe la contraseña del usuario ‘elastic‘, y el rol ‘events_index‘ habrá sido asignado al usuario ‘hakase‘.

Comprueba todos los roles disponibles bajo el usuario ‘hakase’ utilizando el siguiente comando.

curl -X GET -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty"

A continuación se muestra el resultado que obtendrás.

asignar rol al usuario elasticsearch

Como resultado, hemos creado un nuevo rol en la gestión de índices en el servidor Elasticsearch.

Paso 6 – Crear un nuevo patrón de índice Filebeat

Después de crear un nuevo rol llamado ‘events_index’, crearemos un nuevo patrón de índice para Filebeat a través del usuario‘hakase‘.

– Crear patrón de índice

En el panel de control de Kibana, haz clic en la opción de menú de la izquierda, desplázate a la sección «Gestión» y haz clic en«Gestión de la pila«.

En la sección «Kibana«, haz clic en«Patrón de índice».

Crear patrón de índice Kibana

Haz clic en el botón «Crear patrón de índice» para crear un nuevo patrón de índice.

En el campo «Patrón de índice», escribe«filebeat-*» y haz clic en el botón«Siguiente paso«.

Crear patrón de índice Filebea en kibana

En el campo «Nombre del campo de filtro de tiempo», elige«@timestamp» y haz clic en el botón«Crear patrón de índice».

Establecer Marca de tiempo como filtro por defecto

Y se habrá creado el patrón de índice «filebeat-*«, y se seleccionará como patrón de índice por defecto (si antes no tienes ningún patrón de índice).

Se ha creado el Patrón de Índice Filebeat

– Mostrar datos en Kibana

Para mostrar los datos recopilados por filebeat, haz clic en el menú de opciones de la parte superior izquierda y, a continuación, en«Descubrir«.

Y obtendrás todos los datos recopilados por filebeat de la máquina«cliente01«.

Los datos de la máquina client01 se muestran en el panel de control de Kibana

Para mostrar datos basados en tu filtro, puedes utilizar el «KQL» o Lenguaje de Consulta de Kibana.

Escribe la siguiente consulta en el campo«KQL».

host.name : client01 and log.file.path: "/var/log/auth.log"

Y obtendrás toda la información sobre la autenticación SSH en la máquina «cliente01».

Uso del lenguaje de consulta KQL Kibana

Como resultado, la instalación de Elastic Stack con la seguridad activada en Ubuntu 20.04 se ha completado con éxito.

También te podría gustar...