Volver al blog

Configuración de OpenVPN en Ubuntu 18.04

Configuración de OpenVPN en Ubuntu 18.04

Introducción

¿Le gustaría acceder a Internet de forma segura desde su smartphone o portátil cuando se conecta a una red no confiable (por ejemplo, el WiFi de un hotel o una cafetería)? Por suerte, hay una manera de cumplir sus deseos. Puede conectarse de forma segura a una red no confiable como si estuviera en una red privada utilizando una Red Privada Virtual (VPN).

¿Qué es una VPN?

VPN son las siglas de Red Privada Virtual (Virtual Private Network). Ofrece la posibilidad de abrir un túnel seguro a un servidor de confianza. Todas las solicitudes se envían y reciben a través de este servidor. La ventaja es asegurar su acceso y transacciones al utilizar redes públicas, como el WiFi gratuito de un hotel.

A través de la VPN, todos los datos se cifran y se procesan a través del servidor. Los dispositivos intermedios, como routers de terceros y similares, no tienen forma de redirigir el tráfico a destinos no deseados. Además, una vez que la conexión se ha establecido con éxito, usted forma parte de la red del servidor. Ahora también se puede acceder a través del túnel VPN a otros servidores, ordenadores o dispositivos como impresoras que normalmente solo estarían accesibles en la red local del servidor. Sin embargo, dado que no todos los datos tienen que enviarse a través de un túnel cifrado, es posible configurar el cliente VPN para que solo una parte definida de las solicitudes se envíe a través del túnel VPN. El resto del tráfico se procesa normalmente a través de Internet.

En este tutorial, le guiaremos a través de los pasos para configurar un servidor OpenVPN en Ubuntu 18.04.

Requisitos

Necesita tener acceso a un servidor Ubuntu 18.04 para alojar su OpenVPN para completar este tutorial. Antes de comenzar esta guía, también necesita configurar un usuario no raíz con permisos sudo. Puede instalar fácilmente su servidor siguiendo nuestro tutorial sobre cómo configurar un servidor Ubuntu.

Además, necesitará un ordenador independiente que actúe como autoridad de certificación (CA). Técnicamente, puede utilizar su servidor OpenVPN. Sin embargo, no lo recomendamos, ya que expondrá su VPN a fallos de seguridad. Según la documentación oficial de OpenVPN, debe ubicar la autoridad de certificación en un ordenador independiente dedicado a importar y firmar solicitudes de certificados. Por lo tanto, asumimos que su autoridad de certificación se encuentra en un servidor Ubuntu 18.04 independiente que también tiene un usuario no raíz con permisos sudo y un cortafuegos básico. A lo largo de esta guía, todos los pasos de instalación y configuración serán lo más sencillos posible para cada una de las instalaciones. También puede echar un vistazo a nuestro tutorial sobre cómo configurar un servidor OpenVPN en Docker.

Paso 1 – Instalar OpenVPN y EasyRSA

Primero, actualice el índice de paquetes de su servidor VPN e instale OpenVPN. Puede instalar OpenVPN usando apt porque está disponible en los repositorios predeterminados de Ubuntu:

Paso 2: Crear una autoridad de certificación

Cree una autoridad de certificación (CA) simple para emitir certificados de confianza para el servidor OpenVPN. Para hacer esto, descargue la última versión de EasyRSA tanto en su máquina CA como en el servidor OpenVPN usando wget. Para obtener la última versión, vaya a la página de lanzamientos (Releases) del proyecto oficial de GitHub de EasyRSA, copie el enlace de descarga para el archivo que termina en .tgz y péguelo en el siguiente comando:

A continuación, extraiga el archivo tarball:

 OpenVPN EasyRSA software

En este punto, todo el software requerido se ha instalado correctamente en su ordenador CA y en el servidor.

Paso 3 – Configurar las variables de EasyRSA y crear la CA

EasyRSA viene con un archivo de configuración que puede editar para definir una serie de variables para su CA utilizando este comando:

Hay un archivo en el directorio con el nombre vars.example. Realice una copia de este archivo y nombre la copia vars sin extensión de archivo:

Use su editor de texto preferido para abrir este nuevo archivo:

A continuación, busque los ajustes que establecen los valores predeterminados de los campos para los nuevos certificados. Será similar a esto:

Actualice estas variables con los valores que desee, como se muestra a continuación:

Guarde y cierre el archivo una vez que esté listo. El siguiente paso es llamar al script easyrsa y ejecutarlo con la opción init-pki para iniciar la infraestructura de clave pública en el servidor CA:

easyrsa init-pki

A continuación, ejecute el comando build-ca con la opción nopass para que no se le solicite una contraseña cada vez que interactúe con su CA:

En la salida, se le pedirá que confirme el nombre común para su CA:

 OpenVPN build-ca

Con eso, su CA ya está lista y preparada para comenzar a firmar solicitudes de certificados.

Paso 4 – Generar el certificado del servidor, la clave y los archivos de cifrado

Una vez que la CA esté lista, puede generar la clave privada y la solicitud de certificado desde el servidor y luego enviarla a la CA para su firma creando el certificado requerido. Primero, navegue al directorio EasyRSA en el servidor OpenVPN:

Desde allí, ejecute el script easyrsa con la opción init-pki. Aunque ya haya ejecutado este comando en el equipo de la CA, este comando también debe ejecutarse aquí. Esto se debe a que los directorios PKI del servidor y de la CA son diferentes:

Luego llame al script easyrsa nuevamente, esta vez con la opción gen-req, seguida del nombre genérico del equipo:

Esto creará una clave privada para el servidor y un archivo de solicitud de certificado llamado server.req. Copie la clave del servidor en el directorio /etc/openvpn/:

Transfiera el archivo server.req a su equipo CA utilizando un método seguro (como SCP en el siguiente ejemplo):

A continuación, navegue al directorio EasyRSA en su equipo CA:

Use el script easyrsa nuevamente para importar el archivo server.req y agregue su nombre común después de la ruta del archivo:

Luego, firme la solicitud ejecutando el script easyrsa con la opción sign-req seguida del tipo de solicitud y el nombre común. Para la solicitud de certificado del servidor OpenVPN, asegúrese de utilizar el tipo de solicitud server:

La salida le pide que verifique que la solicitud proviene de una fuente de confianza. Escriba yes y presione Enter para confirmar. Compruebe los detalles que se muestran a continuación para garantizar la precisión. Tenga en cuenta que esta solicitud aún no ha sido verificada por contraseña.

Solicite el asunto y fírmelo como un certificado de servidor por 3650 días:

 OpenVPN sign certificate for server

Si ha cifrado la clave de la CA, se le pedirá la contraseña en este punto. A continuación, utilice un método seguro para transferir el certificado firmado de vuelta a su servidor VPN:

Transfiera el archivo ca.rt al servidor antes de cerrar la sesión en el equipo de la CA:

A continuación, inicie sesión de nuevo en su servidor OpenVPN y copie los archivos server.crt y ca.crt en su directorio /etc/openvpn/:

A continuación, navegue a su directorio EasyRSA:

Introduzca el siguiente código para crear una clave Diffie-Hellman fuerte que pueda utilizar durante el intercambio de claves:

Cuando termine, genere una firma HMAC para mejorar la funcionalidad de comprobación de estado TLS del servidor:

Cuando se complete el comando, copie los dos nuevos archivos al directorio /etc/openvpn/:

De esta manera, se generan todos los certificados y archivos de clave requeridos por el servidor. Ahora, puede crear el certificado y la clave adecuados que el equipo cliente utilizará para acceder al servidor OpenVPN.

Paso 4 – Generar el certificado del cliente y el par de claves

A continuación, crearemos una clave de cliente y varios certificados. Si tiene varios clientes, puede repetir este proceso para cada cliente. Tenga en cuenta, sin embargo, que debe pasar un valor de nombre único al script para cada cliente. En este tutorial, llamaremos al primer par de certificado/clave client1. Primero, cree una estructura de directorios en su directorio de inicio para almacenar los certificados de cliente y los archivos de clave:

Dado que guarda el par de certificado/clave y el archivo de configuración del cliente en este directorio por razones de seguridad, ahora debería revocar los permisos:

A continuación, vuelva al directorio EasyRSA y ejecute el script easyrsa con las opciones gen-req y nopass, así como el nombre genérico del cliente:

Presione Enter para confirmar el nombre común. Después de eso, copie el archivo client1.key en el directorio /client-configs/keys/ creado anteriormente:

A continuación, utilice un método seguro para transferir el archivo client1.req a su equipo de CA:

Inicie sesión en su equipo de CA, navegue al directorio EasyRSA e importe la solicitud de certificado:

import client.req

Luego, al igual que en el paso anterior, firme la solicitud en el servidor. Pero esta vez debe especificar el tipo de solicitud del cliente:

En la solicitud, escriba yes para confirmar que desea firmar la solicitud de certificado y que la solicitud de certificado proviene de una fuente de confianza. Ingrese la palabra “yes” para continuar o ingrese cualquier otra cosa para descartar:

sign certificate

Si ha cifrado la clave de la CA, también se le pedirá que introduzca la contraseña aquí. Esto creará un archivo de certificado de cliente llamado client1.crt. Transfiera este archivo de vuelta al servidor:

Conéctese de nuevo por SSH a su servidor OpenVPN y copie el certificado de cliente en el directorio / client-configs / keys /:

A continuación, copie los archivos ca.crt y ta.key en el directorio / client-configs / keys /:

Al mismo tiempo, todos los certificados y claves del servidor y del cliente se generaron y guardaron en los directorios correspondientes del servidor. Ahora puede continuar con la configuración de OpenVPN en el servidor.

 Paso 5 – Configuración del servicio OpenVPN

Después de generar los certificados de cliente y servidor, puede configurar el servicio OpenVPN para utilizar estas credenciales. Primero, copie el archivo de configuración de ejemplo de OpenVPN en su directorio de configuración y luego extráigalo para usarlo como base de la configuración:

Abra el archivo de configuración del servidor en su editor de texto preferido:

A continuación, busque la sección HMAC buscando el comando tls-auth:

Busque la sección de la contraseña buscando la línea de contraseña comentada. El cifrado AES-256-CBC ofrece un buen nivel de cifrado y es ampliamente compatible. La línea no debería estar comentada, pero si lo está, elimine el “;” de delante:

Debajo de eso, añada un comando Auth para seleccionar el algoritmo de resumen de mensajes HMAC. SHA256 es una buena opción para esto:

A continuación, busque la línea con la declaración dh que define los parámetros de Diffie-Hellman. Debido a algunos cambios recientes en EasyRSA, el nombre del archivo de clave Diffie-Hellman puede ser diferente del nombre de archivo que figura en el archivo de configuración de ejemplo del servidor. Si es necesario, cambie el nombre de archivo que aparece aquí eliminando 2048 para alinearlo con la clave del paso anterior:

Por último, busque los ajustes de usuario y grupo y elimine el “;” al principio de cada línea:

Hasta ahora, los cambios que ha realizado en el archivo server.conf de ejemplo deberían permitir que OpenVPN funcione.

Paso 6 – Configuración de red del servidor

Configure el reenvío de IP para enrutar correctamente el tráfico a través de la VPN. Esto es esencial para la funcionalidad de VPN que proporciona su servidor:

Busque la línea comentada que establece net.ipv4.ip_forward. Elimine el carácter “#” del principio de la línea para descomentar esta configuración:

Guarde el archivo y ciérrelo una vez que haya terminado. Para leer el archivo y ajustar los valores para la sesión actual, escriba:

sysctl -p

A continuación, añada la interfaz de red pública de su máquina:

Su interfaz pública es la cadena dentro de la salida de este comando que sigue a la palabra “dev”. Por ejemplo, este resultado muestra la interfaz llamada ens3.

default ip route

Abra el archivo /etc/ufw/before.rules para añadir la configuración correspondiente:

Hacia la parte superior del archivo, añada las líneas resaltadas a continuación para establecer la política predeterminada para la cadena POSTROUTING en la tabla nat y enmascarar cualquier tráfico que provenga de la VPN. Cambie ens3 en la línea -A POSTROUTING a continuación por la interfaz que encontró en el comando anterior:

Guarde el archivo y ciérrelo una vez que haya terminado. A continuación, debe indicarle a UFW que también permita los paquetes reenviados de forma predeterminada. Para hacer esto, abra el archivo /etc/default/ufw:

En el interior, busque la directiva DEFAULT_FORWARD_POLICY y cambie el valor de DROP a ACCEPT:

Guarde y cierre el archivo cuando haya terminado. A continuación, ajuste el firewall para habilitar el tráfico hacia OpenVPN. Si no cambió el puerto y el protocolo en el archivo /etc/openvpn/server.conf, deberá abrir el tráfico UDP al puerto 1194. Si modificó el puerto y/o el protocolo, sustituya los valores que seleccionó aquí. En caso de que haya olvidado agregar el puerto SSH al seguir el tutorial de requisitos previos, agréguelo aquí también:

Después de agregar esas reglas, deshabilite y vuelva a habilitar UFW para reiniciarlo y cargar los cambios de todos los archivos que ha modificado:

ufw commands

¡Felicitaciones, su servidor ahora está configurado para manejar correctamente el tráfico de OpenVPN!

Conclusión

Si siguió este tutorial hasta el final, ahora podrá navegar por Internet de forma segura. Podrá mantener su identidad, ubicación y tráfico lejos de miradas indiscretas.

¡Feliz informática!

 

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.