GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo realizar una instalación segura de Redis en Linux

Redis es beneficioso para muchas cosas, una de las cuales es el almacenamiento en caché. También puede usar Redis como almacén de datos principal o incluso como reemplazo de una base de datos. Pero, ¿cómo se ejecuta una instalación segura de Redis? Instalar Redis puede ser una molestia y, si no tiene cuidado, podría terminar con muchos errores. Por suerte para ti, este tutorial te tiene cubierto.

En este tutorial, aprenderá cómo instalar Redis de forma segura en su sistema Linux, junto con algunos consejos para evitar errores comunes.

¡Siga leyendo y ahórrese los dolores de cabeza al solucionar los errores de instalación de Redis!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Una máquina con Ubuntu 20.04 LTS:este tutorial usa Ubuntu 20.04 LTS, pero las instrucciones son similares para la mayoría de las distribuciones de Linux.
  • Privilegios de root o un usuario no root con sudo privilegios

Instalación de Redis con APT Package Manager

Hay algunas formas de instalar Redis en Ubuntu, pero para este tutorial, usará el administrador de paquetes APT para instalar Redis.

Redis está escrito en C, por lo que deberá compilar Redis a partir de su código fuente de forma manual. Se necesitarían instalar varias dependencias y el proceso de compilación no es exactamente infalible.

No se recomienda compilar Redis desde la fuente, pero la ventaja es que puede personalizar su instalación si lo desea. Descargas el código fuente y luego lo configuras manualmente.

Abre tu terminal y ejecuta el apt update Comando a continuación para asegurarse de tener las últimas listas de paquetes.

sudo apt update -y

Ahora, ejecuta el apt install Comando a continuación para instalar Redis en su máquina.

El siguiente comando usa el apt administrador de paquetes para descargar e instalar el redis-server paquete de los repositorios de Ubuntu en su máquina. El -y bandera le dice a apt para aceptar automáticamente las indicaciones durante el proceso de instalación.

sudo apt install redis-server -y

Configuración del archivo Redis.conf para ejecutar Redis como servicio

Acaba de instalar Redis, pero aún no está listo para usar. Antes de que pueda comenzar a usar Redis, primero configurará redis.conf archivo.

El redis.conf El archivo de configuración se incluye con el paquete Redis que instaló y se almacena en /etc/redis/ directorio por defecto. Este archivo contiene todas las opciones de configuración de Redis.

La extensión de archivo .conf es lógica, ya que sigue un patrón convencional. Muchos otros programas usan este mismo estilo. El servidor web Apache, por ejemplo, utiliza la extensión de archivo .conf para su archivo de configuración principal.

1. Ejecute el siguiente systemctl comando a stop el redis-server Servicio. Detener la ejecución del servicio Redis es una práctica recomendada cuando comienza a utilizar Redis.

sudo systemctl stop redis.service

2. A continuación, abra /etc/redis/redis.conf archivo en su editor de texto preferido.

Encuentra el supervisado directiva, luego configúrelo en systemd , como se muestra a continuación, y guarde los cambios. Al hacerlo, le dice al sistema operativo que ejecute Redis como un servicio.

3. Ahora, ejecuta el systemctl restart comando a continuación para reiniciar el servicio Redis (redis.service ) ya que el servicio Redis aún no conoce los cambios.

sudo systemctl restart redis.service

4. Finalmente, ejecuta el systemctl status Comando a continuación para ver si Redis se está ejecutando.

sudo systemctl status redis.service

Como puede ver a continuación, el resultado muestra que el servicio Redis se está ejecutando.

Probar si el servidor Redis funciona correctamente

Configuró y verificó que el servicio Redis se está ejecutando activamente, pero eso no significa que el servidor Redis esté funcionando. ¿Cómo probar si el servidor Redis funciona correctamente? Conéctese al servidor Redis y envíe comandos para ver si el servidor responde.

1. Ejecute el redis-cli Comando a continuación para conectarse al servidor Redis. redis-cli es la interfaz de línea de comandos de Redis, que le permite enviar comandos al servidor e inspeccionar su estado.

redis-cli

A continuación, puede ver que está en el indicador del servidor Redis (127.0.0.1:6379> ). El redis-cli el comando intenta conectarse a un servidor Redis en 127.0.0.1:6379 por defecto.

2. A continuación, ejecute el ping Comando a continuación para verificar si se puede acceder al servidor Redis.

ping

Como puede ver, el servidor devolvió PONG , lo que indica que se puede acceder al servidor de Redis y que ahora puede comunicarse correctamente con el servicio.

Quizás todavía seas escéptico; ejecuta el set comando a continuación. El set El comando es un comando de Redis que establece un par clave-valor en una base de datos.

set test "This is a test"

Como puede ver, el comando establecer devuelve "OK ”, lo que indica que el servicio de Redis está funcionando correctamente.

3. Ejecute el exit Comando a continuación para salir del redis-cli . Al hacerlo, se cierra la conexión con el servidor de Redis.

exit

Vincular el servidor Redis a Localhost

Acaba de probar que el servidor Redis funciona correctamente, pero también puede ser accesible desde otros dispositivos en su red. Este comportamiento no es deseable y, por lo general, querrá proteger su servidor Redis de extraños.

Vincular el servidor de Redis a localhost establece un comportamiento en el que solo la máquina en la que instaló Redis puede acceder al servidor de Redis.

1. Abra el /etc/redis/redis.conf archivo en su editor de texto.

2. Localiza la línea que dice bind 127.0.0.1 ::1 y descomente la línea eliminando el signo de número (# ) al principio de la línea.

3. Ahora, ejecute el siguiente comando para reiniciar el redis-server Servicio.

sudo systemctl restart redis-server

4. Finalmente, ejecute el siguiente comando para verificar si su servidor Redis está vinculado a localhost. El netstat -lnp El comando enumera todas las conexiones de red activas y el grep redis part filtra la salida a líneas que contienen “redis .”

-lnp significa Protocolo de nombre local, un protocolo de red utilizado por sistemas similares a UNIX para resolver nombres de host en direcciones IP.

sudo netstat -lnp | grep redis

Puede ver a continuación que el servidor Redis ahora está escuchando solo en la interfaz localhost (127.0.0.1:6379 ). Como reflejo del cambio en el archivo de configuración, puede ver que solo la interfaz localhost aparece en la lista de sus conexiones de Internet activas (tcp ).

Ahora, ningún otro dispositivo en su red puede conectarse a su servidor Redis.

Proteger la conexión del servidor Redis con una contraseña

En este punto, Redis no está configurado para requerir que los usuarios se autentiquen con una contraseña. Cualquiera que conozca la dirección IP o el nombre de host de su servidor Redis podría conectarse y cambiar sus datos.

¿Cómo protege su servidor Redis? Establezca una contraseña para solicitar a los usuarios la autenticación cuando se conecten a su servidor Redis.

1. Vuelva a abrir redis.conf archivo de configuración en su editor de texto/código.

2. A continuación, establezca una contraseña segura con lo siguiente:

  • Busca requirepass foobared bajo el SECURITY sección
  • Eliminar el signo de número (# ) al principio de la línea
  • Reemplazar foobared con una contraseña segura de su elección y guarde los cambios

3. Ejecute los siguientes comandos para reiniciar y conectarse a su servidor Redis.

sudo systemctl restart redis-server
redis-cli

4. Ahora, ejecuta el ping comando para ver si obtendrá una respuesta del servidor.

ping

A continuación, puede ver un mensaje de error que dice NOAUTH Autenticación requerida . Este mensaje indica que necesita una contraseña de autenticación para acceder a su servidor Redis de forma remota.

5. Ejecute el siguiente auth comando seguido de su contraseña para autenticar su conexión a su servidor Redis.

auth Qae9p_fY:YjdtJ7k

Obtendrá un OK respuesta cuando la autenticación es exitosa, como la siguiente.

6. Finalmente, vuelva a ejecutar el ping Comando para probar si ha autenticado su conexión a su servidor Redis.

ping

Ahora obtendrás el PONG respuesta, como se muestra a continuación, después de autenticar su conexión. En este punto, ahora ha protegido con éxito su servidor Redis con una contraseña.

Deshabilitar comandos peligrosos para proteger su servidor Redis

Establecer una contraseña para autenticar la conexión a su servidor Redis no significa que obtenga una protección del 100 %. De forma predeterminada, Redis incluye varios comandos peligrosos que permiten a los usuarios cambiar los datos de su base de datos.

Cuando los ejecutan usuarios no autorizados, estos comandos permiten a los intrusos leer, modificar, destruir e incluso borrar los datos de su base de datos de Redis.

A continuación no se incluye una lista completa, ya que su servidor Redis puede tener comandos peligrosos adicionales, pero en la mayoría de los casos, estos son los comandos peligrosos:

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

Para proteger aún más su servidor Redis, cambie el nombre de estos comandos peligrosos en redis.conf archivo:

1. Abra el redis.conf archivo en su editor de texto y busque el Comando de cambio de nombre sección.

Cambie el nombre de los comandos a una cadena vacía para deshabilitarlos siguiendo la siguiente sintaxis. Reemplazar the-command con el comando real para deshabilitar.

rename-command the-command ""

Por ejemplo, deshabilite el CONFIG comando renombrando CONFIG a una cadena vacía, como se muestra a continuación, luego guarde los cambios. Las comillas dobles (“”) indicar una cadena vacía que signifique deshabilitar un comando.

2. Salga del editor de texto y ejecute el siguiente comando para reiniciar el servidor Redis.

sudo systemctl restart redis-server

3. Ahora ejecute los siguientes comandos para conectarse a su servidor Redis.

redis-cli
auth Qae9p_fY:YjdtJ7k

4. Finalmente, ejecuta el config get comando para probar que el CONFIG el comando está deshabilitado.

config get requirepass

Obtendrá un comando ERR unknown config respuesta, como se muestra a continuación, que indica que el CONFIG el comando está deshabilitado.

Si el config get requirepass El comando avanza, solicita a su servidor Redis la contraseña para autenticar la conexión a su servidor Redis.

Ahora ha cambiado con éxito el nombre de un comando Redis peligroso para proteger su servidor Redis. Ahora sigue deshabilitando otros comandos peligrosos en el redis.conf archivo.

Bloqueo de la solicitud de conexión al servidor Redis con un cortafuegos

Otra forma de proteger su servidor Redis es configurar un firewall. La configuración de un firewall requiere que permita solo el puerto requerido para cada uno de los servicios que se ejecutan en su servidor.

Por ejemplo, si está ejecutando Redis en su servidor en el puerto 6379 , entonces ese puerto es lo que solo necesitas abrir. Si necesita permitir el acceso desde una dirección IP específica o un rango de direcciones, puede agregar esas direcciones a las reglas del firewall.

Para configurar un firewall, primero instalará una herramienta de configuración de firewall. Este ejemplo utiliza UFW, una herramienta de configuración de cortafuegos de uso común en Linux. Pero también puede utilizar otra herramienta, como iptables, para configurar un cortafuegos.

1. Ejecute el siguiente comando para instalar UFW en su máquina.

sudo apt install ufw -y

2. A continuación, ejecute el siguiente comando para habilitar UFW.

sudo ufw enable

Ingrese 'Y' cuando reciba el mensaje que se muestra a continuación para continuar ejecutando el comando.

3. Ejecute el ufw comando a continuación para agregar una regla, que permite (allow ) tráfico en el puerto 6379 para su servidor Redis. Reemplace el 11.22.33.44 Dirección IP con las direcciones IP de sus usuarios previstos.

sudo ufw allow from 11.22.33.44 to any port 6379

4. Por último, ejecute el siguiente comando para verificar que haya agregado la regla de firewall con éxito. El comando comprueba el status de su cortafuegos.

sudo ufw status

Puede ver en el resultado a continuación que el firewall está activo y tiene la regla para permitir el tráfico en el puerto 6379 para Redis desde la dirección IP 11.22.33.44 .

Ahora, cualquier usuario con la dirección IP de 11.22.33.44 puede conectarse a Redis a través del puerto 6379 y tendrá que autenticarse con una contraseña. Puede agregar puertos adicionales para otros servicios de manera similar.

Conclusión

A lo largo de este tutorial, aprendió cómo instalar y asegurar su servidor Redis cambiando el nombre de los comandos peligrosos a cadenas vacías y configurando un firewall.

Con este nuevo conocimiento, puede disfrutar de todos los beneficios de Redis sin preocuparse por exponer su servidor a riesgos innecesarios.

¿Desea aprender más? ¿Por qué no comenzar con la protección de un servidor Redis en Kubernetes?


Linux
  1. Cómo instalar Python en Linux

  2. Cómo instalar Java en Linux

  3. Cómo instalar el servicio SSH (shell seguro) en Kali Linux

  4. Cómo instalar NodeJS en Linux

  5. Cómo instalar y asegurar Redis en Ubuntu 18.04

Cómo instalar Grafana en Rocky Linux

Cómo instalar FreeOffice en Linux

Cómo instalar Go Language en Linux

Cómo instalar Redis en Linux Mint 20

Cómo instalar y configurar Redis en el sistema Linux

Cómo realizar una instalación de Samba Active Directory en Linux