Configuración de VPN con OpenVPN en un servidor Linux

Configuración de VPN con OpenVPN en un Servidor Linux

Resumen: En este artículo veremos cómo implementar una solución de VPN segura y escalable empleando OpenVPN en un servidor Linux. Abordaremos desde los requisitos previos hasta las buenas prácticas de mantenimiento.

Tabla de Contenidos

  • Introducción
  • Prerrequisitos
  • Instalación de Componentes
  • Generación de Certificados y Claves
  • Configuración del Servidor
  • Configuración del Cliente
  • Ajustes de Red y Cortafuegos
  • Pruebas y Validación
  • Seguridad y Buenas Prácticas
  • Mantenimiento y Escalabilidad
  • Conclusión

1. Introducción

Una VPN (Red Privada Virtual) crea un túnel cifrado que permite a usuarios remotos conectarse de forma segura a una red privada a través de Internet. OpenVPN es una de las soluciones más populares debido a su flexibilidad, compatibilidad con múltiples sistemas y robustez criptográfica.

2. Prerrequisitos

  • Servidor Linux (Debian, Ubuntu, CentOS o similar) con acceso root o usuario con privilegios sudo.
  • Conexión a Internet y puertos abiertos (UDP 1194 por defecto).
  • Paquete easy-rsa para la gestión de PKI.
  • Conocimientos básicos de administración de redes y Linux.

3. Instalación de Componentes

3.1. Actualización del Sistema

sudo apt update  sudo apt upgrade -y

3.2. Instalación de OpenVPN y easy-rsa

sudo apt install openvpn easy-rsa -y

Resumen de Paquetes Instalados

Paquete Función
openvpn Demonio y herramientas de VPN
easy-rsa Generación de PKI y certificados

4. Generación de Certificados y Claves

Se generará una Autoridad Certificadora (CA), certificados para el servidor y para cada cliente.

  1. Copiar el entorno de trabajo de easy-rsa:
    make-cadir ~/openvpn-ca
  2. Editar vars y ajustar valores como KEY_COUNTRY, KEY_ORG, etc.
  3. Inicializar la PKI y crear la CA:
    cd ~/openvpn-ca
    source vars
    ./clean-all
    ./build-ca
  4. Crear certificado y clave del servidor:
    ./build-key-server server
    ./build-dh
    openvpn --genkey --secret keys/ta.key
  5. Crear certificados para clientes:
    ./build-key cliente1

5. Configuración del Servidor

  • Copiar plantilla de configuración:
    gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
  • Ajustar parámetros claves en /etc/openvpn/server.conf:
    • port 1194
    • proto udp
    • dev tun
    • paths a certificados (ca.crt, server.crt, server.key, dh.pem, ta.key)
    • cipher AES-256-CBC
    • user nobody, group nogroup
    • persist-key, persist-tun
  • Habilitar y arrancar el servicio:
    sudo systemctl enable openvpn@server
    sudo systemctl start openvpn@server

6. Configuración del Cliente

En el equipo cliente se debe instalar también openvpn y copiar los archivos:

  • ca.crt
  • cliente1.crt
  • cliente1.key
  • ta.key

Crear cliente1.ovpn con parámetros mínimos:

client
dev tun
proto udp
remote tu.dominio.com 1194
cipher AES-256-CBC
auth SHA256
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert cliente1.crt
key cliente1.key
tls-auth ta.key 1
verb 3

7. Ajustes de Red y Cortafuegos

  1. Habilitar reenvío IP en /etc/sysctl.conf:
    net.ipv4.ip_forward=1

    Aplicar con sudo sysctl -p.

  2. Configurar iptables para NAT:
    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    sudo iptables-save  sudo tee /etc/iptables.rules
  3. Permitir UDP 1194:
    sudo ufw allow 1194/udp

8. Pruebas y Validación

  • Iniciar cliente:
    openvpn --config cliente1.ovpn
  • Verificar asignación IP y ping a la red interna:
    ip addr show tun0
    ping 10.8.0.1

9. Seguridad y Buenas Prácticas

  • Actualizar periódicamente OpenVPN y dependencias.
  • Rotar certificados y revocar usuarios inactivos.
  • Aplicar TLS Auth con ta.key para mitigar ataques DoS.
  • Utilizar AES-256-GCM o ChaCha20-Poly1305 como cifrado avanzado.
  • Limitar acceso por firewall y listas de control de acceso (ACL).

10. Mantenimiento y Escalabilidad

Para entornos empresariales de gran escala:

  • Implementar múltiples servidores en alta disponibilidad (HA).
  • Balancear carga con DNS Round-Robin o Balanceadores UDP.
  • Monitorizar con herramientas (Prometheus, Grafana).
  • Integrar autentificación externa (RADIUS, LDAP).

11. Conclusión

Siguiendo estos pasos y recomendaciones, dispondrás de una VPN con OpenVPN robusta, segura y escalable. La clave radica en un buen diseño de PKI, reglas de firewall estrictas y actualizaciones constantes.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *