Introducción
En entornos empresariales, garantizar la seguridad y el acceso remoto eficiente a recursos internos es crucial. Una VPN (Virtual Private Network) proporciona un túnel cifrado a través de Internet, permitiendo que usuarios remotos o sedes descentralizadas accedan a la red corporativa como si estuvieran físicamente presentes. En una infraestructura Linux, existen varias soluciones maduras y robustas que pueden adaptarse a diferentes necesidades de rendimiento, escalabilidad y facilidad de gestión.
1. Planificación y Diseño
1.1 Requisitos básicos
- Servidor Linux (CentOS, RHEL, Ubuntu Server o Debian) con acceso root o privilegios sudo.
- Conexión a Internet con IP pública estática o un sistema de DNS dinámico.
- Políticas de seguridad y compliance de la empresa (auditorías, cifrado mínimo, autenticación).
- Capacidad de hardware: CPU para cifrado/descifrado, RAM y disco según número de clientes concurrentes.
- Plan de direccionamiento IP interno para clientes VPN (subred dedicada).
1.2 Comparativa de soluciones VPN
Solución | Pro | Contra |
---|---|---|
OpenVPN | Amplia documentación, multiplataforma, soporte TCP/UDP | Rendimiento moderado, configuración compleja |
WireGuard | Ligero, alta velocidad, muy sencillo | Características de IAM limitadas, más reciente |
StrongSwan (IPsec) | Estandarizado, interoperable, fuerte cifrado | Configuración extensa, trampas en NAT |
SoftEther | Multi-protocolo, puente Ethernet virtual | Mayor consumo de recursos, menos popular |
2. Instalación y Configuración
2.1 Configuración de OpenVPN
OpenVPN utiliza certificados SSL/TLS para autenticar servidor y clientes:
- Instalar paquetes:
sudo apt update sudo apt install openvpn easy-rsa -y
- Crear PKI y certificados:
make-cadir ~/openvpn-ca cd ~/openvpn-ca ./easyrsa init-pki ./easyrsa build-ca nopass ./easyrsa gen-req server nopass ./easyrsa sign-req server server ./easyrsa gen-dh openvpn --genkey --secret ta.key
- Archivos de configuración en /etc/openvpn/server.conf:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem tls-auth ta.key 0 server 10.8.0.0 255.255.255.0 push route 10.0.0.0 255.255.255.0 cipher AES-256-GCM user nobody group nogroup keepalive 10 120 persist-key persist-tun status openvpn-status.log verb 3
- Habilitar reenvío IP y reglas de firewall:
echo net.ipv4.ip_forward=1 sudo tee -a /etc/sysctl.conf sudo sysctl -p sudo ufw allow 1194/udp sudo ufw allow OpenSSH sudo ufw enable sudo ufw route allow in on tun0 out on eth0
- Iniciar servicio:
sudo systemctl start openvpn@server sudo systemctl enable openvpn@server
2.2 Configuración de WireGuard
WireGuard es más ligero y rápido, basado en pares de claves:
- Instalar:
sudo apt install wireguard -y
- Generar claves:
wg genkey tee server_private.key wg pubkey > server_public.key wg genkey tee client_private.key wg pubkey > client_public.key
- Crear /etc/wireguard/wg0.conf:
[Interface] Address = 10.9.0.1/24 ListenPort = 51820 PrivateKey =[Peer] PublicKey = AllowedIPs = 10.9.0.2/32
- Habilitar y arrancar:
sudo sysctl -w net.ipv4.ip_forward=1 sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
2.3 Configuración de StrongSwan (IPsec)
Ideal para interoperabilidad con dispositivos IPsec:
- Instalar:
sudo apt install strongswan strongswan-pki libcharon-extra-plugins -y
- Generar CA y certificados:
ipsec pki --gen --outform pem > ca.key ipsec pki --self --in ca.key --dn C=ES, O=MiEmpresa, CN=VPN CA --ca --outform pem > ca.crt ipsec pki --gen --outform pem > server.key ipsec pki --pub --in server.key ipsec pki --issue --cacert ca.crt --cakey ca.key --dn C=ES, O=MiEmpresa, CN=vpn.midominio.com --san vpn.midominio.com --flag serverAuth --flag ikeIntermediate --outform pem > server.crt
- Configurar /etc/ipsec.conf y /etc/ipsec.secrets (ejemplo resumido):
# /etc/ipsec.conf config setup charondebug=ike 2, knl 2, net 2 conn vpn-ikev2 auto=add left=%any leftcert=server.crt leftid=vpn.midominio.com leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.10.0.0/24 ike=aes256-sha2_256-modp2048 esp=aes256-sha2_256 dpdaction=clear dpddelay=300s dpdtimeout=1h # /etc/ipsec.secrets : RSA server.key usuario %any : EAP suPasswordSecreto
- Reiniciar servicio:
sudo systemctl restart strongswan-starter sudo systemctl enable strongswan-starter
3. Integración y Autenticación Avanzada
Para grandes corporaciones, integrar la VPN con sistemas AAA simplifica la gestión:
- LDAP/Active Directory: Autenticación a usuarios corporativos.
- RADIUS: Autorización y accounting con FreeRADIUS.
- Multi-Factor Authentication: Google Authenticator, Duo Security.
Ejemplo de configuración OpenVPN con RADIUS (plugin-auth-pam):
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn client-cert-not-required username-as-common-name
4. Seguridad y Buenas Prácticas
- Actualizaciones: Mantener OpenSSL, kernels y paquetes VPN al día.
- Políticas de cifrado: Utilizar AES-256, SHA-2, PFS (Perfect Forward Secrecy).
- Restricción de acceso: Definir listas de control de acceso por subred o usuario.
- Registros y auditoría: Configurar logrotate y herramientas SIEM.
- Segmentación de red: Aislar clientes VPN en VLANs o zonas seguras.
5. Monitoreo y Mantenimiento
- Herramientas de monitorización: Zabbix, Nagios, Prometheus Grafana para métricas de tráfico y latencia.
- Alertas: Umbrales de sesiones concurrentes, CPU, ancho de banda.
- Backups: Copias periódicas de configuraciones, CA, certificados.
- Pruebas de recuperación: Simular caídas para validar tiempo de restauración (RTO/RPO).
Conclusión
Desplegar una VPN en un entorno Linux empresarial implica una planificación meticulosa, elección de la solución adecuada y aplicación de buenas prácticas de seguridad. OpenVPN, WireGuard y StrongSwan ofrecen distintos trade-offs entre rendimiento, facilidad de uso y compatibilidad. Integrar autenticación centralizada, monitorizar el servicio y mantener actualizados los componentes aseguran una implementación fiable y escalable que proteja la infraestructura y facilite el trabajo remoto.
Leave a Reply