En este apunte técnico voy a describir cómo montar un VPN Server casero basado en OpenVPN que sigue siendo la mejor solución hoy en día, a pesar de que es más complejo de implementar. El objetivo es poder tener acceso a los servicios internos de mi red casera desde internet.

 
bvSrAN5aY53Ewcw9SKU4ovo6qI7mu4nlR9GiAFqsWSG0FCzNr2BL4vtRAk0nLMB2qAg=w300
 

  • OpenVPN es la mejor solución VPN a día de hoy. Es fiable, rápido y lo más importante, muy seguro, incluso contra organismos que dicen comprometieron otros protocolos. Como contrapartida, su configuración es más compleja y tiene el inconveniente de necesitar un software adicional en los clientes.
  • IKEv2 también es un protocolo rápido y seguro si se usa la implementación open source. Para lo usuarios móviles tiene la ventaja (sobre openvpn) de reconectarse. Es la única solución para usuarios de Blackberry.
  • SSTP ofrece las mismas ventajas que OpenVPN pero solo para entornos Windows así que a olvidarse, creado por Microsoft y propietario.
  • PPTP es muy inseguro, incluso Microsoft que participó en su desarrollo, lo ha abandonado. Tiene la ventaja de que es muy fácil de implementar y tiene compatibildiad en varias plataformas pero deberías evitarlo, una alternativa rápida es el siguiente: L2PT/IPsec mismas ventajas pero más seguro.
  • L2TP/IPsec es una buena solucíon VPN para darle un uso no crítico y un montaje rápido sin software adicional, pero ojo! se comenta en los mentideros que también ha sido comprometido.

 

Servidor

Instalación del Software

 

Infraestructura PKI

Es la primera vez que instalo openvpn así que necesito crear mi propia infraestructura PKI desde el principio. PKI significa Public Key Infrastructure y es el conjunto de recursos necesarios para crear certificados digitales. Dejo aquí y aquí un par de enlaces interesantes donde esta todo muy bien explicado. A continuación un registro de mi instalación:

Creo la clave para cada los usuarios que se conectarán a este VPN Server, empiezo por la mía:

Genero la Hash-based Message Authentication Code (HMAC):

Los ficheros quedan en el directorio keys:

  • ca.crt: Certificado público de la Autoridad Certificadora (CA) que tendré que usar tanto en el servidor como en todos los clientes.
  • servidor.dominio.com.crt y servidor.dominio.com.key: Certificado público y privado del servidor que solo necesito usar en el Linux, no en los clientes.
  • luis.crt y luis.key: Certificados público y privado del cliente que se creó con ./build-key luis y que se debe usar en el dispositivo de dicho usuario.

 

OpenVPN

Muevo el directorio creado con easy-rsa a /etc/openvpn

Edito y preparo el fichero de configuración que llamaré luispaVPN: /etc/openvpn/luispaVPN.conf

  • Arranco el servicio con systemd, compruebo que funciona y lo habilito para que arranque durante el boot. Dado que el nombre del fichero es luispaVPN.conf entonces utilizo “luispaVPN” como nombre del servicio.

 

Clientes

MacOSX

Para conectar desde un MacOSX necesitas instalar un cliente especial. Uno muy popular es Tunnelblick:

  • Descarga e instala el cliente OpenVPN para MacOSX: Tunnelblick
  • Ejecutar Tunnelblick

El propio programa te guiará para que puedas crearte un fichero de configuración. Recuerda que tienes que hacerle llegar los ficheros ca.crt, luis.crt y luis.key.