
01 Jul Guía de Implementación de OpenVPN en AWS con LDAP y Certificado SSL (Let’s Encrypt)
Objetivo
- Crear una instancia de OpenVPN Access Server en AWS con:
- Seguridad y acceso controlado.
- IP elástica (EIP).
- FQDN en Route53.
- Integración con LDAP (AWS Directory Service – Managed Microsoft AD).
- Certificado SSL público con Let’s Encrypt.
🧱 Requisitos Previos
- Acceso a una VPC con subred pública (con NAT o IP pública).
- Tener una zona DNS en Route 53 (
vpn.empresa.com
). - AWS Managed Microsoft AD ya creado.
- Usuario de servicio LDAP (ej.
openvpnbind
). - Tener acceso al Marketplace de OpenVPN.
🚀 Paso 1: Crear la Instancia EC2 desde AWS Marketplace
- Ir a AWS Marketplace – OpenVPN Access Server.
- Hacer clic en Continue to Subscribe y luego Continue to Launch.
- En “Launch through EC2” configurar:
Parámetro |
Valor sugerido |
---|---|
AMI |
Última versión de OpenVPN (Ubuntu 22+) |
Tipo de instancia |
|
Subred |
Pública ( |
IP pública |
Enable |
Almacenamiento |
8–20 GB |
Key Pair |
El par de claves actual |
🔐 Paso 2: Crear y Asignar un Security Group
Crear un SG con las siguientes reglas:
Tipo |
Protocolo |
Puerto |
Origen (CIDR/IP) |
Descripción |
---|---|---|---|---|
SSH |
TCP |
22 |
Tu IP corporativa |
Acceso SSH admin |
HTTPS (Web UI) |
TCP |
943 |
Tu IP o 0.0.0.0/0 |
Acceso UI VPN |
VPN Clients |
UDP |
1194 |
0.0.0.0/0 |
Clientes OpenVPN |
HTTP (Certbot) |
TCP |
80 |
0.0.0.0/0 |
Requerido para Certbot |
Asocia este SG a la instancia OpenVPN.
🌐 Paso 3: Asignar Elastic IP y Configurar FQDN en Route 53
- Ir a Elastic IPs > Allocate Elastic IP.
- Asignar la IP a la instancia.
- Ir a Route 53 > Hosted Zones.
- Crear un registro A:
Nombre |
Tipo |
Valor |
---|---|---|
|
A |
<tu EIP asignada> |
🔧 Paso 4: Configurar OpenVPN
- Acceder vía navegador:
https://vpn.sn2.empresa.com:943/admin
- Usuario inicial:
openvpn
Si es necesario:
sudo passwd openvpn
- Ir a: Authentication > LDAP
Configurar los campos de la siguiente manera:
Campo |
Valor |
LDAP server |
|
Puerto |
636 (LDAPS) o 389 (LDAP) |
Usar SSL |
Yes |
Bind DN |
|
Bind Password |
(Contraseña del usuario LDAP) |
Base DN |
|
Username attribute |
|
🔐 Paso 5: Instalar Certificado SSL con Let’s Encrypt
1. Se debe conectar vía SSH a la instancia EC2 OpenVPN
ssh -i clave.pem ubuntu@<EIP>
2. Instalar Certbot
sudo apt update sudo apt install certbot -y
3. Detener OpenVPN (usa el puerto 443)
sudo systemctl stop openvpnas
4. Solicitar certificado SSL
sudo certbot certonly --standalone -d vpn.sn2.empresa.com
5. Levantar OpenVPN (Para instalar los certificados SSL)
sudo systemctl star openvpnas
6. Aplicar los certificados en OpenVPN
sudo /usr/local/openvpn_as/scripts/sacli --key "cs.priv_key" --value_file "/etc/letsencrypt/live/vpn.sn2.empresa.com/privkey.pem" ConfigPut sudo /usr/local/openvpn_as/scripts/sacli --key "cs.cert" --value_file "/etc/letsencrypt/live/vpn.sn2.empresa.com/cert.pem" ConfigPut sudo /usr/local/openvpn_as/scripts/sacli --key "cs.ca_bundle" --value_file "/etc/letsencrypt/live/vpn.sn2.empresa.com/fullchain.pem" ConfigPut
7. Reiniciar OpenVPN
sudo systemctl restart openvpnas
🔁 Paso 6: Renovación automática del certificado SSL
Agregar a cron:
sudo crontab -e
Agregar:
0 2 * * * certbot renew --quiet --post-hook "systemctl restart openvpnas"
✅ Validaciones Finales
- Acceder por
https://vpn.sn2.empresa.com:943/admin
Login con usuario LDAP
- Verificar SSL válido
- Descargar perfil
.ovpn
para conexión de clientes
📌 Notas adicionales
- Se puede clonar este proceso para una segunda instancia (
vpn.sn3.empresa.com
). - Considerar hacer snapshot de la instancia luego de la configuración completa.
- Revisar los logs en
/var/log/openvpnas.log
ante cualquier fallo.
Happy Hacking!