Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
Esta guía detalla el proceso para instalar y configurar Elasticsearch, Logstash y Kibana en un servidor basado en Debian o Ubuntu.
Requisitos Previos
- Un servidor Debian/Ubuntu actualizado con acceso sudo.
- Al menos 4 GB de RAM para un rendimiento básico.
- Configuración inicial del servidor, incluyendo la instalación de
curl,wgetyufw:sudo apt update && sudo apt install -y curl wget apt-transport-https - Instalar Java, que es necesario para Elasticsearch y Logstash:
sudo apt install -y openjdk-11-jdk
Puedes verificar la versión instalada con:
java -version
Paso 1: Instalar Elasticsearch
Elasticsearch es un motor de búsqueda y análisis que se encargará de almacenar y consultar los registros.
- Agregar la clave GPG de Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - - Agregar el repositorio:
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list - Actualizar los repositorios e instalar Elasticsearch:
sudo apt update sudoapt install -y elasticsearch - Configurar Elasticsearch:
- Abre el archivo de configuración:
sudo nano /etc/elasticsearch/elasticsearch.yml - Configura las siguientes opciones básicas:
network.host: localhostcluster.name: my-clusternode.name: node-1
- Abre el archivo de configuración:
- Habilitar e iniciar Elasticsearch:
sudo systemctl enable elasticsearchsudo systemctl start elasticsearch - Probar Elasticsearch:
Ejecuta este comando para verificar que está funcionando:curl -X GET 'http://localhost:9200'
Deberías ver una respuesta en formato JSON con información del nodo y la versión.
Paso 2: Instalar Kibana
Kibana proporciona una interfaz gráfica para visualizar y analizar los datos almacenados en Elasticsearch.
- Instalar Kibana: Usa el mismo repositorio de Elasticsearch:
sudo apt install -y kibana - Configurar Kibana:
- Edita el archivo de configuración:
sudo nano /etc/kibana/kibana.yml - Establece el host del servidor como
localhost:server.host: "localhost"
- Edita el archivo de configuración:
- Habilitar e iniciar Kibana:
sudo systemctl enable kibanasudo systemctl start kibana - Acceder a Kibana:
Abre un navegador y navega ahttp://<IP-del-servidor>:5601.
Paso 3: Instalar Logstash
Logstash se utiliza para procesar y transformar los datos antes de enviarlos a Elasticsearch.
- Instalar Logstash:
sudo apt install -y logstash - Configurar Logstash:
- Crea un archivo de configuración en
/etc/logstash/conf.d/logstash.conf:sudo nano /etc/logstash/conf.d/logstash.conf - Añade un pipeline básico:
input{
beats {
port => 5044
}}filter {}output {
elasticsearch {
hosts => ["localhost:9200"]
}}
- Crea un archivo de configuración en
- Habilitar e iniciar Logstash:
sudo systemctl enable logstashsudo systemctl start logstash
Paso 4: Instalar Filebeat
Filebeat recopila los registros desde los servidores cliente y los envía a Logstash.
- Instalar Filebeat en el servidor cliente:
sudo apt install -y filebeat - Configurar Filebeat para enviar registros a Logstash:
- Edita el archivo
/etc/filebeat/filebeat.yml:output.logstash:hosts: ["<IP-Logstash>:5044"] - Habilita el módulo de logs del sistema:
sudo filebeat modules enable system
- Edita el archivo
- Probar Filebeat:
sudo filebeat test output - Habilitar e iniciar Filebeat:
sudo systemctl enable filebeatsudo systemctl start filebeat
Paso 5: Configurar el Firewall
Permite el tráfico necesario para los servicios del ELK Stack:
sudo ufw allow 5601 # Kibana
sudo ufw allow 9200 # Elasticsearch
sudo ufw allow 5044 # Logstash
sudo ufw enable
Paso 6: Validar la Configuración
- Enviar datos de prueba a Elasticsearch:
curl -X POST "localhost:9200/logs/_doc/" -H 'Content-Type: application/json' -d'{"message": "Prueba de Elasticsearch","timestamp": "2024-11-28T00:00:00"}' - Ver los registros en Kibana:
- Abre Kibana, ve a la pestaña "Discover" y selecciona el índice creado (
logs-*).
- Abre Kibana, ve a la pestaña "Discover" y selecciona el índice creado (
Paso 7: Configurar Nginx como proxy inverso para Kibana
1. Instalar Nginx
Primero, asegúrate de que Nginx esté instalado:
sudo apt update
sudo apt install -y nginx
2. Crear un archivo de usuarios para autenticación básica
- Genera un archivo con credenciales de usuario para proteger el acceso a Kibana:
echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
- Sustituye
kibanaadminpor el nombre de usuario deseado. - Cuando se te solicite, ingresa la contraseña para el usuario. Esta será cifrada automáticamente.
- Sustituye
- Verifica el contenido del archivo generado:
cat /etc/nginx/htpasswd.users
3. Configurar un bloque de servidor en Nginx
- Crea un archivo de configuración para tu dominio o subdominio en Nginx:
sudo nano /etc/nginx/sites-available/kibana - Añade la configuración siguiente al archivo:
server {listen 80;server_name example.com;auth_basic "Restricted Access";auth_basic_user_file /etc/nginx/htpasswd.users;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;}}- Sustituye
example.compor tu dominio o dirección IP.
- Sustituye
- Enlaza este archivo de configuración a
sites-enabled:sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/ - Verifica la configuración de Nginx para asegurarte de que no haya errores:
sudo nginx -t - Reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx
4. Probar la configuración
- Abre tu navegador y navega a
http://example.com(o el dominio configurado). - Deberías ver un cuadro de autenticación solicitando las credenciales.
- Ingresa el nombre de usuario y contraseña configurados anteriormente.
5. Opcional: Configurar HTTPS con Let’s Encrypt
Para mayor seguridad, puedes configurar HTTPS usando Let's Encrypt:
- Instala el cliente Certbot para Nginx:
sudo apt install -y certbot python3-certbot-nginx - Genera el certificado SSL:
sudo certbot --nginx -d example.com - Renueva automáticamente los certificados:
sudo crontab -e
Añade esta línea para ejecutar la renovación automáticamente:0 3 * * * certbot renew --quiet
Conclusión
Ahora tienes un entorno seguro donde Kibana está protegido por una capa de autenticación y redirigido a través de Nginx. Además, puedes usar HTTPS para cifrar el tráfico hacia tu servidor. Esta configuración es ideal para entornos de producción donde se manejan datos sensibles.