Guía de tecnologías

Proteger servidores Debian/Ubuntu contra Logjam

5 min read Seguridad Actualizado 03 Oct 2025
Proteger servidores Debian/Ubuntu contra Logjam
Proteger servidores Debian/Ubuntu contra Logjam

Este tutorial describe los pasos necesarios para proteger un servidor Linux Ubuntu o Debian frente a la vulnerabilidad Logjam. Logjam ataca el intercambio de claves Diffie‑Hellman, usado en protocolos de cifrado como HTTPS, TLS, SMTPS, SSH y otros. Una descripción detallada está disponible en https://weakdh.org/.

Este tutorial es compatible con instalaciones de ISPConfig 3 en Debian y Ubuntu. Los comandos deben ejecutarse como usuario root en la shell.

Resumen de la metodología

  1. Generar un grupo DH único con OpenSSL (dhparams.pem).
  2. Ajustar las suites de cifrado seguras en los servicios (Apache, Nginx, Postfix, Dovecot, Pure‑FTPd).
  3. Si el software lo soporta, configurar el uso del archivo DH en el servidor web (Apache/Nginx).
  4. Reiniciar servicios y verificar.

Importante: Incluso si no puedes aplicar el grupo DH en Apache por versión, actualizar las suites de cifrado ya reduce la exposición frente a ciphers débiles.

Generar un grupo DH único

El primer paso es generar un DH Group único con OpenSSL. El ejemplo crea el archivo en /etc/ssl/private/. Si no existe, créalo con:

mkdir -p /etc/ssl/private
chmod 710 /etc/ssl/private

Ahora crea dhparams.pem y establece permisos seguros:

cd /etc/ssl/private
openssl dhparam -out dhparams.pem 2048
chmod 600 dhparams.pem

Nota: 2048 bits es la recomendación mínima práctica hoy; 3072 bits ofrece mayor seguridad a costa de más CPU.

Apache

Añade una suite de cifrado segura según las recomendaciones de weakdh.org. Edita:

nano /etc/apache2/mods-available/ssl.conf

Cambia o añade estas líneas (SSLCipherSuite es una sola línea larga; no introducir saltos de línea):

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

La segunda parte es indicar el grupo DH en Apache. La directiva SSLOpenSSLConfCmd está disponible en Apache 2.4.8 o superior y requiere OpenSSL 1.0.2 o superior. Comprueba versiones:

apache2 -v

Ejemplo de salida en Debian 7:

root@server1:/etc/apache2# apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Dec 23 2014 22:48:29

Comprueba OpenSSL:

openssl version

Ejemplo de salida:

root@server1:/# openssl version
OpenSSL 1.0.1e 11 Feb 2013

Si tu Apache o OpenSSL no cumplen los requisitos, no podrás configurar SSLOpenSSLConfCmd. Aun así, la primera parte (bloquear ciphers débiles) ya mejora la seguridad. Si dispones de Apache >= 2.4.8 y OpenSSL >= 1.0.2, añade esto en /etc/apache2/mods-available/ssl.conf:

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams.pem"

Y reinicia Apache:

service apache2 restart

Nota: Compilar OpenSSL desde fuente es una opción avanzada; sigue guías oficiales y haz pruebas en un entorno no productivo.

Nginx

Edita el archivo de configuración de Nginx:

nano /etc/nginx/nginx.conf

Dentro del bloque http { … } añade o sustituye:

ssl_ciphers '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';

ssl_prefer_server_ciphers on;

ssl_dhparam /etc/ssl/private/dhparams.pem;

Reinicia Nginx:

service nginx restart

Postfix

Ejecuta estos comandos para establecer la suite de cifrado y el archivo DH:

postconf -e "smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA"
postconf -e "smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem"

Y reinicia postfix:

service postfix restart

Nota: Revisa los parámetros existentes antes de sobrescribirlos en entornos personalizados.

Dovecot

Edita /etc/dovecot/dovecot.conf:

nano /etc/dovecot/dovecot.conf

Añade junto a ssl_protocols la siguiente línea:

ssl_cipher_list=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

Comprueba la versión de dovecot:

dovecot --version
  • Si la versión es >= 2.2.6, añade:
ssl_prefer_server_ciphers = yes
  • Si la versión es >= 2.2.7, además añade:
ssl_dh_parameters_length = 2048

Reinicia dovecot:

service dovecot restart

Pure‑FTPd

En Debian/Ubuntu, el script /usr/sbin/pure-ftpd-wrapper no soporta la opción -J por defecto. Añade soporte editando el wrapper:

nano /usr/sbin/pure-ftpd-wrapper

Busca la línea:

'TLS' => ['-Y %d', \&parse_number_1],

Y añade justo después:

'TLSCipherSuite' => ['-J %s', \&parse_string],

Crea (o edita) /etc/pure-ftpd/conf/TLSCipherSuite:

nano /etc/pure-ftpd/conf/TLSCipherSuite

Introduce la siguiente lista de cifrados (reemplaza si el archivo ya existía):

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

Reinicia pure‑ftpd:

service pure-ftpd-mysql restart

Verificación y pruebas

  • Comprueba los puertos TLS/SSL con herramientas externas (por ejemplo, SSL Labs) para validar la cadena de cifrados y la configuración DH.
  • En servidores de prueba, habilita logs detallados y compara latencias y carga CPU antes y después de cambiar DH a 2048/3072 bits.

Ficha técnica

  • Recomendación DH mínima: 2048 bits (3072 bits para mayor seguridad).
  • OpenSSL requerido para SSLOpenSSLConfCmd en Apache: >= 1.0.2.
  • Apache requerido para SSLOpenSSLConfCmd: >= 2.4.8.
  • Paso esencial: bloquear ciphers débiles (SSLv2/SSLv3, RC4, EXPORT, etc.).

Listas de verificación por rol

Administrador de sistema — antes de aplicar en producción:

  • Hacer copia de seguridad de archivos de configuración.
  • Generar dhparams en un servidor de pruebas y validar.
  • Actualizar paquetes y comprobar compatibilidad de OpenSSL/Apache.
  • Aplicar cambios y reiniciar servicios uno a uno.
  • Ejecutar escaneos externos y monitorizar logs.

Ingeniero de infraestructura — despliegue por fases:

  • Implementar en entorno staging.
  • Ejecutar pruebas de carga y latencia.
  • Plan de rollback (restaurar configs y reiniciar).
  • Programar mantenimiento para producción.

Compatibilidad y migración

  • Si tu distribución proporciona versiones antiguas de OpenSSL/Apache, considera backports oficiales o actualizar la distribución. Compilar OpenSSL a mano es posible pero requiere pruebas exhaustivas.
  • Para servicios gestionados o en contenedores, aplica la configuración en la imagen base y prueba antes del despliegue.

Glosario rápido

  • Logjam: ataque que debilita el intercambio Diffie‑Hellman permitiendo downgrade a parámetros débiles.
  • Diffie‑Hellman (DH): método para que dos partes acuerden una clave secreta sobre un canal inseguro.

Riesgos y mitigaciones

Riesgo: incompatibilidad con clientes antiguos tras eliminar ciphers débiles. Mitigación: revisar logs de conexión y, si es necesario, ofrecer endpoints separados para clientes legados mientras se planifica migración.

Riesgo: mayor uso CPU al usar DH 2048/3072. Mitigación: evaluar rendimiento y usar aceleración (hardware o TLS offload) si es necesario.

Resumen final

Generar un dhparams único y actualizar las suites de cifrado es una medida práctica y eficaz para reducir el riesgo por Logjam. Sigue el orden: generar DH, actualizar servicios, comprobar versiones para aprovechar configuraciones avanzadas (por ejemplo SSLOpenSSLConfCmd) y validar con herramientas externas.

Enlaces

Autor
Edición

Materiales similares

Usar Android como módem sin root
Guías

Usar Android como módem sin root

Instalar Linux en Chromebook: guía completa
Linux

Instalar Linux en Chromebook: guía completa

smartmontools: monitoriza discos con SMART
Almacenamiento

smartmontools: monitoriza discos con SMART

Proteger servidores Debian/Ubuntu contra Logjam
Seguridad

Proteger servidores Debian/Ubuntu contra Logjam

Dark Sky: pronóstico hiperlocal y alternativas
Clima

Dark Sky: pronóstico hiperlocal y alternativas

Asegurar SSH en CentOS 7 con WiKID 2FA
Seguridad

Asegurar SSH en CentOS 7 con WiKID 2FA