GNU/Linux >> Tutoriales Linux >  >> Panels >> OpenVPN

Instale y configure el servidor OpenVPN en Ubuntu 20.04

En esta guía, aprenderemos cómo instalar y configurar OpenVPN Server en Ubuntu 20.04. OpenVPN es un software VPN de código abierto sólido y muy flexible que utiliza todas las funciones de cifrado, autenticación y certificación de la biblioteca OpenSSL para tunelizar redes IP de forma segura a través de un solo puerto UDP o TCP.

Facilita la extensión de una red privada a través de una red pública, accede a sitios remotos, realiza conexiones punto a punto seguras y mantiene la seguridad que se lograría en una red privada.

Instalar y configurar el servidor OpenVPN en Ubuntu 20.04

Ejecutar actualización del sistema

actualización aptactualización apt

Instalar OpenVPN en Ubuntu 20.04

El paquete OpenVPN está disponible en los repositorios predeterminados de Ubuntu 20.04. Por lo tanto, la instalación es tan simple como ejecutar el siguiente comando;

instalación apt openvpn

Instalar la utilidad Easy-RSA CA en Ubuntu 20.04

El paquete Easy-RSA proporciona utilidades para generar pares de claves SSL que se utilizan para proteger las conexiones VPN.

instalación apt easy-rsa

Crear infraestructura de clave pública OpenVPN

Una vez que haya instalado easy-rsa, debe inicializar OpenVPN PKI. La PKI consta de:

  • una clave pública y una clave privada para el servidor y cada cliente
  • un certificado maestro de la autoridad de certificación (CA) y una clave que se utiliza para firmar cada uno de los certificados de servidor y cliente.

Antes de continuar, copie el directorio de configuración de easy-rsa en una ubicación diferente para asegurarse de que las futuras actualizaciones del paquete OpenVPN no sobrescriban sus modificaciones.

cp -r /usr/share/easy-rsa /etc/

A continuación, inicialice la PKI.

cd /etc/easy-rsa/
./easyrsa init-pki

Una vez inicializada la PKI, /etc/easy-rsa/pki es creado.

Generar el certificado y la clave de la autoridad certificadora (CA)

A continuación, genere el certificado de CA y la clave para firmar los certificados de servidor y cliente de OpenVPN.

cd /etc/easy-rsa/./easyrsa build-ca

Esto le pedirá la frase de contraseña de la clave de CA y el nombre común del servidor.

Uso de SSL:openssl OpenSSL 1.1.1f 31 de marzo de 2020Ingrese la nueva frase de contraseña de la clave de CA:INGRESE LA CONTRASEÑA Vuelva a ingresar la nueva clave de contraseña de CA:VOLVER A INGRESAR LA CONTRASEÑA Generación de clave privada RSA, módulo largo de 2048 bits (2 números primos) .........+++++............. .+++++e es 65537 (0x010001) No se puede cargar /etc/easy-rsa/pki/.rnd en RNG139840045897024:error:2406F079:generador de números aleatorios:RAND_load_file:No se puede abrir archivo:../crypto/rand /randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd Se le pedirá que ingrese información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se denomina Nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algunos en blanco. Para algunos campos, habrá un valor predeterminado. Si ingresa '.', el campo se dejará en blanco. ----- Nombre común (por ejemplo:su usuario , host o nombre del servidor) [Easy-RSA CA]:Kifarunix-demo CA Se completó la creación de CA y ahora puede importar y firmar solicitudes de certificado. Su nuevo archivo de certificado de CA para publicar está en:/etc/easy-rsa/pki/ca.crt

El certificado de CA se genera y almacena en /etc/easy-rsa/pki/ca.crt .

Generar parámetros Diffie Hellman

Genere claves Diffie-Hellman utilizadas para el intercambio de claves durante el protocolo de enlace TLS entre el servidor OpenVPN y los clientes que se conectan. Este comando se ha ejecutado dentro del directorio Easy-RSA;

./easyrsa gen-dh

Parámetros DH de tamaño 2048 creados en /etc/easy-rsa/pki/dh.pem .

Generar certificado y clave de servidor OpenVPN

Para generar un certificado y una clave privada para el servidor OpenVPN, ejecute el siguiente comando;

cd /etc/easy-rsa
./easyrsa construir-servidor-servidor completo nopass

Ingrese la frase de contraseña de la clave de CA creada anteriormente para generar los certificados y las claves.

nopass deshabilita el uso de la frase de contraseña.

Generar clave de código de autenticación de mensajes basado en hash (HMAC)

La clave de autenticación precompartida TLS/SSL se utiliza como una firma HMAC adicional en todos los paquetes de protocolo de enlace SSL/TLS para evitar ataques DoS e inundaciones de puertos UDP. Esto se puede generar usando el comando;

openvpn --genkey --secret /etc/easy-rsa/pki/ta.key

Generar certificado de revocación de OpenVPN

Para invalidar un certificado firmado anteriormente, debe generar un certificado de revocación. Ejecute el script dentro del directorio Easy-RSA;

./easyrsa gen-crl

El certificado de revocación se genera y almacena en /etc/easy-rsa/pki/crl.pem .

Copiar certificados y claves del servidor en el directorio de configuración del servidor

Copie todos los certificados/claves de servidor generados en el directorio de configuración del servidor OpenVPN. etc/openvpn/servidor/

Generar certificados y claves de cliente de OpenVPN

Los certificados de clientes OpenVPN y las claves privadas se pueden generar de la siguiente manera

cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
  • donde koromicha es el nombre del cliente para el que se generan el certificado y las claves.
  • Utilice siempre un nombre común único para cada cliente para el que genere certificados y claves.

Para generar para el segundo cliente,

./easyrsa build-client-full janedoe nopass

Puedes ver cómo usar easyrsa comando con ./easyrsa --help .

Copiar certificados y claves del cliente en el directorio del cliente

Cree directorios de clientes OpenVPN. Por ejemplo, hemos generado certificados y archivos clave para dos clientes, koromicha y janedoe, por lo que creamos directorios como;

mkdir /etc/openvpn/client/{koromicha,janedoe}

Después de eso, copie los certificados/claves generados por el cliente y el certificado de CA del servidor en el directorio de configuración del cliente OpenVPN. Puede

cp -rp /etc/easy-rsa/pki/{ca.crt,emitido/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,emitido/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/

Configurar servidor OpenVPN en Ubuntu 20.04

El siguiente paso es configurar el servidor OpenVPN. Copie la configuración del servidor OpenVPN de muestra en /etc/openvpn/server directorio como se muestra a continuación;

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/

Extrae la configuración y modifícala según tus necesidades;

cd /etc/openvpn/server/gunzip server.conf.gz
vim /etc/openvpn/server/server.conf

Así es como se ven nuestras configuraciones de muestra sin comentarios. La configuración está muy comentada para ayudarlo a comprender el uso de varias opciones.

port 1194
proto udp
dev tun
ca ca.crt
cert issued/server.crt
key private/server.key  # This file should be kept secret
dh dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 192.168.2.11"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
auth SHA512 

Guarde y salga de la configuración una vez que haya terminado de editar.

Configurar el reenvío de IP de OpenVPN

Para asegurarse de que el tráfico del cliente se enruta a través de la dirección IP del servidor OpenVPN (ayuda a enmascarar la dirección IP del cliente), debe habilitar el reenvío de IP en el servidor OpenVPN.

Descomente la línea, net.ipv4.ip_forward=1 , en /etc/sysctl.conf para habilitar el reenvío de paquetes para IPv4

sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf

Aplique los cambios sin reiniciar el servidor.

sysctl --system

Permitir puerto de servicio OpenVPN a través de firewall;

ufw permitir 1194/udp

Configurar enmascaramiento de IP en UFW

Encuentre su interfaz predeterminada a través de la cual se envían sus paquetes.

ip route get 8.8.8.8
8.8.8.8 a través de 10.0.2.2 desarrollador enp0s3 src 10.0.2.15 uid 0

A continuación, actualice las reglas de UFW;

vim /etc/ufw/before.rules

Agrega las siguientes líneas resaltadas justo antes del *filter ajustes de la mesa. Tenga en cuenta que la interfaz utilizada debe coincidir con el nombre de la interfaz anterior.

...*nat:POSTROUTING ACCEPT [0:0]-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADECOMMIT # No elimine estas líneas obligatorias, de lo contrario habrá errores*filtro...

Guarde y salga de la configuración.

Habilitar el reenvío de paquetes UFW;

sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw

Recargar UFW;

recargar ufw

Ejecución del servidor OpenVPN en Ubuntu 20.04

Inicie y habilite el servidor OpenVPN para que se ejecute en el arranque del sistema;

systemctl enable --now [email protected]

Comprobando el estado;

systemctl status [email protected]
[email protected] - OpenVPN service for server
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-01 16:07:33 UTC; 3s ago
       Docs: man:openvpn(8)
             https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
             https://community.openvpn.net/openvpn/wiki/HOWTO
   Main PID: 11980 (openvpn)
     Status: "Initialization Sequence Completed"
      Tasks: 1 (limit: 2281)
     Memory: 1.0M
     CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
             └─11980 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Starting OpenVPN service for server...
May 01 16:07:33 vpn.kifarunix-demo.com systemd[1]: Started OpenVPN service for server. 

Cuando se ejecuta el servicio OpenVPN, creará una interfaz de tunelización, tun0;

ip agregar s
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1989:2bf2:1e7f:7415/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever 

Además, asegúrese de revisar los registros;

cola /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 No se pudo determinar el protocolo IPv4/IPv6. Uso de búfer AF_INETSocket:R=[212992->212992] S=[212992->212992]Enlace UDPv4 local (enlazado):[AF_INET][undef]:1194Enlace UDPv4 remoto:[AF_UNSPEC]MULTI:multi_init llamado, r=256 v =256GRUPO IFCONFIG:base=10.8.0.2 tamaño=252, ipv6=0LISTA DEL GRUPO IFCONFIGSecuencia de inicialización completada 

Magnífico. El servidor OpenVPN ya está listo. Eso marca el final de nuestra guía sobre cómo instalar OpenVPN Server en Ubuntu 20.04.

Ahora puede configurar sus clientes en consecuencia.

Tutoriales relacionados

Instale y configure el cliente OpenVPN en CentOS 8/Ubuntu 18.04

Configurar la autenticación basada en LDAP de OpenVPN

Configurar IPSEC VPN usando StrongSwan en Ubuntu 18.04

Configure el cliente VPN strongSwan en Ubuntu 18.04/CentOS 8

Conéctese a Cisco VPN usando un archivo PCF en Ubuntu

OpenVPN
  1. Cómo instalar y configurar Universal Media Server en Ubuntu 20.04

  2. Configurar el servidor OpenVPN en Rocky Linux 8

  3. Configurar el servidor OpenVPN en CentOS 8

  4. Instalar y configurar el servidor OpenVPN FreeBSD 12

  5. Instale y configure el servidor OpenVPN en Fedora 29/CentOS 7

Instalar y configurar VNC en Ubuntu 20.04

Cómo configurar OpenVPN en Ubuntu Server

Cómo instalar y configurar un servidor OpenVPN en Ubuntu 22.04

Configuración de un servidor OpenVPN con Ubuntu y Viscosity

Instale y configure Plex Media Server en Ubuntu 22.04 LTS

Cómo instalar OpenVPN en Ubuntu 16.04 LTS