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:
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
:
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:
OutputOct 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:
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:
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:
OutputOct 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:
Recibirá una salida como la siguiente:
OutputGenerating 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:
Debería recibir una salida que indique que la configuración es válida como la siguiente:
OutputConfiguration file is valid
Si su configuración es válida, reinicie HAProxy para que utilice el nuevo archivo de parámetros de Diffie-Hellman:
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.