Más allá del HTTPS: mejorando la seguridad web

Publicada el Categorizado como Web Etiquetado como ,
mas alla del https - articulo

En un artículo pasado, explicaba de forma básica la importancia del https para un sitio web.

Sin embargo, implementar un sitio web seguro va mas allá de solo usar un certificado de seguridad.

A medida que los protocolos se vuelven menos seguros debido a fallas de seguridad, surgen nuevos estándares o versiones mejoradas de esos protocolos.

El uso de estos protocolos o sus malas implementaciones son una de las causas mas comunes de problemas de seguridad. De hecho, ha sido una de las razones para que el OWASP (Open Web Application Security Project) considere las fallas criptográficas como la segunda categoría en su Top 10 de problemas de seguridad.

Hablemos de TLS

El protocolo de Seguridad de Capa de Transporte o TLS por sus siglas en inglés es el protocolo usado actualmente para la garantizar la seguridad en las transferencias web. Es el protocolo que reemplazo al antiguo (y ya inseguro) SSL (Secure Sockets Layer).

El protocolo TLS es relativamente complejo y a veces no se entiende del todo bien. El TLS tiene tres componentes:

  • Handshake: es el acuerdo entre cliente y servidor sobre qué algoritmos utilizar durante la comunicación.
  • Certificados: son los documentos cifrados que proporcionan autenticación y confianza, es decir, ambas partes se aseguran de que se están comunicando con quien dice ser.
  • Suite de Cifrado: son los protocolos que se encargan de cifrar la comunicación.

Cada uno de estos componentes tiene su propio conjunto de protocolos y estándares. Existen numerosos factores que hacen una conexión TLS realmente segura.

Sorprendentemente, existen muchos desarrolladores y agencias que solo instalan un certificado, revisan que se pueda hacer la conexión por https y listo, trabajo terminado.

Pero la realidad no es así, existen otros elementos que deben considerarse para que esa conexión https sea realmente segura.

El protocolo TLS está en constante evolución y debemos estar pendientes de los cambios relevantes en los diferentes protocolos y en las nuevas amenazas.

Veamos algunos datos técnicos interesantes:

  • TLS 1.0 y 1.1 están oficialmente obsoletos al día de hoy por sus fallas de seguridad.
  • La versión 1.3, que de hecho ya tiene dos años, es la versión más segura actualmente. Es usada por aproximadamente el 63% de servidores de internet.
  • El uso de ECDSA (Elliptic Curve Digital Signature Algorithm) ha ido en aumento. Este algoritmo de firma digital es uno de los mas prometedores por su gran eficiencia.
  • A pesar de la buena adopción de TLS 1.3, muchos servidores en internet aun usan implementaciones no recomendadas como SSLv3 o RSA.

Las Suites de Cifrado

Las suites de cifrado son una serie de mecanismos que se utilizan durante el proceso de comunicación entre el cliente (navegador) y el servidor. Se utilizan algoritmos diferentes para cada fase (intercambio de llaves, autenticación, cifrado, etc.).

componentes de una suite de cifrado
Componentes de una Suite de Cifrado

Por qué son importantes?

Porque determinan entre otras cosas, el nivel de seguridad (el protocolo a usar), la compatibilidad del trafico HTTPS y el rendimiento (velocidad de carga, etc.).

Como los clientes son tan variados (diferentes versiones de sistemas operativos y navegadores), el servidor debe garantizar que cuenta con una suite de cifrado acorde para cada una de ellas.

Esto tiene un lado negativo ya que hace que el proceso sea susceptible a un tipo de ataque en el que se fuerza al servidor a usar versiones menos seguras de los protocolos.

Este ataque de degradación, conocido como Poodle Attack, es el primer paso para un segundo ataque donde se explota el protocolo vulnerable para comprometer la información cifrada.

A partir de 2014 han surgido variaciones al Poodle Attack y otros tipos de ataques a TLS.

TLS 1.3 simplifica mucho el uso de los suites de cifrado ya que utiliza solo unos pocos algoritmos de cifrado. Por ejemplo, TLS 1.3 utiliza solo 3 algoritmos en la mayoría de los casos.

¿Como verifico el nivel de seguridad de mi sitio web?

Existen herramientas online para verificar el nivel de seguridad de la implementación HTTPS en un sitio web. La que mas utilizamos en labsware es SSL Labs de Qualys. Si eres un poco mas técnico, puedes usar Cryptonice de F5 Labs.

SSL Labs te muestra los detalles mas importantes de la implementación https de tu sitio web y le da una calificación de acuerdo a varios factores, que puedes ver aquí.

Si los resultados de tu sitio web arrojan B o menos, necesitas mejorar la seguridad https urgentemente.

resultados de test https
Resultados de SSL Labs para labsware.com

En los resultados del test a tu sitio web, puedes ver los detalles del Certificado que utilizas, la configuración del protocolo TLS y las versiones que soporta, así como las suites de cifrado.

Protocolos y versiones

Otro resultado interesante es la simulación del Handshake que hace el navegador y el servidor. Aquí se simula la comunicación utilizando diferentes versiones de navegadores para ver el comportamiento del sitio web ante sus peticiones, por lo que mencionamos sobre ataques de degradación y otros problemas.

Simulación de Handshake

En los casos donde se utiliza una versión vieja de un navegador o el cliente pide usar una versión no segura del protocolo TLS, el servidor no permite la comunicación.

Otras buenas practicas

Adicional al uso de TLS 1.3, puedo mencionar otras medidas que puedes implementar para mejorar tu implementación https.

HTTPS Redirect

La primera opción es redirigir el trafico HTTP hacia HTTPS. La vía mas sencilla es hacerlo en el archivo .httaccess de tu sitio web.

Esta configuración crea una redirección 301 para cada solicitud HTTP hacia su equivalente seguro, es decir, HTTPS.

Implementar HSTS

HTTP Strict Transport Security (HSTS) es un mecanismo que permite a un servidor web declarar que solo son accesibles a través de una conexión segura.

A diferencia de la redirección este mecanismo funciona a nivel del encabezado HTTP, por ende es mas efectivo ya que es como “obligatorio” por decirlo así y no solo una redirección.

Usar HTTP/2

HTTP/2 es la mayor actualización que se ha hecho al protocolo HTTP. Esta versión incluye mejoras sustanciales en rendimiento, semántica, seguridad, etc.

Puedes verificar si tu sitio web corre sobre un servidor que soporta HTTP/s aquí. Y los navegadores que lo soportan aquí.

TLS 1.3 por defecto

Implementar la versión 1.3 del protocolo TLS y configurar el servidor para que solo utilice esta versión. Esta opción parece obvia si estamos hablando de utilizar la versión más segura de TLS pero es importante que las configuraciones se realicen de forma adecuada, sobre todo si tienes un sitio web que maneja información sensitiva como una tienda online, por ejemplo.

Implementar estas medidas te ayudará a hacer tu sitio web más seguro, además de tener un impacto positivo en el rendimiento general de tu sitio.

Por Rod

Hola, mi nombre es Rodolfo. Soy ingeniero en sistemas y especialista en Ciberseguridad, viviendo en Panamá. Internet es mi segundo hogar desde 1999. Labsware es un emprendimiento minimalista que combina dos de mis temas de interés: diseño/desarrollo web y emprendimiento. Léeme en https://rodolfogallardo.com o en https://twitter.com/heyrodtw

Dejar un comentario

Tu dirección de correo electrónico no será publicada.