VPN-server (Centos - Alma - Rocky 8)

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

Configuración básica de servidor OpenVPN (Centos 8):

Instalar el repositorio epel-release.


[root@server ~]# dnf install -y epel-release

Se instala la aplicación:
[root@server ~]# dnf install -y openvpn easy-rsa

Se accede al directorio de easy-rsa, donde se ubican los archivos necesarios para la configuración:
[root@server ~]# cd /usr/share/easy-rsa/3.0.8

Si se desea, se puede copiar el contenido al directorio de openvpn: (en mi caso lo haré, por
comodidad de configuración)
[root@server ~]# cp -r * /etc/openvpn/server/.

Cambiamos al directorio dónde se copiaron los archivos:


[root@server ~]# cd /etc/openvpn/server/

Se inicia el PKI (Public Key Infrastructure) y se construye la autoridad de certificación (CA):


[root@server server]# ./easyrsa init-pki
[root@server server]# ./easyrsa build-ca nopass

Se genera y firma el certificado del servidor:


[root@server server]# ./easyrsa gen-req serverA nopass
[root@server server]# ./easyrsa sign-req server serverA nopass

Se genera y firma el certificado para el cliente:


[root@server server]# ./easyrsa gen-req clientA nopass
[root@server server]# ./easyrsa sign-req client clientA nopass

se genera el dh.pem (parámetros de Diffie-Hellman) que establece la fortaleza en el intercambio de


las claves:
[root@server server]# ./easyrsa gen-dh

Copiar el archivo de configuración ejemplo al directorio de configuración:


[root@server openvpn]# cp
/usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/.

Editamos el archivo ‘/etc/openvpn/server.conf’:


[root@server ~]# vi /etc/openvpn/server/server.conf

Se edita el archivo /etc/openvpn/server.conf y se configuran las rutas correctas de los certificados y


llaves, para este ejemplo, quedaría como se muestra a continuación.

1
# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).

ca /etc/openvpn/server/pki/ca.crt
cert /etc/openvpn/server/pki/issued/serverA.crt
key /etc/openvpn/server/pki/private/serverA.key # This file should be kept
secret

# Diffie hellman parameters.


# Generate your own with:
# openssl dhparam -out dh2048.pem 2048

dh /etc/openvpn/server/pki/dh.pem

.
topology subnet
.
.
push "redirect-gateway def1 bypass-dhcp"
.
.
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
.
.
# The second parameter should be '0'
# on the server and '1' on the clients.
;tls-auth ta.key 0 # This file is secret
.
.
# You can uncomment this out on
# non-Windows systems.
user nobody
group nobody
Si alguno de los parámetros resaltados no se configura, el servicio no podrá ser iniciado.

Solo ejecutar en caso de habilitar tls:


[root@server 3.0.8]# openvpn --genkey --secret /etc/openvpn/ta.key

Se habilita el ip forwarding.
[root@server ~]# sysctl -w net.ipv4.ip_forward=1

Para hacerlo de forma persistente:

2
[root@server ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.d/sysctl-additionals.conf

Establecer las reglas del firewall:


[root@server ~]# firewall-cmd --zone=trusted --add-masquerade --permanent
[root@server ~]# firewall-cmd --set-default-zone=trusted
[root@server ~]# firewall-cmd --add-service=openvpn --permanent
[root@server ~]# firewall-cmd --reload

Deshabilitar SElinux:
[root@server ~]# setenforce 0

Se comprueba su funcionamiento con:


[root@server ~]# cd /etc/openvpn/server/
[root@server server]# openvpn --config server.conf

La siguiente línea al final de la salida, indica que levantó correctamente:


.... Initialization Sequence Complete

Se inicia y habilita el servidor:


[root@server ~]# systemctl enable openvpn-server@server --now

Se puede comprobar que la interfaz virtual se haya habilitado con ‘ip addr’:
[root@server ~]# ip addr
.
.
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 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::dab7:46e8:cc6e:4b79/64 scope link flags 800
valid_lft forever preferred_lft forever

Configuración del cliente

Instalar el repositorio epel-release.


[root@client ~]# dnf -y install epel-release

Se instala la aplicación:
[root@client ~]# dnf -y install openvpn

Se comprueba la conexión entre los equipos (servidor y cliente), y se copian los certificados del
generados en el servidor hacia el cliente: (no olvides sustituir ip_client por dirección ip de tu
cliente):
[root@server ~]# cd /etc/openvpn/server/pki/
[root@server pki]# scp ca.crt root@ip_client:/etc/openvpn/client/.

3
[root@server pki]# scp issued/clientA.crt root@ip_client:/etc/openvpn/client/.
[root@server pki]# scp private/clientA.key root@ip_client:/etc/openvpn/client/.

Se edita el archivo de configuración para el cliente:


[root@client ~]# vi /etc/openvpn/client/clientA.conf

Y se agregan las siguientes líneas (no olvides sustituir ip_server por la dirección ip de tu servidor):
client
dev tun
proto udp
remote ip_server 1194
ca ca.crt #en caso de usar otra ruta, modificarla
cert clientA.crt #en caso de usar otra ruta, modificarla
key clientA.key #en caso de usar otra ruta, modificarla
verb 5

remote-cert-tls server
auth-nocache
cipher AES-256-CBC

Se guarda el archivo: y ejecuta la configuración para comprobar el funcionamiento::


[root@client ~]# cd /etc/openvpn/client/
[root@client openvpn]# openvpn --config clientA.conf

La siguiente línea al final de la salida indica que la VPN levantó correctamente, si no se desplega esa
línea es necesario revisar la configuración:
.... Initialization Sequence Complete

Si la VPN levantó correctamente, se puede habilitar el servicio de la siguiente manera:


[root@client ~]# systemctl start openvpn-client@clientA

O bien, para iniciarla y habilitarla para que inicie con el arranque del sistema:
[root@client ~]# systemctl enable openvpn-client@clientA --now

Al igual que con el servidor, se debió crear una interfaz virtual:


[root@server ~]# ip addr
.
.
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN
group default qlen 100
link/none
inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::a2fc:5174:af3f:5c3e/64 scope link flags 800

4
valid_lft forever preferred_lft forever

Con lo anterior, la VPN está establecida y funcional.

También podría gustarte