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

actualizar índice de paquetes

Ahora, ejecuta el siguiente comando dnf para instalar Redis. Introduce y cuando se te solicite, y pulsa ENTER para continuar.

sudo dnf install redis

instalar 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

iniciar activar 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.

verificar redis

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 zonasvcs’.

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

configurar firewalld

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

firewalld verificar

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

configurar dirección bind

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

desactivar el modo protegido

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

integración de 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

activar 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"

conectar con 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.

comprobar configuración

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.

lista acls

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.

crear usuario acls

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.

listar usuarios

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«.

obtener datos del usuario alice

En cuanto al usuario bob, puedes ver el comando permitido ‘+@all‘, pero también el grupo de comandos ‘dangerous‘ desactivado.

obtener datos del usuario bob

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:

desactivar usuario por defecto

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.

desactivar usuario por defecto

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.

usuario de prueba alice

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

usuario de prueba bob

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.

También te podría gustar...