Cómo conectarse de forma segura a bases de datos administradas por Vultr para Redis a través de TLS con Stunnel y Redis-CLI

Introducción

Redis es un almacén de datos de clave-valor en memoria de código abierto que se utiliza como caché, base de datos y agente de mensajes. Vultr Managed Databases for Redis ofrece alta disponibilidad, actualizaciones automáticas, fácil operación y escalabilidad. Sin embargo, la herramienta Redis Command Line Interface (redis-cli) no es compatible con las conexiones TLS, que Vultr requiere para las bases de datos administradas.

Stunnel es una herramienta proxy de código abierto que crea túneles de conexión TLS/SSL seguros entre servidores. Puede integrarse con redis-cli y ofrecer conexiones seguras a un clúster de Redis administrado a través de TLS. Siga esta guía para crear una conexión segura a Redis con Stunnel y redis-cli.

requisitos previos

Antes de comenzar, debe:

  • Implemente un clúster de Redis administrado.

  • Implemente un servidor en la nube Vultr.

  • Use SSH para acceder al servidor como no root sudo usuario.

  • Actualice el servidor.

Instalar Stunnel y Redis-CLI

  1. Instala elstunnel4paquete.

    En Ubuntu/Debian:

    $ sudo apt install stunnel4
    

    En CentOS/RockyLinux:

    $ sudo dnf install stunnel4
    
  2. Instale la herramienta redis-cli.

    Ubuntu/Debian:

    $ sudo apt install redis-tools
    

    CentOS/RockyLinux:

    $ sudo dnf install redis-tools
    
  3. Habilite el servicio stunnel para que se inicie en el momento del arranque.

    $ sudo systemctl enable stunnel4
    
  4. Iniciar aturdimiento.

    $ sudo systemctl start stunnel4
    
  5. Verifique que el servicio stunnel esté activo y ejecutándose.

    $ sudo systemctl status stunnel4
    

Configurar túnel

  1. Cree un nuevo directorio de procesos de Stunnel en una ubicación accesible como/tmpoh/var/run.

    $ sudo touch /tmp/stunnel-pid
    
  2. Cambiar la propiedad del directorio al usuarionobodyy gruponogroup.

    $ sudo chown -R nobody:nogroup /tmp/stunnel-pid
    
  3. Cree un nuevo archivo de configuración en el/etc/stunneldirectorio con un editor de texto de su elección.

    $ sudo nano /etc/stunnel/stunnel.conf
    
  4. Agregue las siguientes directivas al archivo. Reemplace laconnectexample con la dirección de su clúster de Redis.

    fips = no
    
    setuid = nobody
    
    setgid = nogroup
    
    pid = /tmp/stunnel-pid/stunnel.pid
    
    debug = 7
    
    delay = no
    
    [redis-cli]
    
      client = yes
    
      accept = 127.0.0.1:4000
    
      connect = example-address-vultr-prod.vultrdb.com:16752
    

    A continuación se muestra lo que hace cada línea de configuración:

    • fips: activa el modo 140-2 del estándar federal de procesamiento de información (FIPS) de stunnel.

    • setuid: especifica el ID de usuario con el que se debe ejecutar stunnel. De forma predeterminada, se ejecuta como root, lo cual no se recomienda.

    • setgid: especifica el modo en que se debe ejecutar el stunnel de ID de grupo.

    • pid: Define el directorio donde stunnel debe almacenar el archivo de identificación del proceso.

    • debug: Establece el nivel de depuración entre 0 y 7. El nivel más alto proporciona información más detallada en caso de errores.

    • delay:yespermite retrasos en el proceso de búsqueda de DNS y evita que stunnel almacene en caché las direcciones IP.nopermite búsquedas de DNS más rápidas en el clúster de Vultr Redis.

    • [redis-cli]: Declara el nombre del servicio del programa cliente.

    • client:yesindica a stunnel que se ejecute en modo cliente y se conecte a un servidor TLS.noinstruye a stunnel para que se ejecute como el servidor TLS.

    • accept: Define el host y el puerto que debe utilizar stunnel para aceptar y cifrar las conexiones del cliente. Puede definir un puerto personalizado en el que stunnel debe escuchar. Para este artículo, utilice el puerto4000.

    • connect: define la dirección del host del clúster de Vultr Redis y el número de puerto donde se debe conectar stunnel.

    Guardar y close el archivo.

  5. Reinicie stunnel para cargar los cambios.

    $ sudo systemctl restart stunnel4
    
  6. Verifique que el usuarionobodyposee el proceso stunnel en ejecución.

    $ ps aux | grep stunnel
    

    Producción:

    nobody      2214  0.0  0.1  18224  2364 pts/0    Ssl   22:50   0:00 grep --color=auto stunnel
    

Stunnel ahora se está ejecutando activamente y está listo para manejar conexiones en el puerto4000como se define en su archivo de configuración.

Conéctese al clúster de Redis administrado por Vultr a través de TLS

De forma predeterminada, stunnel cifra todas las conexiones a través de TLS. Para conectarse a su Vultr Redis Cluster, use la herramienta redis-cli como se describe en los siguientes pasos.

  1. Utilizando elredis-cliherramienta, conéctese al host127.0.0.1y puerto de aturdimiento4000como se define en su archivo de configuración.

    $ redis-cli -h 127.0.0.1 -p 4000
    
  2. Ingresarauthluego pegue su contraseña Vultr Managed Redis y presione Intro para acceder al clúster.

    > auth CLUSTER-PASSWORD
    
  3. Ingresarpingpara verificar que esté conectado al clúster Vultr Redis.

    > ping
    

    Una conexión exitosa debería devolver el siguiente resultado:

    PONG
    

Solución de problemas

Si elpingcomando devuelve el siguiente error:

Error: Server closed the connection

Primero, verifique su configuración de stunnel y verifique que ingresó el nombre de host y el puerto Vultr Managed Redis correctos.

$ cat /etc/stunnel/stunnel.conf

Luego, verifique que ingresó su contraseña de Vultr Redis correctamente.

> auth CLUSTER-PASSWORD

Alternativamente, pegue su contraseña en elredis-cliComando para iniciar sesión al iniciar la conexión agregando el indicador `-a’ como se muestra a continuación.

$ redis-cli -h 127.0.0.1 -p 4000 -a CLUSTER-PASSWORD

Conclusión

En este artículo, configuró stunnel para conectarse de manera segura a un clúster de Redis administrado por Vultr mediante la herramienta redis-cli. También puede usar el túnel para conectar de forma segura su clúster de Redis a aplicaciones en PHP, GO, NodeJS o Python. Para obtener más información sobre cómo usar stunnel, visite sudocumentación oficial.

Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción

Enviar sugerencia

Artículos Relacionados