Hola Webcindario! 😊

¿Sabrías reforzar la seguridad de un sitio web? si no es así, sigue leyendo este artículo para resolver este dilema. 👇

Hosting Web

Hoy en día muchas webs alojadas en internet utilizan únicamente HTTPS para mostrar su contenido, Google valora positivamente las webs que disponen de HTTPS. Para implementarlo se puede hacer de dos formas distintas: 👇

Mostrar el contenido web en el puerto 443. Esta opción tiene el inconveniente de que alguien al conectar por HTTP le de error y no podrá acceder al sitio web.

Redirigir todas las conexiones HTTP a HTTPS (301). La más recomendable. Aunque esta opción puede ser vulnerable a un ataque man-in-the-middle, pero vamos a contarte como con HSTS podemos volverlo seguro. Por ejemplo:

Un pasajero que espera su avión en el aeropuerto, se conecta a la conexión wifi gratis del sitio y empieza a navegar, entrando en páginas suyas privadas. Pues bien, en realidad esa red wifi no es del aeropuerto, sino de un hacker de contraseñas, por lo que ese atacante detecta la conexión HTTP y le redirige a una copia de la web de su correo por ejemplo a un dominio parecido. Entonces una vez que introduces tus datos, los coge y te redirige al sitio real. Y fin, ha copiado tus datos sin que te des cuenta. Es algo que sucede habitualmente y más en un aeropuerto donde hay más probabilidades de que la gente se conecte a cualquier red para pasar el rato.

El HSTS, es una directiva de seguridad, que permite evitar este problema. Esto funciona de esta forma, establece que durante un tiempo tanto el dominio solicitado como sus subdominios operen bajo la nomenclatura HSTS, obligando así que todas las conexiones se realicen bajo HTTPS. Además el navegador cacheará su uso para futuras conexiones a este dominio.

Navegadores soportados

Actualmente la mayoría de navegadores modernos soportan HSTS, exactamente:

  • Firefox
  • Google Chrome 4.0.211.0
  • Safari 7
  • Opera 12.1
  • Androi Browser
  • IOS Safari

Servidores soportados

  • Apache 2.2.22
  • Nginx 1.1.19
  • IIS 7
  • Entre otros

Implementar HSTS

Implementar HSTS es fácil, sólo tienes que añadir la siguiente directiva en el servidor web:

Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"

Esto forzará el almacenar la directiva en el navegador durante 1 año. Cada vez que vuelves a entrar en el sitio, se renueva nuevamente.

HSTS estricto

Hay que tener cuidado con configuraciones demasiado complicadas o estrictas. Incluir todos los subdominios obliga a que estén configurador sobre HTTPS, y si no lo están las páginas no serán accesibles.

Solucionar la debilidad de HSTS

La primera vez que te conectas a HSTS, el proceso es vulnerable, por lo que el atacante que hemos mencionado anteriormente puede colocarse en medio y eliminar la cabecera HSTS.

Chrome ha creado una lista HSTS para poder per-cargar las directivas directamente en los navegadores y que no ocurra esta primera fase.

Hosting Web

Implementación HSTS en los servidores

En Apache debes editar la configuración (httpd.conf) y añade la directiva en tu panel virtual correspondiente a HTTPS. Requiere tener cargado previamente mod_headers.so. Y lo último es redirigir todo el tráfico HTTP a HTTPS:

<VirtualHost *:80>
[...]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
</VirtualHost>

No te olvides de reiniciar apache.

Nginx
Edita la configuración de nginx (nginx.conf) y añade la directiva únicamente en el servidor virtual correspondiente a HTTPS (no HTTP).

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

Y solo queda redirigir todo el tráfico HTTP a HTTPS:

server {
listen 80;

return 301 https://$server_name$request_uri;
}

server {
listen 443;
add_header Strict-Transport-Security max-age=31536000;
}

Conclusión

Te recomendamos implementar SSL y HSTS en todos los servidores web, para mejorar la seguridad de tus usuarios y además incrementar la reputación tuya. HSTS mejora la seguridad frente a posibles ataques.

Otros artículos de interés:

Breadcrumbs ¿son importantes en mi sitio web?