Manager, Developer Education
Redis es un sistema de almacenamiento claves-valores en memoria conocido por su flexibilidad, su rendimiento y su amplia compatibilidad con varios idiomas. En este tutorial de inicio rápido, se muestra cómo instalar, configurar y proteger Redis en un servidor de Ubuntu 20.04.
Para completar esta guía, necesitará acceso a un servidor de Ubuntu 20.04 que tenga un non-root user con privilegios sudo
y un firewall configurado con ufw
. Puede establecerlos siguiendo nuestra Guía de configuración inicial del servidor para Ubuntu 20.04.
Comience actualizando el caché de paquetes apt
local:
- sudo apt update
A continuación, escriba lo siguiente para instalar Redis:
- sudo apt install redis-server
Luego, abra el archivo de configuración de Redis con el editor de texto que prefiera:
- sudo nano /etc/redis/redis.conf
Dentro del archivo, encuentre la directiva supervised
que le permite declarar un sistema init para administrar Redis como un servicio. Debido a que se está ejecutando Ubuntu, el cual utiliza el sistema init systemd, cambie el valor no
a systemd
:
. . .
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd
. . .
Guarde y cierre el archivo cuando termine. Si utilizó nano
para editar el archivo, hágalo pulsando CTRL + X
, Y
y, luego, ENTER
.
A continuación, reinicie el servicio de Redis para reflejar los cambios realizados en el archivo de configuración:
- sudo systemctl restart redis.service
Para comprobar que Redis funcione de forma correcta, establezca conexión con el servidor utilizando redis-cli
, el cliente de línea de comandos de Redis:
- redis-cli
En la siguiente línea de comandos, realice una prueba de conectividad con el comando ping
:
- ping
OutputPONG
Este resultado confirma que la conexión del servidor está activa. A continuación, asegúrese de poder configurar las claves ejecutando lo siguiente:
- set test "It's working!"
OutputOK
Recupere el valor ingresando lo siguiente:
- get test
Suponiendo que todo funciona, podrá recuperar el valor almacenado:
Output"It's working!"
Una vez que confirme que puede obtener el valor, cierre la línea de comandos de Redis para volver al shell:
- exit
Puede configurar una contraseña de Redis directamente en el archivo de configuración de /etc/redis/redis.conf
. Abra ese archivo de nuevo con su editor preferido:
- sudo nano /etc/redis/redis.conf
Desplácese a la sección SECURITY
y busque una directiva comentada que diga:
. . .
# requirepass foobared
. . .
Elimine el #
para quitar los comentarios y cambie foobared
por una contraseña segura.
. . .
requirepass your_redis_password
. . .
Guarde y cierre el archivo después de configurar la contraseña, luego reinicie Redis:
- sudo systemctl restart redis.service
Para probar que la contraseña funciona, abra el cliente de Redis:
- redis-cli
A continuación se muestra una secuencia de comandos utilizados para comprobar que la contraseña de Redis funciona. El propósito del primer comando es configurar una clave para un valor antes de la autenticación:
- set key1 10
No funcionará ya que no se autenticó, de forma que Redis muestra un error:
Output(error) NOAUTH Authentication required.
El siguiente comando se autentica con la contraseña especificada en el archivo de configuración de Redis:
- auth your_redis_password
Redis lo reconoce:
OutputOK
Después de eso, tendrá éxito al ejecutar de nuevo el comando anterior:
- set key1 10
OutputOK
get key1
consulta a Redis por el valor de la nueva clave.
- get key1
Output"10"
Después de confirmar que es capaz de ejecutar comandos en el cliente de Redis tras la autenticación, puede salir de redis-cli
:
- quit
La característica adicional de seguridad incorporada en Redis implica renombrar o desactivar algunos comandos considerados peligrosos. Algunos de los comandos considerados peligrosos: FLUSHDB
, FLUSHALL
, KEYS
, PEXPIRE
, DEL
, CONFIG
, SHUTDOWN
, BGREWRITEAOF
, BGSAVE
, SAVE
, SPOP
, SREM
, RENAME
, y DEBUG
. Desactivar o renombrar estos y otros comandos hace que sea más difícil para los usuarios no autorizados volver a configurar, destruir o eliminar de otra manera sus datos.
Para renombrar o desactivar comandos de Redis, vuelva a abrir el archivo de configuración:
- sudo nano /etc/redis/redis.conf
Advertencia: Los siguientes pasos para desactivar y renombrar comandos son ejemplos. Sólo debe optar por desactivar o renombrar los comandos que le resulten pertinentes. Puede revisar la lista completa de comandos y determinar cómo pueden ser utilizados indebidamente en redis.io/commands.
Para desactivar un comando, simplemente renómbrelo de modo que pase a ser una cadena vacía (simbolizado por un par de comillas sin caracteres entre ellos), como se muestra a continuación:
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .
Para renombrar un comando, asígnele otro nombre como se muestra en los ejemplos siguientes. Los comandos renombrados deben ser difíciles de adivinar para otros, pero fáciles de recordar para usted.
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .
Guarde los cambios y cierre el archivo.
Después de renombrar un comando, aplique el cambio reiniciando Redis:
- sudo systemctl restart redis.service
Para probar el nuevo comando, ingrese la línea de comandos de Redis:
- redis-cli
A continuación, autentique:
- auth your_redis_password
OutputOK
Suponiendo que cambió el nombre del comando CONFIG
a ASC12_CONFIG
como se muestra en el ejemplo anterior, intente usar el comando CONFIG
original. Debido a que lo renombró, no debe funcionar:
- config get requirepass
Output(error) ERR unknown command `config`, with args beginning with:
Sin embargo, se podrá llamar al comando renombrado con éxito. No distingue entre mayúsculas y minúscula:
- asc12_config get requirepass
Output1) "requirepass"
2) "your_redis_password"
En este tutorial de inicio rápido, instaló y configuró Redis, validó el funcionamiento correcto de la instalación de Redis y utilizó sus funciones de seguridad integradas para que sea menos vulnerable a los ataques de agentes malintencionados.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!