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

Configurar el servidor OpenVPN en CentOS 8

En esta guía, aprenderemos cómo instalar y configurar fácilmente el servidor OpenVPN en CentOS 8. OpenVPN es un software VPN de código abierto robusto y altamente flexible que utiliza todas las funciones de cifrado, autenticación y certificación de la biblioteca OpenSSL para tunelice de forma segura las redes IP 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 mientras mantiene la seguridad que se lograría en una red privada.

Configurar servidor OpenVPN en CentOS 8

Instalar repositorio EPEL

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

dnf install epel-release -y

Instalar OpenVPN en CentOS 8

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

dnf install openvpn

Instalar la utilidad Easy-RSA CA en CentOS 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

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.1c FIPS  28 May 2019

Enter New CA Key Passphrase: ENTER PASSWORD
Re-Enter New CA Key Passphrase: RE-ENTER PASSWORD 
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................................................+++++
.+++++
e is 65537 (0x010001)
Can't load /etc/easy-rsa/pki/.rnd into RNG
140160794502976:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd
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-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 certificado de CA se almacena en /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 expediente.

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 la frase de contraseña.

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

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 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 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/{koromicha,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. Puede

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

Configurar servidor OpenVPN en CentOS 8

OpenVPN viene con un archivo de configuración de muestra dentro de su directorio de documentación. Copie el archivo a /etc/openvpn/server/ y modifíquelo según 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 haya terminado 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 el puerto del servicio OpenVPN a través del 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 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0

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::2ed5:8f74:c456:96b7/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 CentOS 8.

Ahora puede proceder a configurar clientes OpenVPN;

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

Configure la autenticación basada en OpenVPN LDAP.

Configurar la autenticación basada en LDAP de OpenVPN

Tutorial relacionado

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. Configuración inicial del servidor con Ubuntu 14.04

  2. Configurar el servidor OpenVPN en Rocky Linux 8

  3. Configurar el servidor VPN IPSec con Libreswan en CentOS 8

  4. Instale y configure el servidor OpenVPN en Ubuntu 20.04

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

Cómo instalar OpenVPN Server and Client en CentOS 7

Cómo configurar un servidor SVN en CentOS

Cómo configurar OpenVPN en Ubuntu Server

CentOS 8:configuración inicial del servidor

Configuración de un servidor OpenVPN con CentOS y Viscosity

Cómo configurar HAProxy en CentOS 8