Como corrigir a vulnerabilidade 'logjam' no Apache (httpd)

Como corrigir a vulnerabilidade 'logjam' no Apache (httpd)

Recentemente, foi publicada uma nova vulnerabilidade no Diffie-Hellman, informalmente referida como 'logjam', para a qualesta páginafoi elaborado sugerindo como combater a vulnerabilidade:

Temos três recomendações para implantar corretamente o Diffie-Hellman para TLS:

  1. Desative Exportar Conjuntos de Cifras.Embora os navegadores modernos não suportem mais pacotes de exportação, os ataques FREAK e Logjam permitem que um invasor man-in-the-middle engane os navegadores para que usem criptografia de nível de exportação, após a qual a conexão TLS pode ser descriptografada. As cifras de exportação são um resquício da política da década de 1990 que impedia a exportação de protocolos criptográficos fortes dos Estados Unidos. Nenhum cliente moderno depende de pacotes de exportação e há poucas desvantagens em desativá-los.
  2. Implantar (efêmera) curva elíptica Diffie-Hellman (ECDHE).A troca de chaves Elliptic-Curve Diffie-Hellman (ECDH) evita todos os ataques criptoanalíticos viáveis ​​conhecidos, e os navegadores modernos agora preferem o ECDHE ao campo finito original, Diffie-Hellman. Os algoritmos de log discreto que usamos para atacar grupos Diffie-Hellman padrão não obtêm uma vantagem tão forte com a pré-computação, e servidores individuais não precisam gerar curvas elípticas exclusivas.
  3. Gere um grupo Diffie Hellman forte e único. Alguns grupos fixos são usados ​​por milhões de servidores, o que os torna um alvo ideal para pré-computação e possível espionagem. Os administradores devem gerar grupos Diffie-Hellman exclusivos de 2.048 bits ou mais fortes usando números primos "seguros" para cada site ou servidor.

Quais são as práticas recomendadas que devo seguir para proteger meu servidor de acordo com as recomendações acima?

Responder1

Deartigo que você vinculou, existem três etapas recomendadas para se proteger contra essa vulnerabilidade. Em princípio, essas etapas se aplicam a qualquer software que você possa usar com SSL/TLS, mas aqui trataremos das etapas específicas para aplicá-las ao Apache (httpd), já que esse é o software em questão.

  1. Desativar pacotes de criptografia de exportação

Tratamos das alterações de configuração que faremos em 2. abaixo ( !EXPORTperto do final da SSLCipherSuitelinha é como desabilitaremos os conjuntos de criptografia de exportação)

  1. Implantar (efêmera) curva elíptica Diffie-Hellman (ECDHE)

Para isso, você precisa editar algumas configurações em seus arquivos de configuração do Apache - ou seja SSLProtocol, SSLCipherSuite, SSLHonorCipherOrderpara ter uma configuração de "melhores práticas". Algo como o seguinte será suficiente:

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

Observação: quanto à SSLCipherSuiteconfiguração a ser usada, ela está sempre mudando, e é uma boa ideia consultar recursos comoEstepara verificar a configuração recomendada mais recente.

3. Gere um grupo Diffie Hellman forte e único

Para fazer isso, você pode executar

openssl dhparam -out dhparams.pem 2048.

Observe que isso colocará uma carga significativa no servidor enquanto os parâmetros são gerados - você sempre pode contornar esse problema potencial gerando os parâmetros em outra máquina e usando scpou similar para transferi-los para o servidor em questão para uso.

Para usar estes recém-gerados dhparamsno Apache, a partir doDocumentação Apache:

Para gerar parâmetros DH personalizados, use o comando openssl dhparam. Alternativamente, você podeacrescente o seguinteparâmetros DH padrão de 1024 bits da RFC 2409, seção 6.2para o respectivo arquivo SSLCertificateFile:

(ênfase minha)

que é seguido por um parâmetro DH padrão de 1024 bits. A partir disso, podemos inferir que os parâmetros DH gerados de forma personalizada podem simplesmente ser anexados aos relevantes SSLCertificateFileem questão.

Para fazer isso, execute algo semelhante ao seguinte:

cat /path/to/custom/dhparam >> /path/to/sslcertfile

Alternativamente, conformeSubseção Apachedo artigo que você vinculou originalmente, você também pode especificar o arquivo dhparams personalizado que você criou se preferir não alterar o arquivo de certificado em si, assim:

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

em quaisquer configurações do Apache que sejam relevantes para sua implementação SSL/TLS específica - geralmente em conf.d/ssl.confou conf.d/vhosts.confmas isso será diferente dependendo de como você configurou o Apache.

Vale ressaltar que, conformeesse link,

Antes do Apache 2.4.7, o parâmetro DH era sempre definido como 1024 bits e não era configurável pelo usuário. Isso foi corrigido no mod_ssl 2.4.7 que a Red Hat fez backport para sua distribuição RHEL 6 Apache 2.2 com httpd-2.2.15-32.el6

No Debian Wheezy atualize o apache2 para 2.2.22-13+deb7u4 ou posterior e o openssl para 1.0.1e-2+deb7u17. O SSLCipherSuite acima não funciona perfeitamente; em vez disso, use o seguinte conformeeste blog:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384: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-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384: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:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

Você deve verificar se a sua versão do Apache é posterior a esses números de versão, dependendo da sua distribuição e, se não, atualize-a, se possível.

Depois de executar as etapas acima para atualizar sua configuração e reiniciar o serviço Apache para aplicar as alterações, você deve verificar se a configuração está conforme desejado executando os testes emSSLLabse assim por dianteo artigorelacionadas a esta vulnerabilidade específica.

Responder2

Baseado em um patch do Winni Neessen, publiquei uma correção para Apache/2.2.22 (Debian Wheezy, talvez também utilizável no Ubuntu):https://flo.sh/debian-wheezy-apache2-logjam-fix/- THX. pelo seu feedback.

Responder3

Em vez de seguir o caminho complexo dos 'hacks' acima, consideremudando para nginxcomo seu principal software de servidor web (não apenas cache ou proxy). Obviamente, parece estar mais de acordo com os padrões atuais, em termos de segurança, do que os antigos motores Apache. Ao usar o repositório nginx, você oferece um mecanismo de servidor da web mais atualizado e estável do que o apache.

Eu mudei completamente. Economizei muito tempo na solução de problemas relacionados ao TLS e - para nossas configurações - também liberou muita RAM ao mesmo tempo. Na verdade, achei o emprego do nginx agradavelmente simples e direto, em comparação com a miríade de complicações de configuração do httpd/apache com as quais estava acostumado. Pode ser uma questão de gosto, eu me tornei bastante fluente em httpd/apache rewrite/config/maintenance antes de virar, e foi mais fácil do que eu temia. Há informações recentes apropriadas sobre a configuração do nginx disponíveis online, e sua base de usuários é enorme, muito ativa e de fácil suporte. https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png

informação relacionada