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
-
Instala el
stunnel4
paquete.En Ubuntu/Debian:
$ sudo apt install stunnel4
En CentOS/RockyLinux:
$ sudo dnf install stunnel4
-
Instale la herramienta redis-cli.
Ubuntu/Debian:
$ sudo apt install redis-tools
CentOS/RockyLinux:
$ sudo dnf install redis-tools
-
Habilite el servicio stunnel para que se inicie en el momento del arranque.
$ sudo systemctl enable stunnel4
-
Iniciar aturdimiento.
$ sudo systemctl start stunnel4
-
Verifique que el servicio stunnel esté activo y ejecutándose.
$ sudo systemctl status stunnel4
Configurar túnel
-
Cree un nuevo directorio de procesos de Stunnel en una ubicación accesible como
/tmp
oh/var/run
.$ sudo touch /tmp/stunnel-pid
-
Cambiar la propiedad del directorio al usuario
nobody
y gruponogroup
.$ sudo chown -R nobody:nogroup /tmp/stunnel-pid
-
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
-
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 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.
-
-
Reinicie stunnel para cargar los cambios.
$ sudo systemctl restart stunnel4
-
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 puerto4000
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.
-
Utilizando el
redis-cli
herramienta, conéctese al host127.0.0.1
y puerto de aturdimiento4000
como se define en su archivo de configuración.$ redis-cli -h 127.0.0.1 -p 4000
-
Ingresar
auth
luego pegue su contraseña Vultr Managed Redis y presione Intro para acceder al clúster.> auth CLUSTER-PASSWORD
-
Ingresar
ping
para 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 elping
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 elredis-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 sudocumentación oficial.
Título del artículo Nombre (opcional) Correo electrónico (opcional) Descripción
Enviar sugerencia