Crear nuestra propia VPN en Ubuntu

Ya hace unos días hablamos de cómo configurar una IP estática en Ubuntu (y MacOS de regalo). Esto, como ya comenté en el artículo en cuestión, es necesario para ciertos servicios, como el que hoy nos atañe: Crear nuestra propia VPN en Ubuntu. Además, el puerto PPTP (1723 TCP) debe estar abierto. Como también necesitamos tener abierto otro puerto que soporte el protocolo GRE, lo mejor es usar la regla para PPTP del router. Manualmente no podemos realizar esta operación, pero las reglas predefinidas sí la realizan.

Una vez con la configuración previa lista, tocará irse al terminal para descargar e instalar el paquete PPTP, con permisos de administrador como para toda instalación. Tal que así:

sudo apt-get install pptpd

Como ya sabéis sudo nos permite realizar una instrucción con permisos de administrador (la primera vez que lo usas en el terminal te pedirá la contraseña). Cuando comience la instalación también os preguntará si queréis instalar el paquete bcrelay, pulsad la S para confirmar y vía.

Cuando termine la instalación, se lanzará de forma automática el servidor PPTP. Ahora toca meter mano en la configuración, con el editor de texto Nano.

sudo nano /etc/pptpd.conf

Al final de todo tenéis que añadir las líneas localip seguida de la ip que queráis tener como servidor local en la VPN (ojo, poned una que esté fuera del rango de IP locales, para evitar conflictos) y remoteip seguido del rango de direcciones que usaremos para asignar a los clientes, podéis poner un rango o varias separadas por comas. Aquí un ejemplo:

localip 10.11.0.1
remoteip 10.11.0.100-150,10.10.10.245

Ya tenéis un ejemplo con ambas opciones. Tras esto tocará añadir usuarios a nuestra VPN, configurando el archivo chap-secrets.

sudo nano /etc/ppp/chap-secrets

El formato es el siguiente, con los elementos separados por tabulaciones: nombre_usuario pptpd password *. El primero es el nombre de usuario (ponéis el que queráis darle a ese usuario en la red), lo siguiente el nombre del servidor (en este caso pptpd), la contraseña (poned algo seguro, no abc123) y la ip (un *, que ya nos ocuparemos de eso después).

En fin, tras esto, y como ya he dicho, toca ocuparse de las ip, concretamente configurando el cortafuegos. Como en todo lo primero es que nuestro amigo «el nano» nos abra el archivo rc.local:

sudo nano rc.local

En este caso vamos a la penúltima línea (justo antes de exit 0) del script y añadimos:

iptables -t nat -A POSTROUTING -s 10.11.0.0/24 -o eth0 -j MASQUERADE

El argumento 10.11.0.0/24 es el rango de direcciones que elegimos cuando estábamos configurando PPTPD, si pusiste otro configúralo en consecuencia. El argumento eth0 es el nombre de la tarjeta de red, asegúrate de poner la tuya. Guarda cambios y sigue porque ahora tocará editar otro archivo, el del ip forwarding:

sudo nano /etc/sysctl.conf

Ahí busca la línea comentada #net.ipv4.ip_forward=1 y quítale el # para descomentarla. Guarda cambios y sal.

Y con todo esto nuestro servidor de VPN en Ubuntu está configurado. Ahora sólo te queda configurar los clientes y ya tienes tu propia VPN creada, para poder comunicarte con seguridad con sus miembros, de forma que vuestros datos no estén expuestos a espionajes varios (eso sí, recuerda que toda seguridad no vale de nada si la contraseña de alguno de los usuarios es revelada, la seguridad perfecta no existe, ni existirá mientras haya un factor humano)

Servicios VPN: PPTP vs OpenVPN

Conforme nuestros datos en la red son más importantes, y conforme se elaboran nuevas leyes draconianas para acabar no solo con nuestro anonimato, sino también con nuestra privacidad en internet, los servicios que aumenten la seguridad se confidencialidad de nuestros datos se tornan más populares e importantes.

Las redes VPN pasaron al primer plano de la prensa en España durante los debates sobre la ley Sinde-Wert, siendo la forma más fiable de asegurar la confidencialidad de nuestras comunicaciones. Si bien las VPN no son un concepto nuevo, si ha sido el último año y medio el periodo donde han logrado una mayor popularidad y difusión. En una VPN se utilizan varias medidas de seguridad:

  • Autentificación: El usuario que esté al otro lado debe estar autentificado en la red, sabemos a quién le enviamos el mensaje.
  • Integridad: Se usan algoritmos hash como SHA o MD5 para asegurar la integridad de los datos, que no han sido modificados entre el punto de salida y el de llegada.
  • Confidencialidad: Se utilizan algoritmos de clave asimétrica, como AES, para asegurar que sólo puedan ser leídos por el emisor y el receptor, y no por nadie que los intercepte en medio de la comunicación.
  • No repudio: El mensaje tiene que ir firmado, para el que firmante no pueda negar que fue él quien lo envió

Existen varios tipos de VPN (over LAN, tunnelig, punto a punto…), pero eso sería materia suficiente para otra entrada.

¿Y qué servicio de VPN es mejor? Los más populares son PPTP y OpenVPN, cada uno con sus ventajas e inconvenientes. PPTP sobre todo ofrece velocidad mayor a la de OpenVPN, una gran facilidad de configuración y compatibilidad con sistemas operativos de móvil y tablet (Andorid, iOS), pero por contra esta velocidad se gana por reducir las medidas de seguridad (encripta los mensajes sólo en 128 bits y no utiliza certificados digitale).

Por su parte OpenVPN ofrece la mayor estabilidad, encriptación en 256 bits y autentificación con certificados digitales, es un poco más complejo en configuración que PPTP y un poco más lento, pero tampoco en exceso, su configuración es fácil y su rendimiento bueno. Su verdadero contra es que no está disponbile para sistemas operativos móviles.(nota: esto era así cuando escribí el artículo, a día de hoy OpenVPN existe, al menos, para Android y funciona muy bien)

En resumen, la pérdida de velocidad y el aumento de complejidad de OpenVPN no son unos handicaps suficientemente grandes para decantar la balanza hacia PPTP con su menor seguridad. Para equipos de escritorio OpenVPN es la mejor solución, siendo PPTP la mejor opción cuando se trata de dispositivos móviles.