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.
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.
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.
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.
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.
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».
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.
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.
Haz clic en el botón «Explorarmis propios datos«.
Ahora obtendrás el panel de control de Kibana como se muestra a continuación.
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«.
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.
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" ] } ] }'
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.
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.
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».
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«.
En el campo «Nombre del campo de filtro de tiempo», elige«@timestamp» y haz clic en el botón«Crear patrón de índice».
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).
– 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«.
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».
Como resultado, la instalación de Elastic Stack con la seguridad activada en Ubuntu 20.04 se ha completado con éxito.