Guía de tecnologías

Instalar y asegurar OpenSearch en Rocky Linux 9

9 min read DevOps Actualizado 30 Sep 2025
OpenSearch en Rocky Linux 9: instalación y seguridad
OpenSearch en Rocky Linux 9: instalación y seguridad

OpenSearch es un motor de búsqueda y analítica 100% open source (fork de Elasticsearch/Kibana). Esta guía paso a paso muestra cómo instalar OpenSearch y OpenSearch Dashboards en Rocky Linux 9, asegurar la comunicación con certificados TLS/SSL, habilitar la seguridad (usuarios y roles) y optimizar la máquina para producción en un nodo único. Incluye checklist, buenas prácticas, procedimientos operativos y soluciones comunes.

Introducción

OpenSearch es un proyecto comunitario iniciado por Amazon, basado en forks de Elasticsearch y Kibana. Es una suite de búsqueda, análisis y visualización totalmente abierta con funcionalidades como seguridad empresarial, alertas, SQL, gestión de índices y ML básico.

En esta guía instalaremos OpenSearch (nodo único) y OpenSearch Dashboards en Rocky Linux 9, configuraremos TLS para node-to-node y cliente-REST, añadiremos usuarios con OpenSearch Security y cubriremos pasos operativos y de verificación.

Importante: los comandos y ejemplos usan la IP 192.168.5.25 y el hostname node-rock1. Sustituye esos valores por los de tu entorno.

Intención principal y variantes relacionadas

  • Instalar y asegurar OpenSearch en Rocky Linux 9
  • Instalar OpenSearch en RHEL/CentOS/Rocky
  • Configurar TLS para OpenSearch
  • Configurar OpenSearch Dashboards con autenticación
  • Buenas prácticas de despliegue de OpenSearch

Prerrequisitos

Antes de comenzar asegúrate de tener:

  • Un servidor con Rocky Linux 9 y al menos 4 GB de RAM (ejemplo usa 8 GB). IP: 192.168.5.25, hostname: node-rock1
  • Usuario no root con privilegios sudo
  • SELinux en modo permissive (o evalúa políticas necesarias en modo enforcing)
  • Conexión de red entre clientes y servidor para puertos 9200 (REST) y 5601 (Dashboards)

Nota importante: si vas a un entorno de producción con más nodos, adapta discovery.replica y otras configuraciones de cluster.

Preparar el sistema

Tareas previas: configurar hostname/FQDN, desactivar swap, ajustar vm.max_map_count.

  1. Establecer hostname y FQDN. Sustituye la IP por la de tu servidor:
sudo hostnamectl set-hostname node-rock1
echo '192.168.5.25  node-rock1.hwdomain.lan  node-rock1' >> /etc/hosts

Cierra la sesión y vuelve a entrar, luego verifica FQDN:

sudo hostname -f

Captura del comando hostname mostrando el FQDN

  1. Desactivar swap (recomendado para Elastic/OpenSearch):
sudo sed -i '/ swap / s/^\\(.*\\\)$/#\1/g' /etc/fstab
sudo swapoff -a

Verifica con:

free -m

La sección Swap debe mostrar 0.

Salida de free -m mostrando Swap 0

  1. Aumentar vm.max_map_count (requerido por Lucene):
sudo bash -c 'echo "vm.max_map_count=262144" >> /etc/sysctl.conf'
sudo sysctl -p

Verifica:

cat /proc/sys/vm/max_map_count

Debe devolver 262144.

Verificación de vm.max_map_count

Con esto el sistema está listo para la instalación.

Formas de instalar OpenSearch: comparación rápida

  • RPM (recomendado para RHEL/Rocky/CentOS): integración con systemd y SELinux
  • Tarball: portable, sin gestión de paquetes
  • Docker: rápido en entornos de contenedores; ojo con volúmenes y permisos
  • Kubernetes: para producción en cluster con StatefulSets

Decision brief: si gestionas servidores Linux clásicos, usa RPM; para pruebas rápidas, Docker o tarball.

Instalar OpenSearch (vía repositorio RPM)

  1. Añadir repositorio e inspeccionar:
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo
sudo dnf repolist

Deberías ver “OpenSearch 2.x” listado.

Lista de repositorios mostrando OpenSearch 2.x

  1. Consultar información del paquete:
sudo dnf info opensearch

En el repositorio suelen estar versiones para x86_64 y aarch64.

Versiones de OpenSearch disponibles

  1. Instalar:
sudo dnf install opensearch

Acepta la clave GPG cuando se solicite.

Instalación de OpenSearch mediante dnf

  1. Recargar systemd y arrancar el servicio:
sudo systemctl daemon-reload
sudo systemctl start opensearch
sudo systemctl enable opensearch

Verifica el estado:

sudo systemctl status opensearch

Debe aparecer active (running) y enabled.

Estado de OpenSearch activo

Configurar OpenSearch (ajustes básicos)

Las configuraciones están en /etc/opensearch.

  1. Ajustes de networking y modo single-node: edita /etc/opensearch/opensearch.yml
sudo nano /etc/opensearch/opensearch.yml

Añade o modifica:

network.host: 192.168.5.25

discovery.type: single-node

plugins.security.disabled: false

Guarda y sal.

  1. Ajustar heap JVM (según memoria del host). Edita /etc/opensearch/jvm.options:
sudo nano /etc/opensearch/jvm.options

Por ejemplo, para un servidor con 8 GB de RAM recomendamos 2 GB de heap:

-Xms2g
-Xmx2g

Reglas: asigna heap = aproximadamente 50% de RAM física hasta 32 GB máximo para heap.

  1. Reinicia OpenSearch para aplicar cambios:
sudo systemctl restart opensearch

Verifica puertos abiertos (por defecto 9200):

ss -tulpn | grep 9200

Resumen de configuraciones importantes

Fact box:

  • Puerto REST por defecto: 9200
  • Puerto Dashboards: 5601
  • Usuario del servicio: opensearch
  • Directorio config: /etc/opensearch
  • Directorio plugins: /usr/share/opensearch/plugins
  • Valor recomendado vm.max_map_count: 262144

Asegurar OpenSearch con certificados TLS

Objetivo: cifrar tráfico node-to-node y REST (cliente-servidor) usando una CA propia y certificados firmados por ella.

Arquitectura de certificados en esta guía:

  • Root CA (autofirmada)
  • Certificados admin para la herramienta securityadmin
  • Certificados por nodo (CN = hostname o IP)

Antes de generar certificados, elimina demo certs y prepara directorio:

sudo rm -f /opt/opensearch/{esnode-key.pem,esnode.pem,kirk-key.pem,kirk.pem,root-ca.pem}
sudo nano /etc/opensearch/opensearch.yml

Comentario: si existía la configuración demo del plugin de seguridad, coméntala.

Crear directorio de certificados y entrar en él:

sudo mkdir -p /etc/opensearch/certs; cd /etc/opensearch/certs
sudo chown -R opensearch:opensearch /etc/opensearch/certs
sudo chmod 0700 /etc/opensearch/certs

Generar Root CA

openssl genrsa -out root-ca-key.pem 2048
openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ROOT" -out root-ca.pem -days 730

Resultado: root-ca-key.pem y root-ca.pem.

Generar certificado admin

openssl genrsa -out admin-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730

admin.pem será usado por securityadmin.sh para aplicar configuraciones.

Generar certificado para el nodo

openssl genrsa -out node-rock1-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in node-rock1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node-rock1-key.pem
openssl req -new -key node-rock1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node-rock1.hwdomain.lan" -out node-rock1.csr
echo 'subjectAltName=DNS:node-rock1.hwdomain.lan' > node-rock1.ext
openssl x509 -req -in node-rock1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node-rock1.pem -days 730 -extfile node-rock1.ext

Firma el CSR con la CA y produce node-rock1.pem.

Limpiar archivos temporales y registrar la CA en el sistema

rm *temp.pem *csr *ext
openssl x509 -outform der -in root-ca.pem -out root-ca.crt
sudo cp root-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

Ajustar permisos (ya mostrado antes):

sudo chown -R opensearch:opensearch /etc/opensearch/certs
sudo chmod 0700 /etc/opensearch/certs
sudo chmod 0600 /etc/opensearch/certs/*.pem
sudo chmod 0600 /etc/opensearch/certs/*.crt

Listado de certificados en /etc/opensearch/certs

Añadir certificados a opensearch.yml (bloque de seguridad)

Para añadir los parámetros de TLS y DNs, puedes usar un script que agregue las líneas en /etc/opensearch/opensearch.yml. Crea add.sh:

#! /bin/bash

echo "plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node-rock1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node-rock1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.enabled: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node-rock1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node-rock1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.allow_default_init_securityindex: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.authcz.admin_dn:" | sudo tee -a /etc/opensearch/opensearch.yml
echo "  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.nodes_dn:" | sudo tee -a /etc/opensearch/opensearch.yml
echo "  - 'CN=node-rock1.hwdomain.lan,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.audit.type: internal_opensearch" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.enable_snapshot_restore_privilege: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.check_snapshot_restore_write_privileges: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.restapi.roles_enabled: [\"all_access\", \"security_rest_api_access\"]" | sudo tee -a /etc/opensearch/opensearch.yml

Hazlo ejecutable y ejecútalo:

chmod +x add.sh
sudo ./add.sh

Verifica que /etc/opensearch/opensearch.yml contenga las nuevas líneas.

Salida que muestra que se agregaron las configuraciones TLS en opensearch.yml

Reinicia OpenSearch:

sudo systemctl restart opensearch

Crear usuarios administrativos y aplicar la configuración de seguridad

  1. Generar hashes de contraseña (herramienta incluida en plugin):
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh

Introduce la contraseña en texto plano y copia el hash resultante. Repite para otro usuario.

Generación de hash de contraseña con hash.sh

  1. Editar /etc/opensearch/opensearch-security/internal_users.yml y reemplazar usuarios por los tuyos. Ejemplo:
admin:
  hash: "$2y$12$BnfqwqWRi7DkyuPgLa8.3.kLzdpIY11jFpSXTAOKOMCVj/i20k9oW"
  reserved: true
  backend_roles:
  - "admin"
  description: "Admin user"

kibanaserver:
  hash: "$2y$12$kYjgPjPzIp9oTghNdWIHcuUalE99RqSYtTCh6AiNuS5wmeEaWnbzK"
  reserved: true
  description: "Demo OpenSearch Dashboards user"

Sustituye los hashes por los tuyos.

  1. Reiniciar OpenSearch y ejecutar securityadmin.sh para aplicar los cambios:
sudo systemctl restart opensearch
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -h 192.168.5.25 -p 9200 -cd /etc/opensearch/opensearch-security/ -cacert /etc/opensearch/certs/root-ca.pem -cert /etc/opensearch/certs/admin.pem -key /etc/opensearch/certs/admin-key.pem -icl -nhnv

securityadmin.sh aplicará los usuarios, roles y permisos en el índice de seguridad.

Ejecución de securityadmin.sh mostrando comunicación con 192.168.5.25:9200

  1. Verificar con curl (usa -k para omitir verificación si opensearch.ssl.verificationMode=none en Dashboards; en producción no uses -k):
curl https://node-rock1:9200 -u admin:password -k
curl https://node-rock1:9200 -u kibanaserver:kibanapass -k

Verifica que la respuesta muestre información del clúster y que la autenticación sea correcta.

Verificación del usuario admin vía curl

Verificación del usuario kibanaserver vía curl

Con esto OpenSearch está instalado y asegurado con TLS y autenticación básica mediante el plugin de seguridad.

Instalar OpenSearch Dashboards

  1. Ajustar crypto policy (porque el repo usa SHA1 en metadatos):
sudo update-crypto-policies --set LEGACY
  1. Añadir repositorio de Dashboards:
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/opensearch-dashboards-2.x.repo -o /etc/yum.repos.d/opensearch-dashboards-2.x.repo
sudo dnf repolist

Repositorio de OpenSearch Dashboards añadido

  1. Instalar:
sudo dnf install opensearch-dashboards

Acepta clave GPG cuando se solicite.

Instalación de OpenSearch Dashboards

  1. Iniciar y habilitar:
sudo systemctl start opensearch-dashboards
sudo systemctl enable opensearch-dashboards
sudo systemctl status opensearch-dashboards

Configurar OpenSearch Dashboards

Editar el fichero principal:

sudo nano /etc/opensearch-dashboards/opensearch-dashboard.yml

Ajustes sugeridos:

server.port: 5601
server.host: "192.168.5.25"

opensearch.hosts: ["https://192.168.5.25:9200"]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanapass

Nota: opensearch.ssl.verificationMode: none evita la verificación del certificado en Dashboards; en producción preferible configurar la CA y usar verificationMode: full con la ruta a la CA.

Reinicia Dashboards:

sudo systemctl restart opensearch-dashboards

Configuración de OpenSearch Dashboards

Abrir puerto y acceder a OpenSearch Dashboards

Permitir el puerto 5601 en firewalld:

sudo firewall-cmd --add-port=5601/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Reglas de firewalld con puerto 5601 abierto

Abre en el navegador: http://192.168.5.25:5601 y autentica con el usuario kibanaserver.

Pantalla de login de OpenSearch Dashboards

Tras el login verás el dashboard de bienvenida y opciones para añadir datos.

Página de bienvenida de OpenSearch Dashboards

Verifica la conexión con Dev Tools: ejecutar GET / y comprobar HTTP 200 - OK.

Dev Tools ejecutando GET / mostrando 200 OK

Comprobaciones y pruebas básicas

  • systemctl status opensearch y opensearch-dashboards
  • ss -tulpn | grep -E “9200|5601”
  • curl https://127.0.0.1:9200 -u admin:tu_pass -k
  • Acceso web a Dashboards y ejecución de GET /
  • Verificar índices con GET _cat/indices?v

Buenas prácticas y endurecimiento de seguridad

  • No uses opensearch.ssl.verificationMode: none en producción; configura truststore y verificationMode: full.
  • Usa contraseñas seguras y rotación periódica.
  • Restringe acceso de red a puertos 9200 y 5601 mediante firewall y listas de control.
  • Configura backups (snapshots) a un repositorio remoto (NFS/S3).
  • Habilita auditoría de seguridad para rastrear cambios.
  • Monitoriza métricas JVM, uso de disco e índices.

Respaldo y restauración de certificados y configuración (mini S.O.P.)

  1. Respaldar configuración y certificados:
sudo tar czf /root/opensearch-backup-$(date +%F).tar.gz /etc/opensearch /etc/opensearch-dashboards /etc/opensearch/certs
  1. Restaurar en un host nuevo:
sudo tar xzf /root/opensearch-backup-YYYY-MM-DD.tar.gz -C /
sudo chown -R opensearch:opensearch /etc/opensearch/certs
sudo systemctl daemon-reload
sudo systemctl restart opensearch

Playbook operativo resumido

  • Preparación del host (hostname, swap off, vm.max_map_count)
  • Instalar repositorio e instalar opensearch
  • Configurar opensearch.yml y jvm.options
  • Generar CA y certificados, instalarlos y fijar permisos
  • Añadir TLS y DNs a opensearch.yml
  • Generar hashes de contraseña y aplicar securityadmin.sh
  • Instalar OpenSearch Dashboards y configurarlo
  • Abrir firewall y verificar acceso

Lista de comprobación por roles

Administrador de sistemas:

  • Host con hostname y FQDN configurados
  • Swap deshabilitado
  • vm.max_map_count configurado
  • Repositorio OpenSearch añadido
  • OpenSearch y Dashboards instalados y habilitados

Equipo de seguridad:

  • CA y certificados generados y almacenados de forma segura
  • TLS activado para transporte y HTTP
  • Usuarios con roles mínimos definidos
  • Auditoría activada

Desarrollador/Usuario de Dashboards:

  • Acceso a Dashboards probado
  • Dev Tools GET / devuelve 200
  • Indices básicos creados y visibles

Solución de problemas comunes

  • OpenSearch no arranca: revisar journalctl -u opensearch, problemas típicos: permisos en /etc/opensearch/certs, formato PKCS, errores de bootstrap por discovery cuando no está en single-node.
  • securityadmin.sh falla: comprobar rutas de certificados, que el servicio esté a la escucha en 9200 y que la hora del sistema esté sincronizada.
  • Dashboards no conecta: revisar opensearch.hosts, credenciales, verificationMode, logs de /var/log/opensearch-dashboards.

Alternativas y cuándo elegir otra opción

  • Docker: si quieres despliegues efímeros o CI, usar contenedores acelera pruebas; sin embargo en producción necesitarás manejar volúmenes, reinicios y políticas de datos.
  • Kubernetes: recomendable para clusters con autoescalado y alta disponibilidad; añade complejidad operacional.
  • Tarball: útil en entornos con políticas de paquetes estrictas o para desarrolladores.

Diagrama de decisión (Mermaid)

flowchart TD
  A[Necesitas OpenSearch?] --> B{Entorno}
  B --> |Servidor Linux| C[RPM]
  B --> |Contenedores| D[Docker]
  B --> |Kubernetes| E[Helm / StatefulSet]
  C --> F[Configurar TLS y Security]
  D --> F
  E --> F
  F --> G[Monitoreo, Backup, Escalado]

Criterios de aceptación

  • OpenSearch y OpenSearch Dashboards en ejecución y habilitados al arranque.
  • TLS habilitado para transporte y HTTP.
  • Usuario admin y kibanaserver creados y aplicados vía securityadmin.sh.
  • Acceso a Dashboards con HTTP 200 en GET / desde Dev Tools.

Glosario rápido (1 línea por término)

  • OpenSearch: motor de búsqueda y analítica open source derivado de Elasticsearch.
  • OpenSearch Dashboards: interfaz de visualización derivada de Kibana.
  • CA: Autoridad de certificación que firma certificados TLS.
  • CSR: Certificate Signing Request, petición para firmar un certificado.
  • PKCS#8: Formato estándar para almacenar claves privadas.

Lista de pruebas/aceptación (Test cases)

  • TC1: systemctl status opensearch -> active (running)
  • TC2: curl https://node:9200 -u admin:pass -k -> HTTP 200
  • TC3: Acceso a http://node:5601 -> Página login
  • TC4: Dev Tools GET / -> JSON con versión y cluster_name

Mejoras futuras y escalado

  • Convertir a cluster multi-nodo: configurar discovery.seed_hosts y cluster.initial_master_nodes.
  • Implementar snapshots automáticos a repositorio S3.
  • Configurar alertas y reglas de index lifecycle management (ILM).

Notas finales

Has instalado OpenSearch y OpenSearch Dashboards en Rocky Linux 9, protegido la comunicación con certificados TLS, creado usuarios y aplicado la configuración de seguridad. Desde aquí puedes escalar a clústeres múltiples, integrar con sistemas de autenticación centralizada (LDAP/AD) y automatizar despliegues con Ansible o Helm.

Resumen final: sigue las listas de comprobación, guarda copias de seguridad de certificados, monitoriza métricas y aplica políticas de acceso mínimo para mantener tu despliegue seguro y estable.

Recursos recomendados

  • Documentación oficial de OpenSearch: https://opensearch.org
  • Guía de seguridad y plugin opensearch-security en la documentación oficial
Autor
Edición

Materiales similares

Reemplazar disco fallido en RAID1
Administración de Sistemas

Reemplazar disco fallido en RAID1

Error 43 en GPU NVIDIA/Intel: guía completa
Soporte técnico

Error 43 en GPU NVIDIA/Intel: guía completa

Desactivar pantalla táctil en iPhone y iPad
Guías

Desactivar pantalla táctil en iPhone y iPad

OpenSearch en Rocky Linux 9: instalación y seguridad
DevOps

OpenSearch en Rocky Linux 9: instalación y seguridad

Desactivar Liquid Glass en iOS 26
Tutorial

Desactivar Liquid Glass en iOS 26

No puedo crear carpeta en Windows 10 — Solución
Soporte técnico

No puedo crear carpeta en Windows 10 — Solución