GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar el servidor y cliente OpenVPN con Easy-RSA 3 en CentOS 8

OpenVPN es una aplicación de código abierto que le permite crear una red privada segura a través de la Internet pública. OpenVPN implementa una red privada virtual (VPN) para crear una conexión segura. OpenVPN utiliza la biblioteca OpenSSL para proporcionar el cifrado y proporciona varios mecanismos de autenticación, como claves precompartidas basadas en certificados y autenticación de nombre de usuario/contraseña.

En este tutorial, le mostraremos cómo instalar y configurar paso a paso OpenVPN en CentOS 8 Server. E implementaremos la autenticación OpenVPN basada en certificados.

Requisitos previos

  • Servidor CentOS 8
  • Privilegios de raíz

¿Qué haremos?

  • Instalar OpenVPN y Easy-RSA
  • Configurar Easy-RSA 3 Vars
  • Crear claves OpenVPN
  • Configurar servidor OpenVPN
  • Configurar el cortafuegos y habilitar el reenvío de puertos
  • Configuración del cliente
  • Pruebas

Paso 1:instalar OpenVPN y Easy-RSA

En primer lugar, agregaremos el repositorio EPEL (Extra Package for Enterprise Linux), instalaremos el paquete OpenVPN más reciente y descargaremos el script easy-rsa en el sistema CentOS 8.

Instale el repositorio EPEL usando el comando dnf a continuación.

dnf install epel-release

Después de eso, instale el último paquete OpenVPN 2.4.7.

dnf install openvpn

Una vez que se complete la instalación, vaya a '/etc/openvpn' y descargue el script easy-rsa usando el comando wget a continuación.

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Ahora extraiga el archivo 'EasyRSA-unix-v3.0.6.tgz' y cambie el nombre del directorio a 'easy-rsa'.

tar -xf EasyRSA-unix-v3.0.6.tgz
mv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

El paquete OpenVPN y el script easy-rsa se instalaron en el sistema CentOS 8.

Paso 2:configurar Easy-RSA 3

En este paso, configuraremos easy-rsa 3 creando un nuevo archivo 'vars'. El archivo 'vars' contiene la configuración de Easy-RSA 3.

Vaya al directorio '/etc/openvpn/easy-rsa/' y cree un nuevo script vars usando el editor vim.

cd /etc/openvpn/easy-rsa/
vim vars

Pegue las configuraciones de vars easy-rsa 3 a continuación.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Guardar y salir.

Nota:

  • Cambie los valores de las variables según sus necesidades.
  • Aumente el 'EASYRSA_KEY_SIZE' para mayor seguridad.
  • Cambie 'EASYRSA_CA_EXPIRE' y 'EASYRSA_CERT_EXPIRE'.

Ahora haga que el archivo 'vars' sea ejecutable cambiando el permiso del archivo.

chmod +x vars

La configuración de easy-rsa 3 se ha completado.

Paso 3:crear claves OpenVPN

En este paso, construiremos las claves de OpenVPN basadas en el archivo 'vars' de easy-rsa 3 que hemos creado. Crearemos la clave de CA, las claves de servidor y cliente, el archivo DH y CRL PEM.

Construiremos todas esas claves usando la línea de comando 'easyrsa'. Vaya al directorio '/etc/openvpn/easy-rsa/'.

cd /etc/openvpn/easy-rsa/3/

- Inicialización y creación de CA

Antes de construir la clave del servidor y del cliente, necesitamos inicializar el directorio PKI (infraestructura de clave pública) y construir la clave CA.

Inicie el directorio PKI y cree la clave de CA usando el siguiente comando.

./easyrsa init-pki
./easyrsa build-ca

Ahora escriba la contraseña de su clave de CA y obtendrá sus archivos 'ca.crt' y 'ca.key' en el directorio 'pki'.

- Construir clave de servidor

Ahora queremos construir la clave del servidor, y construiremos la clave del servidor llamada 'hakase-server'.

Cree la clave del servidor 'hakase-server' usando el siguiente comando.

./easyrsa gen-req hakase-server nopass

Nota:

  • nopass =opción para deshabilitar la contraseña para la clave 'hakase-server'.

Y firme la clave 'hakase-server' usando nuestro certificado CA.

./easyrsa sign-req server hakase-server

Se le pedirá la contraseña 'CA', escriba la contraseña y presione Entrar. Y obtendrá el archivo de certificado 'hakase-server.crt' en el directorio 'pki/issued/'.

Verifique el archivo del certificado usando el comando OpenSSL y asegúrese de que no haya ningún error.

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

Se han creado todas las claves de certificado del servidor. La clave privada del servidor se encuentra en 'pki/private/hakase-server.key' y el certificado del servidor en 'pki/issued/hakase-server.crt'.

- Crear clave de cliente

Ahora necesitamos construir claves para el cliente. Generaremos una nueva clave de cliente llamada 'client01'.

Genere la clave 'client01' usando el siguiente comando.

./easyrsa gen-req client01 nopass

Ahora firme la clave 'client01' usando nuestro certificado CA como se muestra a continuación.

./easyrsa sign-req client client01

Escriba 'sí' para confirmar la solicitud de certificado de cliente, luego escriba la contraseña de CA.

Se ha generado el certificado de cliente llamado 'client01', verifique el certificado de cliente usando el comando openssl.

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Asegúrate de que no haya ningún error.

- Construir clave Diffie-Hellman

La clave Diffie-Hellman es necesaria para mayor seguridad. Y vamos a generar la clave DH '2048' basada en el archivo de configuración 'vars' que se ha creado en la parte superior.

Genere la clave Diffie-Hellman usando el siguiente comando.

./easyrsa gen-dh

Y se ha generado la clave DH, ubicada en el directorio 'pki'.

- Opcional:generar la clave CRL

La clave CRL (Lista de revocación de certificados) se utilizará para revocar la clave del cliente. Si tiene varios certificados de clientes en su servidor VPN y desea eliminar la clave de alguien, solo tiene que revocarlos con el comando easy-rsa.

Si desea revocar alguna clave, ejecute el siguiente comando.

./easyrsa revoke someone

Y luego genere la clave CRL.

./easyrsa gen-crl

El archivo CRL PEM se generó en el directorio 'pki'; el siguiente es un ejemplo en mi servidor.

- Copiar archivos de certificados

Se han generado todos los certificados, ahora copie los archivos de certificado y los archivos PEM.

Copie la clave del servidor y el certificado.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

Copie la clave y el certificado del cliente01.

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/

Copie la clave DH y CRL.

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

Todos los certificados para el servidor y el cliente se han copiado en cada directorio.

Paso 4:configurar OpenVPN

En este paso, crearemos una nueva configuración 'server.conf' para el servidor OpenVPN.

Vaya al directorio '/etc/openvpn/server/' y cree un nuevo archivo de configuración 'server.conf' usando vim.

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

Pegue la siguiente configuración del servidor OpenVPN allí.

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple clients to connect with the same certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

Guardar y salir.

Y se ha creado la configuración del servidor OpenVPN.

Paso 5:habilite el reenvío de puertos y configure el enrutamiento en el firewalld

En este paso, habilitaremos el módulo del kernel de reenvío de puertos y configuraremos el enrutamiento 'Firewalld' para OpenVPN.

Habilite el módulo kernel de reenvío de puertos ejecutando los siguientes comandos.

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

A continuación, configure el enrutamiento mediante Firewalld para OpenVPN.

Agregue el servicio OpenVPN a la zona de firewall 'pública' y 'confiable'.

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn

Después de eso, agregue 'tun0' a la zona 'confiable'.

firewall-cmd --permanent --zone=trusted --add-interface=tun0

Ahora habilite 'MASQUERADE' en el cortafuegos de la zona 'pública' predeterminada.

firewall-cmd --permanent --add-masquerade

Habilite NAT para la dirección IP interna de OpenVPN '10.5.0.0/24' a la dirección IP externa 'SERVERIP'.

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

Y recargar firewalld.

firewall-cmd --reload

La configuración de enrutamiento de Firewalld y reenvío de puertos se ha completado, inicie el servicio OpenVPN y permita que se inicie automáticamente cada vez que se inicie el sistema.

systemctl start ope[email protected]
systemctl enable [email protected]

Después de eso, verifique el servicio OpenVPN usando los comandos a continuación.

netstat -plntu
systemctl status [email protected]

Y obtendrá el resultado como se muestra a continuación.

Como resultado, el servicio OpenVPN está funcionando en el protocolo UDP con el puerto predeterminado '1194'.

Paso 6:configuración del cliente OpenVPN

Vaya al directorio '/etc/openvpn/client' y cree un nuevo archivo de configuración de cliente openvpn 'client01.ovpn' usando vim.

cd /etc/openvpn/client
vim client01.ovpn

Pegue la siguiente configuración de cliente OpenVPN allí.

client
dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
key client01.key

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Guardar y salir.

Ahora comprima el directorio '/etc/openvpn/client' en el archivo 'zip' o 'tar.gz' y descargue el archivo comprimido usando SCP desde su computadora local.

Comprima el directorio '/etc/openvpn/client' en el archivo 'client01.tar.gz'.

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Ahora puede descargar el archivo OpenVPN comprimido usando el servidor FTP o el comando scp como se muestra a continuación.

scp [email protected]:/etc/openvpn/client01.tar.gz .

Paso 7:Conéctese a OpenVPN

Pruebas en los Clientes.

- En Linux

Instale el paquete OpenVPN y, si desea una configuración de GUI, instale el administrador de red OpenVPN.

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

Si desea conectarse mediante un shell de terminal, ejecute el siguiente comando OpenVPN.

openvpn --config client01.ovpn

Cuando esté conectado a OpenVPN, abra una nueva pestaña de terminal y verifique la conexión usando el comando curl.

curl ifconfig.io

Y obtendrá la dirección IP del servidor OpenVPN.

- En Mac OS

Descarga Tunnelblick e instálalo.

Extraiga el archivo 'client01.tar.gz' y cambie el nombre del directorio 'client' a 'client01.tblk'.

tar -xzvf client01.tar.gz
mv client client01.tblk

Haga doble clic en 'client01.tblk' y Tunnelblick detectará automáticamente la configuración de OpenVPN y luego la importará.

Ahora conéctese a través de Tunnelblick en la barra superior.

- En Windows

Descargue el cliente openvpn para Windows e importe la configuración.


Cent OS
  1. Cómo instalar y usar TeamSpeak Server en CentOS 7

  2. Cómo instalar OpenVPN en CentOS/RHEL 8

  3. Cómo instalar y configurar Gitlab en CentOS 8

  4. Cómo instalar y alojar un servidor OpenVPN con Docker

  5. Cómo instalar y configurar el servidor OpenVPN en Ubuntu 20.04

Cómo instalar y configurar el servidor VNC en CentOS 7

Instale el servidor PXE y configure el cliente PXE en CentOS 7

Cómo instalar y configurar Memcached en CentOS 8

Cómo instalar CentOS 7 Servidor y Escritorio

Cómo instalar y configurar el servidor DHCP en Centos 8

Cómo instalar y configurar el servidor OpenVPN en CentOS 8/7