Redis Fácil: Guía paso a paso para instalar Redis en AlmaLinux 9
Redis es un popular almacén de datos clave-valor en memoria de código abierto. Soporta diferentes estructuras de datos como Hash, Listas, Conjuntos, Cadenas y muchas más. Redis está diseñado para ejecutarse únicamente en un entorno de confianza, y puede utilizarse como base de datos, caché y corredor de mensajes. Redis es ampliamente conocido por su amplio soporte, alto rendimiento, alta disponibilidad y flexibilidad.
Puedes instalar Redis como independiente para un despliegue pequeño. Para grandes despliegues, proporcionan componentes adicionales como Redis Sentinel para alta disponibilidad y Redis Cluster para particionar datos en múltiples servidores de nodos Redis.
Este tutorial te mostrará cómo instalar y configurar Redis en el servidor AlmaLinux 9. Además, también te mostraremos cómo asegurar Redis mediante las ACL (Listas de Control de Acceso) de Redis y Firewalld.
Requisitos previos
Para completar este tutorial, debes tener lo siguiente:
- Un servidor AlmaLinux 9 – Este ejemplo utiliza el servidor AlmaLinux con nombre de host‘alma-linux‘ y dirección IP‘192.168.5.21’.
- Un usuario no root con privilegios de administrador sudo/root.
- Un firewalld configurado, en funcionamiento.
Ahora, vamos a sumergirnos.
Instalación de Redis
Redis es un almacén de datos de código abierto y alto rendimiento que puede utilizarse como base de datos, caché, intermediario de mensajes y motor de streaming. Redis está disponible en la mayoría de las distribuciones de Linux, incluida AlmaLinux. Se puede instalar a través del repositorio por defecto de la distribución.
Antes de instalar Redis, ejecuta el siguiente comando para reconstruir la caché de paquetes y obtener la última versión de la información de paquetes.
sudo dnf makecache
Ahora, ejecuta el siguiente comando dnf para instalar Redis. Introduce y cuando se te solicite, y pulsa ENTER para continuar.
sudo dnf install redis
Cuando Redis esté instalado, ejecuta los siguientes comandos systemctl para iniciar y habilitar el servicio Redis.
sudo systemctl start redis sudo systemctl enable redis
Por último, comprueba el estado del servicio Redis utilizando el comando siguiente.
sudo systemctl is-enabled redis sudo systemctl status redis
La siguiente salida confirma que Redis se está ejecutando y está habilitado, lo que significa que se ejecutará automáticamente al iniciarse el sistema.
Proteger Redis con Firewalld
En esta sección, configurarás firewalld para asegurar la instalación de Redis. Y la mejor forma de conseguirlo es creando zonas en firewalld y permitiendo redes/subredes específicas al servicio.
Ejecuta el siguiente comando para crear una nueva zona en firewalld llamada«svcs«, y añade en ella la interfaz de red interna. En este ejemplo, Redis se ejecutará en una dirección IP interna bajo la interfaz‘enp0s8‘, debes añadir tu interfaz a la zona‘svcs’.
sudo firewall-cmd --new-zone=svcs --permanent sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent
Ahora, ejecuta el siguiente comando para permitir que la red‘192.168.5.1/24‘ acceda a los puertos de la zona ‘svcs‘.
sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24
A continuación, añade el puerto Redis«6379/tcp» a la zona«svcs» y aplica los cambios al firewalld.
sudo firewall-cmd --zone=svcs --add-port=6379/tcp sudo firewall-cmd --runtime-to-permanent
Ahora, recarga el firewalld utilizando el siguiente comando para asegurarte de que los nuevos cambios se aplican al firewalld.
sudo firewall-cmd --reload
Por último, ejecuta el siguiente comando para comprobar la lista de zonas activas en firewalld. Y deberías ver que la zona«svcs» está activa.
sudo firewall-cmd --get-active-zones
Ahora puedes verificar la lista de reglas que están disponibles en la zona ‘svcs’. Si lo consigues, deberías ver el puerto Redis‘6379/tcp‘ en la sección Puertos y la subred‘192.168.5.1/24‘ en Origen.
sudo firewall-cmd --list-all --zone=svcs
Configurar Redis
En esta sección, configurarás la instalación de Redis modificando la configuración por defecto de Redis‘/etc/redis/redis.conf‘.
Abre el archivo de configuración de Redis‘/etc/redis/redis.conf‘ utilizando el comando editor nano que aparece a continuación.
sudo nano /etc/redis/redis.conf
Cambia el valor de los parámetros‘bind‘ por la dirección IP interna del servidor. En este ejemplo, Redis se ejecutará en una dirección IP local‘192.168.5.21‘.
bind 192.168.5.21
Ahora, desactiva el ‘modo protegido‘ cambiando el valor del parámetro a‘no‘. Para permitir conexiones remotas desde tu aplicación al servidor Redis, debes desactivar el ‘modo protegido’.
protected-mode no
En AlmaLinux, el gestor de servicios por defecto es ‘systemd’. Descomenta el parámetro ‘supervised‘ y cambia el valor por defecto a‘systemd‘ para permitir la integración de Redis con systemd.
supervised systemd
Por último, descomenta el parámetro‘aclfile‘ para activar las ACL (Listas de Control de Acceso) de Redis a través de un archivo. Desde Redis v6, el uso de ACLs es una forma recomendada para asegurar Redis, y Redis soporta diferentes métodos para usar ACLs, puedes crear ACLs a través del shell de Redis o mediante un archivo ACLs definido. En este ejemplo se utilizarán ACLs a través de archivo.
aclfile /etc/redis/users.acl
Guarda y cierra el archivo cuando hayas terminado.
Ahora, ejecuta el siguiente comando para crear el archivo de ACLs ‘/etc/redis/users.acl’.
touch /etc/redis/users.acl
Después, ejecuta el siguiente comando para reiniciar el servicio Redis y aplicar los cambios que has realizado.
sudo systemctl restart redis
Con esto, redis estará en funcionamiento con las nuevas configuraciones. El siguiente paso que harás será verificar la configuración de Redis mediante la CLI de Redis.
Conéctate al servidor Redis utilizando el siguiente comando ‘redis-cli’. En este ejemplo, especificarás la dirección IP del servidor Redis.
redis-cli -h 192.168.5.21
Una vez conectado, ejecuta el siguiente comando para asegurarte de que la conexión se ha realizado correctamente. Deberías esperar ver la salida‘test redis‘ cuando la conexión se realice correctamente.
PING "test redis"
A continuación, ejecuta las siguientes consultas para obtener las configuraciones actuales de Redis. En este ejemplo, comprobarás las configuraciones ‘bind‘,‘supervised’ y ‘ protected-mode‘.
CONFIG GET bind CONFIG GET supervised CONFIG GET protected-mode
Si tienes éxito, deberías obtener la configuración coincidente con los ajustes que has realizado anteriormente.
Por último, ejecuta la siguiente consulta ACL para obtener la lista de ACL disponibles en Redis.
ACL LIST
Deberías esperar ver la salida así – La instalación por defecto de Redis viene con el usuario ACL‘por defecto’, la autenticación es‘nopass‘ o inicio de sesión sin contraseña, y el permiso‘+@all‘, que permite al usuario‘por defecto‘ ejecutar cualquier consulta de Redis.
Llegados a este punto, ya has terminado la configuración básica de Redis. En el siguiente paso, te sumergirás en la configuración de las ACL (Listas de Control de Acceso) de Redis para asegurar la instalación de Redis.
Asegurar Redis con ACLs (Listas de Control de Acceso)
Desde Redis 6.x, la mejor forma de asegurar Redis es implementando ACLs (Listas de Control de Acceso). Esto te permite configurar usuarios y permisos en el servidor Redis, y puede dejar obsoletos los parámetros «requirepass» y «rename-command» de la versión antigua de Redis.
Puedes configurar ACLs en Redis con dos métodos diferentes:
- Configuración de ACLs a través del comando ACL
- Configuración de ACL a través de un archivo ACL externo
Con el servidor Redis que has configurado, configurarás las ACLs de Redis mediante un archivo ACL externo.
En primer lugar, abre el archivo ACL ‘/etc/redis/users.acl’ utilizando el siguiente comando del editor nano.
sudo nano /etc/redis/users.acl
Introduce las siguientes configuraciones para crear dos usuarios para Redis.
user alice on -DEBUG +@all ~* >AliceP4ssw0rd user bob on +@all -@dangerous ~* >BobP4ssw0rd
Guarda el archivo y sal del editor cuando hayas terminado.
Con esta configuración, crearás dos usuarios:
- Un usuario alice con contraseña ‘AliceP4ssw0rd‘ y con permiso para ejecutar todas las consultas‘+@all‘ excepto DEBUG‘-DEBUG‘, y también con permiso para ejecutar consultas contra todos los valores-clave‘~*‘ que estén disponibles.
- Un usuario bob con contraseña‘BobP4ssw0rd‘ y permitido al usuario bob ejecutar todas las consultas ‘+@all‘ excepto ‘-@dangerous‘. La categoría de comandos‘-@dangerous’ incluye FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF y muchos más. Además, este usuario puede realizar consultas a todos los valores clave disponibles en el servidor Redis.
Obtén la lista completa de categorías de comandos en Redis.
Ahora, ejecuta el siguiente comando systemctl para reiniciar el servicio Redis y aplicar los cambios.
sudo systemctl restart redis
Una vez reiniciado Redis, conéctate al servidor Redis utilizando el siguiente comando redis-cli.
redis-cli -h 192.168.5.21
Una vez conectado, ejecuta la siguiente consulta ACL para comprobar la lista de usuarios disponibles en Redis.
ACL LIST
En este punto, deberías esperar ver tres usuarios alice, bob y default.
También puedes verificar el usuario detallado en Redis utilizando la siguiente consulta.
ACL GETUSER alice ACL GETUSER bob
Deberías ver que el usuario alice tiene permiso para ejecutar todos los comandos disponibles en Redis, con el grupo de comandos«+@all«.
En cuanto al usuario bob, puedes ver el comando permitido ‘+@all‘, pero también el grupo de comandos ‘dangerous‘ desactivado.
Desactivar el usuario Redis por defecto
Una vez creado el nuevo usuario alice y bob, debes desactivar el usuario ‘pordefecto‘ mediante la siguiente consulta.
ACL SETUSER default OFF
A continuación, comprueba de nuevo la lista de usuarios disponibles en Redis utilizando el comando siguiente.
ACL LIST
Deberías esperar el usuario ‘por defecto’ con el estado desactivado o deshabilitado de esta forma:
Pulsa Ctrl+d para salir del intérprete de comandos de Redis.
Después, inicia sesión de nuevo en Redis utilizando el siguiente comando.
redis-cli -h 192.168.5.21
A continuación, introduce la siguiente consulta PING para verificar la conexión actual.
PING
Con el usuario«por defecto» de Redis desactivado, deberías obtener un error como el siguiente – Necesitas ser un usuario autenticado para ejecutar consultas.
Verificar el usuario alice
A continuación, vas a verificar el nuevo usuario Redis alice y bob que has creado.
Ejecuta el siguiente comando para autenticarte como usuario ‘alice’. Si tiene éxito, deberías obtener una salida ‘OK’.
AUTH alice AliceP4ssw0rd
Ahora ejecuta las siguientes consultas para asegurarte de que estás autenticado en Redis a través del usuario alice.
PING ACL WHOAMI
Deberías ver el mensaje PONG y autenticado como usuario alice.
Ahora, ejecuta las siguientes consultas para asegurarte de que el usuario alice puede ejecutar todas las consultas disponibles, incluidas las relacionadas con la gestión de Redis.
CONFIG GET bind CONFIG GET supervised
Si tiene éxito, deberías obtener una salida de la configuración actual de Redis para los parámetros bind y supervised.
Verificar el usuario bob
Ejecuta la siguiente consulta para iniciar sesión y autenticarte como usuario bob.
AUTH bob BobP4ssw0rd
Tras la autenticación, ejecuta la siguiente consulta PING. Si tiene éxito, deberías obtener el mensaje PONG.
PING
A continuación, dentro del archivo ACL de Redis, el usuario bob la categoría de comando‘-@peligroso‘, que impide a este usuario ejecutar algunos comandos peligrosos como FLUSHALL, CONFIG, y muchos más en el servidor Redis.
Si ejecutas las siguientes consultas como usuario bob, deberías obtener una salida como ‘NOPERM’, lo que significa que el usuario bob no tiene permiso para ejecutar el comando.
FLUSHALL CONFIG GET bind SAVE
Con esto, ya has asegurado con éxito Redis con ACLs (Listas de Control de Acceso) mediante el archivo ACL.
Conclusión
¡Enhorabuena! Ya has instalado con éxito Redis en AlmaLinux 9. También has aprendido a configurar ACLs (Listas de Control de Acceso) a través del archivo ACL para asegurar la instalación de Redis. Además, también has asegurado Redis con firewalld creando una zona específica para el servicio Redis.