Cómo instalar el servidor y cliente OpenVPN con Easy-RSA 3 en CentOS 7
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?
- Instale OpenVPN y Easy-RSA
- Configurar Easy-RSA 3 Vars
- Crear claves OpenVPN
- Configurar servidor OpenVPN
- Configurar Firewalld y habilitar el reenvío de puertos
- Configuración del cliente
- 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/
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.
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’.
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
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/’.
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 y, a continuación, escriba la contraseña de CA.
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’.
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.
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/
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]
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’.
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/*
scp [email protected]:/etc/openvpn/client01.tar.gz .
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.