Comprendiendo PPTP y VPN`s 


Introduccion:
Point-To-Point Tunneling Protocol (PPTP) permite el seguro intercambio de datos de un cliente a un server formando un Virtual Private Network (VPN ó red privada virtual), basado en una red de trabajo vía TCP/IP. El punto fuerte del PPTP es su habilidad para proveer en la demanda, multi-protocolo soporte existiendo una infraestructura de área de trabajo, como INTERNET. Esta habilidad permitirá a una compañía usar Internet para establecer una red privada virtual (VPN) sin el gasto de una línea alquilada.

Esta tecnología que hace posible el PPTP es una extensión del acceso remoto del PPP (point-to-point-protocol......RFC 1171). La tecnología PPTP encapsula los paquetes ppp en datagramas IP para su transmisión bajo redes basadas en TCP/IP. El PPTP es ahora mismo un boceto de protocolo esperando por su estandarización. Las compañías "involucradas" en el desarrollo del PPTP son Microsoft :P. Ascend Communications, 3com / Primary Access, ECI Telematics y US Robotics.

PPTP y VPN:
El protocolo Point-To-Point Tunneling Protocol viene incluido con WindowsNT 4.0 Server y Workstation. Los Pc`s que tienen corriendo dentro de ellos este protocolo pueden usarlo para conectar con toda seguridad a una red privada como un cliente de acceso remoto usando una red publica como Internet.

Una característica importante en el uso del PPTP es su soporte para VPN. La mejor parte de esta característica es que soporta VPN`s sobre public-switched telephone networks (PSTNs) que son los comúnmente llamados accesos telefónicos a redes.

Usando PPTP una compañía puede reducir en un gran porcentaje el coste de distribución de una red extensa, la solución del acceso remoto para usuarios en continuo desplazamiento porque proporciona seguridad y comunicaciones encriptadas sobre estructuras de área de trabajo existentes como PSTNs o Internet.

 

Distribución Standard del PPTP
En la práctica general hay normalmente tres ordenadores involucrados en una distribución:

NOTA: El servidor de acceso a la red es opcional, y no es necesario para la distribución PPTP. En la distribución normal quizás, están presentes.

En una distribución típica de PPTP comienza por un PC remoto o portátil que será el cliente PPTP. Este cliente PPTP necesita acceso a la red privada (private network) utilizando un ISP (internet service provider). Los clientes que usan WindowsNT Server o Workstation como S.O. usaran el Dial-up networking y el protocolo PPP para conectar a su ISP. Son también conocidos como Front-End Processors (FEP`s) o Point-Of-Presence servers (POP`s). Una vez conectados, el cliente tiene la capacidad de extraer datos de Internet. Los "network access servers" usan el protocolo TCP/IP para el mantenimiento de todo el tráfico.

Después que el cliente ha hecho la conexión PPP inicial al ISP, la segunda llamada Dial-up es hecha a través de la conexión PPP ya establecida. Los datos enviados usando la segunda conexión son en forma de datagramas IP que contienen paquetes PPP. Es la segunda llamada la que crea la conexión VPN a un servidor PPTP en la red privada de la compañía. Esto es llamado un TUNEL.

El Tunneling es el proceso de intercambio de datos de un ordenador en una red privada de trabajo enrutándolos sobre otra red. Los otros enrutamientos de la otra red no pueden acceder porque esta en la red privada. Sin embargo, el tunneling activa el enrutamiento de la red para transmitir el paquete a un ordenador intermediario, como un server PPTP .Este server PPTP esta conectado a ambas, a la red privada de la compañía y a la red de enrutamiento, que en este caso es Internet. Ambos ,el cliente PPTP y el server PPTP usan el tunneling para transmitir paquetes de forma segura a un ordenador en la red privada.

Cuando el server PPTP recibe un paquete de la red de enrutamiento (Internet) lo envía a través de la red privada hasta el ordenador de destino. El server PPTP hace esto procesando el paquete PPTP para obtener el nombre del ordenador de la red privada o la información de la dirección que esta encapsulada en el paquete PPP.

NOTA: El paquete PPP encapsulado puede contener datos multi-protocolo como TCP/IP,IPX/SPX o NetBEUI.Debido a que el servidor PPTP esta configurado para comunicar a través de la red privada usando protocolos de esta red privada ,es capaz de entender Multi-Protocolos.

PPTP encapsula el encriptado y comprimido paquete PPP en datagramas IP para su transmisión a través de Internet. Estos datagramas IP son enrutados a través de Internet como un paquete PPP y después son desencriptados usando el protocolo de red de la red privada. Como mencionamos antes, los protocolos soportados por el PPTP. son...TCP/IP, IPX/SPX y NetBEUI.

 

PPTP Clients
Un ordenador que es capaz de usar el protocolo PPTP puede conectarse a un servidor PPTP de dos maneras diferentes:

Los clientes PPTP que quieran usar un ISP deben estar perfectamente configurados con un módem y un dispositivo VPN para hacer las pertinentes conexiones al ISP y al server PPTP .La primera conexión es dial-up usando el protocolo PPP a través del módem a un ISP. La segunda conexión requiere la primera conexión porque el túnel entre el dispositivo VPN es establecido usando el módem y las conexiones PPP a Internet.

La excepción a estos dos procesos de conexión es usar PPTP para crear una VPN entre ordenadores físicamente conectados a una LAN. En este escenario, el cliente esta de hecho conectado a una red y solo usa dial-up networking con un dispositivo VPN para crear la conexión a un server PPTP en la LAN.

Los paquetes PPTP remotos de un cliente PPTP y una LAN local PPTP son procesados de diferente manera. Un paquete PPTP de un cliente remoto es puesto en el dispositivo de telecomunicación de medio físico, mientras que el paquete PPTP de la LAN PPTP es puesto en el adaptador de red de medio físico.

 

Arquitectura PPTP
La siguiente área expone la arquitectura del PPTP sobre WindowsNT server 4.0 y NT Workstation 4.0. La siguiente sección abarca:

Vista por encima de la arquitectura:
La comunicación segura que es establecida usando PPTP involucra tres procesos, cada uno de los cuales requiere la completa realización del proceso anterior. Ahora explicaremos estos procesos y como funcionan:

  1. Conexión y Comunicación PPTP: Un cliente PPTP utiliza PPP para conectarse a un ISP usando una línea telefónica normal o una línea RDSI. Esta conexión usa el protocolo PPP para establecer la conexión y encriptar los paquetes de datos.
  2. Control de Conexión PPTP: Usando la conexión a Internet establecida por el protocolo PPP, el PPTP crea una conexión controlada del cliente PPTP al server PPTP en Internet. Esta conexión usa TCP para establecer la comunicación y esta llamada PPTP Tunnel.
  3. Tunneling de datos PPTP: El protocolo PPTP crea datagramas IP conteniendo paquetes PPP encriptados que son enviados a través del Tunnel PPTP al PPTP server. El server PPTP desensambla los datagramas IP y desencripta los paquetes PPP, y los enrutamientos los paquetes desencriptados a la red privada.

PPP Protocol:
No trataremos información profunda sobre el PPP. sino sobre el papel que juega el PPP en el medio PPTP. El PPP es un protocolo de acceso remoto usado por el PPTP para enviar datos a través de redes basadas en TCP/IP. El PPP encapsula paquetes IP, IPX y NetBEUI entre marcos PPP y envía los paquetes encapsulados creando un link point-to-point entre los ordenadores de origen y destino.

Muchas de las sesiones PPTP comienzan con la llamada de un cliente y un ISP. El protocolo PPP es usado para crear la conexión entre el cliente y el servidor de acceso a la red y presenta las siguientes funciones:

  1. Establece y termina la conexión física. El protocolo PPP usa una secuencia definida en el RFC 1661 para establecer y mantener la conexión entre dos ordenadores remotos
  2. Autentifica usuarios. Los clientes PPTP son autentificados usando PPP. Limpieza de texto, encriptado o MS-CHAP pueden ser usados por el protocolo PPP.
  3. Crea datagramas PPP. Que contienen paquetes IPX,NetBEUI o TCP/IP

 

Control de conexion PPTP
El protocolo PPTP especifica una serie de mensajes que son usados para la sesión de control. Estos mensajes son enviados entre el cliente PPTP y el servidor PPTP. Los mensajes de control establecidos, mantienen y terminan el Tunnel PPTP. La siguiente lista presenta el control primario de mensajes usados para establecer y mantener la sesión PPTP:

Message Type Purpose
PPTP_START_SESSION_REQUEST Starts Session
PPTP_START_SESSION_REPLY Replies to Start Session Request
PPTP_ECHO_REQUEST Maintains Session
PPTP_ECHO_REPLY Replies to Maintain Session Request
PPTP_WAN_ERROR_NOTIFY Reports an error in the PPP connection
PPTP_SET_LINK_INFO Configures PPTP Client/Server Connection
PPTP_STOP_SESSION_REQUEST Ends Session
PPTP_STOP_SESSION_REPLY Replies to End Session Request

Los mensajes de control son enviados dentro de los paquetes de control en un datagrama TCP. Una conexión TCP es activada entre el cliente PPTP y el server. Este path es usado para enviar y recibir mensajes de control. El datagrama contiene una cabecera PPP, una TCP, un mensaje de control PPTP y sus apropiadas reglas. La construcción es como sigue:

PPP Delivery Header
IP Header
PPTP Control Message
Trailers

 

Transmisión de datos PPTP
Después de que el Tunnel PPTP ha sido creado, los datos del usuario son trasmitidos entre el cliente y el server PPTP. Los datos son enviados en datagramas IP conteniendo paquetes PPP. El datagrama IP es creado usando una versión modificada de la versión de Generic Routing Encapsulation (GRE) protocol (RFC1701-2). La estructura de datagrama IP es:

 

PPP Delivery Header
IP Header
GRE Header
PPP Header
IP Header
TCP Header
Data

Prestando atención a la construcción del paquete, podrás ver como es capaz de ser transmitido a través de Internet desmenuzando las cabeceras. La cabecera de envío del PPP proporciona información necesaria para el datagrama para atravesar Internet. La cabecera GRE es usada para encapsular el paquete PPP sin el datagrama IP. El paquete PPP es creado por RAS. El paquete PPP es encriptado y si es interceptado, será ilegible.

Entendiendo la seguridad PPTP
El PPTP usa la estricta autentificación y encriptacion de seguridad disponible por los ordenadores que corren RAS bajo WindowsNT Server v4.0.El PPTP puede también proteger el server PPTP y la red privada ignorando todo excepto el trafico PPTP. A pesar de esta seguridad es fácil configurar un firewall para permitir al PPTP acceder a la red interna.

Autentificación:
La autentificación inicial en la llamada puede ser requerida por un ISP de servidor de acceso a la red. Un servidor PPTP es un gateway a tu red, y necesita la base estándar de "login" de WindowsNT. Todos los clientes PPTP deben proporcionar un login y password. De todas formas, el login de acceso remoto usando un PC bajo NT server o Workstation es tan seguro como hacer un login en un PC conectado a una LAN (teóricamente). La autentificación de los clientes remotos PPTP es hecha usando los mismos métodos de autentificación PPP usados para cualquier cliente RAS llamando directamente en un NT Server. Porque esto, soporta completamente MS-CHAP.

Control de acceso:
Después del "auth", todo el acceso a la LAN privada continúa usando las estructuras de seguridad basadas en NT. El acceso a recursos en devices NTFS o otros recursos de la red requieren los permisos correctos, tal como si estuvieses conectado dentro de la LAN.

Encriptacion de los datos:
Para la encriptación de datos, el PPTP usa el proceso de encriptación RAS "shared secret". Es referido a un "shared-secret" porque ambos terminan la conexión "sharing" the encryption key. Bajo la implentanción del RAS de MS, el secreto "shared" es el pass del usuario (Otros métodos incluyen llave pública de encriptación. El PPTP usa la encriptación PPP y los métodos de compresión PPP. El CCP (Compression Control Protocol es usado para negociar la encriptación usada. El nombre de usuario y el passwd esta disponible al server y sustituida por el cliente. Una llave de encriptación es generada usando una mínima parte del passwd situados en cliente y server. El RSA RC4 standard es usado para crear estos 40 bits (128 dentro de EEUU y Canada) de llave de sesión basada en el passwd de un cliente. Esta llave es después usada para encriptar y desencriptar todos los datos intercambiados entre el server PPTP y el cliente. Los datos en los paquetes PPP son encriptados. El paquete PPP que contiene un bloque de datos encriptados es después metido en un largo datagrama IP para su ruteo.

Flitrado de paquetes PPTP:
La seguridad de la red contra intrusos puede ser mejorada activando el flitro PPTP en el server PPTP. Cuando el flitro PPTP esta activado, el server PPTP en la red privada acepta y rutea solo paquetes PPTP. Esto previene de todos los tipos de paquetes de la red entera. El tráfico PPTP usa el puerto 1723.

PPTP y el Registro:
La siguiente lista pertenece a un registro de llaves de WindowsNT que el usuario define y puede ser encontrada en:

KEY: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RASPPTPE\

Parameters\Configuration

Values: AuthenticateIncomingCalls
DataType = REG_WORD
Range = 0 - 1
Default = 0

Pon este valor a 1 para forzar al PPTP a aceptar llamadas solo de IP`s listadas en el valor de registros del PeerClientIPAddresses. Si el apartado AuthenticateIncomingCalls esta puesto a 1 y no hay direcciones IP en el PeerClientIPAddresses, los no clientes no serán capaces de conectar

PeerClientIPAddresses
DataType = REG_MULTI_SZ
Range = The format is a valid IP address

Este parámetro es una lista de direcciones IP que el server aceptara como conexiones:

KEY: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<adapter name>\

Parameters\Tcpip

Values: DontAddDefaultGateway
DataType = REG_WORD
Range = 0 - 1
Default = 1

Cuando el PPTP esta instalado, una ruta por defecto es hecha por cada adaptador de la LAN. Este parámetro desactivara la ruta de defecto en el adaptador de LAN.

PPTPFiltering

Key: <adaptername.\Paramters\tcpip

ValueType: REG_WORD
Valid Range: 0 - 1
Default = 0

Este parámetro controla si el filtro PPTP esta activado o no.

PPTPTcpMaxDataRetransmissions

Key: Tcpip\Parameters

ValueType: REG_WORD - Number of times to retransmit a PPTP packet.
Valid Range: 0 - 0xFFFFFFFF
Default: 9

Esto controla cuantas veces el PPTP retransmitirá un paquete.

Revisión Especial:
En un último vistazo al texto. Una "bandera" ha sido descubierta en la arquitectura PPTP. Si tu mandas una petición de inicio de sesión de PPTP con una longitud de paquete invalida en la cabecera del paquete PPTP dejara colgado una maquina NT y causara un "CoreDump" al server NT.



text by: NeonSurge@hotmail.com 

Rhino9 Publications http://www.rhino9.org