Paranoic Hardening: cabeceras y HSTS

Escrito por

en

La pestaña «⚠ Paranoic Hardening» del plugin CSDN reúne las opciones más delicadas: las cabeceras de seguridad HTTP, HSTS y el cierre de sesión automático de los administradores inactivos. Aquí cambias el comportamiento del navegador de quien visita el sitio, no solo el del servidor. Por eso está todo desactivado por defecto.

Esquema de WordPress con la pestaña Paranoic Hardening del plugin CSDN resaltada

Dónde se encuentra

En el menú lateral de WordPress ve a Ajustes y elige Cisilino Site Defense Network (punto 1 de la imagen). Abre la pestaña «⚠ Paranoic Hardening» (punto 2). Para guardar hace falta el permiso manage_options; en multisitio hace falta manage_network_options.

La pestaña tiene cuatro secciones. En el punto 3 encuentras «Paranoic Hardening — Cabeceras de seguridad HTTP». En el punto 4 está «HTTP Strict Transport Security (HSTS)». El punto 5 es «Verificación de cabeceras de seguridad». El punto 6 es «Autologout de administradores por inactividad».

Para qué sirve

Las cabeceras son instrucciones que el sitio envía al navegador junto con cada página. El plugin las envía con el hook send_headers de WordPress, sin tocar el archivo .htaccess. Por eso no arriesgas un error 500 y funcionan también sin mod_headers.

Las cabeceras afectan solo al sitio público. Nunca se envían en el área de administración. El plugin no ofrece una Content-Security-Policy y no envía X-XSS-Protection.

Cómo se usa el Paranoic Hardening

Cabeceras de seguridad HTTP (punto 3)

  • X-Content-Type-Options envía nosniff. El navegador ya no «adivina» el tipo de los archivos. El riesgo es prácticamente nulo.
  • X-Frame-Options envía SAMEORIGIN. El sitio ya no puede incorporarse en un <iframe> de otro dominio. Si un sitio aliado muestra tus páginas, dejará de hacerlo.
  • Referrer-Policy envía strict-origin-when-cross-origin. Hacia otros dominios viaja solo el dominio, no la ruta. Las estadísticas de terceros que quieran el referente completo no lo recibirán.

Marca las casillas que necesites y pulsa Guardar Paranoic Hardening. Verás el aviso «Ajustes de Paranoic Hardening guardados y aplicados.» Las casillas que no marcas se guardan como desactivadas.

HSTS (punto 4)

HSTS le dice al navegador que use siempre https con tu dominio. Hay tres casillas: «Activar HSTS», «includeSubDomains» y «Preload». La cabecera enviada tiene max-age=31536000, es decir un año. El valor es fijo y no se cambia.

El plugin rechaza la activación si la página no se abrió en https. En ese caso guarda el resto y muestra un aviso rojo: «Ajustes guardados, pero HSTS NO se ha activado: esta petición no llegó en https. Abre el panel en https y vuelve a intentarlo.» Si la página está en http, las tres casillas también están desactivadas.

Si apagas «Activar HSTS», al guardar también se vacían «includeSubDomains» y «Preload». Si reactivas HSTS, debes volver a marcarlas.

Verificación de cabeceras de seguridad (punto 5)

Pulsa Verificar ahora. El plugin hace una petición real a la portada del sitio y comprueba qué cabeceras llegan de verdad. El resultado aparece en el recuadro, con la fecha de la última prueba.

  • Verde: «Todas las cabeceras esperadas están presentes en la respuesta real del sitio.»
  • Rojo: las cabeceras activas que no llegaron. Puede ser un proxy, una CDN u otro plugin que las quita. HSTS aparece como ausente también si la dirección de la portada es http y no lleva a https, porque el plugin la envía solo en peticiones https.
  • Azul: «Ninguna cabecera activa para verificar: activa al menos una opción aquí arriba y guarda.»
  • Rojo con «La petición de verificación ha fallado»: la petición no se completó.

La prueba comprueba la presencia de la cabecera, no su valor. No se ejecuta sola: tienes que pulsarla tú.

Autologout de administradores (punto 6)

Esta sección del Paranoic Hardening tiene su propio botón, Guardar autologout de administradores. Marca «Activar» para desconectar a los administradores inactivos. Luego define el «Tiempo de inactividad (segundos)». Si el navegador bloquea el localStorage (por ejemplo en navegación privada), el control nunca se activa y no te desconectas.

El valor predeterminado es 900, es decir 15 minutos. El mínimo es 60 y el máximo es 86400. Si escribes un número fuera de los límites, el plugin lo lleva al valor permitido más cercano. Por ejemplo 30 se convierte en 60. El aviso sigue en verde, así que vuelve a leer el número en el campo tras guardar.

Se desconecta solo a los usuarios con el permiso manage_options. El editor y el autor no se ven afectados. La inactividad se mide en el navegador: cuentan el ratón, el teclado, el scroll y el tacto. La sesión se cierra como con «Salir», y los cambios no guardados en un formulario abierto se pierden.

Orden recomendado de activación

  1. Abre el panel en https.
  2. Activa X-Content-Type-Options, guarda y pulsa «Verificar ahora».
  3. Activa Referrer-Policy, guarda y verifica.
  4. Comprueba que ningún sitio incorpore el tuyo, luego activa X-Frame-Options, guarda y verifica.
  5. Activa el autologout con un tiempo generoso, por ejemplo 1800. Redúcelo solo después de unos días.
  6. Por último, valora HSTS, sin includeSubDomains y sin Preload.

Activa una opción cada vez. Si algo se rompe, sabrás de inmediato cuál fue.

El riesgo de HSTS, includeSubDomains y Preload

Atención: HSTS no se deshace desde el sitio. Si quitas la marca, el plugin deja de enviar la cabecera, pero los navegadores que ya la recibieron la recuerdan hasta que vence. El plugin nunca envía max-age=0, así que no tiene un «anular». Lo dice también el aviso de la pestaña: los efectos pueden seguir visibles durante semanas o meses.

Con HSTS activo el navegador rechaza toda conexión no https al dominio. Si el certificado vence o se rompe, el navegador ya no muestra ni siquiera la pantalla de «continuar de todos modos». El sitio queda inalcanzable desde ese navegador.

  • includeSubDomains extiende la regla a todos los subdominios. Un solo subdominio sin https válido, incluso de prueba o futuro, se vuelve inalcanzable para quien ya visitó el sitio. Actívalo solo si todos los subdominios son y seguirán siendo https.
  • Preload añade solo la bandera preload a la cabecera. Por sí sola no inscribe el sitio: el envío a la lista de los navegadores se hace a mano en hstspreload.org. La lista está dentro de los navegadores, y salir de ella lleva semanas. Considera Preload una decisión definitiva.

Guarda siempre desde la versión https del panel. Las casillas desactivadas no las envía el navegador: si guardas desde una página http, HSTS y sus subopciones se apagan.

Qué pasa entre bastidores

Los ajustes del Paranoic Hardening son opciones de WordPress, no reglas del servidor. El autologout imprime un script solo en las páginas de administración. El script registra la última actividad en el localStorage del navegador y cada 5 segundos comprueba el tiempo. Al vencer, pide a admin-ajax.php que ejecute el cierre de sesión y te lleva a la página de inicio de sesión. El guardado llega al Registro de actividad solo si has cambiado algo.

Si algo no funciona

  • El recuadro está rojo tras «Verificar ahora»: un proxy, una CDN u otro plugin está quitando las cabeceras. Revisa su configuración.
  • Un sitio aliado ya no muestra tus páginas: quita la marca a X-Frame-Options y guarda.
  • No consigues activar HSTS: vuelve a abrir el panel con la dirección https.
  • Para comprobar las cabeceras a mano puedes usar las herramientas de desarrollador del navegador o curl -I sobre la dirección https del sitio.

Para entender mejor cómo funciona HSTS, lee la página Strict-Transport-Security en MDN. Explica max-age, includeSubDomains y preload con precisión.

Anterior: Pestaña Test: comprobar que las protecciones funcionan. Siguiente: Registro de usuarios: quién puede crear cuentas. Para el índice general ve al capítulo 1 del manual.

Comentarios

Deja una respuesta

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

Aviso sobre Cookies en WordPress por Real Cookie Banner