Pasos para crear una VPN utilizando OpenVPN

¡Claro! Aquí tienes un tutorial detallado para instalar y configurar una VPN utilizando OpenVPN en Ubuntu Server y AlmaLinux, ambos sin interfaz gráfica.

Paso 1: Preparar el servidor

Actualizar el sistema

Ubuntu Server:

sudo apt update
sudo apt upgrade -y

AlmaLinux:

sudo dnf update -y

Paso 2: Instalar OpenVPN y Easy-RSA

Ubuntu Server

sudo apt install openvpn easy-rsa -y

AlmaLinux

  1. Instala el repositorio EPEL:
sudo dnf install epel-release -y
  1. Instala OpenVPN y Easy-RSA:
sudo dnf install openvpn easy-rsa -y

Paso 3: Configurar Easy-RSA

  1. Crea el directorio de Easy-RSA y copia los archivos necesarios:
make-cadir ~/easy-rsa
cd ~/easy-rsa
  1. Edita el archivo vars para configurar las variables necesarias:
nano vars

Añade las siguientes líneas al final del archivo vars:

set_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "CA"
set_var EASYRSA_REQ_CITY       "SanFrancisco"
set_var EASYRSA_REQ_ORG        "MyOrganization"
set_var EASYRSA_REQ_EMAIL      "email@example.com"
set_var EASYRSA_REQ_OU         "MyOrganizationalUnit"

Paso 4: Generar la Autoridad Certificadora (CA) y los certificados

  1. Inicializa el directorio de la PKI (Public Key Infrastructure):
./easyrsa init-pki
  1. Genera la CA:
./easyrsa build-ca
  • Te pedirá que ingreses una contraseña para la CA y algunos detalles adicionales.
  1. Genera el certificado y la clave del servidor:
./easyrsa gen-req server nopass
  1. Firma el certificado del servidor:
./easyrsa sign-req server server
  1. Genera las claves de Diffie-Hellman:
./easyrsa gen-dh
  1. Genera un archivo de clave HMAC para TLS:
openvpn --genkey --secret ta.key

Paso 5: Configurar OpenVPN

  1. Copia los archivos generados a la configuración de OpenVPN:
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/
  1. Crea un archivo de configuración de OpenVPN:
sudo nano /etc/openvpn/server.conf

Agrega la siguiente configuración básica:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
keepalive 10 120
persist-key
persist-tun
user nobody
group nogroup
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3

Paso 6: Configurar el reenvío de IP y las reglas de firewall

  1. Habilita el reenvío de IP:
sudo nano /etc/sysctl.conf

Descomenta o añade la siguiente línea:

net.ipv4.ip_forward = 1

Aplica los cambios:

sudo sysctl -p
  1. Configura las reglas de iptables para permitir el tráfico de la VPN:

Ubuntu Server:

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw route allow in on tun0 out on eth0

AlmaLinux:

Configura firewalld para permitir el tráfico de la VPN:

sudo firewall-cmd --add-service=openvpn --permanent
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-masquerade --permanent
sudo firewall-cmd --reload

Paso 7: Iniciar y habilitar el servicio OpenVPN

Ubuntu Server

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

AlmaLinux

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

Paso 8: Configurar los clientes VPN

  1. Genera los certificados y las claves para los clientes:
cd ~/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
  1. Copia los archivos necesarios al cliente (usar SCP o cualquier otro método seguro):
scp pki/ca.crt pki/issued/client1.crt pki/private/client1.key ta.key user@client-ip:/path/to/store/
  1. Crear un archivo de configuración de OpenVPN para el cliente:
nano client1.ovpn

Agrega la siguiente configuración:

client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
key-direction 1
verb 3

<ca>
-----BEGIN CERTIFICATE-----
# Copia el contenido del archivo ca.crt aquí
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
# Copia el contenido del archivo client1.crt aquí
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
# Copia el contenido del archivo client1.key aquí
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
# Copia el contenido del archivo ta.key aquí
-----END OpenVPN Static key V1-----
</tls-auth>
  1. Conectar el cliente a la VPN:

    • Usa el archivo de configuración client1.ovpn con el cliente OpenVPN de tu elección (Windows, macOS, Linux, etc.).

Paso 9: Verificar la conexión

  1. Inicia el cliente OpenVPN y carga el archivo de configuración client1.ovpn.
  2. Verifica que el cliente se conecte correctamente al servidor y que la conexión VPN esté funcionando.

 

Ahora has configurado una VPN utilizando OpenVPN en Ubuntu Server y AlmaLinux.