Solo para visitantes de nuestro blog Obtenga 3 meses adicionales gratis + 10% de descuento en el plan trianual YSBLOG10
Agarra el trato

Cómo crear ElasticSearch en un servidor Linux con la seguridad habilitada

Última actualización: marzo 7, 2026 8 minutos de lectura Sanjeet Chauhan
Crear ElasticSearch en un servidor Linux

Para crear Elasticsearch en un servidor LinuxPrepare el sistema operativo, agregue el repositorio de paquetes de Elastic, instale Elasticsearch 8.x, ajuste los límites del kernel, configure elasticsearch.yml (nodo único o clúster), abra los puertos 9200/9300, habilite e inicie el servicio, proteja con HTTPS/contraseñas y verifique mediante la API REST. Opcionalmente, instale Kibana para paneles de control y... manageambiente.

Si desea crear Elasticsearch en un servidor Linux para búsqueda, análisis o registro, esta guía lo guiará a través de una configuración limpia y orientada a la producción.

Cubriremos distribuciones basadas en Ubuntu/Debian y RHEL, valores predeterminados de seguridad en Elasticsearch 8, ajuste del rendimiento, uso básico de API y consejos prácticos de años de alojamiento de cargas de trabajo reales.

Qué construirás y para quién es esta guía?

Este tutorial ayuda a principiantes y administradores de sistemas a instalar y configurar Elasticsearch 8 en un servidor Linux . Configurarás una instancia segura de nodo único o preparada para clúster, aprenderás los ajustes esenciales del kernel y la JVM, y ejecutarás tus primeras consultas de indexación y búsqueda. Los pasos se ajustan a las mejores prácticas de Elastic y a la configuración de seguridad predeterminada moderna.

Requisitos previos y requisitos del sistema

  • Sistemas operativos soportados: Ubuntu 20.04/22.04/24.04, Debian 11/12, RHEL/CentOS/AlmaLinux/Rocky 8/9
  • CPU/RAM: Mínimo 2 vCPU y 4GB RAM (Se recomiendan 8 GB o más)
  • Almacenamiento: Se recomienda SSD; planifique IOPS para cargas de trabajo con alta indexación
  • Network:Abrir los puertos TCP 9200 (HTTP) y 9300 (transporte/clúster)
  • Acceso: Privilegios de root o sudo
  • Sincronización del reloj: Habilite chrony o systemd-timesyncd para obtener marcas de tiempo consistentes

Nota: Elasticsearch 8 incluye un JDK compatible. No es necesario instalar Java por separado.

Comprender los valores predeterminados de seguridad de Elasticsearch 8

Elasticsearch 8 habilita la seguridad de forma predeterminada. HTTPS está activado y utilizará usuarios integrados (como elastic) con contraseñas. Para desarrollo, puede ejecutar un solo nodo con una configuración mínima. Para producción, configure TLS, usuarios/roles y restrinja la exposición a la red.

Instalar Elasticsearch en Ubuntu/Debian

Estos pasos agregan el repositorio APT de Elastic e instalan la última versión 8.x.

sudo apt update && sudo apt install -y curl gnupg apt-transport-https

# Import Elastic GPG key
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

# Add APT repository
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | 
  sudo tee /etc/apt/sources.list.d/elastic-8.x.list

sudo apt update
sudo apt install -y elasticsearch

El instalador puede imprimir una contraseña temporal para el elastic Ubicación de los archivos de usuario y certificado. Guárdelos de forma segura.

Instalar Elasticsearch en RHEL/CentOS/AlmaLinux/Rocky

sudo dnf install -y curl gnupg

# Create YUM repo
cat <<'EOF' | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

sudo dnf clean all
sudo dnf install -y elasticsearch

Ajuste del kernel y del sistema operativo (obligatorio)

Elasticsearch se basa en asignaciones de memoria virtual y archivos abiertos. Configúrelos antes del primer inicio.

# Virtual memory mappings
echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl --system

# File descriptors and processes for the elasticsearch user
echo -e "elasticsearch soft nofile 65536nelasticsearch hard nofile 65536nelasticsearch soft nproc 4096nelasticsearch hard nproc 4096" | 
  sudo tee /etc/security/limits.d/90-elasticsearch.conf

# Optional: reduce swap aggressiveness
echo "vm.swappiness=1" | sudo tee /etc/sysctl.d/98-swappiness.conf
sudo sysctl --system

Para bloquear la memoria (ayuda a evitar el intercambio), habilite el bloqueo de memoria y ajuste los límites de systemd.

# In elasticsearch.yml
# bootstrap.memory_lock: true

# Create systemd override to allow memlock
sudo systemctl edit elasticsearch
# Then add:
# [Service]
# LimitMEMLOCK=infinity

sudo systemctl daemon-reload

Configurar elasticsearch.yml

Edite el archivo de configuración principal para establecer la identidad del nodo, el enlace de red y el modo de clúster.

sudo nano /etc/elasticsearch/elasticsearch.yml

Para un nodo único seguro (desarrollo/prueba):

cluster.name: my-es-cluster
node.name: node-1
network.host: 0.0.0.0            # or a private IP; avoid exposing to the internet
discovery.type: single-node
xpack.security.enabled: true     # On by default in 8.x

Para un clúster de múltiples nodos listo para producción (ejemplo):

cluster.name: prod-es
node.name: es-1
network.host: 10.0.1.10

discovery.seed_hosts: ["10.0.1.10", "10.0.1.11", "10.0.1.12"]
cluster.initial_master_nodes: ["es-1", "es-2", "es-3"]

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.enabled: true

Para TLS, utilice la herramienta de certificación integrada o su PKI. Elasticsearch 8 genera certificados de servicio durante la instalación; puede regenerarlos con la herramienta. elasticsearch-certutil .

Iniciar, habilitar y verificar el servicio

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
# Logs
sudo journalctl -u elasticsearch -f

Obtenga o restablezca la contraseña de superusuario incorporada si es necesario:

# If shown at install, use that. Otherwise:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

Verificar a través de HTTPS (el certificado puede ser autofirmado):

curl -u elastic https://localhost:9200 -k
# Expect cluster info JSON

Abrir puertos de firewall (si es necesario)

Para el desarrollo de un solo nodo, es posible que solo necesite 9200. Para clústeres, abra 9300 solo en redes privadas.

# UFW (Ubuntu)
sudo ufw allow 9200/tcp
sudo ufw allow 9300/tcp
sudo ufw reload

# firewalld (RHEL-based)
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --permanent --add-port=9300/tcp
sudo firewall-cmd --reload

Utilice la API REST para validar la funcionalidad. Reemplace la contraseña según corresponda.

# Create an index with 1 shard and 1 replica (adjust for your cluster)
curl -k -u elastic:YOUR_PASSWORD -X PUT "https://localhost:9200/blog?pretty" 
  -H 'Content-Type: application/json' 
  -d '{ "settings": { "number_of_shards": 1, "number_of_replicas": 1 } }'

# Index a document (auto-generate ID)
curl -k -u elastic:YOUR_PASSWORD -X POST "https://localhost:9200/blog/_doc?pretty" 
  -H 'Content-Type: application/json' 
  -d '{ "title": "Hello Elasticsearch", "tags": ["linux","search"], "published": true }'

# Search
curl -k -u elastic:YOUR_PASSWORD "https://localhost:9200/blog/_search?q=title:hello&pretty"

Opcional: Instalar Kibana

Kibana proporciona una GUI para managemento, paneles de control y herramientas de desarrollo.

# Ubuntu/Debian
sudo apt install -y kibana

# RHEL-based
sudo dnf install -y kibana

Vincula Kibana a una interfaz segura e inscríbelo con Elasticsearch 8:

# /etc/kibana/kibana.yml
server.host: "0.0.0.0"        # or private IP
elasticsearch.hosts: ["https://localhost:9200"]

# Enrollment (generates a token from ES)
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
sudo /usr/share/kibana/bin/kibana-setup --enrollment-token <TOKEN>

sudo systemctl enable --now kibana

Fundamentos del ajuste del rendimiento

  • Tamaño del montón: Establecer ~50% de RAM (máximo ~31 GB) para una mayor eficiencia de OOP comprimido.
  • Almacenamiento: Prefiera NVMe/SSD. Evite el almacenamiento remoto o en red para datos de alta demanda.
  • fragmentos: No fragmente demasiado. Comience con uno o dos fragmentos principales por índice; ajuste según el volumen de datos y el acuerdo de nivel de servicio (SLA).
  • Actualización y réplicas: Reducir las réplicas para mejorar la velocidad de ingesta; aumentarlas para mejorar la disponibilidad.
  • Tubería de ingesta: Utilice nodos de ingesta de Elasticsearch o Logstash para análisis intensivo.

Establecer el montón mediante la anulación de jvm.options.d:

echo "-Xms4g" | sudo tee /etc/elasticsearch/jvm.options.d/heap.options
echo "-Xmx4g" | sudo tee -a /etc/elasticsearch/jvm.options.d/heap.options
sudo systemctl restart elasticsearch

Lista de verificación para fortalecer la seguridad

  • Nunca exponga el 9200/9300 a la red pública de internet. Utilice redes privadas, VPN o servidores proxy inversos con TLS.
  • Utilice contraseñas seguras o SSO (SAML/OIDC). Cree roles de alcance limitado para las aplicaciones.
  • Rotar certificados, deshabilitar cifrados débiles y fijar a TLS 1.2+.
  • Habilite el registro de auditoría para las necesidades de cumplimiento.
  • Realice copias de seguridad periódicamente con instantáneas (compatibles con S3 o NFS).
# Create a repository for snapshots (example: S3)
PUT _snapshot/my_s3_repo
{
  "type": "s3",
  "settings": {
    "bucket": "my-es-backups",
    "region": "us-east-1"
  }
}

# Trigger a snapshot
PUT _snapshot/my_s3_repo/snap-001?wait_for_completion=true

Actualizaciones y reinicios continuos

  • Instantánea antes de las actualizaciones.
  • Verifique la compatibilidad del complemento y las advertencias de desuso en _cluster/settings y registros.
  • En clústeres, realice reinicios progresivos: detenga un nodo, actualice, inicie, espere a que esté en verde y repita.
  • Mantenga las versiones menores alineadas entre los nodos para evitar incompatibilidades.

Resolución de problemas comunes

  • El servicio no se inicia: Comprobar journalctl -u elasticsearch -e para errores de permiso o bloqueo de memoria.
  • max virtual memory areas vm.max_map_count:Vuelva a aplicar sysctl y reinicie si es necesario.
  • Clúster rojo/amarillo: Inspeccciona /_cluster/health y /_cat/shards; solucionar problemas de asignación o límites de almacenamiento.
  • Errores de autenticación: Restablecer el elastic Contraseña de usuario y verificar certificados.
  • Alto uso del montón: Aumente el montón con cautela, reduzca el número de fragmentos u optimice las consultas/asignaciones.

Consejo de hosting rentable (desde las trincheras)

Elasticsearch prospera en la velocidad CPU, RAMy SSD, pero los costos pueden aumentar. Si está comenzando con poco o migrando desde entornos compartidos, YouStableLos servidores VPS y en la nube con SSD ofrecen una relación calidad-precio equilibrada para Elasticsearch. Solicite soporte para obtener imágenes optimizadas con los límites del kernel y los valores predeterminados de la JVM preconfigurados para reducir el tiempo de recuperación.

Resumen de las mejores prácticas

  • Instalar Elasticsearch 8 de los repositorios oficiales para obtener valores predeterminados de seguridad y actualizaciones.
  • Aplicar límites de kernel (vm.max_map_count, nofile, nproc) y habilitar el bloqueo de memoria.
  • Vinculado a IP privadas y protegiendo los puertos con un firewall o grupos de seguridad.
  • Montón del tamaño adecuado (≈50% RAM), evite el sobrefragmentado y utilice unidades SSD.
  • Automatice instantáneas y restablezca pruebas periódicamente.

Preguntas Frecuentes

¿Necesito instalar Java para ejecutar Elasticsearch 8 en Linux?

Normalmente no. Elasticsearch 8 incluye un JDK compatible por defecto. Instale un Java personalizado solo si tiene un requisito específico y asegúrese de que las versiones coincidan con la matriz de compatibilidad de Elastic.

¿Qué puertos deben estar abiertos para Elasticsearch?

Puertos 9200 (API HTTPS/HTTP) y 9300 (transporte para agrupamiento). Mantenga el 9300 privado. Evite exponer el 9200 a la red pública de internet; restrinja el acceso con reglas de firewall, VPN o un proxy inverso autenticado.

Asignar aproximadamente el 50% de los disponibles RAM al montón de Java (hasta ~31 GB). Utilice almacenamiento SSD o NVMe y asegúrese de que las IOPS sean adecuadas. Comience con 2 vCPU/ 4 GB RAM mínimo; 8–16 GB RAM Es cómodo para cargas de trabajo moderadas.

¿Cómo restablezco la contraseña del usuario elástico?

Ejecutar: sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elasticAlmacene las contraseñas en una bóveda segura y actualice cualquier aplicación que se autentique en el clúster.

¿Cómo hago una copia de seguridad y restauro los datos de Elasticsearch?

Usar instantáneas y restaurar. Registre un repositorio (S3, GCS, Azure o un sistema de archivos compartido) y, a continuación, active las instantáneas. Para restaurar, cree una solicitud de restauración de índice desde el repositorio de instantáneas. Pruebe siempre las restauraciones primero en entornos que no sean de producción.

Deja Tu Comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

Ir al Inicio