Configuración de Seguridad de Redis

RedisBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a mejorar la seguridad de su servidor Redis. Cubriremos cómo establecer una contraseña para prevenir el acceso no autorizado y cómo deshabilitar comandos específicos para limitar el uso indebido potencial. Al final de este laboratorio, tendrá una instancia de Redis más segura.

Establecer una Contraseña con CONFIG SET requirepass

Por defecto, Redis no requiere una contraseña, lo que lo hace vulnerable. Establecer una contraseña es el primer y más importante paso para asegurar su servidor Redis. Utilizaremos el comando CONFIG SET requirepass para hacer esto.

El comando CONFIG SET le permite cambiar dinámicamente la configuración de Redis. La configuración requirepass especifica la contraseña que los clientes deben proporcionar para conectarse al servidor.

Comencemos:

  1. Conéctese al servidor Redis usando redis-cli:

    Abra una terminal en la VM de LabEx. El directorio predeterminado es ~/project. Ejecute el siguiente comando:

    redis-cli
    

    Esto lo conectará al servidor Redis que se ejecuta en el host predeterminado (127.0.0.1) y puerto (6379). Debería ver el prompt 127.0.0.1:6379>.

    127.0.0.1:6379>
    
  2. Establezca la contraseña usando el comando CONFIG SET requirepass:

    Estableceremos la contraseña a mysecretpassword. Para entornos de producción, elija una contraseña fuerte y única.

    CONFIG SET requirepass mysecretpassword
    

    Debería ver la siguiente salida:

    OK
    

    Esto confirma que la contraseña ha sido establecida.

    Ahora, salga de redis-cli escribiendo exit y presionando Enter. Esto asegura que sus comandos se registren.

    exit
    
  3. Intente ejecutar un comando sin autenticación:

    Abra una nueva terminal y conéctese al servidor Redis usando redis-cli:

    redis-cli
    

    Intente ejecutar un comando simple como PING:

    PING
    

    Debería recibir un mensaje de error:

    (error) NOAUTH Authentication required.
    

    Esto indica que ahora se requiere autenticación.

  4. Salga de redis-cli:

    Para asegurar que el comando se registre, salga de redis-cli escribiendo exit o presionando Ctrl+D.

    exit
    

    Esto es importante para que el paso de verificación funcione correctamente.

Autenticarse con el Comando AUTH

Ahora que hemos establecido una contraseña, aprendamos cómo autenticarse con el servidor Redis usando el comando AUTH. Este comando requiere la contraseña que estableció en el paso anterior.

  1. Conéctese al servidor Redis usando redis-cli:

    Abra una terminal en la VM de LabEx. El directorio predeterminado es ~/project. Ejecute el siguiente comando:

    redis-cli
    

    Debería ver el prompt 127.0.0.1:6379>.

  2. Autentíquese con el comando AUTH:

    Use el comando AUTH seguido de la contraseña que estableció anteriormente:

    AUTH mysecretpassword
    

    Si la autenticación es exitosa, verá:

    OK
    
  3. Ejecute un comando después de la autenticación:

    Ahora que está autenticado, intente el comando PING nuevamente:

    PING
    

    Debería recibir la respuesta esperada:

    PONG
    
  4. Salga de redis-cli:

    Salga de redis-cli escribiendo exit o presionando Ctrl+D.

    exit
    

Limitar Comandos Peligrosos

Redis ofrece muchos comandos, pero algunos pueden ser arriesgados en ciertos entornos. Si bien no podemos deshabilitar comandos dinámicamente usando CONFIG SET (ya que rename-command requiere un reinicio del servidor), podemos demostrar el concepto de seguridad de comandos mostrando cómo funcionan comandos peligrosos como FLUSHALL y por qué deben restringirse en entornos de producción.

  1. Conéctese al servidor Redis usando redis-cli:

    Abra una terminal en la VM de LabEx. El directorio predeterminado es ~/project. Ejecute el siguiente comando:

    redis-cli
    

    Debería ver el prompt 127.0.0.1:6379>.

  2. Autentíquese con el comando AUTH:

    Autentíquese usando el comando AUTH seguido de su contraseña:

    AUTH mysecretpassword
    

    Debería ver la salida OK tras una autenticación exitosa.

  3. Cree algunos datos de prueba para demostrar el peligro de FLUSHALL:

    SET testkey "important data"
    SET anotherkey "more important data"
    

    Ambos comandos deberían devolver OK.

  4. Verifique que los datos existen:

    KEYS *
    

    Debería ver ambas claves listadas:

    1) "testkey"
    2) "anotherkey"
    
  5. Demuestre el peligroso comando FLUSHALL:

    Advertencia: ¡Este comando eliminará todos los datos en todas las bases de datos!

    FLUSHALL
    

    Debería ver:

    OK
    

    Este comando elimina con éxito todos los datos de todas las bases de datos.

  6. Verifique que todos los datos han sido eliminados:

    KEYS *
    

    Debería ver:

    (empty array)
    

    Esto demuestra por qué FLUSHALL se considera peligroso y debe deshabilitarse en producción agregando rename-command FLUSHALL "" al archivo redis.conf.

  7. Salga de redis-cli:

    Salga de redis-cli escribiendo exit o presionando Ctrl+D.

    exit
    

Resumen

En este laboratorio, ha aprendido a mejorar la seguridad de Redis. Estableció una contraseña usando CONFIG SET requirepass para prevenir el acceso no autorizado. También aprendió a autenticarse usando el comando AUTH y demostró la naturaleza peligrosa de comandos como FLUSHALL que pueden eliminar todos los datos. En entornos de producción, comandos peligrosos como este deben deshabilitarse agregando rename-command FLUSHALL "" al archivo redis.conf y reiniciando el servidor Redis. Estos pasos son esenciales para asegurar su servidor Redis.