Configuración de OpenVPN en Ubuntu 18.04 Bionic Beaver Linux

Configuración de OpenVPN en Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Aprenda a instalar y configurar el servidor OpenVPN en Ubuntu 18.04 Beaver Bionic

Requisitos

  • Permisos de raíz

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz
    directamente como usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Otras versiones de este tutorial

Ubuntu 20.04 (fosa focal)

Introducción

La tecnología de red privada virtual hace posible acceder a redes privadas seguras mediante el uso de redes menos seguras como Internet. Las VPN generalmente se usan para conectar ramas físicamente remotas de una organización, lo que hace que parecieran parte de la misma LAN (por ejemplo, dos oficinas en diferentes ciudades). El tráfico entre los lados de la conexión está encriptado utilizando túneles, que protege los datos transmitidos y la información de conexión ellos mismos. Para las mismas características, las VPN a menudo se usan para eludir las restricciones gubernamentales y anonimizar el tráfico de Internet.

En este tutorial veremos cómo crear un servidor de red privado virtual que use OpenVPN, el software VPN de código abierto en Ubuntu 18.04 Beaver Bionic.

Paso 1 - Instalación

Instalación de OpenVPN en Ubuntu 18.04 es realmente fácil: el software está disponible en los repositorios predeterminados. También necesitamos instalar el fácil Paquete, que nos ayudará en la creación de los certificados y claves necesarios:

$ sudo apt-get update && sudo apt-get install OpenVPN Easy-RSA

Pocos segundos y el software se instalará en nuestra máquina, listo para ser configurado.

Paso 2 - Configuración de infraestructura del servidor

En esta sección generaremos los certificados y claves necesarios: primero crearemos nuestra personalización California (autoridad de certificado), luego generaremos el servidor certificado/par de claves, el Diffie-Hellman parámetros y el TLS-AUTH CLAVE.

Comencemos generando el directorio que contendrá los scripts que hará el trabajo pesado para nosotros. Corremos el maquinar comando, eso es parte del fácil paquete, proporcionando el nombre del directorio que queremos crear. También queremos ingresar al directorio tan pronto como se cree:

$ Make-Cadir Certificados y certificados CD

En este caso llamé al directorio certificados. Este será nuestro directorio de trabajo para el resto del tutorial, por lo tanto, todos los comandos mencionados deben considerarse como lanzados dentro de él.



Paso 2.1 - Configuración de variables

Como lo primero, debemos ajustar las variables que se utilizarán para establecer los valores utilizados durante la generación de la autoridad de certificado y el certificado/clave. Las variables se definen dentro del vars archivo:

Exportar key_config = "$ Easy_RSA/Whyopensslcnf $ Easy_rsa" Exportar key_country = "US" Exportar key_province = "CA" Exportar key_city = "Sanfrancisco" Exportar Key_org = "Fort-Funston" Export Key_Email = "[email protected] "export key_ou =" myorganizationalunit " 

Una variable muy importante es Key_config, que, por defecto, se establece llamando a un pequeño script de envoltura que debería recuperar la configuración SSL correcta. Sin embargo, si se usa de esta manera, genera un error, porque el script no recupera la configuración. Para evitar esto, especificamos el archivo de configuración directamente:

Exportar key_config = "$ Easy_RSA/OpenSSL-1.0.0.CNF "

Los valores para las otras variables deben cambiarse y adaptarse a sus necesidades específicas. Después de que terminamos de editar el archivo, debemos "obtenerlo", para que las variables se conviertan en parte de nuestro entorno de tiempo de ejecución:

$ Source Vars

Paso 2.2 - Generación de la CA

Podemos continuar y generar nuestra CA (autoridad de certificado). Ejecutando el Limpiar todo y construye guiones en orden. La generación de CA comenzará, utilizando los valores de las variables que definimos en el vars Archivo como predeterminado para los campos correspondientes:

ps ./Limpiar todo && ./Build-Ca

Paso 2.3 - Certificado y generación de claves

El siguiente paso es la generación del certificado y la clave del servidor. Es solo una cuestión de ejecutar el script de servidor de llave de construcción que le da el nombre que queremos usar para el certificado y la clave como parámetro. En este caso, usamos "servidor" porque es el nombre predeterminado utilizado en el archivo de configuración de VPN, como veremos más adelante en el tutorial:

ps ./servidor Build-Key-Server

Sigue las instrucciones en la pantalla. El Desafío Contraseña y nombre de empresa Los campos son opcionales.

Paso 2.4 - Generación de parámetros Diffie -Hellman

El siguiente paso es crear los parámetros Diffie-Hellman. Esos parámetros se utilizan para intercambiar claves criptográficas utilizando un canal público e inseguro. Usamos el construcción-dh guion:

ps ./Build-DH

El script tomará algún tiempo generar los parámetros, dependiendo de la máquina en la que estamos ejecutando, sea paciente!

Paso 2.5 - Genere una clave aleatoria para ser utilizada como secreto compartido

Para fortalecer nuestra seguridad, además de usar un certificado, generaremos y usaremos una clave para usar un secreto compartido. El servidor y cada cliente necesitarán una copia de esta clave:

$ OpenVPN - -Genkey -Keys/TA.llave

Paso 2.6 - Copiar los archivos generados

La autoridad certificada (CA.CRT), certificado (servidor.CRT), clave (servidor.Clave), parámetros Diffie-Hellman (DH2048.PEM) y TLS-Auth Key (TA.archivos clave), deberían haberse generado dentro del llaves directorio. Ahora es el momento de copiarlos para /etc/openvpn:

$ sudo CP Keys/servidor.CRT, servidor.Clave, CA.CRT, DH2048.PEM, TA.clave /etc /openvpn

Paso 3 - Configuración de OpenVPN

Podemos continuar con la configuración del servicio OpenVPN. Se puede encontrar una configuración de muestra (comprimida) en /usr/share/doc/openvpn/ejemplos/muestra-config-files/servidor.confusión.GZ: Solo necesitamos extraerlo en el directorio /etc /openVPN:

$ GZIP -D -C/USR/Share/Doc/OpenVPN/Ejemplos/Sample -Config -Files/Server.confusión.GZ | sudo tee/etc/openvpn/servidor.conf> /dev /null

Con el comando anterior, descomprimimos el archivo original, enviando su salida a stdout y redirigiéndolo a través del /etc/openvpn/servidor.confusión archivo. Verifique que los valores predeterminados en el archivo de configuración correspondan a los que generamos:

CA CA.servidor CRT CERT.servidor de teclas CRT.Clave # Este archivo debe mantenerse en secreto DH DH2048.pem 


Paso 4: configure el firewall y permita el reenvío de IP

Casi terminamos de configurar nuestro servidor VPN: ahora debemos configurar el firewall, para permitir el tráfico entrante desde el puerto 1194/UDP (puerto predeterminado y protocolo):

$ sudo UFW Permitir OpenVpn

Muy importante: por defecto, solo el tráfico entre el cliente y el servidor pasa sobre el túnel VPN, esto excluye el tráfico de Internet. Para cambiar este comportamiento, primero tenemos que desencadenar la opción en línea 192 del archivo de configuración del servidor (/etc/openvpn/servidor.confusión)

Push "Redirect-Gateway Def1 bypass-DHCP" 

A continuación, necesitamos usar una regla iptable para no hacer el cliente VPN a través de Internet. Observe que especifiqué el eth0 interfaz pero debe adaptar la regla a la interfaz en uso en su máquina:

$ sudo iptables -t nat -a postruting -s 10.8.0.0/24 -O eth0 -j mascarada

Establecer de esta manera, sin embargo, la regla no persistirá un reinicio. Para hacerlo persistente, debemos agregarlo al /etc/UFW/antes.normas archivo. Este archivo contiene reglas aplicadas por UFW antes de las definidas desde la línea de comandos. Agregue la regla como la primera en el archivo:

*nat: posterior a aceptar [0: 0] -A POSTROUTING -S 10.8.0.0/8 -O ETH0 -J MASQUERADE COMISM 

Ahora debemos habilitar el reenvío de paquetes. Primero necesitamos editar el /etc /sysctl.Archivo de confile e incomment la línea 28:

# Descomment La siguiente línea para habilitar el reenvío de paquetes para la red IPv4.IPv4.ip_forward = 1 

En este punto debemos volver a cargar la configuración:

$ sudo sysctl -p /etc /sysctl.confusión

Todavía necesitamos permitir el reenvío de los paquetes a través del firewall de UFW. Abierto /etc/default/UFW y cambio Default_forward_policy de GOTA a ACEPTAR:

# Establezca la política de reenvío predeterminada para aceptar, soltar o rechazar. Tenga en cuenta que # si cambia esto, lo más probable es que desee ajustar sus reglas predeterminadas_forward_policy = "aceptar" 

Finalmente, recargar el firewall:

$ sudo ufw recargar

Paso 5 - Inicie el servicio

Ahora usaremos SystemCTL para iniciar el servidor, pasando la variable que contiene el nombre de nuestro archivo de configuración a la unidad de servicio. Al usar Systemd, podemos hacer esto prefijando el valor con el @ símbolo. Por ejemplo:

$ sudo systemctl iniciar openvpn@servidor

En este punto, el servidor debe estar en funcionamiento. Verificarlo ejecutando

$ sudo systemctl is-active openvpn@servidor

El comando debe devolver "activo".



Paso 6 - Configuración del cliente

Para cada cliente que queremos usar, debemos generar un par certificado/clave, al igual que lo hicimos anteriormente para el servidor:

$ fuente vars && ./Cliente de llave de construcción

Ahora tenemos dos opciones: podemos copiar los archivos necesarios a nuestro cliente, o podemos generar un .ovpn archivo, en el que se incrusta el contenido de esos archivos. Nos concentraremos en la segunda opción.

Al igual que hicimos el lado del servidor, tomaremos una configuración de muestra como punto de partida. Creemos un directorio dedicado y copiemos la plantilla:

$ mkdir clientes && cp/usr/share/doc/openvpn/ejemplos/sample-config-files/cliente.Clientes/cliente.ovpn

Siga las secciones muy bien comentadas del archivo y adapte las opciones a las definidas en la configuración del servidor (en nuestro caso ya está hecho). Establezca la IP y el puerto del servidor modificando la configuración (línea 42):

remoto my-server-1 1194 

Donde "my-server" debe ser reemplazado por la IP del servidor y el puerto debe cambiarse si no usa el predeterminado. A continuación, descompone las siguientes líneas (61,62):

# Privilegios de rebaño después de la inicialización (solo no windows); usuario nadie; grupo nogroup 

Ahora, sustituiremos las referencias a CA, Certificado, Clave, Parámetros DH y TLS-AUTH Clave con el contenido real de los archivos: de esta manera crearemos una configuración incrustada y fácil de exportar. Referencias de primer comentario (líneas 88-90 y 108)

#ca ca.Cliente CRT #cert.Cliente CRT #Key.Clave #TLS-Auth TA.Clave 1

A continuación, copie el contenido de los archivos mencionados, entre las etiquetas apropiadas. El contenido de la autoridad de certificado debe incluirse entre las etiquetas, el contenido del archivo de certificado dentro y la clave entre . Justo como ejemplo, considere la CA:

 # Aquí va el contenido de la CA.archivo CRT  

Para la tecla TLS-Auth, en cambio lo haríamos:

Dirección clave 1 # El contenido del TA.archivo de clave  

Finalmente, solo importe el archivo en la aplicación de su cliente y debería estar listo para ir.

Ejemplo de conexión de Android

Para conectarse a nuestro servidor OpenVPN desde Android, utilizaremos la aplicación OpenVPN oficial: OpenVPN Connect. Una vez instalado y lanzado, aparecerá el siguiente menú:

Menú de aplicaciones de Android OpenVPN



Toque, el último artículo, Perfil de ovpn

Desde el selector de archivos, navegue hasta el lugar donde almacenó el .archivo ovpn y seleccionarlo, luego tocar "importar" en la esquina superior derecha. El perfil debería haberse importado correctamente:

Importación de la aplicación Android OpenVPN
Ahora, igual que antes, toque Agregar y en la siguiente pantalla Active la conexión:

Aplicación de Android OpenVPN conectada
Éxito!

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Ubuntu básico 22.04 Configuración de conexión de cliente/servidor OpenVPN
  • Ubuntu 20.04 Guía
  • Ubuntu 20.04 Hadoop
  • Los 8 mejores entornos de escritorio de Ubuntu (20.04 fosa focal ..
  • Lista e instalación de clientes FTP en Ubuntu 20.04 Linux ..
  • Gerentes de red de GUI de Linux