VPN con el protocolo PPTP

Escrito por Rafa Morales el 19 Noviembre 2013
Linux

PPTP (Point to Point Tunneling Protocol), es un protocolo de comunicaciones desarrollado por Microsoft, U.S. Robotics, Ascend Communications, 3Com/Primary Access, ECI Telematics conocidas colectivamente como PPTP Forum, para implementar redes privadas virtuales o VPN. 

La seguridad de PPTP ha sido completamente rota, utilizando un ataque "Man in the middle" mientras se intercambian las claves en el establecimiento de la conexión. Podéis aprender a hacerlo en el siguiente enlace:

http://www.elladodelmal.com/2010/07/crackear-conexiones-vpn-pptp-con-ms.html

Para comparar las características de PPTP con el resto de protocolos de conexión, podéis consultar el siguiente enlace:

http://es.giganews.com/vyprvpn/compare-vpn-protocols.html

 

Lo primero será instalar el paquete "pptpd":

apt-get install pptpd

 

El servidor utilizará los puertos 1723 TCP y 47 GRE, que tendremos que tener en cuenta a la hora de configurar nuestro cortafuegos:

iptables --append INPUT --protocol 47 --jump ACCEPT
iptables --append INPUT --protocol tcp --match tcp \
   --destination-port 1723 --jump ACCEPT

 

Tras la instalación comenzamos a configurar nuestro servidor de VPNs con PPTP.

 

Editamos el fichero /etc/pptpd.conf, para que nos quede de la siguiente manera:

ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options
localip 192.168.1.1
remoteip 192.168.1.100-150

Donde localip será la IP del servidor VPN y remoteip será el rango de IPs que se le asignarán a los clientes en el momento de la conexión.

A continuación editamos el archivo /etc/ppp/pptpd-options, señalado en nuestro archivo anterior /etc/pptpd.conf:

name VPN-PPTP
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
nodefaultroute
lock
  • La línea name será el nombre de nuestra VPN, que nos servirá más adelante con la autenticación. 
  • Las opciones con require establecerán los mecanismos de autenticación que utilice la VPN. 
  • La línea ms-dns son los servidores DNS que serán asignados al cliente. 
  • La línea proxyarp permite que el servidor haga de proxy para los paquetes arp entre la red remota y la local.

Continuamos configurando las cuentas de los clientes, para esto editamos el archivo /etc/ppp/chap-secrets.

cliente1  VPN-PPTP  clave-del-cliente1  *
  • cliente1: nombre del usuario.
  • VPN-PPTP: nombre de la VPN que hemos creado en el servidor.
  • clave-del-cliente1: clave del cliente
  • *: dirección IP que se asigna al cliente, con * el servidor la asigna automáticamente desde el rango.

 

Reiniciamos el servicio para que tomen efecto los cambios:

/etc/init.d/pptpd restart

 

Una vez configurado el servidor, sólo tendríamos que lanzar la VPN desde un cliente Windows, o incluso Linux, a la IP pública de nuestra conexión. Para ello podéis echarle un vistazo al siguiente manual:

Cómo configurar una VPN cliente en Windows