Como configurar OpenVPN

 

www.onlinetis.com

OpenVPN: Un Estándar de Oro en Conexiones Seguras

OpenVPN es una tecnología de código abierto robusta y altamente configurable que se utiliza para crear conexiones seguras a través de redes públicas como Internet. Funciona como un software y como un protocolo de red, permitiendo establecer una Red Privada Virtual (VPN, por sus siglas en inglés). En esencia, crea un "túnel" cifrado para que tus datos viajen de forma segura, protegiéndolos de miradas indiscretas.

¿Cómo Funciona?

Imagina que estás enviando una carta importante. En lugar de enviarla en un sobre normal que cualquiera podría abrir, la metes en una caja fuerte con una combinación única. OpenVPN hace algo similar con tu tráfico de internet. Utiliza protocolos de seguridad como SSL (Secure Sockets Layer) y TLS (Transport Layer Security), los mismos que protegen tus datos cuando navegas por páginas web seguras (las que empiezan con "https" y muestran un candado en el navegador), para cifrar la información que envías y recibes.

Para establecer esta conexión segura, OpenVPN utiliza un modelo cliente-servidor. El software cliente se instala en tu dispositivo (ordenador, smartphone, etc.) y se conecta a un servidor OpenVPN. Una vez establecida la conexión, todo tu tráfico de internet se enruta a través de este servidor, cifrándolo en el proceso.

Características Principales

  • Seguridad Sólida: Es considerado uno de los protocolos VPN más seguros. Utiliza la biblioteca de criptografía OpenSSL y soporta algoritmos de cifrado potentes como AES (Advanced Encryption Standard). Esto lo hace extremadamente difícil de vulnerar.

  • Código Abierto (Open Source): Al ser de código abierto, su código fuente está disponible para que cualquiera lo revise. Esta transparencia permite que expertos en seguridad de todo el mundo lo auditen en busca de vulnerabilidades, lo que contribuye a su robustez y fiabilidad.

  • Alta Flexibilidad y Configuración: OpenVPN es altamente personalizable. Puede funcionar sobre los protocolos de transporte TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagramas de Usuario), lo que le permite adaptarse a diferentes necesidades, ya sea priorizando la fiabilidad (TCP) o la velocidad (UDP).

  • Capacidad para Superar Cortafuegos: Debido a su flexibilidad, OpenVPN puede configurarse para utilizar puertos de red comunes (como el puerto 443, usado para el tráfico web HTTPS), lo que le permite eludir la mayoría de los cortafuegos y restricciones de red.

Usos Comunes de OpenVPN

OpenVPN se utiliza en una amplia variedad de escenarios, tanto a nivel personal como empresarial:

  • Teletrabajo y Acceso Remoto Seguro: Permite a los empleados conectarse de forma segura a la red interna de su empresa desde cualquier lugar, como si estuvieran físicamente en la oficina.

  • Conexión a Redes Wi-Fi Públicas: Al conectarte a una red Wi-Fi pública en un aeropuerto o una cafetería, tus datos son vulnerables. Usar OpenVPN cifra tu conexión, protegiéndote de posibles atacantes en la misma red.

  • Privacidad en Línea: Oculta tu dirección IP real y cifra tu tráfico, lo que dificulta que tu proveedor de servicios de internet (ISP), los anunciantes o los ciberdelincuentes rastreen tu actividad en línea.

  • Eludir la Censura y Restricciones Geográficas: Permite acceder a sitios web y servicios que pueden estar bloqueados en tu ubicación geográfica, haciendo que parezca que te conectas desde la ubicación del servidor VPN.

  • Conexiones Seguras entre Sedes (Site-to-Site): Las empresas con múltiples oficinas pueden utilizar OpenVPN para conectar sus redes de forma segura a través de internet, creando una única red privada virtual.

     

    Configurar OpenVPN implica dos partes principales: instalar y configurar el servidor y luego configurar el dispositivo cliente para que se conecte a él.

    La forma más sencilla y recomendada para principiantes es usar un script de instalación automatizado. Sin embargo, a continuación se detalla el proceso manual para un mayor control y comprensión.


    Opción 1: El Método Sencillo (Recomendado para principiantes) 🚀

    Puedes usar scripts populares y auditados que automatizan todo el proceso de instalación del servidor. Uno de los más conocidos es openvpn-install.

    Para usarlo, solo necesitas conectarte a tu servidor (por ejemplo, un VPS con Ubuntu, Debian o CentOS) y ejecutar un único comando:

    Bash
    curl -O https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
    chmod +x openvpn-install.sh
    ./openvpn-install.sh
    

    El script te guiará con preguntas sencillas (qué dirección IP usar, qué puerto, qué DNS, etc.) y al final generará un archivo de configuración .ovpn para tu primer cliente. ¡Es así de fácil!


    Opción 2: El Método Manual Detallado (Para control total) 🛠️

    Este proceso se realiza en un servidor Linux, comúnmente Ubuntu/Debian.

    Parte A: Configuración del Servidor 🖥️

    El objetivo es instalar OpenVPN, generar los certificados y claves de seguridad, y configurar la red.

    1. Instalar OpenVPN y Easy-RSA

    Easy-RSA es la herramienta que usaremos para crear nuestra infraestructura de claves públicas (PKI), que es el corazón de la seguridad de la VPN.

    Bash
    # Actualizar repositorios e instalar los paquetes
    sudo apt update
    sudo apt install openvpn easy-rsa
    

    2. Preparar el Directorio de Easy-RSA

    Vamos a crear un directorio para gestionar nuestros certificados y claves.

    Bash
    # Crear el directorio y enlazar los scripts de easy-rsa
    mkdir ~/easy-rsa
    ln -s /usr/share/easy-rsa/* ~/easy-rsa/
    chmod 700 ~/easy-rsa
    cd ~/easy-rsa
    

    3. Crear la Autoridad de Certificación (CA) y las Claves del Servidor

    La CA es la entidad que firma y valida la autenticidad de los certificados del servidor y de los clientes.

    Bash
    # 1. Iniciar la PKI (Public Key Infrastructure)
    ./easyrsa init-pki
    
    # 2. Construir la CA (te pedirá una contraseña para la CA y un "Common Name")
    ./easyrsa build-ca
    
    # 3. Generar el certificado y la clave para el servidor
    # "nopass" es para que el servidor no pida contraseña al iniciarse
    ./easyrsa gen-req server nopass
    
    # 4. Firmar el certificado del servidor con nuestra CA
    ./easyrsa sign-req server server
    
    # 5. Generar los parámetros Diffie-Hellman (tarda unos minutos)
    ./easyrsa gen-dh
    
    # 6. (Opcional pero recomendado) Generar una clave HMAC para mayor seguridad
    openvpn --genkey --secret pki/ta.key
    

    Al final de este paso, tendrás todos los archivos necesarios en el directorio ~/easy-rsa/pki/.

    4. Crear el Archivo de Configuración del Servidor

    Crea y edita el archivo de configuración principal de OpenVPN.

    Bash
    sudo nano /etc/openvpn/server.conf
    

    Pega la siguiente configuración base, asegurándote de que las rutas de los archivos (ca.crt, server.crt, etc.) coincidan con las que generaste.

    Ini, TOML
    port 1194
    proto udp
    dev tun
    
    # Rutas a los certificados y claves generados
    ca /home/tu_usuario/easy-rsa/pki/ca.crt
    cert /home/tu_usuario/easy-rsa/pki/issued/server.crt
    key /home/tu_usuario/easy-rsa/pki/private/server.key
    dh /home/tu_usuario/easy-rsa/pki/dh.pem
    tls-auth /home/tu_usuario/easy-rsa/pki/ta.key 0
    
    # Red virtual para los clientes VPN
    server 10.8.0.0 255.255.255.0
    
    # Redirigir todo el tráfico del cliente a través de la VPN
    push "redirect-gateway def1 bypass-dhcp"
    
    # Usar los DNS de Google para evitar fugas de DNS
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    
    # Mantener la conexión activa
    keepalive 10 120
    
    # Cifrado (Asegúrate de que cliente y servidor usen los mismos)
    cipher AES-256-GCM
    auth SHA256
    
    # Bajar privilegios después de iniciar
    user nobody
    group nogroup
    
    # Asegurar que las claves y el túnel persistan tras reinicios
    persist-key
    persist-tun
    status /var/log/openvpn/openvpn-status.log
    verb 3
    

    ¡Importante! Reemplaza /home/tu_usuario/ por la ruta real a tu directorio home.

    5. Configurar el Enrutamiento y el Firewall

    Tu servidor necesita permitir el reenvío de paquetes y configurar el firewall para que los clientes VPN puedan salir a Internet.

    Bash
    # 1. Habilitar el reenvío de IP
    sudo nano /etc/sysctl.conf
    # Descomenta (quita el #) la siguiente línea:
    # net.ipv4.ip_forward=1
    # Aplica el cambio sin reiniciar:
    sudo sysctl -p
    
    # 2. Configurar el firewall (ejemplo con UFW en Ubuntu)
    # Averigua tu interfaz de red principal (suele ser eth0)
    ip route | grep default
    
    # Permite el tráfico en el puerto de OpenVPN y SSH
    sudo ufw allow 1194/udp
    sudo ufw allow OpenSSH
    
    # Configurar el NAT (Network Address Translation)
    sudo nano /etc/ufw/before.rules
    # Añade estas líneas al INICIO del archivo, antes de *filter
    *nat
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
    COMMIT
    
    # Activa el firewall
    sudo ufw enable
    

    6. Iniciar el Servidor OpenVPN

    Bash
    # Iniciar el servicio
    sudo systemctl start openvpn@server
    
    # Habilitar para que inicie automáticamente con el sistema
    sudo systemctl enable openvpn@server
    

    Parte B: Configuración del Cliente 💻📱

    Ahora que el servidor está funcionando, necesitas generar un archivo de configuración para cada dispositivo que quieras conectar.

    1. Generar Certificado y Clave para el Cliente

    De vuelta en tu servidor, en el directorio ~/easy-rsa:

    Bash
    # 1. Crea la petición para un nuevo cliente (ej: "cliente1")
    ./easyrsa gen-req cliente1 nopass
    
    # 2. Firma la petición con tu CA
    ./easyrsa sign-req client cliente1
    

    Esto crea los archivos cliente1.crt y cliente1.key.

    2. Crear el Archivo de Configuración del Cliente (.ovpn)

    Este es el archivo que importarás en tu dispositivo. La mejor práctica es crear un archivo unificado que contenga la configuración y todas las claves.

    Crea un archivo de plantilla, por ejemplo ~/client-template.txt:

    Ini, TOML
    client
    dev tun
    proto udp
    
    # Cambia "TU_IP_DE_SERVIDOR" por la IP pública de tu servidor
    remote TU_IP_DE_SERVIDOR 1194
    
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    remote-cert-tls server
    cipher AES-256-GCM
    auth SHA256
    verb 3
    

    Ahora, crea un script para combinar la plantilla con las claves y generar el archivo .ovpn final.

    Bash
    #!/bin/bash
    # Script para generar el archivo de configuración unificado
    
    # Rutas a los archivos
    BASE_CONFIG=~/client-template.txt
    CA_CERT=~/easy-rsa/pki/ca.crt
    CLIENT_CERT=~/easy-rsa/pki/issued/$1.crt
    CLIENT_KEY=~/easy-rsa/pki/private/$1.key
    TLS_AUTH=~/easy-rsa/pki/ta.key
    
    # Generar el archivo .ovpn
    cat ${BASE_CONFIG} \
        <(echo -e '<ca>') \
        ${CA_CERT} \
        <(echo -e '</ca>\n<cert>') \
        ${CLIENT_CERT} \
        <(echo -e '</cert>\n<key>') \
        ${CLIENT_KEY} \
        <(echo -e '</key>\n<tls-auth>') \
        ${TLS_AUTH} \
        <(echo -e '</tls-auth>') \
        > ~/$1.ovpn
    

    Guarda este script (ej. crear_cliente.sh), dale permisos de ejecución (chmod +x crear_cliente.sh) y úsalo así:

    Bash
    ./crear_cliente.sh cliente1
    

    Esto creará el archivo cliente1.ovpn en tu directorio home.

    3. Instalar y Usar el Archivo .ovpn

    • Transfiere el archivo cliente1.ovpn de tu servidor a tu dispositivo de forma segura (usando scp, por ejemplo).

    • Instala el cliente oficial de OpenVPN para tu sistema operativo:

      • Windows/macOS/Linux: OpenVPN Connect

      • Android/iOS: Busca "OpenVPN Connect" en la tienda de aplicaciones.

    • Importa el archivo .ovpn en la aplicación y conéctate.

    ¡Listo! Tu dispositivo ahora se conectará de forma segura a través de tu servidor VPN. 🛡️

     

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC