OpenVPN es un producto que nos permite crear redes privadas virtuales (VPNs), el tráfico entre los nodos de esas redes se transmite cifrado en una conexión ssl. El servidor puede verificar que los clientes que se conectan sean clientes autorizados gracias al uso de certificados. De la misma manera los clientes pueden verificar que se están comunicando con el servidor real y no con otro equipo que pretende serlo.
Las VPNs son útiles para acceder a lugares protegidos por firewalls o que estén atrás de un router que implemente NAT de forma segura, esto las hace ideales para que los empleados puedan acceder a equipos en sus lugares de trabajo de forma segura.
Este documento será una guía muy breve de los primeros pasos para instalar openvpn, para aprender configuraciones más avanzadas es recomendable leer la documentación en el documentación sitio oficial de OpenVPN
Simplemente es necesario instalar el paquete openvpn.
apt-get update apt-get install openvpn
Como siempre este paquete también puede ser instalado desde el entorno gráfico con Synaptic
OpenVPN asigna una dirección IP a cada nodo de la red, tendremos que elegir una red privada para que OpenVPN asigne direcciones dentro de esa red.
OpenVPN permite la utilización de udp o tcp como protocolos de la capa de transporte para el tráfico de la red privada virtual, dependiendo de las características de nuestra red debemos seleccionar el más apropiado (en general cualquiera de los dos funciona bien).
Es posible permitir o no permitir que los clientes puedan comunicarse entre si a través de la VPN, así que tendremos que elegir una de estas opciones.
OpenVPN utiliza certificados para identificar a los clientes y el servidor, antes de empezar a configurar debemos crearlos.
Debemos establecer una PKI (Public Key Infrastructure o Infraestructura de Claves Públicas), una PKI consiste de:
Los clientes y el servidor autentican a otros hosts verificando si el certificado que envían fue firmado por la CA, luego una vez autenticado el certificado verifican el resto de la información contenida en él.
Para generar las claves privadas, públicas y la CA utilizaremos una serie de scripts provistos por OpenVPN. Estos scripts se encuentran en /usr/share/doc/openvpn/examples/easy-rsa/.
Primero debemos inicializar el entorno de los scripts cargando las variables guardadas en vars con el shell
cd /usr/share/doc/openvpn/examples/easy-rsa/ . vars
Podemos borrar claves antiguas con
./clean-all
./build-ca
Este script nos pide varios datos podemos dejar los valores por defecto para todos los que los tengan o poner los nuestros. El único dato obligatorio es Common Name este valor debe ser ingresado manualmente. Por ejemplo:
Country Name (2 letter code) [KG]:AR State or Province Name (full name) [NA]:Buenos Aires Locality Name (eg, city) [BISHKEK]:Florencio Varela Organization Name (eg, company) [OpenVPN-TEST]:UNLP Organizational Unit Name (eg, section) []:Lihuen Common Name (eg, your name or your server's hostname) []:Lihuen-CA Email Address [me@myhost.mydomain]:
./build-key-server
Nos pedirá los mismos datos que antes, en Common Name debemos ingresar la palabra server
Nos pide una contraseña (challenge password) que podemos dejar en blanco si no queremos que nos la pida al iniciar.
Luego hará 2 preguntas a las que debemos contestar y:
Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y
==Generamos certificados para los clientes Generaremos 2 certificados, notar que hay que para cada cliente hay que elegir un nombre único en Common Name, por ejemplo cliente1, cliente2, cliente3, etc...
./build-key cliente1 ./build-key cliente2
Debemos completar los datos pedidos por este script de forma análoga que con el servidor, sólo que elegimos un Common Name distinto para identificar a cada cliente.