Recentemente, uma nova vulnerabilidade em Diffie-Hellman, informalmente conhecida como 'logjam', foi publicada, para a qual esta página foi elaborada sugerindo como combater a vulnerabilidade:
Temos três recomendações para implantar corretamente o Diffie-Hellman para TLS:
- Desativar conjuntos de cifras de exportação. Embora os navegadores modernos não suportem mais conjuntos de exportação, os ataques FREAK e Logjam permitem que um invasor man-in-the-middle induza os navegadores a usar criptografia de nível de exportação, após o que a conexão TLS pode ser descriptografada. As cifras de exportação são remanescentes da política da década de 1990 que impedia que protocolos criptográficos fortes fossem exportados dos Estados Unidos. Nenhum cliente moderno depende de pacotes de exportação e há poucas desvantagens em desativá-los.
- Implante (efêmera) Curva Elíptica Diffie-Hellman (ECDHE). A troca de chaves Elliptic-Curve Diffie-Hellman (ECDH) evita todos os ataques criptanalíticos viáveis conhecidos, e os navegadores modernos agora preferem ECDHE ao invés do campo finito original, Diffie-Hellman. Os algoritmos de log discretos que usamos para atacar grupos Diffie-Hellman padrão não obtêm uma vantagem tão forte da pré-computação, e os servidores individuais não precisam gerar curvas elípticas exclusivas.
- Gere um grupo Diffie Hellman forte e exclusivo . 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 2048 bits ou mais fortes usando primos "seguros" para cada site ou servidor.
Quais são as etapas de práticas recomendadas que devo seguir para proteger meu servidor de acordo com as recomendações acima?
No artigo que você vinculou , há 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), pois esse é o software em questão.
Lidamos com as alterações de configuração que faremos em 2. abaixo (
!EXPORT
perto do final daSSLCipherSuite
linha é como desativaremos os conjuntos de cifras de exportação)Para isso, você precisa editar algumas configurações em seus arquivos de configuração do Apache - ou seja
SSLProtocol
,SSLCipherSuite
,SSLHonorCipherOrder
para ter uma configuração de "melhores práticas". Algo como o seguinte será suficiente:Observação: quanto à
SSLCipherSuite
configuração a ser usada, ela está sempre mudando e é uma boa ideia consultar recursos como este para verificar a configuração recomendada mais recente.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
scp
ou similar para transferi-los para o servidor em questão para uso.Para usar esses recém-gerados
dhparams
no Apache, da documentação do Apache :(grifo meu)
que é então 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 ao relevante
SSLCertificateFile
em questão.Para fazer isso, execute algo semelhante ao seguinte:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
Como alternativa, de acordo com a subseção Apache do artigo originalmente vinculado, você também pode especificar o arquivo dhparams personalizado que criou se preferir não alterar o próprio arquivo de certificado, assim:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
em qualquer configuração do Apache que seja relevante para sua implementação particular de SSL/TLS - geralmente em
conf.d/ssl.conf
ouconf.d/vhosts.conf
mas isso será diferente dependendo de como você configurou o Apache.Vale ressaltar que, conforme este link ,
No Debian Wheezy atualize o apache2 para 2.2.22-13+deb7u4 ou posterior e openssl para 1.0.1e-2+deb7u17. O SSLCipherSuite acima não funciona perfeitamente, em vez disso, use o seguinte de acordo com este blog :
Você deve verificar se a sua versão do Apache é posterior a esses números de versão, dependendo da sua distribuição e, caso não seja, 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 desejada executando os testes no SSLLabs e no artigo relacionado a essa vulnerabilidade específica.
Com base em um patch de 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.
Em vez de seguir a rota complexa dos 'hacks' acima, considere mudar para o nginx como seu principal software de servidor da web (não apenas cache ou proxy). Obviamente, parece 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, ele oferece a você um mecanismo de servidor da Web estável e mais atualizado do que o apache.
Eu mudei completamente. Economizou muito tempo na resolução de problemas relacionados ao TLS e - para nossas configurações - também liberou muita RAM ao mesmo tempo. Na verdade, achei o uso do nginx revigorantemente simples e direto, em comparação com a miríade de complicações de configuração do httpd/apache com as quais me acostumei. 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 on-line 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