Introdução
Neste tutorial, você aprenderá como solucionar e corrigir uma mensagem de aviso do HAProxy Definindo tune.ssl.default-dh-param para 1024 por padrão
usando os métodos descritos no tutorial Como Solucionar Erros Comuns do HAProxy no início desta série. Uma vez que você confirme que seu servidor está gerando a mensagem de aviso, você aprenderá como corrigi-la configurando a opção de configuração ssl-dh-param-file
do HAProxy para usar um arquivo dhparams.pem
personalizado.
Você pode encontrar uma mensagem de aviso do HAProxy Definindo tune.ssl.default-dh-param para 1024 por padrão
quando seu servidor HAProxy está configurado com um certificado SSL/TLS e o parâmetro tune.ssl.default-dh-param
não está definido no arquivo de configuração haproxy.cfg
do HAProxy. Quando o parâmetro não está definido, o HAProxy usará um valor padrão de 1024 bits para a parte de acordo de chave Diffie-Hellman do handshake TLS, o que é considerado inseguro.
Seu servidor HAProxy pode acionar este aviso sem você saber. Você pode configurar um certificado SSL/TLS e o HAProxy funcionará, mas o servidor pode estar alertando sobre o problema em segundo plano. Se você não tem certeza se seu servidor HAProxy está usando um parâmetro Diffie-Hellman de 1024 bits por padrão, você pode usar uma ferramenta como o SSL Labs Server Test para verificar. Se você receber um relatório que tenha uma linha Este servidor suporta parâmetros de troca de chave Diffie-Hellman (DH) fracos
, então seu servidor HAProxy está afetado.
Se você já determinou que seu servidor HAProxy está gerando um aviso sobre a configuração tune.ssl.default-dh-param
e gostaria de pular a solução de problemas, a seção Resolvendo um Aviso Secure tune.ssl.default-dh-param
no final deste tutorial explica como corrigir o problema.
Verificando um Aviso tune.ssl.default-dh-param
Usando systemctl
Seguindo as etapas de solução de problemas do tutorial Como Solucionar Erros Comuns do HAProxy no início desta série, o primeiro passo ao solucionar uma mensagem de aviso Definindo tune.ssl.default-dh-param como 1024 por padrão
é verificar o status do HAProxy com systemctl
.
A saída de systemctl status
pode conter todas as informações de diagnóstico que você precisa para resolver o erro. No entanto, é importante examinar o estado atual do serviço haproxy
para garantir que ele esteja em execução e que quaisquer serviços que dependam dele ainda consigam funcionar enquanto você resolve o aviso.
Use este comando systemctl
para examinar o status do HAProxy em qualquer distribuição Linux:
A flag -l
garantirá que o systemctl
imprima todo o conteúdo de uma linha, em vez de substituir por reticências (…
) para linhas longas. A flag --no-pager
imprimirá todo o log na sua tela sem invocar uma ferramenta como less
que mostra apenas uma tela de conteúdo por vez.
Como você está solucionando uma mensagem de aviso Configurando tune.ssl.default-dh-param para 1024 por padrão
, você deve receber uma saída semelhante à seguinte:
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.
Há duas seções importantes destacadas para observar nesta saída. A primeira é a linha ativo (em execução)
, que indica que o HAProxy está disponível e em execução. Se o seu servidor mostrar uma linha como Ativo: falha
, então você precisará solucionar o HAProxy usando os métodos descritos no tutorial Como Solucionar Erros Comuns do HAProxy no início desta série.
O segundo conjunto de linhas destacadas são do diário do systemd
e contêm o aviso tune.ssl.default-dh-param
. Essas linhas fornecem todas as informações sobre o aviso, como ele é acionado, as etapas tomadas pelo HAProxy e como resolvê-lo.
Se a saída do seu systemctl
incluir linhas com o aviso tune.ssl.default-dh-param
, vá para a seção Resolvendo um Aviso tune.ssl.default-dh-param
no final deste tutorial para aprender como configurar o HAProxy com um valor mais seguro.
Se a saída do seu systemctl
não fornecer informações específicas sobre o aviso, mas você souber que seu servidor está usando parâmetros Diffie-Hellman fracos, a próxima seção deste tutorial irá orientá-lo sobre como usar os registros do journalctl
para localizar a mensagem de aviso.
Verificando um Aviso tune.ssl.default-dh-param
Usando o journalctl
Se a saída do seu systemctl
não incluir um aviso tune.ssl.default-dh-param
, mas você souber que seu servidor está afetado, você deve prosseguir usando o comando journalctl
para examinar os registros do systemd
para o HAProxy.
Execute o seguinte comando em qualquer distribuição Linux para inspecionar os registros do jornal do sistema systemd
para o serviço haproxy
:
A porção | grep tune.ssl.default-dh-param
do comando utiliza um pipe (|
) para enviar a saída do comando journalctl
para o comando grep
como entrada. O uso do pipe significa que apenas as linhas correspondentes do registro serão exibidas na tela.
Se o registro incluir um aviso de tune.ssl.default-dh-param
, então você receberá uma saída como a seguinte:
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.
Como esta saída inclui o aviso, você pode pular para a seção Configurando um Valor Seguro para tune.ssl.default-dh-param
no final deste tutorial para aprender como configurar o HAProxy com um valor mais seguro.
Se você não receber nenhuma saída após executar o comando journaltcl
, a próxima seção demonstrará como você pode verificar um aviso de tune.ssl.default-dh-param
usando a ferramenta de verificação de configuração incorporada do HAProxy.
Verificando um Aviso de tune.ssl.default-dh-param
Usando haproxy -c
ou Arquivos de Log
O HAProxy inclui um comando que pode examinar e validar seus arquivos de configuração. Você pode usar o comando para verificar erros de sintaxe ou configurações inválidas sem reiniciar o HAProxy e arriscar tempo de inatividade para seus serviços. Além disso, se o seu servidor HAProxy estiver configurado para registrar saída em um arquivo ou nos logs do sistema, você pode examinar os arquivos de log para verificar um aviso tune.ssl.default-dh-param
.
Para verificar um aviso tune.ssl.default-dh-param
usando o próprio HAProxy, execute o seguinte comando em qualquer distribuição Linux. Se o arquivo de configuração do HAProxy estiver em um local diferente do caminho destacado /etc/haproxy/haproxy.cfg
, certifique-se de substituir pelo caminho correto do seu arquivo:
Se o seu servidor estiver configurado com SSL/TLS e não tiver um tune.ssl.default-dh-param
definido, então você receberá uma saída de aviso semelhante ao seguinte:
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
A linha destacada contém o aviso tune.ssl.default-dh-param
.
Para verificar a mensagem de aviso usando os logs do HAProxy, você pode procurar por linhas que correspondam à string tune.ssl.default-dh-param
usando o comando grep
. Execute o seguinte comando para verificar os avisos:
Observe que se você tiver configurado o HAProxy com um local de log diferente, certifique-se de substituir o seu caminho no lugar do arquivo destacado /var/log/haproxy.log
.
Se o seu servidor estiver gerando o aviso, então você receberá uma saída como a seguinte:
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: Seus arquivos de log podem não incluir a mensagem de aviso, mas o comando haproxy -c
ainda gerará o aviso. Se este for o caso, é provável que seu serviço HAproxy esteja em execução há tempo suficiente para que o arquivo de log tenha sido rotacionado, então ele não inclui o aviso.
Verificar a mensagem usando o método haproxy -c
é a maneira mais confiável de determinar se seu servidor está afetado, portanto, você pode ignorar com segurança as entradas de arquivo de log ausentes.
Agora que você determinou se seu servidor está gerando um aviso tune.ssl.default-dh-param
, você pode prosseguir para o próximo passo neste tutorial, que explica dois métodos que você pode usar para resolver o problema.
Resolvendo um Aviso tune.ssl.default-dh-param
Você pode resolver um aviso tune.ssl.default-dh-param
no HAProxy com algumas configurações diferentes. Uma opção é definir o valor tune.ssl.default-dh-param
para algo maior que 1024 explicitamente em /etc/haproxy/haproxy.cfg
conforme a mensagem de aviso. No entanto, a documentação do HAProxy recomenda especificar parâmetros Diffie-Hellman personalizados, já que essa abordagem é mais segura, então usaremos esse método em vez disso.
Primeiro você irá gerar um arquivo dhparams.pem
usando a utilidade openssl
. Uma vez que o arquivo seja criado, você o adicionará à seção de configuração global do HAProxy para que quaisquer blocos frontend
herdem a configuração.
Para gerar os parâmetros DH personalizados, execute o seguinte:
Você receberá uma saída como a seguinte:
OutputGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............
Assim que o comando for concluído, configure o HAProxy para usar o arquivo de parâmetros DH personalizados. Abra /etc/haproxy/haproxy.cfg
no vi
ou no seu editor preferido.
sudo vi /etc/haproxy/haproxy.cfg
Encontre a seção no arquivo como a seguinte:
Output. . .
# ativar o socket unix de estatísticas
stats socket /var/lib/haproxy/stats
# utilizar políticas de criptografia de todo o sistema
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
Agora adicione uma linha após a linha ssl-default-server-ciphers PROFILE=SYSTEM
como esta:
ssl-dh-param-file /etc/haproxy/dhparams.pem
A seção inteira deve se parecer com a seguinte, incluindo a nova linha de ssl-dh-param-file
que você adicionou:
/etc/haproxy/haproxy.cfg. . .
# ativar o socket unix de estatísticas
stats socket /var/lib/haproxy/stats
# utilizar políticas de criptografia de todo o sistema
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
ssl-dh-param-file /etc/haproxy/dhparams.pem
Quando terminar de editar o arquivo, salve e feche pressionando ESC
, digitando :wq
, e pressionando ENTER
.
Teste a configuração usando o comando haproxy -c
para garantir que você adicionou a configuração correta e que o HAProxy pode acessar o arquivo dhparams.pem
personalizado:
Você deverá receber uma saída informando que a configuração é válida, como a seguinte:
OutputConfiguration file is valid
Se a sua configuração estiver válida, reinicie o HAProxy para que ele utilize o novo arquivo de parâmetros Diffie-Hellman:
Agora você configurou o HAProxy com um conjunto de parâmetros Diffie-Hellman personalizados de 2048 bits que todos os frontends poderão usar. Você também suprimiu os avisos tune.ssl.default-dh-param
.
Conclusão
Neste tutorial, você aprendeu como solucionar uma mensagem de aviso do HAProxy Setting tune.ssl.default-dh-param to 1024 by default
. Você explorou quatro métodos diferentes para examinar a configuração do HAProxy e encontrar a mensagem. Primeiro, você utilizou o systemctl
e o journalctl
para examinar o estado do servidor HAProxy e tentar encontrar a mensagem nos logs do systemd
. Em seguida, você examinou o arquivo de configuração do HAProxy usando o comando haproxy -c
de verificação de configuração embutido. Finalmente, você verificou as entradas de log usando o comando grep
no arquivo de log do HAProxy.
Depois de confirmar que seu servidor estava gerando uma mensagem de aviso Setting tune.ssl.default-dh-param to 1024 by default
, você gerou um arquivo de parâmetros Diffie-Hellman personalizado e configurou o HAProxy para usá-lo definindo a diretiva de configuração ssl-dh-param-file
.
Agora que você tem essa configuração em vigor, seu servidor HAProxy usará por padrão os parâmetros Diffie-Hellman mais seguros, e a mensagem de aviso tune.ssl.default-dh-param
não estará mais nos seus logs.