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.
- Desativar conjuntos de criptografia de exportação
Lidamos com as alterações de configuração que faremos em 2. abaixo ( !EXPORT
próximo ao final da SSLCipherSuite
linha é como desabilitaremos os conjuntos de cifras de exportação)
- Implantar (efêmero) 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
, SSLHonorCipherOrder
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
Nota: quanto a qual SSLCipherSuite
configuração usar, isso está sempre mudando e é uma boa ideia consultar recursos como este para verificar a configuração recomendada mais recente.
3. Gere um grupo Diffie Hellman forte e exclusivo
Para fazer isso, você pode executar
openssl dhparam -out dhparams.pem 2048
.
Observe que isso sobrecarregará significativamente o servidor enquanto os parâmetros são gerados - você sempre pode contornar esse problema em potencial gerando os parâmetros em outra máquina e usando scp
ou semelhante para transferi-los para o servidor em questão para uso.
Para usar estes recém-gerados dhparams
no Apache, na documentação do Apache :
Para gerar parâmetros DH personalizados, use o comando openssl dhparam. Como alternativa, você pode anexar os seguintes parâmetros DH de 1024 bits padrão do RFC 2409, seção 6.2 ao 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 sob encomenda podem ser simplesmente 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 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, assim:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
nas configurações do Apache que sejam relevantes para sua implementação específica de SSL / TLS - geralmente em conf.d/ssl.conf
ou conf.d/vhosts.conf
mas isso será diferente dependendo de como você configurou o Apache.
Vale ressaltar que, conforme este link ,
Antes do Apache 2.4.7, o parâmetro DH sempre é definido como 1024 bits e não é configurável pelo usuário. Isso foi corrigido no mod_ssl 2.4.7 que a Red Hat fez o backport em sua distribuição do 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 conforme este 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 estiver, 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, verifique se a configuração é desejada, executando os testes no SSLLabs e no artigo relacionado a essa vulnerabilidade específica.