Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo instalar y configurar DKIM con Postfix en Debian Wheezy

marzo 4, 2020

 

Una versión anterior de este tutorial fue escrito por Justin Ellingwood

Introducción

Redis es un almacén de claves-valor en memoria conocida por su flexibilidad, el rendimiento y la compatibilidad con el idioma de ancho. En este tutorial se muestra cómo instalar, configurar y asegurar Redis en un servidor de Ubuntu 18.04.

Requisitos previos

Para completar esta guía, tendrá acceso a un servidor de Ubuntu 18.04 que tiene un usuario no root con privilegios sudo y un firewall básico configurado. Puede configurar esto siguiendo nuestra guía de configuración inicial del servidor.

Cuando esté listo para comenzar, inicie sesión en el servidor de Ubuntu 18.04 como usuario sudo y seguir adelante.

Paso 1 – Instalación y Configuración fin Redis

para obtener la última versión de Redis, utilizaremos apto para instalarlo desde los repositorios oficiales de Ubuntu.

actualización de la memoria caché de paquetes apt locales e instalar Redis escribiendo:

sudo apt update
sudo apt install redis-server

  • sudo apt update sudo apt
  • instalar Redis-servidor

Esto descargar e instalar Redis y sus dependencias. Después de esto, hay un cambio de configuración importante que hacer en el fichero de configuración Redis, que se generó automáticamente durante la instalación.

Abrir archivo con su editor de texto preferido:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

Dentro del archivo, encuentre la directiva supervisada. Esta directiva permite declarar un sistema de inicio para gestionar Redis como un servicio, que le proporciona un mayor control sobre su funcionamiento. La directiva supervisado se establece en no por defecto. Puesto que usted está ejecutando Ubuntu, que utiliza el sistema de inicio systemd, cambiar esto 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

. . .

Ese es el único cambio que necesita para hacer el fichero de configuración Redis en este punto, por lo que, guardar y cerrar cuando haya terminado. A continuación, reinicie el servicio Redis para reflejar los cambios realizados en el fichero de configuración:

sudo systemctl restart redis.service

  • sudo systemctl reinicio redis.service

Con esto, usted ha instalado y configurado Redis y se está ejecutando en su máquina. Antes de comenzar a usarlo, sin embargo, es prudente primera comprobación de si Redis está funcionando correctamente.

Paso 2 – Pruebas Redis

Al igual que con cualquier software recién instalado, es una buena idea para asegurarse de que Redis está funcionando como se esperaba antes de hacer más cambios a su configuración. Vamos a repasar un puñado de maneras de comprobar que Redis está funcionando correctamente en este paso.

Empezar comprobando que el servicio Redis se está ejecutando:

sudo systemctl status redis

  • sudo estado systemctl ReDiS

Si se está ejecutando sin ningún error, este comando producirá una salida similar a la siguiente:

Output● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-06-27 18:48:52 UTC; 12s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 2421 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 2424 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 2445 (redis-server)
Tasks: 4 (limit: 4704)
CGroup: /system.slice/redis-server.service
└─2445 /usr/bin/redis-server 127.0.0.1:6379
. . .

Aquí, se puede ver que Redis está en marcha y ya está activado, lo que significa que se establece para poner en marcha cada vez que se inicia el servidor.

Nota: Esta configuración es deseable para muchos casos de uso común de Redis. Sin embargo, si lo prefiere para poner en marcha Redis manualmente cada vez que arranca el servidor, puede configurar esto con el comando siguiente:

sudo systemctl disable redis

  • sudo systemctl desactivar Redis prueba

Para que Redis está funcionando correctamente, conecte a la servidor usando el cliente de línea de comandos:

redis-cli

  • Redis-cli

En el símbolo que sigue, probar la conectividad con el comando ping:

ping

  • de ping

OutputPONG

Esta salida confirma que la conexión del servidor sigue vivo . A continuación, comprobar que usted es capaz de teclas activa ejecutando: «Está funcionando» ensayo de deformación

set test "It's working!"

OutputOK

Recuperar el valor escribiendo: prueba get

get test

Suponiendo que todo está funcionando, usted será capaz de recuperar el valor que almacenó:

Output"It's working!"

Después de confirmar que se puede recuperar el valor, salga del Redis pronta para volver a la cáscara: la salida

exit

Como prueba final, comprobaremos si Redis es capaz de persistir los datos incluso después de que se haya detenido o reiniciado. Para ello, reinicie primero la instancia Redis:

sudo systemctl restart redis

  • sudo systemctl reinicio Redis

A continuación, conectar con el cliente de línea de comandos, una vez más para confirmar que el valor de la prueba está todavía disponible:

redis-cli

  • Redis-cli

get test

  • obtener prueba

el valor de la clave aún debe ser accesible:

Output"It's working!"

salir a cabo en la cáscara de nuevo cuando haya terminado: la salida

exit

Con eso, su instalación Redis es totalmente operativo y listo para su uso. Sin embargo, algunos de sus valores de configuración por defecto son inseguros y proporcionan actores maliciosos con oportunidades para atacar y ganar acceso a su servidor y sus datos. Los pasos restantes de este tutorial métodos de cobertura para mitigar estas vulnerabilidades, como prescritos por el sitio web oficial Redis. Aunque estos pasos son opcionales y Redis seguirá funcionando si optar por no seguirlas, es fuertemente recomienda que se van finalizando con el fin de endurecer la seguridad de su sistema.

Paso 3 – Encuadernación a localhost

Por defecto, Redis sólo es accesible desde localhost . Sin embargo, si se ha instalado y configurado Redis siguiendo un tutorial diferente a éste, es posible que haya actualizado el archivo de configuración para permitir conexiones desde cualquier lugar. Esto no es tan segura como la unión a localhost .

Para corregir esto, abra el archivo de configuración para la edición de Redis:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

localice esta línea y asegúrese de que no se encuentre comentada (quitar el # si existe):

bind 127.0.0.1 ::1

Guardar y cerrar el archivo cuando haya terminado (presione CTRL + X, y, a continuación, ENTER).

A continuación, reinicie el servicio para asegurar que los cambios systemd lee:

sudo systemctl restart redis

  • sudo systemctl reinicio Redis cheque

Para que este cambio ha entrado en vigor, ejecute el siguiente comando netstat:

sudo netstat -lnp | grep redis

  • sudo netstat -lnp | grep ReDiS salida muestra

Outputtcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server
tcp6 0 0 ::1:6379 :::* LISTEN 14222/redis-server

esto que el programa Redis-servidor está obligado a localhost (127.0.0.1), lo que refleja el cambio que acaba de hacer el fichero de configuración. Si ves a otra dirección IP de esa columna (0.0.0.0, por ejemplo), entonces usted debe comprobar que no comentada la línea correcta y reiniciar el servicio Redis nuevo.

Ahora que su instalación Redis solamente está escuchando en el localhost , será más difícil para los actores maliciosos para realizar solicitudes de acceso o la ganancia a su servidor. Sin embargo, Redis no está configurado para requerir que los usuarios se autentiquen antes de realizar cambios en su configuración o los datos que contiene. Para remediar esto, Redis le permite a los usuarios deben autenticarse con una contraseña antes de hacer cambios a través del cliente Redis (Redis-CLI).

Paso 4 – Configuración de una contraseña Redis

Configuración de una contraseña Redis permite a uno de sus dos características incorporadas de seguridad – el comando de autenticación, que requiere autenticación de los clientes para acceder a la base de datos. La contraseña se configura directamente en el archivo de configuración de Redis, /etc/redis/redis.conf, por lo que abrir el archivo de nuevo con su editor preferido:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

de desplazamiento a la seguridad sección y mirada de Directiva comentado que lee:

# requirepass foobared

descomentarla quitando el #, y el cambio foobared a una contraseña segura.

Nota: Por encima de la Directiva requirepass en el archivo redis.conf, hay una advertencia comentado:

# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#

Por lo tanto, es importante que especifique un valor muy fuerte y muy larga como su contraseña. En lugar de hacer una contraseña usted mismo, puede utilizar el comando openssl para generar al azar, como en el siguiente ejemplo. Canalizando el resultado del primer comando para el segundo comando openssl, como se muestra aquí, se eliminarán todos los saltos de línea producidas por que el primer comando:

openssl rand 60 | openssl base64 -A

  • openssl rand 60 | openssl base 64 -A

El resultado debe ser algo como:

OutputRBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

Después de copiar y pegar la salida de ese comando como el nuevo valor para requirepass, debe decir:

/etc/redis/redis.confrequirepass RBOJ9cCNoGCKhlEBwQLHri1g+atWgn4Xn4HwNUbtzoVxAYxkiYBi7aufl4MILv1nxBqR4L6NNzI0X6cE

Después de establecer la contraseña, en Guardar y cerrar el archivo, a continuación, reinicie Redis: sudo systemctl reinicio redis.service prueba

Para

sudo systemctl restart redis.service

  • que las obras de contraseñas, acceder a la línea de comandos Redis:

    redis-cli

    • Redis-cli

    a continuación se muestra una secuencia de comandos utiliza para comprobar si la contraseña Redis funciona. Los primeros intentos de comandos para establecer una clave a un valor antes de la autenticación:

    set key1 10

    • establece key1 10

    eso no funcionará debido a que no autenticar, por lo Redis devuelve un error:

    Output(error) NOAUTH Authentication required.

    el siguiente comando se autentica con la contraseña especificada en el fichero de configuración Redis:

    auth your_redis_password

    • auth your_redis_password

    Redis reconoce:

    OutputOK

    Después de eso, se ejecuta el comando anterior de nuevo tendrá éxito:

    set key1 10
    establece

    • key1 10

    OutputOK

    get key1 consultas Redis para el valor de la nueva clave.

    get key1

    • get key1

    Output"10"

    Después de confirmar que usted es capaz de ejecutar comandos en el cliente Redis después de la autenticación, puede salir de la Redis-cli:

    quit

    • dejar

    A continuación, vamos a ver cambiar el nombre de los comandos Redis, que, si se ha introducido por error o por un actor malicioso, podría causar graves daños a la máquina.

    Paso 5 – Cambiar el nombre de comandos peligroso

    La otra característica de seguridad incorporada en Redis implica el cambio de nombre o deshabilitar por completo ciertos comandos que se consideran peligrosos.

    Cuando se ejecuta por usuarios no autorizados, tales comandos se puede utilizar para volver a configurar, destruir, o de otra manera borrar sus datos. Al igual que la contraseña de autenticación, el cambio de nombre o desactivar los comandos está configurado en la misma sección de seguridad del archivo /etc/redis/redis.conf.

    Algunos de los comandos que se consideran peligrosos incluyen: FLUSHDB , flushall , CLAVES , PEXPIRE , DEL , CONFIG , PARADA , BGREWRITEAOF , BG GUARDAR , GUARDAR , SPOP , SREM , RENAME y DEBUG . Esta no es una lista exhaustiva, pero el cambio de nombre o desactivación de todos los comandos en esa lista es un buen punto de partida para mejorar la seguridad de su servidor Redis.

    si debe desactivar o cambiar el nombre de un comando depende de sus necesidades específicas o las de su sitio. Si sabe que nunca va a usar un comando que se podría abusar, entonces es posible desactivarlo. De lo contrario, podría estar en su mejor interés para cambiarle el nombre.

    Para activar o desactivar los comandos Redis, abra el archivo de configuración una vez más:

    sudo nano /etc/redis/redis.conf

    • sudo nano /etc/redis/redis.conf

    Advertencia: Los siguientes pasos mostrando cómo desactivar los comandos de cambio de nombre y son ejemplos. Sólo debe elegir para desactivar o cambiar el nombre de los comandos que tienen sentido para usted. Puede revisar la lista completa de los comandos para sí mismo y determinar cómo podrían ser manipuladas a redis.io/commands.

    Para desactivar un comando, simplemente cambie el nombre a una cadena vacía (representado 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 cambiar el nombre de un comando, darle otro nombre como se muestra en los ejemplos abajo. comandos cambiado el nombre debería ser difícil de adivinar, pero fácil de recordar:

    . . .
    # rename-command CONFIG ""
    rename-command SHUTDOWN SHUTDOWN_MENOT
    rename-command CONFIG ASC12_CONFIG
    . . .

    Guardar los cambios y cierre el archivo.

    Después de cambiar el nombre de un comando, aplicar el cambio mediante el reinicio de Redis:

    sudo systemctl restart redis.service

    • sudo systemctl reinicio redis.service

    para probar los nuevos comandos, escriba la línea de comandos Redis:

    redis-cli

    • Redis-cli

    Entonces , autenticar:

    auth your_redis_password

    • auth your_redis_password de

    OutputOK

    Let asumen que cambió el nombre del comando CONFIG para ASC12_CONFIG, como en el ejemplo anterior. En primer lugar, intente utilizar el comando original de CONFIG. Se debe fallar, porque se ha cambiado el nombre:

    config get requirepass

    • config llegar requirepass

    Output(error) ERR unknown command 'config'

    Llamando el comando ha cambiado el nombre, sin embargo, tendrá éxito. No es sensible a mayúsculas:

    asc12_config get requirepass

    • asc12_config get requirepass

    Output1) "requirepass"
    2) "your_redis_password"

    Por último, se puede salir de Redis-cli:

    exit

      salida

    Tenga en cuenta que si usted ya está usando la línea de comandos y luego Redis reinicio Redis, que tendrá que volver a autenticarse. De lo contrario, obtendrá este error si escribe un comando:

    OutputNOAUTH Authentication required.

    En cuanto a la práctica de cambiar el nombre de comandos, hay una advertencia que figura al final de la sección de seguridad en /etc/redis/redis.conf que dice: Por favor

    Recuerde que para cambiar el nombre de los comandos que se registra en el archivo AOF o transmitida a los esclavos puede causar problemas.

    Nota: elige proyectos El Redis para utilizar los términos “maestro” y “esclavo”, mientras que digitalocean generalmente prefiere las alternativas “primaria” y “secundaria”. Con el fin de evitar confusiones hemos optado por utilizar los términos utilizados en la documentación Redis aquí.

    Esto significa que si el comando ha cambiado el nombre no está en el archivo de AOF, o si no es más que el archivo AOF no se ha transmitido a los esclavos, entonces no debería haber ningún problema.

    Así, tenlo en cuenta cuando se está tratando de cambiar el nombre de los comandos. El mejor momento para cambiar el nombre de un comando es cuando no se está utilizando la persistencia AOF, o inmediatamente después de la instalación, es decir, antes de su aplicación Redis-utilizando ha sido desplegado.

    Al utilizar AOF y hacer frente a una instalación de maestro-esclavo, tenga en cuenta esta respuesta de la página GitHub tema del proyecto. La siguiente es una respuesta a la pregunta del autor:

    Los comandos se registran en el AOF y replican en el esclavo de la misma manera que se envían, por lo que si se intenta reproducir la AOF en una instancia que no tiene el mismo cambio de nombre , que se puede encontrar inconsistencias que el comando no se puede ejecutar (lo mismo para los esclavos).

    Por lo tanto, la mejor manera de manejar el cambio de nombre en casos como el que es para asegurarse de que los comandos renombrados se aplican a todas las instancias en las instalaciones de maestro-esclavo.

    Conclusión

    En este tutorial, instalado y configurado Redis, valida que la instalación de Redis está funcionando correctamente, y utiliza su base de características de seguridad para que sea menos vulnerable a los ataques de los agentes maliciosos.

    tener en cuenta que una vez que alguien ha iniciado sesión en el servidor, es muy fácil de burlar la seguridad Redis-características específicas que hemos puesto en su lugar. Por lo tanto, la característica más importante de seguridad en el servidor Redis es el servidor de seguridad (que configuró si cumplió con el requisito previo de configuración inicial del servidor tutorial), ya que esto hace que sea extremadamente difícil para los actores maliciosos para saltar esa valla.