OpenVPN: Instalar y configurar un servidor VPN

Una red VPN (Virtual Private Network), es una red cifrada segura. Esto es muy útil a la hora de crear conexiones entre redes que no se ven entre sí, de una manera segura. Es decir, si por ejemplo se quiere tener visibilidad entre la red de casa y la red de trabajo, se puede crear un túnel VPN conectando ambas. De este modo (habilitando las rutas correspondientes) se podría acceder de una red a otra sin problemas. Otro caso en el que se puede utilizar, es para acceder a Internet de una manera segura, por ejemplo, si te conectas a la red wifi de un bar o de un establecimiento del estilo, se puede establecer un túnel VPN contra un servidor de confianza para que todo el tráfico esté cifrado y de este modo, nadie pueda ver los datos.
La herramienta mas utilizada para este tipo de cosas, es OpenVPN. Es una herramienta libre y totalmente gratuita.

Instalación servidor

Instalar openvpn y easy-rsa

Crear el archivo de configuración del servidor vpn

Configuración

Editar el archivo de configuración

Cambiar la clave DH a 4096

Si se quiere redirigir todo el tráfico a través de la VPN, descomentar la siguiente línea (opcional)

Si se quiere forzar el cambio de DNSs descomentar las siguientes líneas (opcional):

También se le puede indicar el nombre con el que levante la interfaz

Un ejemplo de un archivo de configuración de OpenVPN sería:

En el caso de que se quiera dar una IP en concreto a cada cliente, habría que crear una carpeta en /etc/openvpn/ y meter la configuración de cada cliente en ficheros.

Y hay que indicar en el archivo de configuración del servidor donde están las configuraciones de los clientes, y que van a ser exclusivas.

Certificados servidor

Copiar la carpeta de easy-rsa a openvpn

Crear la carpeta de keys

Editar los parámetros para cuando se creen los certificados

Cambiar el nombre por defecto del servidor

Crear el enlace simbolico a la versión de openssl que se quiera

Ahora hay que empezar a crear los certificados para el servidor

Cambiar el entorno

Limpiar todos los certificados existentes por si los hubiese

Crear el CA

Crear los certificados para el servidor openvpn. En este caso se llamarán server.*

Copiar los certificados a la carpeta openvpn

Crear el archivo de establecimiento de claves Diffie-Helman (esto tardará un rato)

Generar la key HMAC

Para utilizar el clr verify, si se tiene en la carpeta keys de easy-rsa, dará problemas de permisos. Por lo tanto lo mejor es pasarla a la carpeta principal de openvpn y crear un enlace simbólico a la carpeta de keys.
Nota: Para que esté este fichero, hay que haber creado previamente la clave de un cliente y borrarlo.

Crear un usuario para forzar el clr

Eliminar el usuario

Para ver el estado de los certificados emitidos, revisar el siguiente archivo:

Habilitar el servicio OpenVPN e iniciarlo

Routing

Habilitar el enrutado en el servidor:

Para que esto sea permanente, hay que editar el archivo sysctl.conf

Y descomentar:

Iptables

Para que el servidor permita el tráfico, hay que añadir ciertas reglas en iptables

Y una vez esto, guardar las reglas para que sean efectivas cuando se reinicie

Cliente

Crear el archivo de configuración

Editar el archivo de configuración y configurar la IP del servidor VPN

Para crear los certificados para el cliente VPN, hay que realizar los mismos pasos que para el servidor pero ahora lo llamaremos client (este nombre puede cambiar dependiendo del nombre que se le quiera dar)

Para añadir los certificados, hay 2 formas. Una es como en el servidor, llamarlos directamente y la otra es hacer un inline de estos en el propio archivo.

Crear variable

Ejemplo de configuración de cliente:

Truco: Para hacer esto mas fácil, es recomendable automatizarlo. Para eso dejo aquí un script que he creado.

Por último, crear la configuración de red del cliente. Esto luego al realizar la conexión el cliente, lo detectará por el nombre de certificado.

Y dentro de este, hacer un push con la configuración que nos interese. En este caso se le pasará una IP concreta.

Cliente

Ahora, hay que ir al cliente e instalar el cliente OpenVPN

Y pasar el archivo de configuración desde el servidor VPN

Y por último habitar al inicio openvpn y iniciar el servicio

En un futuro post, explicaré como utilizar el protocolo BGP para enrutar de manera automática.

Fuentes:

OpenVPN: tun y tap

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-debian-8

https://www.linode.com/docs/networking/vpn/set-up-a-hardened-openvpn-server

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *