Hola Visitante

Autor Tema: Security Headers en Wordpress  (Leído 6 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 41
    • Ver Perfil
Security Headers en Wordpress
« en: Febrero 02, 2019, 02:28:15 pm »

Esta breve entrada tratará de enseñar como se debe configurar de manera segura una instalación de wordpress. El requisito para que esto funcione debe ser tener wordpress con un certificado seguro (SSL/TLS) configurado.





¿Qué son los security headers o encabezados/cabeceras de seguridad?





Son extensiones que proporciona el consorcio de W3C para proteger al usuario contra ataques malintencionados al navegador de un cliente. Este tipo de cabeceras son eficaces para bloqeuar recursos de terceros que no se cargan debidamente, o de dominios no confiables. Otras impiden que la web se cargue como un iframe o incrustada dentro de algún dipo de contenedor para evitar clickjacking (robo de clicks).





Una vez sabemos para que son las security headers, deberemos editar el archivo .htaccess  de nuestro wordpress:





Y añadir el siguiente bloque.





Options +FollowSymLinks -Indexes
php_flag display_errors Off
php_flag session.cookie_httponly on
php_flag session.cookie_secure on

RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]

SetEnvIf Host ^www.bitsdelocos.es$ is_main_domain
Header set X-Content-Type-Options nosniff env=is_main_domain
Header set X-XSS-Protection "1; mode=block" env=is_main_domain
Header unset X-Powered-By env=is_main_domain
Header unset X-Pingback env=is_main_domain
Header unset SERVER env=is_main_domain
Header set Content-Security-Policy "default-src 'self' https: data: wss: 'unsafe-inline' 'unsafe-eval';" env=is_main_domain
Header set strict-transport-security "max-age=300; preload" env=is_main_domain





Las 4 primeras líneas impiden que se listen archivos en las carpetas que no poseen ningun index.php que cargue por defecto, se muestren errores que pueden exponer información sensible del servidor al haber un error o que se obtenga información de debug con los métodos trace y track del servidor apache.





La línea de SetEnvIf es útil si tenemos subdominios sin SSL y no queremos que esta configuración se herede en ellos, en caso de que todo esté securizado se puede eliminar y quitar “env=is_main_domain” de las demás.  





Con estas modificaciones se consigue añadir los headers necesarios para poder tener un wordpress seguro en la capa de “navegador”, y ocultar información sensible del servidor web que pudiera dar pistas a un atacante de nuestra infraestructura.