Volver al blog

Cómo instalar y asegurar Redis en Ubuntu 18.04

Cómo instalar y asegurar Redis en Ubuntu 18.04

Redis es un potente almacén de clave-valor en memoria que se puede utilizar como servidor de base de datos, caché y agente de mensajería. Es ampliamente conocido por su rápido rendimiento, flexibilidad y soporte para una amplia variedad de lenguajes. Es un software libre y de código abierto escrito en el lenguaje de programación C. En esta guía, descubre cómo instalar y proteger Redis en Ubuntu 18.04.

Requisitos previos

Para seguir esta guía, necesitarás preparar un par de cosas con antelación. Necesitas tener un servidor Ubuntu 18.04, que puedes instalar fácilmente siguiendo nuestro tutorial. Además, necesitas tener un usuario no root con privilegios sudo y un cortafuegos básico configurado. Puedes configurarlo siguiendo nuestras guías sobre la configuración del archivo sudoers de Linux y la configuración de un UFW en un servidor en la nube Ubuntu y Debian.

¡Ahora, empecemos!

Instalación de Redis

Redis está disponible directamente desde el repositorio oficial de Ubuntu. Esta es la forma más sencilla de instalarlo y configurarlo. Recomendamos seguir este camino a menos que haya razones específicas para no hacerlo. Dado que el código fuente de Redis está disponible de forma gratuita, también es posible compilar Redis desde el código fuente. Sin embargo, no lo recomendamos porque es más problemático de administrar y actualizar.

Instalar Redis desde el repositorio de Ubuntu

Primero, actualiza la caché local de paquetes APT:

A continuación, instala Redis con el siguiente comando:

Instalar Redis desde el código fuente

Ubuntu no viene con las herramientas de compilación y las bibliotecas necesarias por defecto. El siguiente comando instalará todas las herramientas necesarias para compilar Redis:

Hay dos dependencias adicionales para compilar Redis. Estas dependencias son necesarias para compilar Redis con características adicionales, por ejemplo, soporte TLS, integración con systemd, etc. Para compilar Redis con soporte TLS, instala el paquete “libssl-dev”. Para compilar Redis con soporte para systemd, instala el paquete “libsystemd-dev”:

El código fuente de Redis está disponible en GitHub. Echa un vistazo a la página de GitHub de Redis. A continuación, obtén el código fuente:

Redis GitHub page

Cambia el directorio activo actual al directorio del código fuente de Redis:

Después de eso, ejecuta la herramienta make para comenzar a compilar. Compilará Redis sin ningún elemento adicional:

Para habilitar el soporte TLS (asumiendo que “libssl-dev” está instalado), usa el siguiente comando en su lugar:

Para habilitar el soporte para systemd (asumiendo que “libsystemd-dev” está instalado), usa el siguiente comando:

A continuación, comprueba si la compilación se ha realizado correctamente. Ten en cuenta que puede requerir un paquete adicional “tcl-dev” y las dependencias asociadas para ejecutar la prueba:

Finalmente, instala Redis ejecutando el siguiente comando:

Si Redis se compiló usando TLS, entonces la ejecución del servidor tendrá que hacerse de la siguiente manera:

Configuración de Redis

Una vez completada la instalación, es hora de configurar Redis. Abre el archivo de configuración de Redis en un editor de texto y desplázate hacia abajo hasta la sección “supervised”:

secure redis 1

Cambia el valor de “supervised” a “systemd”. Esto asegurará que el servicio Redis sea administrado por sistemas. Para que los cambios surtan efecto, reinicia el servicio Redis:

Prueba de Redis

Siempre es una buena idea probar si Redis funciona correctamente antes de seguir usándolo. Aquí tienes varias formas de probar el comportamiento de Redis. El primer paso es comprobar si el servicio Redis está activo y funcionando:

Aquí, Redis ya se está ejecutando. De forma predeterminada, el servicio Redis se iniciará al arrancar. Si el servicio Redis se va a ejecutar manualmente, desactívelo:

La siguiente prueba es verificar usando la consola de Redis. Inicie el cliente de línea de comandos de Redis:

Ejecute el comando “ping”:

La salida confirma que la conexión al servidor sigue activa. La siguiente prueba es ver si permite establecer claves. Cree una clave “temp” con el valor “hello world”:

Recupere el valor usando el comando “get”:

Si todo está funcionando bien hasta ahora, Redis debería devolver el valor de la clave sin ningún problema. Cierre el cliente de línea de comandos de Redis:

Redis command-line

La prueba final es verificar si Redis puede persistir los datos incluso si se detiene o se reinicia. Reinicie el servicio Redis:

Si obtiene un error al ejecutar el comando anterior, use el comando “systemctl enable redis-server”:

Inicie el cliente de línea de comandos de Redis y recupere el valor de la clave “temp” que creamos antes:

Esto concluye las pruebas de Redis. Su servidor Redis ahora está listo para ser utilizado para el propósito deseado.

Asegurar Redis

En este punto, Redis está completamente operativo. Sin embargo, algunas de sus configuraciones predeterminadas no ofrecen la mejor seguridad. Si no se actualizan, cualquier actor malicioso puede aprovechar la oportunidad para obtener acceso al servidor y a sus datos. Esta sección mostrará cómo mitigar estas vulnerabilidades. Aunque estos pasos son opcionales, se recomienda encarecidamente seguirlos para reforzar la seguridad del sistema.

Vincular a localhost

De forma predeterminada, Redis solo es accesible desde localhost. Sin embargo, si Redis se configuró en un servidor remoto, la configuración debe actualizarse para permitir la conexión desde cualquier lugar. No obstante, puede que no sea tan seguro como vincularlo a localhost. Para volver a vincular Redis a localhost, abra el archivo de configuración de Redis en un editor de texto:

Desplácese hacia abajo y busque la siguiente. Asegúrese de que no esté comentada:

Binding to localhost

Guarde y cierre el archivo. Luego, reinicie el servicio Redis para asegurarse de que el cambio tenga efecto de inmediato:

Verifique que el cambio se haya realizado correctamente:

Si obtiene un error como ‘netstat: command not found’, use el comando para instalar net-tools “sudo apt-get install net-tools”. La salida verifica que “redis-server” se ha vinculado correctamente a localhost (127.0.0.1), lo que refleja el cambio realizado recientemente. Si hay alguna otra dirección IP (por ejemplo, 0.0.0.0), vuelva a verificar el archivo de configuración y reinicie el servidor Redis nuevamente.

Configuración de la contraseña de Redis

Configurar una contraseña permite el uso de una función de seguridad integrada de Redis – el comando “AUTH”. Requiere que los clientes se autentiquen para acceder a la base de datos. De forma predeterminada, Redis no tiene ninguna contraseña configurada. La contraseña debe declararse en el archivo de configuración de Redis. Abra el archivo de configuración en un editor de texto:

Luego, desplácese hacia abajo hasta la siguiente línea y descoméntela:

Después de descomentar, “foobared” será la contraseña predeterminada. Cámbiela por la contraseña de su elección. Cuando se trata de Redis, la seguridad de la contraseña es un factor de gran preocupación. Dado que Redis es un servidor de alto rendimiento, es potencialmente más fácil de explotar mediante ataques de fuerza bruta. Es por eso que el archivo de configuración contiene directamente la siguiente advertencia. Aquí tiene un ejemplo rápido de cómo generar una contraseña aleatoria muy segura. Usaremos el comando OpenSSL para generar una cadena aleatoria:

Después de configurar una nueva contraseña, reinicie el servicio Redis para que los cambios surtan efecto:

Es hora de probar si la contraseña se ha aplicado correctamente. Inicie la consola de línea de comandos de Redis:

A continuación, intente establecer una nueva clave:

Redis rechazará la solicitud ya que no hay autenticación para la acción. Para realizar cualquier acción en el servidor, el usuario debe estar autorizado primero. Autorice al usuario utilizando el siguiente comando:

Si la contraseña era correcta, Redis reconocerá la acción. Ahora, Redis permitirá el acceso a las funcionalidades de su servidor:

Por ahora, nuestro trabajo con la consola de Redis ha terminado. Puede cerrar la consola:

Renombrar comandos peligrosos

Redis permite renombrar o desactivar por completo ciertos comandos que se consideran peligrosos. Esta es otra característica de seguridad integrada importante de Redis. ¿Por qué se consideran peligrosos los comandos? Si los ejecuta un usuario no autorizado, estos comandos pueden reconfigurar, destruir o borrar datos en el servidor. Es una práctica común desactivar/renombrar un grupo de comandos peligrosos de Redis. Tenga en cuenta que la amenaza de seguridad de un comando depende de la situación. Por ejemplo, algunos de los siguientes comandos pueden ser necesarios de forma regular. En tales casos, no se recomienda desactivarlos. En esa situación, renombrar el comando puede resultar más beneficioso. Aquí tiene una lista rápida de los comandos que se consideran peligrosos. Este es un buen punto de partida para mejorar la seguridad del servidor Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

Para renombrar o desactivar un comando, este debe declararse en el archivo de configuración de Redis. Abra el archivo de configuración de Redis y agregue las siguientes líneas. Aquí, se utiliza “rename-command” para renombrar los comandos a una cadena vacía. Agregue tantas entradas como sea necesario:

Del mismo modo, también es posible renombrar los comandos con un nombre diferente. En ciertas situaciones, esto puede ofrecer más flexibilidad:

rename-command

Guarde el archivo y salga del editor. Para que los cambios surtan efecto, reinicie el servicio Redis:

Verifique los cambios. A continuación, inicie la consola de Redis y autentique el acceso:

Supongamos que el comando “CONFIG” fue desactivado o renombrado. Intente usar el siguiente comando “CONFIG”. Fallará:

Si el comando fue desactivado, entonces no se podrá acceder a él hasta que se vuelva a activar. Sin embargo, si fue renombrado, use el nuevo alias:

command_4

Conclusión

Este tutorial demuestra cómo instalar, asegurar, configurar y validar una instalación de Redis. También demuestra cómo utilizar las características de seguridad integradas de Redis para hacerlo menos vulnerable a los ataques. Sin embargo, si alguien ya ha iniciado sesión en el servidor, es bastante fácil eludir las características de seguridad específicas de Redis. Por eso es crucial contar con un cortafuegos para proteger el acceso al servidor Redis.

¡Feliz informática!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.