Implementación de HTTP Strict Transport Security (HSTS)
Esta guía presenta la mitigación de conexiones HTTP iniciales vulnerables mediante la implementación de la cabecera HTTP Strict Transport Security (HSTS). Incluye los prerrequisitos, las directivas originales para Nginx, Apache y Microsoft IIS, la verificación posterior y el procedimiento de reversión suministrado.
Resumen ejecutivo del riesgo
Identificación
ID de Referencia: SEC-HED-01
CWE-523: Unprotected Transport of Susceptible Data (Transporte no protegido de datos susceptibles).
Clasificación
Severidad: Baja / Media (Dependiendo del flujo de datos sensibles)
Categoría: Configuración de Seguridad Web / Cabeceras de Respuesta HTTP
Descripción del fallo
Cuando un servidor web permite conexiones HTTP y HTTPS, los usuarios a menudo acceden inicialmente a la versión insegura (HTTP). Aunque el servidor redirija a HTTPS, esa primera conexión sin cifrar es vulnerable a ataques de Man-in-the-Middle (MitM) y SSL Stripping, donde un atacante puede interceptar el tráfico antes de que ocurra la redirección.
La cabecera Strict-Transport-Security le indica al navegador que nunca debe comunicarse con el dominio a través de HTTP. Automáticamente, el navegador transformará cualquier intento de conexión HTTP en una solicitud HTTPS segura en el lado del cliente, antes de enviar los datos a la red.
Alcance y condiciones previas
Prerrequisitos
- El sitio web debe contar con un certificado SSL/TLS válido instalado y configurado.
- Todo el contenido del sitio web debe cargarse obligatoriamente a través de HTTPS (evitar contenido mixto).
Evidencia o forma de validación
La condición se valida revisando si las respuestas HTTPS del servidor incluyen la cabecera Strict-Transport-Security. La comprobación posterior definida en esta guía utiliza una solicitud de encabezados con curl contra el dominio en producción.
Impacto técnico y de negocio
Impacto técnico
La conexión HTTP inicial puede ser interceptada antes de la redirección a HTTPS, lo que expone el tráfico a técnicas de MitM y SSL Stripping.
Impacto de negocio
Si el flujo transporta información sensible, una intercepción puede afectar la confidencialidad de los datos, la confianza de los usuarios y la capacidad de la organización para demostrar controles adecuados de seguridad.
Paso a paso de remediación HSTS
La implementación consiste en inyectar la cabecera en las respuestas del servidor web. A continuación, se detallan las directivas para los entornos más comunes:
Para servidores con Nginx
Edita el archivo de configuración del sitio (por ejemplo, /etc/nginx/sites-available/default) dentro del bloque server que maneja el tráfico HTTPS (puerto 443):
server {
listen 443 ssl;
server_name password.co;
# Inyectar cabecera HSTS (Válida por 1 año, incluye subdominios)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# ... resto de la configuración ...
}Para servidores con Apache (.htaccess o httpd.conf)
Asegúrate de tener habilitado el módulo mod_headers. Agrega la siguiente directiva dentro de la sección virtual host de HTTPS o en el archivo .htaccess raíz:
<IfModule mod_headers.c>
# Inyectar cabecera HSTS (Válida por 1 año, incluye subdominios)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>Para servidores con Microsoft IIS
- Abre el Administrador de IIS y selecciona el sitio web (password.co).
- Haz doble clic en Cabeceras de respuesta HTTP (HTTP Response Headers).
- En el panel de acciones (derecha), haz clic en Agregar… (Add…).
- Introduce los siguientes valores:
- Nombre: Strict-Transport-Security
- Valor: max-age=31536000; includeSubDomains
Verificación de la solución
Para asegurarte de que la cabecera se está enviando correctamente, ejecuta el siguiente comando curl desde una terminal apuntando al dominio en producción:
curl -I https://password.coResultado esperado: Entre las líneas de la respuesta HTTP, debes confirmar la existencia exacta de la directiva:
HTTP/2 200
server: nginx
date: Sat, 11 Jul 2026 20:47:14 GMT
strict-transport-security: max-age=31536000; includeSubDomainsPlan de Rollback (Reversión)
Si por alguna razón la aplicación presenta fallos con subdominios antiguos que no soportan HTTPS, puedes mitigar el impacto reduciendo el tiempo de vida de la directiva a cero de forma temporal. Esto le indica a los navegadores que limpien la caché de HSTS inmediatamente:
Acciones de reversión
- Nginx/Apache: Cambia el valor a “max-age=0”.
- IIS: Modifica el valor de la cabecera a max-age=0.
- Aplica los cambios reiniciando o recargando el servicio web.
Riesgos residuales y limitaciones
La política HSTS comienza a aplicarse después de que un navegador compatible recibe la cabecera por HTTPS, salvo que el dominio se encuentre precargado en una lista HSTS del navegador. Además, el uso de includeSubDomains exige que todos los subdominios relevantes puedan operar correctamente mediante HTTPS.
La configuración de HSTS fortalece el transporte web, pero no reemplaza la gestión de certificados, la corrección del contenido mixto, la configuración segura de TLS ni el monitoreo de las cabeceras en producción.
Recomendaciones complementarias
Antes de ampliar la política a todos los subdominios, verifica dependencias heredadas, servicios externos y puntos de integración. Documenta el cambio, conserva una ruta de reversión y valida la cabecera después de cada despliegue o modificación de la infraestructura.
Rol de Password Consulting Services
Password puede acompañar la evaluación de configuraciones web, la identificación de exposiciones y la validación posterior de los controles mediante Pentesting Avanzado y pruebas de seguridad de aplicaciones. El propósito es reducir la superficie de ataque y aportar evidencia técnica para priorizar mejoras.
Valide la configuración de seguridad de sus aplicaciones
Conozca cómo Password puede acompañar la evaluación técnica y la validación posterior de los controles implementados.
Descarga la guia completaPreguntas frecuentes sobre la implementación de HSTS
¿Qué riesgo disminuye la cabecera HSTS?
Disminuye la exposición asociada al uso inicial de HTTP y ayuda a limitar ataques como SSL Stripping al indicar al navegador que debe utilizar HTTPS para el dominio.
¿Se puede activar HSTS si algún subdominio no soporta HTTPS?
La directiva suministrada incluye includeSubDomains. Por ello, se deben revisar previamente los subdominios y sus dependencias, ya que los servicios que no soporten HTTPS pueden presentar fallos de acceso.
¿Una redirección de HTTP a HTTPS reemplaza HSTS?
No. La redirección ocurre después de la solicitud HTTP inicial, mientras que HSTS permite que el navegador transforme futuros intentos de conexión a HTTPS antes de enviar la solicitud por la red.
¿Cómo se comprueba que HSTS está activo?
Ejecuta curl -I https://password.co y confirma que la respuesta contenga strict-transport-security: max-age=31536000; includeSubDomains.
¿Cómo se revierte temporalmente la política?
El procedimiento fuente indica cambiar el valor de la cabecera a max-age=0 y aplicar los cambios reiniciando o recargando el servicio web.
