22 septiembre 2011

Configuración de servidor VPN PPTP para iOS sobre Linux

Cuando estuve este verano en la BlackHat de Las Vegas, de la que por cierto tengo pendiente contaros mis impresiones, monté una VPN basada en PPTP, como ya hiciera el año pasado para Android, solo que en esta ocasión, iba a ser usada con el iPhone e iPad que me acompañaban con iOS4

Seguí los mismos pasos que en la instalación anterior, pero hubo que modificar alguna cosa para que aquello funcionase.

Es imprescindible saber que existen problemas de compatibilidad y licenciamiento entre las versiones de pptpd, pppd y el kernel de linux para que todas ellas soporten el protocolo punto a punto de Microsoft (MPPE), que se requiere para cifrar los datos y que todo esto funcione como debe.

Hay versiones que no son compatibles entre sí, por lo que hay que descargar el código fuente, parchearlas y finalmente instalarlas. En mi caso uso Centos 5.7 con los siguientes paquetes instalados que no requieren ser modificados:

[root@tutu tmp]# rpm -qa |egrep "kernel|ppp"
kernel-2.6.18-274.el5
ppp-2.4.4-2.el5

Además de tener cargados los correspondientes módulos del kernel:
[root@tutu ~]# lsmod | grep mppe
ppp_mppe               10437  0
ppp_generic            30036  2 ppp_mppe,ppp_async

Lo primero que hice fue instalar poptop, descargándolo de su página oficial y creando un RPM:
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"
tar -zxvf pptpd-1.3.4.tar.gz
chown -R rpm:rpm pptpd-1.3.4
cd pptpd-1.3.4
bash makepackage
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/pptpd-1.3.4-1.fc12.x86_64.rpm
Una vez instalado, modifiqué tres ficheros de configuración tal que así:
Fichero: /etc/pptpd.conf
option /etc/ppp/options.pptpd
localip 192.168.2.100
remoteip 192.168.2.101-151
Fichero: /etc/ppp/options.pptpd. 
lock
name *
proxyarp
deflate 0
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
mtu 1450
mru 1450
nobsdcomp
novj
novjccomp
nologfd
nopcomp
noaccomp
debug
Ojo, que esto no se puede incluir en el fichero anterior, uno no está añadiendo el contenido del otro, aquí se puede cambiar los DNS (8.8.8.8 y 8.8.4.4) por los que más rabia os den.
Fichero de usuarios y contraseñas: /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
aramosf         *       G0giAntS!            *
En cuanto al móvil es muy sencillo. Tan solo hay que ir a: Ajustes->General->Red->Vpn y añadir un nombre a la configuración, la dirección IP de nuestro servidor Linux, el usuario y la contraseña, indicar que use la "máxima" encriptación y que envíe todo el tráfico por la VPN. Tal y como muestra la siguiente imagen de ejemplo:

4 comments :

Qwglym dijo...

¿No es pptp un poco inseguro para hacer VPNs? Aunque supongo que al conectarte desde un teléfono móvil habrá limitaciones que impedirán usar otra cosa...
Saludos...

Alejandro Ramos dijo...

Como muchas otras cosas, según la contraseña que pongas :-)

Caiser dijo...

Pies da confianza, sobretodo para poder bajarse el correo con la wifi del McDonalds

José Manuel Márquez dijo...

Añado, por si es de interés, la información necesaria para autenticar los usuarios a través de MS Active Directory.

http://poptop.sourceforge.net/dox/replacing-windows-pptp-with-linux-howto.phtml


Un saludo