Guia de tecnologias

Proteger servidores Debian/Ubuntu contra o ataque Logjam

5 min read Segurança Atualizado 03 Oct 2025
Proteger servidores Debian/Ubuntu contra Logjam
Proteger servidores Debian/Ubuntu contra Logjam

O que é o Logjam (uma linha)

Logjam é uma vulnerabilidade no intercâmbio de chaves Diffie-Hellman que permite a um atacante forçar chaves fracas quando servidores ou clientes usam parâmetros DH compartilhados ou curtos (p.ex. 512 bits).

Escopo e objetivo

Este tutorial descreve passos práticos para mitigar Logjam em servidores Debian e Ubuntu (compatível com instalações ISPConfig 3). As instruções exigem acesso root no shell.

Importante: não substitua a necessidade de atualizações de segurança. Se possível, aplique pacotes oficiais mais recentes antes de mudanças manuais.

1. Gerar um grupo DH único

O primeiro passo é criar um arquivo dhparams.pem exclusivo com 2048 bits e permissões restritas.

Se a pasta /etc/ssl/private não existir, crie-a e ajuste permissões:

mkdir -p /etc/ssl/private  
chmod 710 /etc/ssl/private

Gere o arquivo DH e proteja-o:

cd /etc/ssl/private  
openssl dhparam -out dhparams.pem 2048  
chmod 600 dhparams.pem

Nota: 2048 bits é o mínimo recomendado hoje. Se precisar de maior segurança e tempo de geração aceitável, use 3072 ou 4096 bits (mais lento para gerar).

2. Apache

  1. Atualize a suite de cifras em /etc/apache2/mods-available/ssl.conf:
nano /etc/apache2/mods-available/ssl.conf

Altere/adicione estas linhas (SSLCipherSuite deve permanecer em uma única linha sem quebras):

SSLProtocol             all -SSLv2 -SSLv3  

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on
  1. Definir parâmetros DH (apenas em Apache >= 2.4.8 e OpenSSL >= 1.0.2)

Verifique a versão do Apache:

apache2 -v

E a versão do OpenSSL:

openssl version

Se ambas suportarem SSLOpenSSLConfCmd, adicione em /etc/apache2/mods-available/ssl.conf:

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"

Reinicie o Apache:

service apache2 restart

Se suas versões forem antigas (p.ex. Apache 2.2.x ou OpenSSL 1.0.1), pelo menos aplique a SSLCipherSuite — ela já melhora muita proteção mesmo sem o DHParameters.

3. Nginx

Edite /etc/nginx/nginx.conf e dentro do bloco http { … } adicione ou substitua:

nano /etc/nginx/nginx.conf
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_prefer_server_ciphers on;

ssl_dhparam /etc/ssl/private/dhparams.pem;

Reinicie o Nginx:

service nginx restart

4. Postfix

Ajuste a configuração TLS e aponte para o arquivo DH:

postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"  
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"

Reinicie:

service postfix restart

Nota: o parâmetro smtpd_tls_dh1024_param_file é usado por algumas versões; consulte a documentação do seu pacote Postfix para nomes de parâmetros em versões mais novas.

5. Dovecot

Edite /etc/dovecot/dovecot.conf:

nano /etc/dovecot/dovecot.conf

Adicione a lista de cifras após a linha ssl_protocols:

ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Verifique a versão do Dovecot:

dovecot --version
  • Se >= 2.2.6, adicione:
ssl_prefer_server_ciphers = yes
  • Se >= 2.2.7, também adicione:
ssl_dh_parameters_length = 2048

Reinicie:

service dovecot restart

6. Pure-FTPd

Pure-FTPd em Debian/Ubuntu pode não suportar a opção -J no wrapper por padrão. Proceda assim:

Edite o wrapper:

nano /usr/sbin/pure-ftpd-wrapper

Procure a linha:

'TLS' => ['-Y %d', \&parse_number_1],

Adicione logo depois:

'TLSCipherSuite' => ['-J %s', \&parse_string],

Crie/edite o arquivo de configuração de cifras:

nano /etc/pure-ftpd/conf/TLSCipherSuite

Cole a lista de cifras (substitua qualquer conteúdo existente):

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

Reinicie o serviço:

service pure-ftpd-mysql restart

7. Testes e verificação após mudanças

  • Verifique os logs dos serviços ao reiniciar: /var/log/apache2/error.log, /var/log/nginx/error.log, /var/log/mail.log, /var/log/auth.log.
  • Teste TLS/HTTPS com ferramentas externas (p.ex. SSL Labs) e com openssl s_client:
openssl s_client -connect your.server:443 -cipher 'ALL' -tls1_2
  • Verifique que o dhparams.pem está sendo usado (p.ex. via SSLOpenSSLConfCmd em Apache ou ssl_dhparam em Nginx).

8. Quando a mitigação pode falhar / limitações

  • Clientes antigos podem não suportar as cifras modernas; desabilitar RC4/SSLv3 pode impedir conexões de navegadores muito antigos.
  • Em sistemas com OpenSSL ou pacotes de servidor antigos, algumas diretivas (p.ex. SSLOpenSSLConfCmd) não estarão disponíveis; atualize ou use compensações.
  • Se aplicativos internos geram parâmetros DH próprios ou usam bibliotecas embutidas, será preciso ajustar cada aplicação.

9. Alternativas e abordagens complementares

  • Atualizar para versões suportadas de OpenSSL e servidores (melhor solução de longo prazo).
  • Usar ECDHE (curvas elípticas) preferencialmente — geralmente mais seguras e com melhor desempenho que DHE.
  • Migrar serviços críticos para TLS modernos (TLS 1.2/1.3) sempre que possível.

10. Mini-metodologia para aplicar em produção (passos recomendados)

  1. Fazer backup das configurações atuais.
  2. Gerar dhparams.pem em um horário de baixa carga.
  3. Aplicar mudanças localmente em um servidor de teste.
  4. Verificar logs e testar compatibilidade de clientes.
  5. Implementar em produção por fases (frontend -> mail -> ftp).
  6. Monitorar métricas e erros nas 48 horas seguintes.

11. Lista de verificação por função

  • Administrador de sistemas:

    • Gerar dhparams.pem e ajustar permissões.
    • Atualizar arquivos de configuração e reiniciar serviços.
    • Verificar logs e falhas.
  • DevOps/Equipe de deploy:

    • Testar em staging e automatizar rollout (config management).
    • Garantir rollback rápido (backup configs e scripts de reversão).
  • Suporte/Operações:

    • Notificar usuários sobre possíveis incompatibilidades com clientes antigos.
    • Preparar instruções de troubleshooting (ex.: flush de cache de load balancer).

12. Critérios de verificação (aceitação)

  • O servidor aceita conexões TLS modernas (pelo menos TLS 1.2) sem cifras fracas.
  • dhparams.pem é carregado pelo serviço (quando suportado).
  • Nenhuma regressão crítica para clientes prioritários identificada.

13. Fato rápido

  • Recomendação prática: gere dhparams.pem com 2048 bits e mantenha o arquivo em /etc/ssl/private com permissão 600.

14. Comandos úteis de rollback rápido

  • Restaurar arquivo de configuração do backup e reiniciar serviço, por exemplo:
cp /etc/apache2/mods-available/ssl.conf.bak /etc/apache2/mods-available/ssl.conf
service apache2 restart

15. Links úteis

Resumo

  • Gere um dhparams.pem único e seguro.
  • Atualize as listas de cifras em Apache, Nginx, Postfix, Dovecot e Pure-FTPd.
  • Teste versões de servidores e OpenSSL antes de ativar opções dependentes de versão.
  • Aplique mudanças em staging e monitore depois do rollout.
Autor
Edição

Materiais semelhantes

Instalar Linux em Chromebook: guia prático
Tutoriais

Instalar Linux em Chromebook: guia prático

Monitoramento de discos com smartmontools
Ferramentas

Monitoramento de discos com smartmontools

Proteger servidores Debian/Ubuntu contra Logjam
Segurança

Proteger servidores Debian/Ubuntu contra Logjam

Dark Sky — previsões hiperlocais de chuva
Tempo

Dark Sky — previsões hiperlocais de chuva

SSH seguro no CentOS 7 com WiKID 2FA
Segurança

SSH seguro no CentOS 7 com WiKID 2FA

Impedir atualizações automáticas no Windows 10
Windows

Impedir atualizações automáticas no Windows 10