18 junio 2010

Configuración de servidor VPN PPTP con Linux y Android

Con esta entrada pretendo hacer una pequeña guía para configurar una VPN PPTP (Point to Point Tunneling Protocol) con un servidor Linux y un terminal móvil Android como cliente.

La instalación es muy sencilla y apenas serán necesarios unos cuantos pasos para tenerla funcionando rápidamente.

Lo primero es descargar el tarball de la aplicación Poptop en su última versión 1.3.4 para posteriormente hacer la instalación tal y como indica el  archivo INSTALL (típico ./configure, make, make install). En mi caso para una Fedora, genero el rpm y luego lo instalo, por eso de ser más elegante...

mkdir -p ~/rpmbuild/SOURCES/
cd ~/rpmbuild/SOURCES/
wget "http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz?use_mirror=kent"
tar -zxvf pptpd-1.3.4.tar.gz
cd pptpd-1.3.4
bash makepackage
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/pptpd-1.3.4-1.fc12.x86_64.rpm

Si todo va bien, sea así o de otra forma, los archivos pptpd y pptpd.conf y otros cuantos deberían quedar instalados en el sistema:

/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/rc.d/init.d/pptpd
/usr/bin/vpnstats.pl
/usr/bin/vpnuser
/usr/lib64/pptpd/pptpd-logwtmp.so
/usr/sbin/bcrelay
/usr/sbin/pptp-portslave
/usr/sbin/pptpctrl
/usr/sbin/pptpd
...

Ahora es necesario modificar dos archivos de configuración, el del servicio y el de usuarios.

El /etc/pptpd.conf es el del demonio. Ojo que he puesto las DNS de Google y el rango de IPs 192.168.2.100-151 que eran los que a mí me venían bien.

lock
name *
proxyarp
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
deflate 0
auth
-chap
-mschap
+mschap-v2
mppe stateless
mppc
ms-ignore-domain
chap-secrets /etc/ppp/chap-secrets
ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1450
mru 1450
debug
localip 192.168.2.100
remoteip 192.168.2.101-151

Una vez guardado el archivo, sobre el fichero de usuarios y contraseñas: /etc/ppp/chap-secrets creo dos usuarios, aramosf y akelarre

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
aramosf         *       Gold3nNYC                *
akelarre        *       Ch0riz0fr1to             *

Ya solo queda configurar el cliente Android con cuatro sencillos pasos:

1.- En Ajustes, Con. inalámbricas y redes pulsar sobre "Configuración de red VPN"


2.- Añadir VPN
3.- Añadir red VPN "PPTP"



4.- En esta parte especificar un nombre que queramos, la dirección IP de nuestro servidor Linux e importante, deshabilitar la encriptación.



Una vez guardada la configuración, desde el mismo menú "Configuración de red VPN", aparecerá "Redes VPN" con el nombre que se haya asignado y al pulsar sobre la red pedirá usuario y contraseña, que hemos de introducir en base a los que se especificasen en el archivo chap-secrets.


Cuando conecte la VPN el dispositivo tendrá asignada alguna de las direcciones IP remotas (en esta configuración dentro del rango 192.168.2.101-151) y perderá conexión con Internet ya que actualmente el terminal no soporta un enrutado más complejo.

Otra consideración importante es que no se puede habilitar el cifrado MPEE (Microsoft Point-to-Point Encryption) salvo que se modifiquen los binarios del PPP, para lo que hará falta móviles con acceso para el usuario root y sustituirlos por los siguientes archivos: http://melko.hiljanen.com/~qvr/android/ppp/

6 comments :

Unknown dijo...

Se me ha caído un mito, Dab utilizando fedora, yo que lo creía usuario de Debian, Slackware, Gentoo o LFS, :)

Gracias por la información para crear el túnelaunque por el momento no lo voy a poner en prueba. A ver si hay suerte en un futuro próximo.

NaCl u2

Josep dijo...

Entonces si no activamos la encriptacion todo el trafico va en claro, o se refiere a algun tipo en concreto de encriptacion?

Alejandro Ramos dijo...

@Rigolox: Creo que no te has dejado ubuntu de casualidad!! :)) A mi me da lo mismo una que otra... son todas lo mismo. Mientras se listen los procesos con ps y no con tasklist... ;)

Alejandro Ramos dijo...

@Josep: me temo que si no se usa MPEE el tráfico va en claro. De todas formas PPTP incluso con MPEE no es considerado demasiado seguro.

Anónimo dijo...

Hola, muy interesante el artículo, pero mi duda es que en su día leí que PPTP era muy vulnerable, ¿sigue siendo así o se ha corregido? Gracias de antemano, saludos.

LimeRacer dijo...

Muchísimas gracias por el post!!! Genial, como siempre.

Por cierto, me encanta el nombre de la VPN :D