Cómo solucionar alertas de «Configuraciones Erróneas de TLS/SSL» y HSTS en WordPress

Tras realizar una auditoría de seguridad, es común encontrarse con alertas de criticidad media/alta relacionadas con la configuración SSL del servidor. En este artículo, explico cómo abordar estos problemas cuando estás en un hosting compartido (solo acceso al cPanel o similar) y no tienes acceso root al sistema.

#El Problema: Reporte de Seguridad TLS/SSL

El escáner de seguridad arrojó el siguiente resultado preocupante:

text
Criticidad: Media
Descripción: Configuraciones Erróneas de TLS/SSL.
Problemas Específicos:
- Vulnerable a OpenSSL CCS (CVE-2014-0224)
- Renegociación Segura no soportada
- Falta de grapado OCSP (OCSP Stapling)
- Falta de cabecera HSTS

#Análisis: ¿Qué puedo arreglar yo y qué no?

Es crucial distinguir entre responsabilidades:

  1. Responsabilidad del Hosting (Nivel Servidor):
    • OpenSSL (CVE-2014-0224): Esto es una vulnerabilidad en la librería del sistema operativo del servidor. Tú no puedes actualizarla desde WordPress ni cPanel.
    • Protocolos (TLS 1.0/1.1) y Ciphers: La configuración de Apache/Nginx es global.
    • OCSP Stapling: Configuración del servidor web.
  2. Responsabilidad del Sitio (Tuya):
    • HSTS (HTTP Strict Transport Security): Puedes y debes forzarlo desde tu sitio.
    • Cabeceras de Seguridad (XSS, Clickjacking): Puedes implementarlas tú mismo.

#Paso 1: Contactar al Proveedor de Hosting

Para los problemas de nivel servidor (especialmente la vulnerabilidad antigua de OpenSSL), debes abrir un ticket de soporte. Aquí tienes la plantilla que utilicé:

Asunto: URGENTE: Vulnerabilidad OpenSSL (CVE-2014-0224) detectada

Hola,
He realizado una auditoría de seguridad y se han detectado vulnerabilidades críticas en el servidor que no puedo corregir desde cPanel:
1. Vulnerabilidad OpenSSL CCS (CVE-2014-0224).
2. Uso de protocolos obsoletos (SSLv3/TLS 1.0).
3. Falta de OCSP Stapling.

Solicito que actualicen la librería OpenSSL y deshabiliten los protocolos inseguros en la configuración del servidor web.
Gracias.

#Paso 2: Implementar HSTS y Cabeceras de Seguridad (La Solución Técnica)

Para solucionar la falta de HSTS y mejorar la seguridad, la mejor práctica es usar el archivo .htaccess en lugar de PHP. Esto es más rápido y protege archivos estáticos (imágenes, JS) que PHP no procesa.

Accede a tu cPanel > Administrador de Archivos, edita el archivo .htaccess en public_html y añade esto al principio:

text
<IfModule mod_headers.c>
    # SEGURIDAD: Cabeceras HTTP estrictas
    
    # 1. HSTS (HTTP Strict Transport Security)
    # Fuerza a los navegadores a usar HTTPS durante 1 año (31536000 segundos)
    # Incluye subdominios y permite preloading
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    
    # 2. Protección contra XSS (Cross-Site Scripting)
    # Bloquea la carga de la página si el navegador detecta un ataque
    Header always set X-XSS-Protection "1; mode=block"
    
    # 3. Protección contra Clickjacking
    # Evita que tu sitio sea cargado dentro de un iframe en otro dominio
    Header always set X-Frame-Options "SAMEORIGIN"
    
    # 4. Protección MIME-Type
    # Evita que el navegador "adivine" tipos de archivos ejecutables
    Header always set X-Content-Type-Options "nosniff"
    
    # 5. Política de Referrer
    # Protege la privacidad del usuario al navegar a otros sitios
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

#Paso 3: Limpieza de código (Evitar conflictos)

Si anteriormente tenías funciones en functions.php para enviar estas cabeceras, debes eliminarlas para evitar conflictos o cabeceras duplicadas.

Busca y elimina funciones como esta en tu functions.php:

text
// ELIMINAR ESTO si ya usas .htaccess
/*
function security_headers() {
    header('Strict-Transport-Security: ...'); // BORRAR
}
add_action('send_headers', 'security_headers');
*/

#Resultado Final

Con estos cambios logramos:

  • HSTS Activo: El escáner ya no reportará la falta de «Renegociación Segura» o HSTS.
  • Protección Total: Al usar .htaccess, protegemos todo el tráfico, no solo el de WordPress.
  • Rendimiento: Apache procesa las cabeceras más rápido que PHP.
  • Gestión Correcta: Delegamos al hosting lo que es su responsabilidad (OpenSSL) y asumimos el control de lo que es nuestro (Cabeceras).