Redis, también conocido como "Servidor de diccionario remoto", es una base de datos de código abierto y en memoria que se puede utilizar como base de datos, caché y agente de mensajes. Redis admite 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 capaz de ejecutar miles de comandos por segundo. Redis viene con un amplio conjunto de características que incluyen replicación, conmutación por error automática, secuencias de comandos Lua, desalojo de claves LRU, transacciones y muchas más.
En este tutorial, aprenderemos cómo instalar y asegurar Redis en el servidor Debian 10.
Requisitos
- Un servidor que ejecuta Debian 10.
- Se ha configurado una contraseña de root para su servidor.
Cómo empezar
Antes de comenzar, deberá actualizar su sistema con la última versión. Puede hacerlo ejecutando el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez que su servidor esté actualizado, reinícielo para aplicar los cambios.
Instalar Redis
De forma predeterminada, Redis está disponible en el repositorio de Debian 10. Puede instalarlo simplemente ejecutando el siguiente comando:
apt-get install redis-server -y
Después de instalar Redis, inicie el servicio Redis y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:
systemctl start redis-server
systemctl enable redis-server
También puede verificar el estado del servidor Redis con el siguiente comando:
systemctl status redis-server
Deberías obtener el siguiente resultado:
? 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.
De forma predeterminada, Redis escucha en el host local en el puerto 6379. Puede verificarlo con el siguiente comando:
ps -ef | grep redis
Debería ver el siguiente resultado:
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, pruebe la conectividad de Redis con el siguiente comando:
redis-cli
Debería ver el siguiente resultado:
127.0.0.1:6379>
Ahora, verifique la conectividad de Redis con el comando ping:
127.0.0.1:6379> ping
Si todo está bien, debería ver el siguiente resultado:
PONG
Una vez que haya terminado. Puede continuar con el siguiente paso.
Configurar Redis como caché
Puede configurar Redis como caché editando el archivo /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Agregue las siguientes líneas al final del archivo:
maxmemory 64mb maxmemory-policy allkeys-lru
Cuando se alcanza la memoria máxima de 64mb. Redis eliminará cualquier clave según el algoritmo LRU. Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio Redis con el siguiente comando:
systemctl restart redis-server
Una vez que haya terminado. Puede continuar con el siguiente paso.
Configurar la autenticación de Redis
De forma predeterminada, puede ejecutar cualquier comando en el shell de Redis. Por lo tanto, se recomienda configurar la autenticación de Redis para que los clientes soliciten una contraseña antes de ejecutar cualquier comando. Puede configurar la autenticación de contraseña directamente en el archivo de configuración de Redis. Para hacerlo, abra el archivo /etc/redis/redis.conf con su editor preferido:
nano /etc/redis/redis.conf
En la sección SEGURIDAD, busque la siguiente línea:
# requirepass foobared
Quite el comentario y reemplácelo con la contraseña deseada como se muestra a continuación:
requirepass AlsW34%#df
Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio Redis para aplicar los cambios de configuración:
systemctl restart redis-server
Ahora, acceda al shell de Redis con el siguiente comando:
redis-cli
Ahora, ejecute el siguiente comando sin autenticarse:
127.0.0.1:6379> INFO server
Esto no funcionará porque no se autentica. Debería recibir el siguiente error:
NOAUTH Authentication required.
A continuación, ejecute el siguiente comando para autenticarse con la contraseña especificada en el archivo de configuración de Redis:
127.0.0.1:6379> AUTH AlsW34%#df
Deberías obtener el siguiente resultado:
OK
Ahora, ejecute el comando anterior nuevamente:
127.0.0.1:6379> INFO server
Esto se ejecutará correctamente y debería ver el siguiente resultado:
# 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 haya terminado. Puede continuar con el siguiente paso.
Renombrar comandos específicos
Por razones de seguridad, se recomienda cambiar el nombre de ciertos comandos que se consideran peligrosos.
Aquí cambiaremos el nombre del comando "config". El comando config se usa para recuperar la contraseña de Redis. Veamos con un ejemplo:
Primero, conecte y autentique el shell de Redis con el siguiente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
A continuación, recupere la contraseña de Redis con el siguiente comando:
127.0.0.1:6379> config get requirepass
Deberías obtener el siguiente resultado:
1) "requirepass" 2) "AlsW34%#df" 127.0.0.1:6379>
Puede cambiar el nombre del comando de configuración editando el archivo /etc/redis/redis.conf:
nano /etc/redis/redis.conf
Busque la siguiente línea:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
Descomente y reemplace con la cadena deseada:
rename-command CONFIG H2sW_Config
Guarde y cierre el archivo. Luego, reinicie el servicio Redis con el siguiente comando:
systemctl restart redis-server
A continuación, conecte y autentique el shell de Redis con el siguiente comando:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
A continuación, recupere la contraseña de Redis con el comando de configuración:
127.0.0.1:6379> config get requirepass
Cambiamos el nombre de este comando para que reciba el siguiente error:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
Ahora, ejecute el comando renombrado como se muestra a continuación:
127.0.0.1:6379> H2sW_Config get requirepass
Deberías obtener el siguiente resultado:
1) "requirepass" 2) "AlsW34%#df"
Finalmente, salga del shell de Redis con el siguiente comando:
127.0.0.1:6379> exit
Conclusión
¡Felicidades! ha instalado y asegurado con éxito el servidor Redis en Debian 10. Espero que ahora tenga suficiente conocimiento para asegurar su servidor Redis con autenticación de contraseña. No dude en preguntarme si tiene alguna duda.