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