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.

También te podría gustar...