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

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

  • Cent OS 7.6
  • Privilegios de raíz

¿Qué haremos?

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

Paso 1:instalar 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 de 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: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/3'.

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

Inicialización y creación de 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 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:

  • sin 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/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

Crear 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 siguiente comando.

./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 mediante 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:prueba de 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

Descarga el cliente openvpn para windows e importa 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