Cómo instalar OpenSearch en Debian 12

OpenSearch es una bifurcación de código abierto de Elasticsearch y Kibana desarrollada por Amazon. Es un motor de búsqueda en tiempo real, distribuido y escalable, que permite realizar búsquedas de texto completo y análisis. Se utiliza para indexar y buscar en grandes cantidades de datos. Suele desplegarse junto con OpenSearch Dashboards (una bifurcación de Kibana), un potente panel de visualización de datos para OpenSearch. OpenSearch Dashboards te permite explorar los datos de registro de OpenSearch y crear cuadros de mando y consultas para obtener información sobre tu aplicación.

Este tutorial te mostrará cómo instalar OpenSearch en un servidor Debian 12. También aprenderás a proteger tu instalación con certificados TLS personalizados y a activar la autenticación en OpenSearch.

Requisitos previos

  • Un servidor que ejecute Debian 12 con un mínimo de 4 GB de RAM.
  • Un usuario no root con privilegios sudo.
  • El cortafuegos sin complicaciones (UFW) está activado y en ejecución.
  • Un Nombre de Dominio Completamente Cualificado (FQDN) como opensearch.example.com apuntando a tu servidor. Esto es beneficioso si quieres servir OpenSearch Dashboards a través de SSL utilizando un servidor proxy.
  • Todo está actualizado.
    $ sudo apt update && sudo apt upgrade
    
  • Se necesitan algunos paquetes esenciales para que el tutorial y Craft CMS funcionen. Algunos de ellos ya estarán en tu servidor.
    $ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y
    

Paso 1 – Configurar el cortafuegos

El primer paso antes de instalar ningún paquete es configurar el cortafuegos para que permita conexiones HTTP y HTTPS.

Comprueba el estado del cortafuegos.

$ sudo ufw status

Deberías ver algo como lo siguiente

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Permitir puertos HTTP y HTTPs.

$ sudo ufw allow http
$ sudo ufw allow https

Vuelve a comprobar el estado para confirmarlo.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Paso 2 – Preparar el sistema

Antes de instalar OpenSearch, tenemos que preparar y optimizar nuestro sistema para ello. Hay varios pasos para ello, que incluyen desactivar la memoria swap si la tienes, establecer el número de mapas de memoria de tu sistema y configurar el nombre de host del sistema.

En primer lugar, comprueba si tienes habilitada la memoria swap.

$ free -m

Si la tienes activada, deberías ver un resultado similar.

               total        used        free      shared  buff/cache   available
Mem:            7945        1083        6492          34         636        6861
Swap:           4242           0        4242

Ejecuta los siguientes comandos para desactivar el espacio de intercambio permanentemente.

$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Comprueba de nuevo si hay memoria swap y debería mostrar lo siguiente.

               total        used        free      shared  buff/cache   available
Mem:            7945        1113        6449          37         651        6831
Swap:              0           0           0

OpenSearch utiliza por defecto un directorio mapfs para almacenar sus índices. Los límites por defecto del sistema operativo en los recuentos de nmap son demasiado bajos, lo que puede provocar errores de falta de memoria.

Comprueba el valor existente para la variable vm.max_map_count.

$ sysctl -n vm.max_map_count
65530

Para aumentar el número de mapas de memoria utilizados por cada proceso, ejecuta el siguiente comando.

$ sudo sysctl -w vm.max_map_count=262144

Esto funcionará sólo hasta que se reinicie el sistema. Para que este valor sea permanente, añade la línea vm.max_map_count=262144 en el archivo /etc/sysctl.conf mediante el siguiente comando.

$ echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

Puedes hacer que el cambio sea permanente reiniciando el sistema o ejecutando el siguiente comando.

$ sudo sysctl -p

El último paso es configurar el nombre de host. Dependiendo de dónde estés alojando tu servidor, algunas empresas de la nube te permiten configurar tu nombre de host directamente a través de su panel de control. Sin embargo, es mejor hacerlo a través del terminal.

Ejecuta el siguiente comando para configurar el nombre de host.

$ sudo hostnamectl set-hostname opensearch

Añade el FQDN (nombre de dominio totalmente cualificado) al archivo /etc/hosts. Aquí, asignamos el nombre de host opensearch al nombre de dominio opensearch.example.com y lo apuntamos a la dirección IP del servidor. Sustituye <serverIPaddress> en el comando siguiente por la dirección IP de tu servidor.

$ echo "<serverIPaddress>  opensearch.example.com  opensearch" | sudo tee -a /etc/hosts

Comprueba el nombre de host y el FQDN utilizando los siguientes comandos.

$ hostname
opensearch
$ hostname -f
opensearch.example.com

Con esto finaliza el proceso de optimización de nuestro sistema para que funcione con OpenSearch.

Paso 3 – Instalar OpenSearch

Importa la clave GPG de OpenSearch utilizada para firmar el paquete de instalación.

$  curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring

Crea el archivo del repositorio APT de OpenSearch.

$ echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Comprueba todas las versiones de OpenSearch disponibles.

$ sudo apt list -a opensearch
Listing... Done
opensearch/stable 2.12.0 amd64
opensearch/stable 2.11.1 amd64
opensearch/stable 2.11.0 amd64
opensearch/stable 2.10.0 amd64
opensearch/stable 2.9.0 amd64
opensearch/stable 2.8.0 amd64
opensearch/stable 2.7.0 amd64
opensearch/stable 2.6.0 amd64
opensearch/stable 2.5.0 amd64

La última versión de OpenSearch v2.12.0 requiere que establezcas la contraseña demo admin antes de la instalación o ésta fallará.

Puedes instalar la última versión de OpenSearch utilizando el siguiente comando. Podemos establecer la contraseña admin demo utilizando la variable de entorno en el propio comando de instalación. Elige una contraseña segura.

$ sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> apt install opensearch

Si ves la siguiente advertencia durante la instalación, puedes ignorarla sin problemas.

......
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
......

O puedes instalar una versión específica.

$ sudo apt install opensearch=2.11.1

Recarga el demonio de servicio.

$ sudo systemctl daemon-reload

Habilita el servicio OpenSearch.

$ sudo systemctl enable opensearch

Inicia el servicio OpenSearch.

$ sudo systemctl start opensearch

Comprueba el estado del servicio OpenSearch.

$ sudo systemctl status opensearch

Deberías obtener la siguiente salida.

? opensearch.service - OpenSearch
     Loaded: loaded (/lib/systemd/system/opensearch.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 06:37:01 UTC; 5s ago
       Docs: https://opensearch.org/
   Main PID: 31109 (java)
      Tasks: 75 (limit: 4652)
     Memory: 1.3G
        CPU: 1min 3.128s
     CGroup: /system.slice/opensearch.service
             ??31109 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true...

Paso 4 – Prueba OpenSearch

Antes de continuar, vamos a comprobar si la instalación funciona correctamente o no. Ejecuta el siguiente comando para comprobar si OpenSearch funciona como es debido.

$ curl -X GET https://localhost:9200 -u 'admin:<custom-admin-password>' --insecure

Deberías obtener un resultado similar.

{
  "name" : "opensearch",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "3oFvYn96St2MOpDP3Sf29g",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.12.0",
    "build_type" : "deb",
    "build_hash" : "2c355ce1a427e4a528778d4054436b5c4b756221",
    "build_date" : "2024-02-20T02:18:31.541484890Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

Consulta el endpoint de plugins de OpenSearch para ver la lista de plugins disponibles.

$ curl -X GET https://localhost:9200/_cat/plugins?v -u 'admin:<custom-admin-password>' --insecure

También puedes utilizar el siguiente comando para lo mismo.

$ /usr/share/opensearch/bin/opensearch-plugin list

Deberías obtener un resultado similar.

name       component                            version
opensearch opensearch-alerting                  2.12.0.0
opensearch opensearch-anomaly-detection         2.12.0.0
opensearch opensearch-asynchronous-search       2.12.0.0
opensearch opensearch-cross-cluster-replication 2.12.0.0
opensearch opensearch-custom-codecs             2.12.0.0
opensearch opensearch-flow-framework            2.12.0.0
opensearch opensearch-geospatial                2.12.0.0
opensearch opensearch-index-management          2.12.0.0
opensearch opensearch-job-scheduler             2.12.0.0
opensearch opensearch-knn                       2.12.0.0
opensearch opensearch-ml                        2.12.0.0
opensearch opensearch-neural-search             2.12.0.0
opensearch opensearch-notifications             2.12.0.0
opensearch opensearch-notifications-core        2.12.0.0
opensearch opensearch-observability             2.12.0.0
opensearch opensearch-performance-analyzer      2.12.0.0
opensearch opensearch-reports-scheduler         2.12.0.0
opensearch opensearch-security                  2.12.0.0
opensearch opensearch-security-analytics        2.12.0.0
opensearch opensearch-skills                    2.12.0.0
opensearch opensearch-sql                       2.12.0.0

Puedes instalar plugins adicionales utilizando el siguiente comando.

$ /usr/share/opensearch/bin/opensearch-plugin install <plugin-name>

Puedes encontrar la lista de plugins disponibles de OpenSearch en su sitio web oficial.

Paso 5 – Configurar OpenSearch

La configuración por defecto de OpenSearch no es adecuada para un entorno de producción. Por defecto, OpenSearch no está vinculado a una interfaz de red y es inalcanzable desde el exterior. Además, se utilizan nombres de usuario y contraseñas por defecto que pueden causar problemas de seguridad si se utilizan directamente en un entorno de producción.

OpenSearch almacena su configuración en el archivo /etc/opensearch/opensearch.yml. Ábrelo para editarlo.

$ sudo nano /etc/opensearch/opensearch.yml

Busca la línea #network.host: 192.168.0.1 y descoméntala eliminando la almohadilla (#) que hay delante y cambiando su valor como se muestra. Esto vincula OpenSearch a todas las interfaces disponibles. También puedes introducir una IP concreta para vincularlo a una interfaz específica.

# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0

Añade las siguientes líneas al final del archivo.

# Unless you have already configured a cluster, you should set
# discovery.type to single-node, or the bootstrap checks will
# fail when you try to start the service.
discovery.type: single-node

# If you previously disabled the Security plugin in opensearch.yml,
# be sure to re-enable it. Otherwise you can skip this setting.
plugins.security.disabled: false

Como estamos instalando en un único servidor, hemos puesto discovery.type en single-node. Poner plugins.security.disabled en false habilita el plugin de seguridad de OpenSearch.

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

También tenemos que especificar los tamaños inicial y máximo del montón de la JVM (memoria virtual de Java). Esta configuración depende del tamaño de la RAM de tu servidor. Por ejemplo, estamos utilizando un servidor con 4 GB de RAM, por lo que estableceremos el tamaño del montón en 3 GB.

Crea y abre el heapsize.options en el directorio /etc/opensearch/jvm.options.d para editarlo. Sobrescribirá el valor por defecto establecido en el archivo /etc/opensearch/jvm.options.

$ sudo nano /etc/opensearch/jvm.options.d/heapsize.options

Añádele las siguientes líneas.

-Xms3g
-Xmx3g

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Reinicia el servicio OpenSearch para aplicar los cambios.

$ sudo systemctl restart opensearch

Puedes comprobar el tamaño actual del montón y la memoria máxima utilizando el siguiente comando.

$ curl -sS "https://localhost:9200/_cat/nodes?h=heap*&v" -u 'admin:<custom-admin-password>' --insecure

Deberías obtener la siguiente salida.

heap.current heap.percent heap.max
     345.5mb           11      3gb

Paso 6 – Configurar TLS para OpenSearch

Aquí generaremos certificados para proteger OpenSearch. Los certificados TLS proporcionan seguridad permitiendo a los clientes confirmar la identidad de los hosts y cifrar el tráfico entre un cliente y el host. Generaremos los siguientes certificados

  1. Certificados deCA Raíz – Son los certificados primarios que firmarán todos los demás certificados.
  2. Certificados deadministrador – Estos certificados se utilizan para obtener derechos elevados para realizar tareas administrativas relacionadas con el plugin de Seguridad.
  3. Certificados denodo – Estos certificados se utilizan para la comunicación entre un nodo y el cliente.

Todos los certificados OpenSearch se almacenan en el directorio /etc/opensearch. El primer paso es eliminar los certificados por defecto establecidos durante la instalación de OpenSearch.

Cambia al directorio OpenSearch.

$ cd /etc/opensearch

Elimina los certificados por defecto.

$ sudo rm -f *.pem

Abre el archivo de configuración de OpenSearch para editarlo.

$ sudo nano opensearch.yml

Comenta el siguiente código en la parte inferior del archivo poniendo una almohadilla delante de cada línea dentro de la sección Configuración de la demostración de seguridad de OpenSearch, como se muestra a continuación.

######## Start OpenSearch Security Demo Configuration ########
# WARNING: revise all the lines below before you go into production
#plugins.security.ssl.transport.pemcert_filepath: esnode.pem
#plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
#plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
#plugins.security.ssl.transport.enforce_hostname_verification: false
#plugins.security.ssl.http.enabled: true
#plugins.security.ssl.http.pemcert_filepath: esnode.pem
#plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
#plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
#plugins.security.allow_unsafe_democertificates: true
#plugins.security.allow_default_init_securityindex: true
#plugins.security.authcz.admin_dn: ['CN=kirk,OU=client,O=client,L=test,C=de']
#plugins.security.audit.type: internal_opensearch
#plugins.security.enable_snapshot_restore_privilege: true
#plugins.security.check_snapshot_restore_write_privileges: true
#plugins.security.restapi.roles_enabled: [all_access, security_rest_api_access]
#plugins.security.system_indices.enabled: true
#plugins.security.system_indices.indices: [.plugins-ml-config, .plugins-ml-connector,
#  .plugins-ml-model-group, .plugins-ml-model, .plugins-ml-task, .plugins-ml-conversation-meta,
#  .plugins-ml-conversation-interactions, .plugins-ml-memory-meta, .plugins-ml-memory-message,
#  .opendistro-alerting-config, .opendistro-alerting-alert*, .opendistro-anomaly-results*,
#  .opendistro-anomaly-detector*, .opendistro-anomaly-checkpoints, .opendistro-anomaly-detection-state,
#  .opendistro-reports-*, .opensearch-notifications-*, .opensearch-notebooks, .opensearch-observability,
#  .ql-datasources, .opendistro-asynchronous-search-response*, .replication-metadata-store,
#  .opensearch-knn-models, .geospatial-ip2geo-data*, .plugins-flow-framework-config,
#  .plugins-flow-framework-templates, .plugins-flow-framework-state]
#node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

A continuación, crea un directorio para almacenar los certificados dentro del directorio /etc/opensearch.

$ sudo mkdir /etc/opensearch/certs

Cambia el permiso del directorio al usuario actualmente conectado para evitar utilizar sudo mientras se generan los certificados.

$ sudo chown $USER:$USER /etc/opensearch/certs -R

Cambia al directorio de certificados.

$ cd /etc/opensearch/certs

Generar certificados raíz

Genera una clave privada para el certificado raíz.

$ openssl genrsa -out root-ca-key.pem 2048

Genera un certificado CA raíz autofirmado. Estamos utilizando el parámetro -subj para proporcionar información incrustada en el certificado. Si no utilizas la bandera -subj, se te pedirá toda esta información.

$ 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

Puedes cambiar la información para adaptarla a tu host específico.

Las variables del parámetro -subj significan lo siguiente.

C = Nombre del país (código de 2 letras), ST = Nombre del estado o provincia (nombre completo), L = Nombre de la localidad (por ejemplo, ciudad), O = Nombre de la organización, OU = Nombre de la unidad organizativa (por ejemplo, sección), CN = Nombre común (por ejemplo, FQDN del servidor)

Tu certificado raíz ya está activo.

Generar certificados de administrador

Genera la clave privada para el certificado Admin utilizando el siguiente comando.

$ openssl genrsa -out admin-key-temp.pem 2048

Convierte la clave privada al formato PKCS#8 para utilizarla en Java mediante un algoritmo compatible con PKCS#12 (3DES).

$ openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem

Genera la CSR (Solicitud de Firma de Certificado) de Admin a partir de la clave privada. Como este certificado no está vinculado a ningún host y se utiliza para autenticar accesos elevados, utilizaremos un valor de A para el Nombre Común (CN).

$ openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr

Firma la CSR del administrador con el certificado raíz y la clave privada que acabas de crear.

$ openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
Certificate request self-signature ok
subject=C = CA, ST = ONTARIO, L = TORONTO, O = ORG, OU = UNIT, CN = A

Generar certificados de nodo

Genera una clave privada para el certificado de nodo.

$ openssl genrsa -out node1-key-temp.pem 2048

Convierte la clave privada del nodo al formato PKCS#8.

$ openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem

Crea una nueva CSR para el certificado de Nodo a partir de la clave privada. Asegúrate de cambiar el valor de la variable CN por el nombre de host de tu nodo. Este certificado está vinculado a tus hosts y debe coincidir con el nombre de host o la dirección IP del nodo.

$ openssl req -new -key node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=opensearch.example.com" -out node1.csr

Crea un archivo de extensión SAN (Subject Alternative Name) que contenga el nombre de host o FQDN o dirección IP del nodo.

$ sh -c 'echo subjectAltName=DNS:opensearch.example.com > node1.ext'

Firma el CSR del certificado del nodo con el certificado raíz y la clave privada que acabas de crear.

$ openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730 -extfile node1.ext
Certificate request self-signature ok
subject=C = CA, ST = ONTARIO, L = TORONTO, O = ORG, OU = UNIT, CN = opensearch.example.com

Preparar los certificados para la instalación

Elimina cualquier certificado temporal, CSR y el archivo de extensión SAN.

$ rm -f *temp.pem *csr *ext

A continuación, instalaremos el certificado CA raíz en el servidor. Para ello, convierte el certificado CA raíz al formato .crt.

$ openssl x509 -outform der -in root-ca.pem -out root-ca.crt

Copia el archivo root-ca.crt en el directorio /usr/local/share/ca-certificates/.

$ sudo cp root-ca.crt /usr/local/share/ca-certificates/

Añade el certificado CA raíz a tu servidor Debian utilizando el siguiente comando.

$ sudo update-ca-certificates

Deberías ver la siguiente salida ( 1 added) confirmando que el certificado CA raíz se ha añadido a tu sistema.

Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
rehash: warning: skipping root-ca.pem,it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

Vuelve a cambiar la propiedad del directorio al usuario opensearch.

$ sudo chown opensearch:opensearch /etc/opensearch/certs -R

Cambia el permiso del directorio a 0700.

$ sudo chmod 0700 /etc/opensearch/certs

Cambia el permiso de los certificados a 0600.

$ sudo chmod 0600 /etc/opensearch/certs/{admin-key,admin,node1-key,node1,root-ca-key,root-ca}.pem
$ sudo chmod 0600 /etc/opensearch/certs/root-ca.crt

Paso 7 – Instala TLS en OpenSearch

Ahora que todos los certificados están generados y configurados, es el momento de instalarlos y añadirlos a tu instalación de OpenSearch.

El primer paso es crear un script bash que añada todos los certificados creados y los ajustes del plugin de seguridad TLS al archivo de configuración de OpenSearch (/etc/opensearch/opensearch.yml).

Crea un archivo llamado add-opensearch-tls.sh y ábrelo para editarlo.

$ cd ~
$ nano add-opensearch-tls.sh

Pega en él el siguiente código.

#! /bin/bash

# Before running this script, make sure to replace the CN in the 
# node's distinguished name with a real DNS A record.

echo "plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-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/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-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=opensearch.example.com,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

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Haz que el archivo sea ejecutable.

$ chmod +x add-opensearch-tls.sh

Ejecuta el script.

$ ./add-opensearch-tls.sh

Deberías obtener la siguiente salida.

plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
  - 'CN=opensearch.example.com,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]

Abre el archivo /etc/opensearch/opensearch.yml para comprobar si se han aplicado tus ajustes.

$ sudo nano /etc/opensearch/opensearch.yml

Desplázate hasta la parte inferior del archivo y deberías ver lo siguiente.

# If you previously disabled the Security plugin in opensearch.yml,
# be sure to re-enable it. Otherwise you can skip this setting.
plugins.security.disabled: false
....
plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
  - 'CN=opensearch.example.com,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]

Cuando estés satisfecho, guarda el archivo pulsando Ctrl + X.

Paso 8 – Creación del usuario OpenSearch

En este paso, eliminaremos todos los usuarios de la demo excepto el usuario admin y sustituiremos la contraseña predeterminada admin mediante un script.

Cambia al directorio de herramientas de los plugins de seguridad de OpenSearch.

$ cd /usr/share/opensearch/plugins/opensearch-security/tools

Ejecuta el script hash.sh para generar una nueva contraseña.

$ ./hash

El script fallará y obtendrás el siguiente error porque no se ha definido la ruta al ejecutable de Java (JDK).

**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
WARNING: nor OPENSEARCH_JAVA_HOME nor JAVA_HOME is set, will use 
./hash.sh: line 35: java: command not found

Ejecuta de nuevo el comando declarando la variable de entorno OPENSEARCH_JAVA_HOME con la ubicación del JDK.

$ OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh

Obtendrás un resultado similar.

**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
[Password:]
$2y$12$4NL0LqEnN4FXaUdQQC.gOupeCQT2IuMo9gN0b5d3nxdMVbLX088f2

Generará el hash de la contraseña que necesitaremos más adelante.

Abre el archivo de configuración de usuarios de OpenSearch internal_users.yml en el directorio /etc/opensearch/opensearch-security/ para editarlo.

$ sudo nano /etc/opensearch/opensearch-security/internal_users.yml

Comenta todos los usuarios de demostración añadiéndoles un hash delante, como se muestra.

---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh

_meta:
  type: "internalusers"
  config_version: 2

# Define your internal users here

## Demo users

#admin:
#  hash: "$2y$12$Twy84uxOX0SQ1QMQ68og8O/i1MvqWItt/phZX3DiJMjpBoT9u9KX6"
#  reserved: true
#  backend_roles:
#  - "admin"
#  description: "Demo admin user"

#anomalyadmin:

Añade el usuario admin con el hash que generaste anteriormente como se muestra.

---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh

_meta:
  type: "internalusers"
  config_version: 2

# Define your internal users here

admin:
  hash: "$2y$12$4NL0LqEnN4FXaUdQQC.gOupeCQT2IuMo9gN0b5d3nxdMVbLX088f2"
  reserved: true
  backend_roles:
  - "admin"
  description: "Admin user"

## Demo users

#admin:

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Ahora que los certificados TLS están instalados y los usuarios demo eliminados o con nuevas contraseñas asignadas, es el momento de aplicar los cambios de configuración. Para aplicar los cambios, invocaremos el script securityadmin.sh dentro del directorio /usr/share/opensearch/plugins/opensearch-security/tools. El script requiere que se ejecute el servicio OpenSearch.

Reinicia el servicio OpenSearch.

$ sudo systemctl restart opensearch

Cambia al directorio /usr/share/opensearch/plugins/opensearch-security/tools.

$ cd /usr/share/opensearch/plugins/opensearch-security/tools

Ejecuta el script utilizando el siguiente comando.

$ sudo OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -h opensearch.nspeaks.com -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

El plugin de seguridad almacena su configuración -incluyendo usuarios, permisos, roles y ajustes del backend- en un índice del sistema en el cluster OpenSearch. Almacenar esta configuración en el clúster te permite cambiarla sin reiniciar el clúster y elimina la necesidad de editar el archivo de configuración en cada nodo. Esto se consigue ejecutando el script securityadmin.sh.

  • La opción -cd especifica dónde se encuentran los archivos de configuración del plugin de seguridad.
  • La opción -icl (--ignore-clustername) indica al plugin de seguridad que cargue la configuración independientemente del nombre del cluster. También puedes especificar el nombre del clúster en lugar de utilizar la opción -cn (--clustername).
  • Como los certificados son autofirmados, utilizamos la opción -nhnv (--disable-host-name-verification).
  • Las opciones --cacert, --cert y --key definen la ubicación del certificado raíz, el certificado de administrador y la clave privada del certificado de administrador. Si la clave privada tiene contraseña, puedes definirla utilizando la opción -keypass.

Puedes obtener más información sobre la configuración del plugin de seguridad en la documentación de OpenSearch.

Con el comando anterior deberías haber obtenido una salida similar a la que se muestra a continuación.

**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
Security Admin v7
Will connect to opensearch:9200 ... done
Connected as "CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
OpenSearch Version: 2.12.0
Contacting opensearch cluster 'opensearch' and wait for YELLOW clusterstate ...
Clustername: opensearch
Clusterstate: GREEN
Number of nodes: 1
Number of data nodes: 1
.opendistro_security index already exists, so we do not need to create one.
Populate config from /etc/opensearch/opensearch-security/
Will update '/config' with /etc/opensearch/opensearch-security/config.yml 
   SUCC: Configuration for 'config' created or updated
Will update '/roles' with /etc/opensearch/opensearch-security/roles.yml 
   SUCC: Configuration for 'roles' created or updated
Will update '/rolesmapping' with /etc/opensearch/opensearch-security/roles_mapping.yml 
   SUCC: Configuration for 'rolesmapping' created or updated
Will update '/internalusers' with /etc/opensearch/opensearch-security/internal_users.yml 
   SUCC: Configuration for 'internalusers' created or updated
Will update '/actiongroups' with /etc/opensearch/opensearch-security/action_groups.yml 
   SUCC: Configuration for 'actiongroups' created or updated
Will update '/tenants' with /etc/opensearch/opensearch-security/tenants.yml 
   SUCC: Configuration for 'tenants' created or updated
Will update '/nodesdn' with /etc/opensearch/opensearch-security/nodes_dn.yml 
   SUCC: Configuration for 'nodesdn' created or updated
Will update '/whitelist' with /etc/opensearch/opensearch-security/whitelist.yml 
   SUCC: Configuration for 'whitelist' created or updated
Will update '/audit' with /etc/opensearch/opensearch-security/audit.yml 
   SUCC: Configuration for 'audit' created or updated
Will update '/allowlist' with /etc/opensearch/opensearch-security/allowlist.yml 
   SUCC: Configuration for 'allowlist' created or updated
SUCC: Expected 10 config types for node {"updated_config_types":["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"],"updated_config_size":10,"message":null} is 10 (["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"]) due to: null
Done with success

Verifica las nuevas credenciales utilizando el siguiente comando.

Durante la prueba anterior, dirigimos las peticiones a localhost. Ahora que los certificados TLS están configurados y los nuevos certificados hacen referencia al registro DNS real del host, las peticiones a localhost fallarán en la comprobación del CN, y el certificado se considerará inválido. Por tanto, añade tu registro DNS real en el comando siguiente para verificarlo.

$ curl https://your.host.address:9200 -u admin:yournewpassword -k

Deberías ver la siguiente respuesta.

{
  "name" : "opensearch",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "3oFvYn96St2MOpDP3Sf29g",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.12.0",
    "build_type" : "deb",
    "build_hash" : "2c355ce1a427e4a528778d4054436b5c4b756221",
    "build_date" : "2024-02-20T02:18:31.541484890Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

Paso 9 – Instalar OpenSearch Dashboards

Como ya hemos instalado OpenSearch, podemos saltarnos el paso de importar la clave GPG de OpenSearch.

Para instalar los paneles de OpenSearch, ejecuta el siguiente comando para crear un repositorio APT para él.

$ echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-dashboards-2.x.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Lista todas las versiones disponibles de OpenSearch Dashboards.

$ sudo apt list -a opensearch-dashboards

Deberías ver una salida similar.

Listing... Done
opensearch-dashboards/stable 2.12.0 amd64
opensearch-dashboards/stable 2.11.1 amd64
opensearch-dashboards/stable 2.11.0 amd64
opensearch-dashboards/stable 2.10.0 amd64
opensearch-dashboards/stable 2.9.0 amd64
opensearch-dashboards/stable 2.8.0 amd64
opensearch-dashboards/stable 2.7.0 amd64
opensearch-dashboards/stable 2.6.0 amd64
opensearch-dashboards/stable 2.5.0 amd64

Instala la última versión de OpenSearch Dashboard.

$ sudo apt install opensearch-dashboards

O instala una versión concreta de OpenSearch Dashboard.

$ sudo apt install opensearch-dashboards=2.12.0

La versión de OpenSearch Dashboards y de OpenSearch debe ser la misma, de lo contrario puedes encontrarte con múltiples problemas.

Recarga el demonio de servicio.

$ sudo systemctl daemon-reload

Habilita el servicio Tableros OpenSearch.

$ sudo systemctl enable opensearch-dashboards

Inicia el servicio Tableros OpenSearch.

$ sudo systemctl start opensearch-dashboards

Comprueba el estado del servicio OpenSearch Dashboards.

$ sudo systemctl status opensearch-dashboards

Deberías ver la siguiente salida.

? opensearch-dashboards.service - "OpenSearch Dashboards"
     Loaded: loaded (/lib/systemd/system/opensearch-dashboards.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 16:01:25 UTC; 4s ago
   Main PID: 7098 (node)
      Tasks: 11 (limit: 9484)
     Memory: 175.4M
        CPU: 5.389s
     CGroup: /system.slice/opensearch-dashboards.service
             ??7098 /usr/share/opensearch-dashboards/node/bin/node /usr/share/opensearch-dashboards/src/cli/dist

Mar 02 16:01:25 opensearch systemd[1]: Started opensearch-dashboards.service - "OpenSearch Dashboards".

Paso 10 – Configurar OpenSearch Dashboards

OpenSearch Dashboards almacena su configuración en el archivo /etc/opensearch-dashboards/opensearch_dashboards.yml. Ábrelo para editarlo.

$ sudo nano /etc/opensearch-dashboards/opensearch_dashboards.yml

Busca la línea # server.host: "localhost" y descoméntala eliminando la almohadilla que hay delante y cambiando su valor como se muestra.

# Specifies the address to which the OpenSearch Dashboards server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: 0.0.0.0

Establecer el valor de server.host en 0.0.0.0 vincula el Panel de control OpenSearch a cualquier IP externa, lo que lo hace accesible a través de la World Wide Web. Si quieres servir los Tableros a través de SSL utilizando un proxy inverso, entonces deja este valor sin cambiar.

Desplázate hacia abajo para encontrar la siguiente sección.

opensearch.hosts: [https://localhost:9200]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanaserver
opensearch.requestHeadersWhitelist: [authorization, securitytenant]

Cambia los valores según lo configurado para nuestra instalación de OpenSearch.

opensearch.hosts: [https://opensearch:9200]
opensearch.ssl.verificationMode: none
opensearch.username: admin
opensearch.password: <custom-admin-password>
opensearch.requestHeadersWhitelist: [authorization, securitytenant]

Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Reinicia el servicio OpenDashboards.

$  sudo systemctl restart opensearch-dashboards

Abre el puerto 5601 en el cortafuegos UFW.

$ sudo ufw allow 5601

Abre la URL http://<yourserverIP>:5601 o http://opensearch.example.com:5601 para iniciar el sitio web de OpenSearch Dashboards.

Acceso a los cuadros de mando de OpenSearch

Si te conformas con acceder a OpenSearch Dashboards a través de HTTP y con un número de puerto en la URL, puedes detenerte aquí. Sin embargo, es mejor servir los Tableros a través de SSL. Para ello, instalaremos Nginx como proxy inverso y serviremos SSL a través de él.

Paso 11 – Instalar Nginx

Debian 12 incluye una versión antigua de Nginx. Necesitas descargar el repositorio oficial de Nginx para instalar la última versión.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Añade el repositorio de la versión principal de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación. En los sistemas Debian, el siguiente comando sólo funcionará con sudo.

$ sudo nginx -v
nginx version: nginx/1.25.4

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Comprueba el estado del servicio.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 12:53:57 UTC; 4s ago
       Docs: https://nginx.org/en/docs/
    Process: 3976 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 3977 (nginx)
      Tasks: 3 (limit: 9484)
     Memory: 2.7M
        CPU: 9ms
     CGroup: /system.slice/nginx.service
             ??3977 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??3978 "nginx: worker process"
             ??3979 "nginx: worker process"

Mar 02 12:53:57 opensearch systemd[1]: Starting nginx.service - nginx - high performance web server...
Mar 02 12:53:57 opensearch systemd[1]: Started nginx.service - nginx - high performance web server.

Paso 12 – Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Debian u obtener la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd.

Debian 12 no viene con Snapd instalado. Instala el paquete Snapd.

$ sudo apt install snapd

Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.

$ sudo snap install core && sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Comprueba si Certbot funciona correctamente.

$ certbot --version
certbot 2.9.0

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/craftcms.example.com de tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Comprueba el servicio programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

NEXT                        LEFT           LAST                        PASSED    UNIT                         ACTIVATES                   ---------------------------------------------------------------------------------------------------------------------------------------  
Sat 2024-03-02 16:25:00 UTC 3h 27min left  -                           -         snap.certbot.renew.timer     snap.certbot.renew.service
Sat 2024-03-02 23:00:51 UTC 10h left       Sat 2024-03-02 06:29:02 UTC 6h ago    apt-daily.timer              apt-daily.service
Sun 2024-03-03 00:00:00 UTC 11h left       -                           -         dpkg-db-backup.timer         dpkg-db-backup.service
.....

Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.

$ sudo certbot renew --dry-run

Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.

Paso 13 – Configurar Nginx

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Crea y abre el archivo /etc/nginx/conf.d/opensearch.conf para editarlo.

$ sudo nano /etc/nginx/conf.d/opensearch.conf

Pega en él el siguiente código. Sustituye opensearch.example.com por el nombre de tu dominio.

server {

    listen 443 ssl;
    listen [::]:443 ssl;

    http2 on;
    http3 on;
    quic_retry on;

    server_name opensearch.example.com;

    access_log  /var/log/nginx/opensearch.access.log;
    error_log   /var/log/nginx/opensearch.error.log;

    ssl_certificate      /etc/letsencrypt/live/opensearch.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/opensearch.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/opensearch.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_early_data on;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        proxy_pass http://localhost:5601;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  opensearch.example.com;
    return 301   https://$host$request_uri;
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Comprueba la configuración de Nginx.

$ sudo nginx -t

Reinicia el servidor Nginx.

$ sudo systemctl restart nginx

Visita https://opensearch.example.com en tu navegador para iniciar OpenSearch Dashboards.

Paso 14 – Acceder y utilizar los Paneles de control de OpenSearch

Si has utilizado Nginx, accede a los Tableros a través de la URL https://opensearch.example.com o utiliza http://opensearch.example.com:5601 y deberías obtener la página de inicio de sesión.

Credenciales de acceso a los cuadros de mando de OpenSearch

Introduce admin y la contraseña de administrador personalizada que configuraste para OpenSearch en el paso 4 y haz clic en el botón Iniciar sesión para continuar.

Tableros OpenSearch Página Añadir Datos

Haz clic en el botón Añadir datos para empezar a añadir datos directamente o haz clic en el enlace Explorar por mi cuenta si quieres explorar primero. Vamos a explorar primero y debería llevarte a una ventana emergente que habla sobre el modo oscuro de los Cuadros de Mando de OpenSearch.

Ventana emergente del tema OpenSearch Dashboards

Haz clic en el botón Descartar para continuar. A continuación, se te pedirá que elijas un inquilino.

Pantalla de selección de inquilinos de los cuadros de mando OpenSearch

Los inquilinos en los Cuadros de mando OpenSearch son espacios para guardar patrones de índice, visualizaciones, cuadros de mando y otros objetos de los Cuadros de mando OpenSearch. Cada usuario puede crear varios inquilinos para múltiples usos. Los inquilinos son útiles para compartir de forma segura tu trabajo con otros usuarios de los Tableros OpenSearch. OpenSearch te da la posibilidad de elegir entre tres opciones.

  • Global – Este inquilino es compartido por todos los usuarios de los Tableros OpenSearch.
  • Privado – Este inquilino es exclusivo de cada usuario y no se puede compartir.
  • Personalizado – Los administradores pueden crear inquilinos personalizados y asignarlos a roles específicos. Una vez creados, puedes utilizar estos inquilinos para proporcionar espacios a un conjunto específico de usuarios.

Por ahora, nos quedaremos con la opción por defecto de un inquilino Privado. Haz clic en el botón Confirmar para continuar. Aparecerá la siguiente página.

Página de inicio de los cuadros de mando de OpenSearch

A continuación, verificaremos la conexión entre OpenSearch y los Tableros OpenSearch.

Haz clic en el botón Herramientas de desarrollo de la parte superior derecha y se te mostrará una mini ventana emergente sobre la interfaz de usuario de la consola para los Tableros OpenSearch.

Consola emergente de herramientas de desarrollo de OpenSearch Dashboards

Haz clic en el botón Descartar, introduce la consulta GET / en la consola de la izquierda y haz clic en el pequeño botón de reproducción del centro. Deberías ver la siguiente salida a la derecha.

Verificación de la Conexión a la Consola de los Cuadros de Mando OpenSearch

Esto confirma que OpenSearch Dashboards está recibiendo datos de OpenSearch y que ambos funcionan correctamente. A partir de aquí puedes empezar a añadir datos.

Conclusión

Con esto concluye el tutorial sobre la instalación de OpenSearch en un servidor Debian 12. Si tienes alguna pregunta, publícala en los comentarios a continuación.

También te podría gustar...