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

Instalar OpenVPN

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 7.6. E implementaremos la autenticación OpenVPN basada en certificados.

requisitos previos

  • CentOS 7.6
  • Privilegios de raíz

¿Lo que haremos?

  1. Instale OpenVPN y Easy-RSA
  2. Configurar Easy-RSA 3 Vars
  3. Crear claves OpenVPN
  4. Configurar servidor OpenVPN
  5. Configurar Firewalld y habilitar el reenvío de puertos
  6. Configuración del cliente
  7. Pruebas

Paso 1: instale OpenVPN y Easy-RSA

En este tutorial, usaremos la última versión del servidor centos (7.5), y usaremos OpenVPN 2.4 con easy-rsa 3. Antes de instalar los paquetes OpenVPN y easy-rsa, asegúrese de que el repositorio ‘epel’ está instalado en el sistema. Si no lo tiene, instale el repositorio epel usando el comando yum a continuación.

yum install epel-release -y

Ahora instale OpenVPN 2.4 con easy-rsa 3 en el sistema.

yum install openvpn easy-rsa -y

Cuando se complete la instalación, verifique la versión de openvpn y easy-rsa.

openvpn --version
ls -lah /usr/share/easy-rsa/

Instalar OpenVPN

Se ha instalado OpenVPN 2.4 con easy-rsa 3.

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/’ y copie el script ‘easy-rsa’.

cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/

Ahora vaya al directorio ‘easy-rsa/3/’ y cree un nuevo archivo vars usando vim.

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

Pegue la configuración 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-1.0.cnf"
set_var EASYRSA_DIGEST          "sha256"

Guardar y Salir.

Nota:

  • Cambie los valores de las variables según lo necesite.
  • 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

Se ha creado el archivo vars para la configuración de Easy-RSA 3.

EasyRSA

Paso 3: cree 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/3’.

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

Inicialización y Build CA

Antes de construir cualquier clave, necesitamos inicializar el directorio PKI y construir la clave CA.

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

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

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

Inicialización y Build CA

Crear 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

Crear clave de servidor

Nota:

  • no pase = 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/emitido/’.

Solicitud de firma EasyRSA

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

Crear clave de cliente

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 y, a continuación, escriba la contraseña de CA.

Firmar clave de cliente

Se generó 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

Construir clave Diffie-Hellman

Esta acción llevará mucho tiempo, dependiendo de la longitud de clave que elijamos y la entropía disponible en el servidor. Usaremos la clave de longitud que definimos en el archivo ‘vars’.

Genere la clave Diffie-Hellman usando el comando a continuación.

./easyrsa gen-dh

Se ha generado la clave DH, ubicada en el directorio ‘pki’.

Construir clave Diffie-Hellman

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 cliente en su servidor vpn y desea revocar alguna clave, solo necesita revocar usando el comando easy-rsa.

Si desea revocar alguna clave, ejecute el comando como se muestra a continuación.

./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.

Generar la clave CRL

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/

Copiar archivos de certificados

Paso 4: configurar OpenVPN

En este paso, crearemos una nueva configuración ‘server.conf’ para el servidor openvpn.

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

cd /etc/openvpn/
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.10.1.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 client to connect with 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
comp-lzo yes
daemon
user nobody
group nobody

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

Guardar y Salir.

Se ha creado la configuración para OpenVPN.

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

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 utilizando Firewalld para OpenVPN.

Agregue el servicio ‘openvpn’ al servicio de lista de firewalld y agregue la interfaz ‘tun0’ a la zona de confianza de firewalld.

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

Habilite ‘MASQUERADE’ en el cortafuegos de la zona ‘confiable’.

firewall-cmd --permanent --zone=trusted --add-masquerade

Habilite NAT para la dirección IP interna de OpenVPN ‘10.10.1.0/24’ a la dirección IP externa ‘SERVERIP’.

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

Y recargar firewalld.

firewall-cmd --reload

El reenvío de puertos y el enrutamiento de Firewalld se han completado, ahora inicie el servicio openvpn y permita que se inicie automáticamente cada vez que se inicie el sistema.

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

Habilite el reenvío de puertos y configure el firewall de enrutamiento

Compruébalo usando los comandos a continuación.

netstat -plntu
systemctl status [email protected]

El servidor OpenVPN está funcionando en el puerto de protocolo udp ‘1194’.

Comprobar el estado del servidor OpenVPN

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 139.xx.xx.xx 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 lzo
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/*

Configuración del cliente OpenVPN

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

Copiar cliente

Paso 7 – Probar 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 usando un shell de terminal, ejecute el comando OpenVPN a continuación.

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

Descargar túnelblick e instalarlo.

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 ventanas

Descargar el cliente openvpn para Windows e importar la configuración.

Referencia

https://openvpn.net/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *