Redis es beneficioso para muchas cosas, una de las cuales es el almacenamiento en caché. También puedes utilizar Redis como un almacén de datos primario o incluso como reemplazo de una base de datos. Pero, ¿cómo ejecutas una instalación segura de Redis? Instalar Redis puede ser complicado y, si no tienes cuidado, podrías terminar con muchos errores. Afortunadamente, este tutorial te tiene cubierto.
En este tutorial, aprenderás cómo instalar Redis de forma segura en tu sistema Linux, junto con algunos consejos para evitar errores comunes.
Sigue leyendo y evita los dolores de cabeza al solucionar errores en la instalación de Redis.
Prerrequisitos
Este tutorial será una demostración práctica. Si deseas seguir, asegúrate de tener lo siguiente:
- Una máquina Ubuntu 20.04 LTS: este tutorial utiliza Ubuntu 20.04 LTS, pero las instrucciones son similares para la mayoría de las distribuciones de Linux.
- Permisos de root o un usuario no root con
privilegios sudo
.
Instalación de Redis con el gestor de paquetes APT
Hay varias formas de instalar Redis en Ubuntu, pero para este tutorial, usarás el gestor de paquetes APT para instalar Redis.
Redis está escrito en C, por lo que necesitarías compilar Redis a partir de su código fuente de forma manual. Se deben instalar varias dependencias y el proceso de compilación no es exactamente infalible.
Compilar Redis desde la fuente no se recomienda, pero la ventaja es que puedes personalizar tu instalación si lo deseas. Descargas el código fuente y luego lo configuras manualmente.
Abre tu terminal y ejecuta el comando apt update
a continuación para asegurarte de tener las últimas listas de paquetes.

Ahora, ejecuta el comando apt install
a continuación para instalar Redis en tu máquina.
El siguiente comando utiliza el gestor de paquetes apt
para descargar e instalar el paquete redis-server
desde los repositorios de Ubuntu en tu máquina. La bandera -y
le indica a apt
que acepte las indicaciones durante el proceso de instalación automáticamente.

Configurando el Archivo Redis.conf para Ejecutar Redis como Servicio
Acabas de instalar Redis, pero aún no está listo para usar. Antes de poder empezar a usar Redis, primero configurarás el archivo redis.conf.
El archivo de configuración redis.conf está incluido en el paquete de Redis que instalaste y se encuentra almacenado en el directorio /etc/redis/ por defecto. Este archivo contiene todas las opciones de configuración para Redis.
La extensión de archivo .conf es lógica, ya que sigue un patrón convencional. Muchos otros programas utilizan este mismo estilo. Por ejemplo, el servidor web Apache utiliza la extensión de archivo .conf para su archivo de configuración principal.
1. Ejecuta el siguiente comando systemctl
para detener
el servicio redis-server
. Detener el servicio Redis es una práctica recomendada cuando estás comenzando a usar Redis.
2. A continuación, abre el archivo /etc/redis/redis.conf en tu editor de texto preferido.
Encuentra la directiva supervised, luego configúrala en systemd, como se muestra a continuación, y guarda los cambios. Al hacerlo, le indicas al sistema operativo que ejecute Redis como un servicio.

3. Ahora, ejecuta el comando systemctl restart
a continuación para reiniciar el servicio Redis (redis.service
) ya que el servicio Redis aún no conoce los cambios.
4. Finalmente, ejecuta el comando systemctl status
a continuación para ver si Redis está en ejecución.
Como puedes ver a continuación, la salida muestra que el servicio Redis está en ejecución.

Prueba si el Servidor Redis Funciona Correctamente
Has configurado y verificado que el servicio Redis está en funcionamiento activo, pero eso no significa que el servidor Redis esté funcionando. ¿Cómo probar si el servidor Redis funciona correctamente? Conéctate al servidor Redis y envía comandos para ver si el servidor responde.
1. Ejecuta el comando redis-cli
a continuación para conectarte al servidor Redis. redis-cli
es la interfaz de línea de comandos para Redis, que te permite enviar comandos al servidor e inspeccionar su estado.
A continuación, puedes ver que estás en el prompt del servidor Redis (127.0.0.1:6379>). El comando redis-cli
intenta conectarse a un servidor Redis en 127.0.0.1:6379
de forma predeterminada.

2. A continuación, ejecuta el comando ping
a continuación para verificar si el servidor Redis es accesible.
Como puedes ver, el servidor devolvió PONG, lo que indica que el servidor Redis es accesible y ahora puede comunicarse con el servicio correctamente.

Tal vez todavía estés escéptico; ejecuta el comando set
a continuación. El comando set
es un comando de Redis que establece un par clave-valor en una base de datos.
Como puedes ver, el comando set devuelve “OK,” lo que indica que el servicio Redis está funcionando correctamente.

3. Ejecuta el comando exit
a continuación para salir de redis-cli
. Al hacerlo, se cierra la conexión al servidor Redis.
Vinculando el Servidor Redis a Localhost
Acabas de comprobar que el servidor Redis funciona correctamente, pero podría ser accesible desde otros dispositivos en tu red también. Este comportamiento es indeseable, y normalmente querrías proteger tu servidor Redis de extraños.
Vincular el servidor Redis a localhost establece un comportamiento que solo la máquina en la que instalaste Redis puede acceder al servidor Redis.
1. Abre el archivo /etc/redis/redis.conf en tu editor de texto.
2. Localiza la línea que dice bind 127.0.0.1 ::1
y descomenta la línea eliminando el signo de número (#
) al principio de la línea.

3. Ahora, ejecuta el siguiente comando para reiniciar el servicio redis-server
.
4. Por último, ejecuta el siguiente comando para comprobar si tu servidor Redis está vinculado a localhost. El comando netstat -lnp
lista todas las conexiones de red activas, y la parte grep redis
filtra la salida a las líneas que contienen “redis
.”
-lnp
significa Protocolo de Nombre Local, un protocolo de red utilizado por sistemas similares a UNIX para resolver nombres de host a direcciones IP.
Puedes ver abajo que el servidor Redis ahora está escuchando solo en la interfaz de localhost (127.0.0.1:6379
). Reflejando el cambio en el archivo de configuración, puedes ver que solo la interfaz de localhost está listada bajo tus conexiones de internet activas (tcp
).
Ahora, ningún otro dispositivo en tu red puede conectarse a tu servidor Redis.

Asegurando la Conexión del Servidor Redis con una Contraseña
En este punto, Redis no está configurado para requerir que los usuarios se autentiquen con una contraseña. Cualquiera que conozca la dirección IP o el nombre de host de tu servidor Redis podría conectarse a él y cambiar sus datos.
¿Cómo proteges tu servidor Redis? Establece una contraseña para requerir autenticación de los usuarios al conectarse a tu servidor Redis.
1. Vuelve a abrir el archivo de configuración redis.conf en tu editor de texto/código.
2. Luego, establece una contraseña fuerte con lo siguiente:
- Busca
requirepass foobared
bajo la secciónSEGURIDAD
- Elimina el signo de número (
#
) al inicio de la línea - Reemplaza
foobared
con una contraseña fuerte de tu elección y guarda los cambios

3. Ejecuta los siguientes comandos para reiniciar y conectarte a tu servidor Redis.
4. Ahora, ejecuta el comando ping
para ver si recibirás una respuesta del servidor.
A continuación, puedes ver un mensaje de error que dice NOAUTH Se requiere autenticación. Este mensaje indica que necesitas una contraseña de autenticación para acceder a tu servidor Redis de forma remota.

5. Ejecuta el siguiente comando auth
seguido de tu contraseña para autenticar tu conexión a tu servidor Redis.
Obtendrás una respuesta OK cuando la autenticación sea exitosa, como la que se muestra a continuación.

6. Finalmente, vuelve a ejecutar el comando ping
para comprobar si has autenticado tu conexión a tu servidor Redis.
Ahora recibirás la respuesta PONG, como se muestra a continuación, después de autenticar tu conexión. En este punto, has protegido con éxito tu servidor Redis con una contraseña.

Desactivar Comandos Peligrosos para Proteger tu Servidor Redis
Establecer una contraseña para autenticar la conexión a tu servidor Redis no significa que obtenga una protección del 100%. Por defecto, Redis incluye varios comandos peligrosos que permiten a los usuarios cambiar los datos en tu base de datos.
Cuando son ejecutados por usuarios no autorizados, estos comandos permiten a intrusos leer, modificar, destruir e incluso eliminar los datos de tu base de datos Redis.
A continuación, no es una lista exhaustiva ya que tu servidor Redis puede tener comandos peligrosos adicionales, pero en la mayoría de los casos, estos son los comandos peligrosos:
Para asegurar aún más tu servidor Redis, renombra estos comandos peligrosos en el archivo redis.conf:
1. Abre el archivo redis.conf en tu editor de texto y busca la sección Renombrado de comandos.
Renombrar comandos a una cadena vacía para deshabilitarlos siguiendo la siguiente sintaxis. Reemplace el-comando
con el comando real a deshabilitar.
Por ejemplo, deshabilite el comando CONFIG
renombrando CONFIG
a una cadena vacía, como se muestra a continuación, luego guarde los cambios. Las comillas dobles (“”) indican una cadena vacía que significa deshabilitar un comando.

CONFIG
command 2. Salga del editor de texto y ejecute el siguiente comando para reiniciar el servidor Redis.
3. Ahora ejecute los siguientes comandos para conectarse a su servidor Redis.
4. Finalmente, ejecute el comando config get
para probar que el comando CONFIG
está deshabilitado.
Obtendrá una respuesta ERR unknown command config
, como se muestra a continuación, lo que indica que el comando CONFIG
está deshabilitado.

CONFIG
command Si el comando config get requirepass
se ejecuta, solicita la contraseña de su servidor Redis para autenticar la conexión a su servidor Redis.
Ahora ha renombrado con éxito un comando peligroso de Redis para proteger su servidor Redis. Ahora siga deshabilitando otros comandos peligrosos en el archivo redis.conf.
Bloqueo de solicitudes de conexión al servidor Redis con un firewall
Otra forma de asegurar su servidor Redis es configurar un firewall. Configurar un firewall requiere que permita solo el puerto requerido para cada uno de los servicios que se ejecutan en su servidor.
Por ejemplo, si estás ejecutando Redis en tu servidor en el puerto 6379
, entonces ese puerto es lo único que necesitas abrir. Si necesitas permitir el acceso desde una dirección IP específica o un rango de direcciones, puedes agregar esas direcciones a las reglas del firewall.
Para configurar un firewall, primero instalarás una herramienta de configuración de firewall. Este ejemplo utiliza UFW, una herramienta de configuración de firewall comúnmente utilizada en Linux. Pero también puedes usar otra herramienta, como iptables, para configurar un firewall.
1. Ejecuta el siguiente comando para instalar UFW en tu máquina.
2. A continuación, ejecuta el siguiente comando para habilitar UFW.
Ingresa ‘Y’ cuando obtengas el aviso que se muestra a continuación para continuar ejecutando el comando.

3. Ejecuta el comando ufw
a continuación para agregar una regla, que permite (allow
) el tráfico en el puerto 6379
para tu servidor Redis. Reemplaza la dirección IP 11.22.33.44
con las direcciones IP de los usuarios previstos.

6379
4. Por último, ejecuta el siguiente comando para verificar que hayas agregado la regla del firewall correctamente. El comando verifica el estado
de tu firewall.
Puedes ver en la salida a continuación que el firewall está activo y tiene la regla para permitir el tráfico en el puerto 6379
para Redis desde la dirección IP 11.22.33.44
.

Ahora, cualquier usuario con la dirección IP 11.22.33.44
puede conectarse a Redis a través del puerto 6379
y necesitará autenticarse con una contraseña. Puedes agregar puertos adicionales para otros servicios de manera similar.
Conclusión
A lo largo de este tutorial, has aprendido cómo instalar y asegurar tu servidor Redis cambiando el nombre de comandos peligrosos a cadenas vacías y configurando un firewall.
Con este nuevo conocimiento, puedes disfrutar de todos los beneficios de Redis sin preocuparte por exponer tu servidor a riesgos innecesarios.
¿Quieres aprender más? ¿Por qué no empezar con asegurar un servidor Redis en Kubernetes?