Aviso de SSL/TLS do HAproxy: Configurando tune.ssl.default-dh-param para 1024 por padrão

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:

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

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:

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

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:

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.

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:

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

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:

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

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:

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: 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:

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

Você receberá uma saída como a seguinte:

Output
Generating 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:

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

Você deverá receber uma saída indicando que a configuração é válida, como a seguinte:

Output
Configuration 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:

  1. sudo systemctl restart haproxy.service

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.

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