Aviso SSL/TLS do HAproxy: Definindo 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. 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:

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

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:

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

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.

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:

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

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

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

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

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

Você deverá receber uma saída informando 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ê 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.

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