Tunelado de la transmisión de datos en una vpn

¿Qué significa hacer túnel?

Un protocolo de comunicación es un conjunto de reglas que permiten el intercambio de información entre dispositivos conectados a una red, y que establecen claramente la manera en que se identifica cada uno, la forma en que se transmiten los datos, y el modo en que la información que trasladan debe procesarse.

Los protocolos de comunicación, dividen la información que se intercambia en tramas de bits para su trasmisión, y cada una normalmente contiene dos partes: una cabecera, con información de control sobre lo que se trasmite (origen, destino, datos de chequeo, entre otros), y un cuerpo (datagrama), que contiene los datos que se envían.

Un protocolo de tunelización es un protocolo de comunicación que encapsula en su datagrama, otro paquete de datos completo, que incluso, puede emplear otro protocolo diferente. A esto es a lo que se le denomina tunelizar o hacer túnel (tunelling).

Esencialmente, la técnica de tunelizado crea un paso (túnel) entre dos puntos de una red, por el cual se puede transmitir de forma cifrada y segura cualquier tipo de datos. Su uso más común es para la creación de Redes Privadas Virtuales (VPN).

Para establecer un túnel, se inserta (encapsula) una trama completa de datos (encabezado y datagrama) dentro del datagrama de otra, con el fin de enviarla de un extremo a otro del túnel, sin que se precise del análisis de la trama que está encapsulada. Siguiendo esta idea, los nodos intermedios de la comunicación se limitan a reenviar los paquetes y no se detienen a analizarlos, pues por lo general esto ocurre sobre protocolos habituales. 
Cabe diferenciar los conceptos de tunneling y túnel. El primero, es el proceso completo de encapsulado, transmisión y desencapsulado de los paquetes, mientras que el segundo es el camino lógico por el que viajan los paquetes encapsulados a través de la red.

Tipos de Protocolos para hacer Tunneling

Las características más importantes de los protocolos de comunicación que soportan tunneling son el cifrado de la información, la autenticación de usuarios, la compresión de datos, y la integridad de los datagramas, muchas de las cuales son posibles gracias al encriptado completo de cada paquete encapsulado.

Existen varios protocolos de tunelización conocidos, cada uno de ellos adaptado a un propósito específico. Varias son las maneras de agruparlos, las más referenciadas son por su orientación (a datagramas o a flujo), o por su nivel de aplicación en las capas del modelo OSI (enlace, red, transporte, aplicación).

Algunos de los protocolos tunelizados más empleados, pueden referenciarse como:

PPP (Point-to-Point Protocol):

Es un protocolo del nivel de enlace de datos, utilizado para establecer una conexión directa entre dos nodos de una red. Se emplea en varios tipos de redes físicas, incluyendo: línea telefónica, telefonía celular y enlace de fibra óptica. Los Proveedores de Servicios de Internet lo utilizan para que accedan a la red los usuarios de una línea de conmutación (teléfono/datos). Proporciona autenticación, compresión de datos, detección de errores y balance de carga. Sus derivados más empleados son PPPoE (encapsulación PPP sobre una red Ethernet), y PPPoA (para la encapsulación PPP sobre una red ATM).

GRE (Generic Routing Encapsulation):

Es un protocolo para el establecimiento de túneles a través de Internet, que soporta secuencialidad de paquetes, permite establecer políticas de enrutamiento y seguridad, facilita encapsular una amplia variedad de tipos de paquete dentro de túneles IP, para crear enlaces virtuales punto a punto; sin embargo, no proporciona cifrado ni ningún otro mecanismo de seguridad, por lo que los datos que se envían no son seguros. Si se necesita una comunicación de datos segura, se deben configurar redes VPN con IPsec o SSL.

PPTP (Point-to-Point Tunneling Protocol):

Es un protocolo de comunicaciones actualmente en desuso, que permite el intercambio seguro de datos de un cliente a un servidor formando una Red Privada Virtual (VPN). Destaca por su fácil configuración como una extensión no estándar del protocolo GRE, pues dirige los paquetes PPP encapsulados en un túnel GRE para su transmisión por la red. En la actualidad, la seguridad del protocolo ha sido vulnerada, y se recomiendan otras soluciones como L2TP o IPSec.

L2TP (Layer 2 Tunneling Protocol):

Es un protocolo utilizado por las VPN en la capa de enlace como evolución aparente del PPTP, creado para corregir sus deficiencias. Utiliza PPP para el establecimiento telefónico de conexiones, e incluye sus mecanismos de autenticación para el transporte de una gran variedad de tipos de paquete de datos. No presenta características criptográficas especialmente robustas, ya que sólo se realiza esta operación entre los puntos finales del túnel, pero no para cada uno de los paquetes que viajan por él, además, no cifra en principio el tráfico de datos, lo cual puede dar problemas cuando sea importante mantener su confidencialidad. No obstante, a causa de estos inconvenientes, y ante la opción de crear mecanismos del mismo estilo de los que se realizan para el protocolo IPSec, y dada la duplicidad de trabajo que esto suponía, se comenzó a utilizar los propios protocolos IPSec para proteger los datos que viajan por un túnel L2TP.

IPSec (Internet Protocol Security)

Protocolo cuya función es asegurar las comunicaciones IP y a los protocolos de capas superiores, autenticando y/o cifrando cada paquete de datos que se intercambia. Fue desarrollado como un estándar de seguridad de Internet en la capa 3 de red del modelo OSI, y constituye una tecnología muy aceptada, pues implementa un conjunto de métodos para asegurar el flujo de paquetes, garantizar la autenticación mutua, y establecer parámetros criptográficos.

IPsec fundamentalmente se utiliza para crear VPNs con dos modos básicos de operación: en modo transporte (extremo a extremo) del tráfico de paquetes, en el que los dispositivos de los extremos finales realizan el procesado de cifrado, o en modo túnel (puerta a puerta) en el que la seguridad del tráfico de paquetes es proporcionada a varios dispositivos por un único nodo.

De forma general, IPsec se introdujo para proporcionar a las conexiones IP, servicios de seguridad tales como: cifrar el tráfico (de forma que no pueda ser leído por nadie más que las partes a las que está dirigido), validación de integridad (asegurar que el tráfico no ha sido modificado a lo largo de su trayecto), autenticar a los extremos (asegurar que el tráfico proviene de un extremo de confianza) y anti-repetición (proteger contra la repetición de la sesión segura).

Otros protocolos de seguridad para Internet de uso extendido, como SSL, TLS y SSH que operan de la capa 4 de transporte (del modelo OSI) hacia arriba, permiten que IPsec sea más flexible, y pueda ser utilizado para proteger no solamente tráfico IP, sino también TCP y UDP.

SSL (Secure Socket Layer)

El protocolo se utiliza entre la capa de aplicación y la capa de transporte del modelo OSI. Se utiliza para la transferencia de hipertexto de manera segura, y de esta forma, se consigue que la información transmitida entre un usuario, que emplea normalmente un navegador de Internet o browser y un servidor web, sea segura en ambos sentidos, aspecto especialmente importante cuando se trata de información sensible como datos confidenciales, contraseñas, información bancaria o imágenes personales.

Uno de sus usos más extendidos es el que se complementa junto al protocolo HTTP, dando lugar al HTTPS. En el protocolo SSL se utiliza tanto criptografía asimétrica como simétrica. La asimétrica, para realizar el intercambio de las claves, que a su vez serán usadas para cifrar la comunicación mediante un algoritmo simétrico.

En el caso de los sitios web, para el funcionamiento de este protocolo, lo que se necesita utilizar es un certificado SSL. El servidor web tendrá instalado uno y cuando un cliente intente acceder a él, le remitirá el mismo con la clave pública del servidor, para enviar de esta forma la clave que se usará para realizar la conexión de manera segura mediante un cifrado simétrico.

TLS (Transport Layer Security)

Este protocolo criptográfico ha evolucionado del protocolo SSL, a partir de vulnerabilidades que han sido detectadas y corregidas, por lo que es común referenciarlo como SSL/TLS. Establece una conexión segura por medio de un canal cifrado, normalmente entre un cliente y un servidor, por los que el intercambio de información se realiza en un entorno seguro y libre de ataques. Permite prevenir escuchas (eavesdropping), evitar la falsificación de la identidad del remitente, y mantener la integridad del mensaje.

El protocolo SSL/TSL utiliza para la autenticación de los extremos de la comunicación (al estilo cliente-servidor), algoritmos de cifrado asimétricos (de clave pública) como RSA, Diffie-Hellman y DSA (Digital Signature Algorithm). Para el cifrado de la información que se intercambia emplea métodos de encriptación simétrica como RC4, IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard), Triple DES o AES (Advanced Encryption Standard); y para el control de la integridad de los mensajes que se intercambian utiliza funciones de hash como MD5 o de la familia SHA.

El protocolo SSL/TLS tiene multitud de aplicaciones, la mayoría de ellas como versiones seguras de programas que emplean protocolos que no lo son, como HTTP, SMTP, IMAP y POP3, entre otros.

SSH (Secure Shell)

SSH es un protocolo de administración remota que opera en la capa de transporte del modelo OSI, y que permite a los usuarios controlar y modificar sus servidores remotos a través de Internet. El servicio utiliza técnicas criptográficas para garantizar que todas las comunicaciones entre el cliente y el servidor remoto sucedan de manera cifrada.

La forma en que funciona SSH es mediante el uso de un modelo cliente-servidor para permitir la autenticación de dos sistemas remotos y el cifrado de los datos que pasa entre ellos.

Hay dos etapas para establecer una conexión SSH: primero ambos sistemas deben acordar estándares de encriptación para proteger las comunicaciones, y segundo, el usuario debe autenticarse. El protocolo utiliza el cifrado asimétrico para el intercambio de las claves de cifrado simétrico que empleará para encriptar la información; además, hace uso de funciones de hash para verificar la autenticidad de los mensajes.

Conclusión

De forma general, la utilización de un protocolo de tunelización u otro, dependerá de las necesidades concretas de una organización, para la seguridad del intercambio de su información sobre Internet.

A menudo, la combinación de varias de estas tecnologías permite crear un sistema robusto, en el que cada mecanismo tiene un papel muy importante que desempeñar para la seguridad de la información que se trasmite.