Advertencia de SSL/TLS de HAproxy: Estableciendo tune.ssl.default-dh-param en 1024 por defecto

Introducción

En este tutorial aprenderás cómo solucionar y corregir un mensaje de advertencia de HAProxy Configurando tune.ssl.default-dh-param a 1024 por defecto utilizando los métodos descritos en el tutorial Cómo Solucionar Errores Comunes de HAProxy al principio de esta serie. Una vez que confirmes que tu servidor está generando el mensaje de advertencia, aprenderás cómo corregirlo configurando la opción de configuración ssl-dh-param-file de HAProxy para usar un archivo dhparams.pem personalizado.

Puedes encontrarte con un mensaje de advertencia de HAProxy Configurando tune.ssl.default-dh-param a 1024 por defecto cuando tu servidor HAProxy está configurado con un certificado SSL/TLS y el parámetro tune.ssl.default-dh-param no está establecido en el archivo de configuración haproxy.cfg de HAProxy. Cuando el parámetro no está establecido, HAProxy utilizará un valor predeterminado de 1024 bits para la parte de acuerdo de clave Diffie-Hellman del handshake TLS, lo cual se considera inseguro.

Su servidor HAProxy puede activar esta advertencia sin que usted lo sepa. Puede configurar un certificado SSL/TLS y HAProxy se ejecutará, pero el servidor puede estar advirtiéndole sobre el problema en segundo plano. Si no está seguro de si su servidor HAProxy está utilizando de forma predeterminada un parámetro Diffie-Hellman de 1024 bits, puede utilizar una herramienta como la Prueba de Servidor SSL de SSL Labs para verificarlo. Si recibe un informe que tiene una línea Este servidor admite parámetros de intercambio de claves Diffie-Hellman (DH) débiles, entonces su servidor HAProxy está afectado.

Si ya ha determinado que su servidor HAProxy está generando una advertencia sobre el ajuste tune.ssl.default-dh-param y desea omitir la solución de problemas, la sección Resolución de una Advertencia Secure tune.ssl.default-dh-param al final de este tutorial explica cómo solucionar el problema.

Comprobación de una Advertencia tune.ssl.default-dh-param Usando systemctl

Siguiendo los pasos de solución de problemas del Cómo Solucionar Errores Comunes de HAProxy tutorial al principio de esta serie, el primer paso cuando está solucionando un mensaje de advertencia Setting tune.ssl.default-dh-param to 1024 by default es verificar el estado de HAProxy con systemctl.

La salida de systemctl status puede contener toda la información diagnóstica que necesitas para resolver el error. Sin embargo, es importante examinar el estado actual del servicio haproxy para asegurarse de que está en ejecución y de que cualquier servicio que dependa de él aún pueda funcionar mientras resuelves la advertencia.

Utiliza este comando systemctl para examinar el estado de HAProxy en cualquier distribución de Linux:

  1. sudo systemctl status haproxy.service -l --no-pager

La bandera -l asegurará que systemctl muestre el contenido completo de una línea, en lugar de sustituir puntos suspensivos () por líneas largas. La bandera --no-pager mostrará el registro completo en tu pantalla sin invocar una herramienta como less que solo muestra una pantalla de contenido a la vez.

Dado que estás solucionando un mensaje de advertencia Setting tune.ssl.default-dh-param to 1024 by default, deberías recibir una salida similar a la siguiente:

Output
● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2020-10-06 14:31:39 UTC; 2min 31s ago Process: 71406 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 71407 (haproxy) . . . Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Starting HAProxy Load Balancer... Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' : Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: , SSL library will use an automatically generated DH parameter. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy main started. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy static started. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy app started. Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Started HAProxy Load Balancer.

Hay dos secciones importantes resaltadas para tener en cuenta en esta salida. La primera es la línea active (running), que indica que HAProxy está disponible y en ejecución. Si tu servidor muestra una línea como Active: failed, entonces necesitarás solucionar problemas con HAProxy utilizando los métodos descritos en el tutorial Cómo solucionar errores comunes de HAProxy al principio de esta serie.

El segundo conjunto de líneas resaltadas son del diario systemd y contienen la advertencia tune.ssl.default-dh-param. Estas líneas te brindan toda la información sobre la advertencia, cómo se desencadena, los pasos realizados por HAProxy y cómo resolverla.

Si la salida de tu comando systemctl incluye líneas con la advertencia tune.ssl.default-dh-param, entonces ve a la sección Resolviendo una Advertencia de tune.ssl.default-dh-param al final de este tutorial para aprender cómo configurar HAProxy con un valor más seguro.

De lo contrario, si la salida de tu comando systemctl no proporciona información específica sobre la advertencia, pero sabes que tu servidor está utilizando parámetros de Diffie-Hellman débiles, la siguiente sección de este tutorial te guiará a través del uso de los registros de journalctl para localizar el mensaje de advertencia.

Comprobando una Advertencia de tune.ssl.default-dh-param Usando journalctl

Si la salida de tu comando systemctl no incluye una advertencia tune.ssl.default-dh-param pero sabes que tu servidor está afectado, debes proceder con el uso del comando journalctl para examinar los registros de systemd para HAProxy.

Ejecute el siguiente comando en cualquier distribución de Linux para inspeccionar los registros del diario de systemd para el servicio haproxy:

  1. sudo journalctl -u haproxy.service -l --no-pager | grep tune.ssl.default-dh-param

La parte | grep tune.ssl.default-dh-param del comando utiliza un tubo (|) para enviar la salida de journalctl al comando grep como entrada. El uso del tubo significa que solo se mostrarán en pantalla las líneas coincidentes del diario.

Si el diario incluye una advertencia de tune.ssl.default-dh-param, entonces recibirá una salida como la siguiente:

Output
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.

Dado que esta salida incluye la advertencia, puede omitir a la sección Configuración de un Valor Seguro para tune.ssl.default-dh-param al final de este tutorial para aprender cómo configurar HAProxy con un valor más seguro.

Si no recibe ninguna salida después de ejecutar el comando journaltcl, la siguiente sección demostrará cómo puede verificar una advertencia de tune.ssl.default-dh-param usando la herramienta de verificación de configuración incorporada de HAProxy.

Verificación de una Advertencia de tune.ssl.default-dh-param Usando haproxy -c o Archivos de Registro

HAProxy incluye un comando que puede examinar y validar sus archivos de configuración. Puede utilizar el comando para verificar errores de sintaxis o configuraciones inválidas sin reiniciar HAProxy y arriesgar tiempo de inactividad para sus servicios. Además, si su servidor HAProxy está configurado para registrar la salida en un archivo o en los registros del sistema, puede examinar los archivos de registro para buscar una advertencia tune.ssl.default-dh-param.

Para verificar una advertencia tune.ssl.default-dh-param usando HAProxy en sí mismo, ejecute el siguiente comando en cualquier distribución de Linux. Si el archivo de configuración de HAProxy está en una ubicación diferente a la destacada /etc/haproxy/haproxy.cfg, asegúrese de sustituir la ruta correcta de su archivo:

  1. sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Si su servidor está configurado con SSL/TLS y no tiene configurado un tune.ssl.default-dh-param, entonces recibirá una salida de advertencia similar a la siguiente:

Output
[WARNING] 279/150829 (71512) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' : unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'. , SSL library will use an automatically generated DH parameter. [WARNING] 279/150829 (71512) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear. Configuration file is valid

La línea destacada contiene la advertencia tune.ssl.default-dh-param.

Para verificar el mensaje de advertencia usando los registros de HAProxy, puede buscar líneas que coincidan con la cadena tune.ssl.default-dh-param usando el comando grep. Ejecute el siguiente comando para buscar advertencias:

  1. sudo grep tune.ssl.default-dh-param /var/log/haproxy.log

Tenga en cuenta que si ha configurado HAProxy con una ubicación de registro diferente, asegúrese de sustituir su ruta en lugar del archivo de registro destacado /var/log/haproxy.log.

Si su servidor está generando la advertencia, entonces recibirá una salida como la siguiente:

Output
Oct 6 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.

Nota: Es posible que sus archivos de registro no incluyan el mensaje de advertencia, pero el comando haproxy -c seguirá generando la advertencia. Si este es el caso, es probable que su servicio HAproxy haya estado en funcionamiento el tiempo suficiente como para que el archivo de registro haya sido rotado, por lo que no incluye la advertencia.

Comprobar el mensaje utilizando el método haproxy -c es la forma más confiable de determinar si su servidor está afectado, por lo que puede ignorar de forma segura las entradas de archivos de registro faltantes.

Ahora que ha determinado si su servidor está generando una advertencia tune.ssl.default-dh-param, puede proceder al siguiente paso en este tutorial, que explica dos métodos que puede utilizar para resolver el problema.

Resolución de una Advertencia tune.ssl.default-dh-param

Puede resolver una advertencia tune.ssl.default-dh-param en HAProxy con algunos ajustes diferentes. Una opción es establecer el valor tune.ssl.default-dh-param en algo mayor que 1024 explícitamente en /etc/haproxy/haproxy.cfg según el mensaje de advertencia. Sin embargo, la documentación de HAProxy recomienda especificar parámetros Diffie-Hellman personalizados ya que ese enfoque es más seguro, así que usaremos ese método en su lugar.

Primero generará un archivo dhparams.pem utilizando la utilidad openssl. Una vez creado el archivo, lo agregará a la sección de configuración global de HAProxy para que cualquier bloque frontend herede la configuración.

Para generar los parámetros DH personalizados, ejecute lo siguiente:

  1. sudo openssl dhparam -out /etc/haproxy/dhparams.pem 2048

Recibirá una salida como la siguiente:

Output
Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ..............

Una vez que se complete el comando, configure HAProxy para usar el archivo de parámetros DH personalizados. Abra /etc/haproxy/haproxy.cfg en vi o su editor preferido.

sudo vi /etc/haproxy/haproxy.cfg

Encuentre la sección en el archivo como la siguiente:

Output
. . . # turn on stats unix socket stats socket /var/lib/haproxy/stats # utilize system-wide crypto-policies #ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM

Agregue una línea después de la línea ssl-default-server-ciphers PROFILE=SYSTEM como esta:

ssl-dh-param-file /etc/haproxy/dhparams.pem

Toda la sección debería parecerse a la siguiente, incluida la nueva línea ssl-dh-param-file resaltada que agregó:

/etc/haproxy/haproxy.cfg
. . . # turn on stats unix socket stats socket /var/lib/haproxy/stats # utilize system-wide crypto-policies #ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM ssl-dh-param-file /etc/haproxy/dhparams.pem

Cuando haya terminado de editar el archivo, guárdelo y ciérrelo presionando ESC, escribiendo :wq y presionando ENTER.

Pruebe la configuración utilizando el comando haproxy -c para asegurarse de que haya agregado la configuración correcta y de que HAProxy pueda acceder al archivo dhparams.pem personalizado:

  1. sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Debería recibir una salida que indique que la configuración es válida como la siguiente:

Output
Configuration file is valid

Si su configuración es válida, reinicie HAProxy para que utilice el nuevo archivo de parámetros de Diffie-Hellman:

  1. sudo systemctl restart haproxy.service

Ahora ha configurado HAProxy con un conjunto de parámetros de Diffie-Hellman personalizados de 2048 bits que todos los frontends podrán utilizar. También ha suprimido las advertencias tune.ssl.default-dh-param.

Conclusión

En este tutorial, aprendió cómo solucionar un mensaje de advertencia de HAProxy Configurando tune.ssl.default-dh-param en 1024 de forma predeterminada. Exploró cuatro métodos diferentes para examinar la configuración de HAProxy y encontrar el mensaje. Primero utilizó systemctl y journalctl para examinar el estado del servidor HAProxy e intentar encontrar el mensaje en los registros de systemd. Luego examinó el archivo de configuración de HAProxy utilizando la verificación de configuración incorporada haproxy -c. Finalmente, buscó entradas de registro utilizando el comando grep en el archivo de registro de HAProxy.

Después de confirmar que su servidor estaba generando un mensaje de advertencia Configurando tune.ssl.default-dh-param en 1024 de forma predeterminada, generó un archivo de parámetros de Diffie-Hellman personalizados y configuró HAProxy para que lo utilizara estableciendo la directiva de configuración ssl-dh-param-file.

Ahora que tiene esa configuración en su lugar, su servidor HAProxy utilizará de forma predeterminada los parámetros de Diffie-Hellman más seguros y el mensaje de advertencia tune.ssl.default-dh-param ya no estará en sus registros.

Source:
https://www.digitalocean.com/community/tutorials/haproxy-ssl-tls-warning-setting-tune-ssl-default-dh-param-to-1024-by-default