Tener una VPN siempre es bueno, es bueno porque os permitirá navegar por wifis públicas con una garantía, es bueno porque dispondréis siempre que lo necesitéis de una IP fíja para acceder a servicios especiales.
Pero realmente lo bueno no es tener una VPN, es que tengáis vuestra propia VPN en vuestro propio servidor, sólo de esta forma tendréis un control adecuado y total.
Muchas veces vemos aplicaciones que nos ofrecen una VPN para no exponer nuestros datos, pero ¿quien nos da esas VPNs?, ¿podemos confiar?, como os he comentado hace unos segundos, lo mejor es crear vuestra propia VPN.
En el programa de hoy vamos a hablar de OpenVPN, una de las opciones de VPN más extendidas, voy a mostraros como configurar un servidor con OpenVPN y como conectaros desde vuestro PC o teléfono y usar esa VPN.
Para crear vuestra propia VPN vais a necesitar un servidor en un CPD, lo optimo será un cloud, pues es lo más barato, si es que sólo vais a utilizar ese servidor para OpenVPN. Obviamente si estamos hablando de 10.000 usuarios tendremos que escalar la solución.
En mi caso para este ejercicio he desplegado un servidor con Ubuntu, aunque podría ser cualquier cosa.
Lo primero será instalar openvpn y easy-rsa tras actualizar la base de datos de paquetes y actualizar el sistema.
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install openvpn easy-rsa
Una vez instalado el software tendremos que generar nuestros certificados. Lo primero será crear las plantillas, esto lo haremos creando un directorio con ellas usando el comando make-cadir en el directorio openvpn-ca, aunque puede llevar cualquier otro nombre.
make-cadir ~/openvpn-ca
Realmente make-cadir lo que hace es crear un directorio con enlaces simbólicos a /usr/share/easy-rsa/, no hace otra magia, hay gente que prefiere trabajar directamente en ese directorio, realmente es lo mismo.
Otra cosa extra que podemos hacer además de crear ese directorio es modificar el fichero vars para que los datos por defecto sean los nuestros, eso es cambiando estas líneas:
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="
[email protected]"
export KEY_OU="MyOrganizationalUnit"
# X509 Subject Field
export KEY_NAME="EasyRSA"
Por estas, o similares, las que correspondan:
export KEY_COUNTRY="ES"
export KEY_PROVINCE="MADRID"
export KEY_CITY="Madrid"
export KEY_ORG="Tecnocratica"
export KEY_EMAIL="
[email protected]"
export KEY_OU="Dpto Tecnico"
# X509 Subject Field
export KEY_NAME="mi.servidor.com"
Una vez creada la plantilla vamos a proceder a crear el CA
source vars
./clean-all
./build-ca
Y ya tenemos nuestro CA creado dentro de nuestro directorio keys.
Ahora procedemos a generar el certificado del servidor, también una llave Diffie-Hellman para el intercambio de llaves y generamos la firma HMAC para verificar el TLS del servidor:
./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key
En el directorio openvpn-ca/keys tendremos los siguientes ficheros:
ubuntu@openvpn:~/openvpn-ca/keys$ ls -l
total 56
-rw-rw-r-- 1 ubuntu ubuntu 5700 mar 24 19:49 01.pem
-rw-rw-r-- 1 ubuntu ubuntu 1801 mar 24 19:47 ca.crt
-rw------- 1 ubuntu ubuntu 1704 mar 24 19:47 ca.key
-rw-rw-r-- 1 ubuntu ubuntu 424 mar 24 19:53 dh2048.pem
-rw-rw-r-- 1 ubuntu ubuntu 145 mar 24 19:49 index.txt
-rw-rw-r-- 1 ubuntu ubuntu 21 mar 24 19:49 index.txt.attr
-rw-rw-r-- 1 ubuntu ubuntu 0 mar 24 19:47 index.txt.old
-rw-rw-r-- 1 ubuntu ubuntu 3 mar 24 19:49 serial
-rw-rw-r-- 1 ubuntu ubuntu 3 mar 24 19:47 serial.old
-rw-rw-r-- 1 ubuntu ubuntu 5700 mar 24 19:49 server.crt
-rw-rw-r-- 1 ubuntu ubuntu 1094 mar 24 19:49 serv...