Según el estudio de Netcraft, el 95 % de los servidores HTTPS son vulnerables a los ataques Man-in-the-Middle. Por lo tanto, es muy importante implementar HSTS correctamente. HSTS (HTTP Strict Transport Security) es una política que protege los sitios web contra ataques maliciosos como el secuestro de clics, las degradaciones de protocolo y los ataques de intermediarios, como se explicó en mi artículo anterior. En este artículo, veremos varios pasos para habilitar HSTS en NGINX y Apache.
Cómo habilitar HSTS en Nginx
Abra su archivo de configuración de Nginx para el dominio que necesita para habilitar HSTS.
Por ejemplo:/etc/nginx/conf.d/tg.conf
Agregue la siguiente línea a su bloque de servidor de HTTPS:
NO AGREGAR HSTS al bloque HTTPadd_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;parámetro includeSubDomains
El includeSubDomains
opcional El parámetro le dice al navegador que la política HSTS también se aplica a todos los subdominios del dominio actual.
El always
El parámetro garantiza que el encabezado esté configurado para todas las respuestas, incluidas las respuestas de error generadas internamente.
Para tener el HSTS configurado para un período de tiempo de 1 año, establezca max-age en 31536000 (en segundos). Deben ser al menos 3 meses para satisfacer los requisitos de seguridad.
Reiniciar servicio Nginx
Antes de reiniciar, verifique el archivo de configuración como se muestra a continuación:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie el servidor Nginx para tomar los nuevos cambios.
# systemctl restart nginx
Cómo habilitar HSTS en Apache
Para habilitar HSTS en Apache, necesitamos tener mod_headers
módulo instalado. Ejecute el siguiente comando para averiguar si el módulo ya está instalado.
# apachectl -M | grep headers headers_module (shared)
si lo tiene, procedamos a configurar los ajustes de encabezado del dominio que necesita para habilitar HSTS. Abra el archivo de configuración que contiene el VirtualHost
que usa SSL.
For eg: /etc/httpd/conf.d/tg.conf
Agregue la siguiente configuración dentro de su VirtualHost
para el puerto 443 de la siguiente manera:
<VirtualHost *:443> ...... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" ...... </VirtualHost>
Reiniciar el servicio Apache
Antes de reiniciar, verifique el archivo de configuración como se muestra a continuación:
# apachectl configtest Syntax OK
Si la sintaxis es correcta, reinicie el servidor Apache para realizar los nuevos cambios.
# systemctl restart httpd ## Redhat systems # systemctl restart apache2 ## Debian systems
¡Eso es todo! Pruebe el servidor web para ver si se ha habilitado el HSTS.
$ curl -kIs https://example.com | grep Strict Strict-Transport-Security: max-age=31536000; includeSubDomains