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. Assim que você confirmar que seu servidor está gerando a mensagem de aviso, aprenderá como corrigi-la configurando a opção de configuração do HAProxy ssl-dh-param-file
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 de 1024 bits para a parte do acordo de chave Diffie-Hellman do handshake do TLS, o que é considerado inseguro.
Seu servidor HAProxy pode acionar este aviso sem que você saiba. Você pode configurar um certificado SSL/TLS e o HAProxy funcionará, mas o servidor pode estar avisando 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 Teste de Servidor SSL do SSL Labs para verificar para você. Se você receber um relatório que tenha uma linha Este servidor suporta parâmetros de troca de chaves 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 tune.ssl.default-dh-param
no final deste tutorial explica como resolver o problema.
Verificando um Aviso tune.ssl.default-dh-param
Usando systemctl
Seguindo os passos 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 Configurando tune.ssl.default-dh-param para 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 de que você precisa para resolver o erro. No entanto, é importante examinar o status atual do serviço haproxy
para garantir que ele esteja em execução e que quaisquer serviços que dependam dele ainda sejam capazes de funcionar enquanto você resolve o aviso.
Use este comando systemctl
para examinar o status do HAProxy em qualquer distribuição Linux:
A bandeira -l
garantirá que o systemctl
emita todo o conteúdo de uma linha, em vez de substituir reticências (…
) por linhas longas. A bandeira --no-pager
emitirá todo o log na sua tela sem invocar uma ferramenta como less
que mostra apenas uma tela de conteúdo por vez.
Já que você está solucionando uma mensagem de aviso Setting tune.ssl.default-dh-param to 1024 by default
, você deverá 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 active (running)
, que indica que o HAProxy está disponível e em execução. Se o seu servidor mostrar uma linha como Active: failed
, então você precisará solucionar problemas no HAProxy usando os métodos descritos no tutorial Como Solucionar Erros Comuns do HAProxy no início desta série.
As segundas 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 realizadas pelo HAProxy e como resolvê-lo.
Se a saída do seu systemctl
incluir linhas com o aviso tune.ssl.default-dh-param
, pule 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.
Caso contrário, 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 de Diffie-Hellman fracos, a próxima seção deste tutorial irá guiá-lo através do uso de logs do journalctl
para localizar a mensagem de aviso.
Verificando um Aviso tune.ssl.default-dh-param
Usando 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 logs do systemd
para o HAProxy.
Execute o seguinte comando em qualquer distribuição Linux para inspecionar os logs do diário 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 journalctl
para o comando grep
como entrada. Usar o pipe significa que apenas as linhas correspondentes do diário serão mostradas na sua tela.
Se o diário incluir um aviso 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.
Uma vez que 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 tune.ssl.default-dh-param
usando a ferramenta de verificação de configuração integrada do HAProxy.
Verificando um Aviso 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 correr o risco de tempo de inatividade para seus serviços. Além disso, se o seu servidor HAProxy estiver configurado para registrar a 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 seu 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, 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 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 por tempo suficiente para que o arquivo de log tenha sido rotacionado, portanto, 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, então você pode ignorar com segurança as entradas de arquivo de log ausentes.
Agora que você determinou se seu servidor está gerando um aviso de tune.ssl.default-dh-param
, você pode prosseguir para o próximo passo deste tutorial, que explica dois métodos que você pode usar para resolver o problema.
Resolvendo um Aviso de tune.ssl.default-dh-param
Você pode resolver um aviso de tune.ssl.default-dh-param
no HAProxy com algumas configurações diferentes. Uma opção é definir o valor de 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
utilizando a ferramenta openssl
. Uma vez que o arquivo for criado, você irá adicioná-lo à 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 utilizar o arquivo de parâmetros DH personalizados. Abra o arquivo /etc/haproxy/haproxy.cfg
no vi
ou no seu editor preferido.
sudo vi /etc/haproxy/haproxy.cfg
Encontre a seção no arquivo semelhante ao seguinte:
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
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 ssl-dh-param-file
que você adicionou:
/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
Quando terminar de editar o arquivo, salve e feche pressionando ESC
, digitando :wq
e pressionando ENTER
.
Teste a configuração utilizando 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 indicando 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ê usou systemctl
e journalctl
para examinar o status 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
para verificar a configuração. Por fim, verificou as entradas de log usando o comando grep
no arquivo de log do HAProxy.
Após 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.