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

Configurar el servidor OpenVPN en Rocky Linux 8

En esta guía, aprenderemos cómo instalar y configurar fácilmente el servidor OpenVPN en Rocky Linux 8. OpenVPN es un software VPN de código abierto robusto y altamente flexible que utiliza todas las funciones de encriptación, autenticación y certificación de la biblioteca OpenSSL. para tunelizar redes IP de forma segura a través de un único puerto UDP o TCP. Facilita la extensión de una red privada a través de una red pública mientras mantiene la seguridad que se lograría en una red privada.

Configurar servidor OpenVPN en Rocky Linux 8

Instalar repositorio EPEL

Los últimos paquetes de OpenVPN son proporcionados por los repositorios de EPEL en Rocky Linux 8 y otros derivados similares. EPEL se puede instalar en Rocky Linux 8 ejecutando el siguiente comando;

dnf install epel-release -y

Instalar OpenVPN en Rocky Linux 8

Una vez que los repositorios de EPEL estén en su lugar, ahora puede instalar el paquete OpenVPN en Rocky Linux 8 ejecutando el siguiente comando;

dnf install openvpn

Instalar la utilidad Easy-RSA CA en Rocky Linux 8

El paquete Easy-RSA es una utilidad de CA basada en shell que se utiliza para generar pares de claves SSL que se utilizan para proteger las conexiones VPN.

dnf install easy-rsa

Crear infraestructura de clave pública OpenVPN

El primer paso para configurar un servidor OpenVPN es crear una PKI que consta de claves públicas y privadas para el servidor OpenVPN y la conexión de clientes, y un certificado maestro de autoridad certificadora y una clave privada para firmar el servidor OpenVPN y los certificados de cliente. Si es posible, debe crear la PKI en un servidor separado que ejecute OpenVPN por motivos de seguridad.

Inicialice la PKI

Easy-RSA se utiliza para la gestión de PKI. Los scripts de Easy-RSA se instalan en /usr/share/easy-rsa directorio.

Para asegurarse de que Easy-RSA no sobrescriba cualquier configuración realizada en caso de una actualización, copie los scripts en un directorio diferente, preferiblemente en /etc directorio.

mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/

Una vez que los scripts estén en su lugar, navegue hasta el directorio e inicialice la PKI.

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

Salida de comando de muestra;

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki

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

A continuación, genere el certificado CA y la clave que se usarán para firmar los certificados ejecutando los siguientes comandos en el directorio Easy-RSA anterior.

./easyrsa build-ca

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

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
........................................+++++
....................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/easy-rsa/pki/ca.crt

El archivo CA es /etc/easy-rsa/pki/ca.crt .

Generar parámetros Diffie Hellman

Mientras se encuentra dentro del mismo directorio Easy-RSA que se muestra arriba, ejecute el siguiente comando para generar un archivo de clave Diffie-Hellman que se puede usar para el intercambio de claves durante el protocolo de enlace TLS con los clientes que se conectan.

./easyrsa gen-dh

El comando tardará algún tiempo en completarse. Luego almacena los parámetros DH en /etc/easy-rsa/pki/dh.pem archivo.

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 build-server-full server nopass

Cuando se ejecute el comando, se le pedirá que ingrese la frase de contraseña de la clave de CA creada anteriormente.

nopass deshabilita el uso de frases de contraseña en los certificados.

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
.....+++++
...............................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.4TRoOP'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.jTJJ7f
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct  3 18:03:20 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

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

Para generar una clave de autenticación precompartida TLS/SSL que se usará para agregar una firma HMAC adicional a todos los paquetes de protocolo de enlace SSL/TLS, para evitar ataques DoS e inundaciones de puertos UDP, ejecute el siguiente comando;

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

Generar un Certificado de Revocación

Para invalidar un certificado previamente firmado, debe generar un certificado de revocación.

./easyrsa gen-crl
Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Using configuration from /etc/easy-rsa/pki/easy-rsa-10284.mSzk9F/tmp.qdix0A
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:

An updated CRL has been created.
CRL file: /etc/easy-rsa/pki/crl.pe

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

Copiar certificados y claves del servidor al directorio del servidor

A continuación, copie todos los certificados/claves generados en el directorio de configuración del servidor OpenVPN.

cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/

Generar certificado y clave de cliente OpenVPN

Para generar el certificado y la clave privada de los clientes de OpenVPN, ejecute el siguiente comando;

cd /etc/easy-rsa
./easyrsa build-client-full gentoo nopass

Salida de muestra;

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
........................+++++
.........................................................................................+++++
writing new private key to '/etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.tauo7u'
-----
Using configuration from /etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.RxlTaw
Enter pass phrase for /etc/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'gentoo'
Certificate is to be certified until Oct  3 18:05:23 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

donde gentoo es el nombre del cliente para el que se generan el certificado y las claves. Utilice siempre un nombre común exclusivo para cada cliente para el que genere certificados y claves.

Para generar para el segundo cliente,

./easyrsa build-client-full johndoe nopass

Copiar certificados y claves del cliente en el directorio del cliente

Cree un directorio para cada cliente en el directorio del cliente de OpenVPN

mkdir /etc/openvpn/client/{gentoo,johndoe}

A continuación, copie todos los certificados/claves generados por el cliente y el certificado de CA en el directorio de configuración del cliente de OpenVPN. Puedes

cp -rp /etc/easy-rsa/pki/{ca.crt,issued/gentoo.crt,private/gentoo.key} /etc/openvpn/client/gentoo
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/

Configurar servidor OpenVPN en Rocky Linux 8

OpenVPN viene con un archivo de configuración de muestra dentro de su directorio de documentación. Copie el archivo en /etc/openvpn/server/ y modifíquelo para adaptarlo a sus necesidades.

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

Abra la configuración para modificarla.

vim /etc/openvpn/server/server.conf

El archivo está muy comentado. Lea los comentarios para cada opción de configuración.

En la forma más básica, a continuación se encuentran nuestras opciones de configuración, sin comentarios.

port 1194
proto udp4
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 ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 192.168.10.3"
client-to-client
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
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 termine de modificar.

¿Quiere asignar direcciones IP fijas/estáticas a sus clientes OpenVPN? Siga la guía a continuación;

Asigne direcciones IP estáticas para clientes OpenVPN

Crear directorio de registro;

mkdir /var/log/openvpn/

Explore la configuración y realice más ajustes para satisfacer sus necesidades.

Configurar el enrutamiento del servidor OpenVPN

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

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Ejecute el siguiente comando para efectuar los cambios sin reiniciar el servidor.

sysctl --system

Permitir puerto de servicio OpenVPN a través de firewall

firewall-cmd --add-port=1194/udp --permanent

Activar enmascaramiento de IP

firewall-cmd --add-masquerade --permanent

Reenviar el tráfico recibido en la subred OpenVPN especificada, por ejemplo, la 10.8.0.0/24 en nuestro caso, a una interfaz a través de la cual se enviarán los paquetes.

Para encontrar la interfaz a través de la cual se envían los paquetes, ejecute el siguiente comando:

ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0 
    cache

El nombre de la interfaz y la subred definida pueden ser diferentes para su caso. Reemplácelos según corresponda.

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s3 -j MASQUERADE

Vuelva a cargar firewalld para que los cambios surtan efecto.

firewall-cmd --reload

Inicie y configure la ejecución de OpenVPN en el arranque del sistema.

systemctl enable --now [email protected]

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

ip add 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::afd7:17a6:57ee:7f3b/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Comprobando los registros;

tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed

Su servidor OpenVPN ahora está en funcionamiento. Eso nos lleva al final de nuestra guía sobre cómo instalar y configurar OpenVPN Server en Rocky Linux 8.

Ahora puede proceder a configurar clientes OpenVPN e interconectarlos a través del servidor vpn.

Instalar y configurar el cliente OpenVPN en Rocky Linux 8

Otros tutoriales

Asigne direcciones IP estáticas para clientes OpenVPN

Configurar la autenticación basada en LDAP de OpenVPN


OpenVPN
  1. Configura tu servidor OpenVPN en Linux

  2. Instale OpenVPN en su PC con Linux

  3. Instalar y configurar el cliente OpenVPN en Rocky Linux 8

  4. Configurar el servidor OpenVPN en Rocky Linux 8

  5. Instale y configure el servidor OpenVPN en Ubuntu 20.04

Cómo instalar Webmin en Rocky Linux 8

Cómo configurar la replicación FreeIPA en Rocky Linux/Alma Linux/Centos 8

Instale LAMP Stack en Rocky Linux 8

Cómo instalar Jenkins en Rocky Linux 8

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN

Cómo instalar Nginx en Rocky Linux 9