Del artículo que vinculó , hay tres pasos recomendados para protegerse contra esta vulnerabilidad. En principio, estos pasos se aplican a cualquier software que pueda usar con SSL / TLS, pero aquí trataremos los pasos específicos para aplicarlos a Apache (httpd) ya que ese es el software en cuestión.
- Desactivar Exportar conjuntos de cifrado
Tratemos los cambios de configuración que haremos en 2. a continuación ( !EXPORT
cerca del final de la SSLCipherSuite
línea es cómo deshabilitaremos los conjuntos de cifrado de exportación)
- Implementar (efímero) Curva elíptica Diffie-Hellman (ECDHE)
Para ello, es necesario editar algunos ajustes en los archivos de configuración de Apache - a saber SSLProtocol
, SSLCipherSuite
, SSLHonorCipherOrder
para tener una configuración de "mejores prácticas". Algo como lo siguiente 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: en cuanto a qué SSLCipherSuite
configuración usar, esto siempre está cambiando, y es una buena idea consultar recursos como este para verificar la última configuración recomendada.
3. Genere un grupo fuerte y único de Diffie Hellman
Para hacerlo, puedes correr
openssl dhparam -out dhparams.pem 2048
.
Tenga en cuenta que esto generará una carga significativa en el servidor mientras se generan los parámetros: siempre puede solucionar este problema potencial generando los parámetros en otra máquina y utilizando scp
o similares para transferirlos al servidor en cuestión para su uso.
Para usar estos recientemente generados dhparams
en Apache, desde la Documentación de Apache :
Para generar parámetros DH personalizados, use el comando openssl dhparam. Alternativamente, puede agregar los siguientes parámetros DH estándar de 1024 bits desde RFC 2409, sección 6.2 al archivo SSLCertificateFile respectivo :
(énfasis mío)
que luego es seguido por un parámetro DH estándar de 1024 bits. A partir de esto, podemos inferir que los parámetros DH generados a medida pueden simplemente agregarse a los relevantes SSLCertificateFile
en cuestión.
Para hacerlo, ejecute algo similar a lo siguiente:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
Alternativamente, según la subsección de Apache del artículo que vinculó originalmente, también puede especificar el archivo dhparams personalizado que ha creado si prefiere no alterar el archivo de certificado en sí mismo, por lo tanto:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
en cualquier configuración de Apache que sea relevante para su implementación particular de SSL / TLS, generalmente en conf.d/ssl.conf
o conf.d/vhosts.conf
pero esto diferirá dependiendo de cómo haya configurado Apache.
Vale la pena señalar que, según este enlace ,
Antes de Apache 2.4.7, el parámetro DH siempre se establece en 1024 bits y no es configurable por el usuario. Esto se ha solucionado en mod_ssl 2.4.7 que Red Hat ha incorporado en su distribución RHEL 6 Apache 2.2 con httpd-2.2.15-32.el6
En Debian Wheezy, actualice apache2 a 2.2.22-13 + deb7u4 o posterior y openssl a 1.0.1e-2 + deb7u17. El SSLCipherSuite anterior no funciona perfectamente, en su lugar use lo siguiente según 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
Debe verificar si su versión de Apache es posterior a estos números de versión dependiendo de su distribución, y si no, actualícela si es posible.
Una vez que haya realizado los pasos anteriores para actualizar su configuración y reiniciado el servicio Apache para aplicar los cambios, debe verificar que la configuración sea la deseada al ejecutar las pruebas en SSLLabs y en el artículo relacionado con esta vulnerabilidad en particular.