Instalar y asegurar el servidor Redis en Debian 10
Redis, también conocido como «Servidor de Diccionario Remoto», es una base de datos en memoria de código abierto que puede utilizarse como base de datos, caché y corredor de mensajes. Redis soporta varias estructuras de datos, como cadenas, hashes, listas, conjuntos y muchas más. Redis está escrito en lenguaje de programación C y funciona en la mayoría de los sistemas POSIX, como Linux, Free BSD y OS X. Redis es y capaz de ejecutar miles de comandos por segundo. Redis viene con un rico conjunto de características que incluyen, Replicación, Recuperación Automática de Fallos, Guiones Lua, Desalojo LRU de claves, Transacciones y muchas más.
En este tutorial, aprenderemos a instalar y asegurar Redis en un servidor Debian 10.
Requisitos
- Un servidor con Debian 10.
- Una contraseña de root en tu servidor.
Cómo empezar
Antes de empezar, tendrás que actualizar tu sistema con la última versión. Puedes hacerlo ejecutando el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez actualizado tu servidor, reinicia tu servidor para aplicar los cambios.
Instalar Redis
Por defecto, Redis está disponible en el repositorio de Debian 10. Puedes instalarlo ejecutando el siguiente comando:
apt-get install redis-server -y
Después de instalar Redis, inicia el servicio Redis y permite que se inicie tras el reinicio del sistema con el siguiente comando:
systemctl start redis-server
systemctl enable redis-server
También puedes verificar el estado del servidor Redis con el siguiente comando:
systemctl status redis-server
Deberías obtener la siguiente salida:
? redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 2285 (redis-server) Tasks: 4 (limit: 1138) Memory: 6.8M CGroup: /system.slice/redis-server.service ??2285 /usr/bin/redis-server 127.0.0.1:6379 Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store... Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.
Por defecto, Redis escucha en el localhost en el puerto 6379. Puedes comprobarlo con el siguiente comando:
ps -ef | grep redis
Deberías ver la siguiente salida:
redis 2285 1 0 05:57 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379 root 2294 706 0 05:59 pts/0 00:00:00 grep redis
A continuación, comprueba la conectividad de Redis con el siguiente comando:
redis-cli
Deberías ver la siguiente salida:
127.0.0.1:6379>
Ahora, comprueba la conectividad de Redis con el comando ping:
127.0.0.1:6379> ping
Si todo está bien, deberías ver la siguiente salida:
PONG
Una vez que hayas terminado. Puedes pasar al siguiente paso.
Configurar Redis como caché
Puedes configurar Redis como Caché editando el archivo /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Añade las siguientes líneas al final del archivo:
maxmemory 64mb maxmemory-policy allkeys-lru
Cuando se alcance la memoria máxima de 64mb. Redis eliminará cualquier clave según el algoritmo LRU. Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Redis con el siguiente comando:
systemctl restart redis-server
Una vez que hayas terminado. Puedes pasar al siguiente paso.
Configurar la autenticación de Redis
Por defecto, puedes ejecutar cualquier comando en el shell de Redis. Por ello, se recomienda configurar la Autenticación de Redis para que los clientes requieran una contraseña antes de ejecutar cualquier comando. Puedes configurar la autenticación por contraseña directamente en el archivo de configuración de Redis. Para ello, abre el archivo /etc/redis/redis.conf con tu editor preferido:
nano /etc/redis/redis.conf
En la sección SEGURIDAD encuentra la siguiente línea:
# requirepass foobared
Descomenta y sustitúyela por la contraseña que desees, como se muestra a continuación:
requirepass AlsW34%#df
Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Redis para aplicar los cambios de configuración:
systemctl restart redis-server
Ahora, accede al shell de Redis con el siguiente comando:
redis-cli
Ahora, ejecuta el siguiente comando sin autentificarte:
127.0.0.1:6379> INFO server
Esto no funcionará porque no te autentificas. Deberías obtener el siguiente error:
NOAUTH Authentication required.
A continuación, ejecuta el siguiente comando para autenticarte con la contraseña especificada en el archivo de configuración de Redis:
127.0.0.1:6379> AUTH AlsW34%#df
Deberías obtener la siguiente salida:
OK
Ahora, vuelve a ejecutar el comando anterior:
127.0.0.1:6379> INFO server
Esto se ejecutará con éxito y deberías ver la siguiente salida:
# Server redis_version:5.0.3 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:afa0decbb6de285f redis_mode:standalone os:Linux 4.19.0-5-amd64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:8.3.0 process_id:2308 run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c tcp_port:6379 uptime_in_seconds:50 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:7483371 executable:/usr/bin/redis-server config_file:/etc/redis/redis.conf
Una vez que hayas terminado. Puedes pasar al siguiente paso.
Renombrar comandos específicos
Por razones de seguridad, se recomienda cambiar el nombre de ciertos comandos que se consideran peligrosos.
Aquí vamos a renombrar el comando «config». El comando «config» se utiliza para recuperar la contraseña de Redis. Veamos con un ejemplo:
Primero, conéctate y autentifica el shell de Redis con el siguiente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
A continuación, recupera la contraseña de Redis con el siguiente comando:
127.0.0.1:6379> config get requirepass
Deberías obtener la siguiente salida:
1) "requirepass" 2) "AlsW34%#df" 127.0.0.1:6379>
Puedes cambiar el nombre del comando config editando el archivo /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Busca la siguiente línea:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Descomenta y sustituye por la cadena que desees:
rename-command CONFIG H2sW_Config
Guarda y cierra el archivo. A continuación, reinicia el servicio Redis con el siguiente comando:
systemctl restart redis-server
A continuación, conéctate y autentifica el shell de Redis con el siguiente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
A continuación, recupera la contraseña de Redis con el comando config:
127.0.0.1:6379> config get requirepass
Hemos cambiado el nombre de este comando, por lo que deberías obtener el siguiente error:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Ahora, ejecuta el comando renombrado como se muestra a continuación:
127.0.0.1:6379> H2sW_Config get requirepass
Deberías obtener la siguiente salida:
1) "requirepass" 2) "AlsW34%#df"
Por último, sal del shell de Redis con el siguiente comando:
127.0.0.1:6379> exit
Conclusión
Enhorabuena! has instalado y asegurado con éxito el servidor Redis en Debian 10. Espero que ahora tengas los conocimientos suficientes para asegurar tu servidor Redis con autenticación por contraseña. No dudes en preguntarme si tienes alguna duda.