WordPress y Security Headers de Apache: cómo aumentar la seguridad de tu página web

Wordpress-logo

El truco de hoy es muy sencillo de implementar y es posible que ayude a que tu instalación de WordPress sea mucho más segura. Vamos a ver cuales son las Security Headers de Apache que puedes implementar en la configuración de tu servidor. 

¿Qué son los HTTP Security Headers?

Cada vez que un navegador solicita una página desde un servidor web, el servidor responde con el contenido junto con los encabezados de respuesta HTTP. Algunos de estos encabezados contienen metadatos de contenido, como la codificación de contenido, el control de caché, los códigos de error de estado, etc. También nos encontramos con los “encabezados de seguridad HTTP” que le dicen a tu navegador cómo comportarse para manejar el contenido de su sitio web con WordPress.

Hay unas cuantos encabezados de seguridad que podemos implementar pero solo voy a comentar 4 que son las que me interesan: X-Content-Type-Options, X-Frame-Options, X-XSS-Protection y Content-Security-Policy.

Las 3 primeras son muy fáciles de implementar, la cuarta es más complicada y requiere de un mayor “ensayo y error” para no cargarse la instalación de WordPress.

¿Dónde hay que colocar estas directivas en tu servidor?

¡Ojo! Hay que tener activo en el servidor Apache mod_headers. Si no te quieres cargar nada, pon las siguientes directivas de los apartados posteriores dentro de una orden condicional:

<IfModule mod_headers.c>
Header set Content-Security-Policy “lo que sea que elijas”
</IfModule>

  • Puedes colocar las directivas en el archivo .htaccess de tu instalación de WordPress
  • Puedes introducir directamente estas directivas en el archivo de configuración de Apache (httpd.conf)

Despues de añadir las directivas, puedes probar la nueva sintaxis de Apache (en CENTOS) con el comando “httpd -t”, para ver si todo esta correcto antes de reiniciar Apache. 

WordPress y Security Headers de Apache: X-Content-Type-Options

Evita que Internet Explorer, Firefox, Google Chrome detecten contenido no declarado. ¿Eh? Si tienes un gif será un Gif y no otra cosa. Perfecto si tienes un sitio donde muchos usuarios intentan subir fotos u otros archivos. Evitaras que dentro de esas fotos se incluyan programas perniciosos escritos con javascript (por ejemplo). Hay que poner lo siguiente:

  • Header set X-Content-Type-Options: “nosniff”

WordPress y Security Headers de Apache: X-Frame-Options

Evitaras el Clickjacking: se crea un iframe invisible y dirijes al usuario de la web a donde el hacker quiere. Un ataque de clickjacking puede tomar la forma de código embebido o script que se ejecuta sin el conocimiento del usuario; por ejemplo, aparentando ser un botón para realizar otra función. Hay que poner lo siguiente (La página sólo se puede mostrar en un iframe desde el mismo origen. También puedes poner “deny” para evitar todo tipo de iframes):

  • Header set X-Frame-Options: “sameorigin”

WordPress y Security Headers de Apache: X-XSS-Protection

Cross Site Scripting, comúnmente abreviado XSS, es un ataque en el que el atacante hace que una página cargue algún javascript malicioso. Podmeos evitar gran parte de los ataques con esta directiva en Apache. Hay que poner lo siguiente

  • Header set X-XSS-Protection: “1; mode=block”

WordPress y Security Headers de Apache: Content-Security-Policy o SCP

La más complicada de implementar porque muchas de sus opciones se “cargan” el backend de WordPress y el uso de algunos plugins o servicios como Grvatar o Google Analytics. Lo mejor es ir probando cada una de sus opciones una a una y ver si las cosas siguen funcionando en tu página. Hay que poner lo siguiente (ejemplo con algunas opciones). Lo mejor es poner una a una en la directiva:

  • Header set Content-Security-Policy “default-src ‘self’; img-src ‘self’ http: https: *.gravatar.com;”

¿Quieres permitir Google Analytics en tu WordPress? Tienes que añadir lo siguiente si cargas analytics desde un archivo js externo: default-src ‘none’;script-src ‘self’ www.google-analytics.com;img-src www.google-analytics.com;

¿Quieres evitar que la zona de administración de WordPress no funcione?

Añade en un archivo wp-admin/.htaccess lo siguiente para evitar que “funcione” SCP en esa zona del blog:

  • <IfModule mod_headers.c> Header unset Content-Security-Policy </IfModule>

Paciencia e intenta ir probandolo con calma. Todas las referencias en https://content-security-policy.com/ y en la siguiente página hay ejemplos para permitir la carga de vídeos de YouTube, comentarios de Disqus, Twitter, Google fonts etc..: github.com

Finalmente, si quieres comprobar si las Security Headers están bien implementadas en tu WordPress, puedes visitar la página: https://securityheaders.io/, donde vas a obtener recomendaciones y más especificaciones de estas reglas.

Fuentes:

Subscríbete a algoentremanos.com por correo electrónico

Introduce tu correo electrónico para suscribirte a algoentremanos.com y recibir notificaciones de nuevos artículos sobre tutoriales, consejos y tips sobre informática e internet

Únete a otros 4.925 suscriptores