No artigo vinculado , 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 lidaremos com as etapas específicas para aplicá-las ao Apache (httpd), já que esse é o software em questão.
- Disable Export Cipher Suites
Lida com as alterações de configuração que faremos em 2. abaixo ( !EXPORT
perto do final da linha SSLCipherSuite
é como desativamos os conjuntos de cifras de exportação)
- Deploy (Ephemeral) Elliptic-Curve Diffie-Hellman (ECDHE)
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 "práticas recomendadas". 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: como para qual configuração de SSLCipherSuite
usar, isso está sempre mudando, e é uma boa idéia consultar recursos como este para verificar a última configuração recomendada.
3. Generate a Strong, Unique Diffie Hellman Group
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 gerando os parâmetros em outra máquina e usando scp
ou similar para transferi-los para o servidor em questão. usar.
Para usar esses dhparams
recém-gerados no Apache, na Documentação do Apache :
To generate custom DH parameters, use the openssl dhparam command. Alternatively, you can append the following standard 1024-bit DH parameters from RFC 2409, section 6.2 to the respective SSLCertificateFile file:
(ênfase minha)
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 customizada podem ser simplesmente anexados ao 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 do Apache do artigo que você vinculou originalmente, você também pode especificar o arquivo dhparams personalizado que criou se você preferir não alterar o arquivo de certificado, assim:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
em qualquer configuração do Apache que seja relevante para sua implementação SSL / TLS específica - geralmente em conf.d/ssl.conf
ou conf.d/vhosts.conf
, mas isso será diferente dependendo de como você configurou o Apache.
Vale a pena notar que, conforme este link ,
Before Apache 2.4.7, the DH parameter is always set to 1024 bits and is not user configurable. This has been fixed in mod_ssl 2.4.7 that Red Hat has backported into their RHEL 6 Apache 2.2 distribution with httpd-2.2.15-32.el6
No Debian Wheezy atualize o apache2 para 2.2.22-13 + deb7u4 ou posterior e abra-o para 1.0.1e-2 + deb7u17. O SSLCipherSuite acima não funciona perfeitamente, ao invés 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 estes 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, verifique se a configuração é a desejada, executando os testes em SSLLabs e no artigo relacionado a essa vulnerabilidade específica.