Implementar HSTS en WordPress

Reading time aprox: 3 minutes, 26 seconds

Implementar HSTS en WordPress.

¡Si, ¡está de moda! Siguiendo los dictados de los grandes, ahora toca lidiar con el «HSTS1», aunque suene a «palabrota».

Pues bien, es hora de desmitificar al monstruo; el «HSTS» no es más que una cabecera o, mejor dicho una parte de la cabecera, que se transmite con cada petición «HTTP2» o HTTPS3».

Implementar HSTS en WordPress

Lo primero que interesa saber, es qué aporta esta cabecera o este trozo de cabecera, a tu bitácora. La respuesta es: no mucho.
Es decir, no va a cambiar nada de tu bitácora, ni en contenido ni en apariencia, pero … si va a cambiar la consideración que «Google» tenga de tu sitio.

Los demás buscadores como «DuckDuckGo», «Bing» o «Yahoo», por citar algunos, puede que no lo digan pero, aplican políticas muy similares.

Al igual que hace un tiempo avisaron de que «penalizarían» los sitios que no usen HTTPS, ahora avisan de que penalizarán aquellos sitios que no usen HSTS.

Cómo implementar la seguridad.

Como en otros casos, hay varias maneras de conseguir un mismo fin, como es el caso de implementar HSTS en WorPress.

La forma más sencilla, es la instalación de un Plugin que realice la tarea, en este caso, hablamos de «HSTS Ready».

Implementar HSTS en WordPress - el plugin HSTS Ready
Implementar HSTS en WordPress – el plugin HSTS Ready

Este plugin no necesita ninguna configuración, nada más instalarlo funciona y, no hay que tocar nada más.

Como he dicho antes, la forma más fácil y rápida.

Opción avanzada 1

Si eres de los que quiere saber lo que ocurre y no sólo instalas, sino que quieres saber lo que haces, te voy a contar cómo puedes implementar esta nueva cabecera.

Como segura que ya has deducido, puedes implementar la seguridad HSTS, simplemente añadiendo un trozo de código a la cabecera.

Esto puedes hacerlo con un plugin de los que ya hablé en su momento, que te permita añadir cabeceras o con el que te conté recientemente y que te permite añadir Snippets» (Añadir fragmentos de código en WordPress).

Pero existe otra fórmula, que consiste en añadir código a tu archivo functions.php de tu Tema o Tema Hijo.

Para hacer esto, debes apuntar al enlace de acción send_headers», que se usa para agregar encabezados adicionales a las respuestas HTTPS salientes.

Puede que te resulte obvio o no, ¡pero deberás asegurarse de que tu sitio tenga un certificado SSL en funcionamiento para que esta implementación funcione!

El código es:

/** 
 * Habilitar el Strict Transport Security (HSTS) en la cabecera de WordPress. 
 */
function slwp_enable_hsts() {
    header( 'Strict-Transport-Security: max-age=10886400' );
}
add_action( 'send_headers', 'slwp_enable_hsts' );

Esto te brindará la protección HSTS, por espacio de 18 semanas, aunque la página esté en cache.

Al agregar el encabezado Strict Transport Security a tu sitio, te aseguras de que cada visita, excepto la visita inicial, está protegida.

Eso todavía deja tu sitio vulnerable a los ataques MITM (man-in-the-middle) en la visita inicial, por lo que hay una técnica llamada ‘precarga’ que agregará tu sitio a una lista de dominios previamente poblada.

Una vez que tu sitio esté en esa lista, los principales navegadores que admitan la precarga de HSTS serán notificados de que tu sitio requiere SSL4, y cada visita, incluso la primera de un visitante, se verá forzada automáticamente a través de SSL.

Si deseas habilitar esto en tu sitio, hay algunos requisitos antes de que pueda activarlo.

  1. Tener un certificado SSL válido. No puedes hacer nada de esto de todos modos sin él.
  2. Debes redirigir todo el tráfico HTTP a HTTPS (recomendado a través de redireccionamientos permanentes 301).
  3. También debes tener todos los subdominios en HTTPS. Si tienes subdominios, necesitarás un certificado HSSL comodín para esto.
  4. Ofrece un encabezado HSTS en el dominio base (por ejemplo, midominio.xx) que cumpla con los siguientes requisitos:
    1. La duración del vencimiento debe ser de al menos 18 semanas.
    2. El token «includeSubDomains» debe especificarse en el encabezado.
    3. El token de precarga debe especificarse en el encabezado.
    4. Si estás sirviendo una redirección, esa redirección también debes tener el encabezado HSTS, no solo en las páginas a las que redirige.

Una vez que hayas cumplido con todos estos requisitos, puede usar este código en tu archivo functions.php para admitir la carga previa o precarga de HSTS.

/** 
 * Habilitar el Strict Transport Security (HSTS) en la cabecera de WordPress. 
 * Incluida la precarga en subdominios.
 */
function slwp_enable_hsts() {
    header( 'Strict-Transport-Security: max-age=10886400; includeSubDomains; preload' );
}
add_action( 'send_headers', 'slwp_enable_hsts' );

Así de sencillo.

Opción avanzada 2

Si eres de los que no quiere tocar el código en PHP o quieres aprovechar para instalar la seguridad en otro sitio que no tiene WordPress, también tenemos solución.

Puedes incluir este pequeño código en el archivo .htaccess, para que tu servidor Apache realice la labor.

Recuerda que en las nuevas versiones del servidor Apache, el uso de archivos .htaccess puede estar deshabilitado.

Si este es tu caso, deberás incluir la siguiente habilitación del .htaccess en el archivo de configuración de Apache, por ejemplo el archivo /etc/apache2/apache2.conf.

Edítalo con un editor de texto plano, busca la línea en donde se establece el directorio raíz de tu sitio (algo como: /htdocs/www).

Encontrarás algo como:


	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted

Cambia la línea de AllowOverride None a AllowOverride All.

Debes reiniciar el servidor Apache, para que el cambio surta efecto, lo que consigues con el comando:

sudo systemctl apache2 restart

Ahora has de editar el .htaccess, como te cuentan en nuestra página madre: «Implantar la seguridad HSTS con htaccess».

Has de agregar el código:


Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Conclusión

Como ves, es una tarea muy sencilla. Aquí te presento varias fórmulas, para que escojas la que más te apetezca.

Si te sientes aguerrido, prueba a realizarlas todas, aunque una sólo es suficiente, no necesitas información redundante en las cabeceras de página de tu sitio.

Si quieres comprobar si tu sitio está configurado con la precarga del HSTS, visita: https://hstspreload.org/

Recuerda, #QuédateEnCasa, #UsaMascarilla, juega, experimenta y, sobre todo, ¡divertirte!


¡Gracias por leernos!


¡Tus comentarios y preguntas nos ayudan a mejorar, por favor comenta!


  1. Strict Transport Security 

  2. HyperText Transfer Protocol 

  3. HyperText Transfer Protocol Secure 

  4. Secure Sockets Layer [capa de puertos seguros] 

2 comentarios sobre “Implementar HSTS en WordPress

  1. Buenas! Excelente y útil artículo! Tengo una duda. Si instalo el plugin ya se agrega el código en la cabecera? En caso de ser así, luego de instalarlo puedo eliminarlo? (Para no tener tantos plugins)
    Desde ya, gracias

    1. Hola Santiago.
      La cabecera con el protocolo HSTS debe estar en cada página, no es una sola cabecera para todo el sitio. Por tanto, necesitas un plugin o alguna otra forma que ponga esa cabecera en cada página, si quitas el plugin, esa cabecera dejará de aparecer.
      Siempre tienes la alternativa de poner el código en el functions.php

      Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cinco × 5 =

Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.    Más información
Privacidad