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.

Instale Stunnel y Redis-CLI

  1. Instala el stunnel4 paquete.

    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 Stunnel

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

                              
                                $ sudo touch /tmp/stunnel-pid
    
                              
                            
  2. Cambiar la propiedad del directorio al usuario nobody y grupo nogroup .

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

                              
                                $ sudo nano /etc/stunnel/stunnel.conf
    
                              
                            
  4. Agregue las siguientes directivas al archivo. Reemplace la connect example 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 : yes permite retrasos en el proceso de búsqueda de DNS y evita que stunnel almacene en caché las direcciones IP. no permite 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 : yes indica a stunnel que se ejecute en modo cliente y se conecte a un servidor TLS. no instruye 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 puerto 4000 .

    • 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 usuario nobody posee 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 puerto 4000 como 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 el redis-cli herramienta, conéctese al host 127.0.0.1 y puerto de aturdimiento 4000 como se define en su archivo de configuración.

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

                              
                                > auth CLUSTER-PASSWORD
    
                              
                            
  3. Enter ping para verificar que está conectado al clúster de Vultr Redis.

                              
                                > ping
    
                              
                            

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

                              
                                PONG
    
                              
                            

Solución de problemas

Si el ping comando 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 el redis-cli Comando 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 su documentación oficial.

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

Enviar sugerencia

Related Posts