Tengo una instancia de AWS que quiero ser un servidor VPN. Conectará clientes de Windows 7 a una red privada en la nube de Amazon.
- He instalado Ubuntu 12.04 y el
strongswan-ikev2
paquete. ipsec version
informesLinux strongSwan U4.5.2/K3.2.0-52-virtual
- Tenga en cuenta que tanto el cliente como el servidor están detrás de NAT (el cliente porque está en la red de una oficina local y el servidor porque está en la nube de Amazon). He desbloqueado los puertos UDP 500 y 4500 tanto en el tablero de Amazon como en el firewall del cliente.
Esto es /etc/ipsec.conf:
config setup plutostart=no conn %default keyexchange=ikev2 ike=aes256-sha1-modp1024! esp=aes256-sha1! dpdaction=clear dpddelay=300s rekey=no conn win7vpn left=%any leftsubnet=<amazon VPC CIDR block> leftauth=pubkey leftcert=openssl-cert.pem leftid=<vpn server public dns name> right=%any rightsourceip=<amazon private IP address, which elastic ip is forwarded to> rightauth=eap-mschapv2 rightsendcert=never eap_identity=%any auto=add
Esto es /etc/ipsec.secrets:
: RSA openssl-key.rsa TESTDOMAIN\testuser : EAP "testpassword"
He agregado el certificado de CA que firmó el certificado de host del servidor al almacén de certificados de la máquina local (no del usuario) para que Windows pueda autenticar el servidor.
Luego trato de conectarme al servidor usando el cliente de Windows 7 como se prescribe aquí , con una excepción: estoy usando el nombre DNS en lugar de la dirección IP. Ingreso el nombre de usuario, el dominio y la contraseña en mi archivo ipsec.secrets, y trata de conectarse.
Cuando lo hace, obtengo fuertes registros de Swan que se ven así. Lo critiqué un poco por censura y claridad; CLIENTPUB / CLIENTPRIV son las direcciones IP públicas y privadas del cliente y AMAZONPRIV es la dirección IP privada del servidor (que es lo que la IP pública del servidor, Amazon llama a esto una "IP elástica", reenvía).
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500]
Sep 4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives
Sep 4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT
Sep 4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep 4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500]
Sep 4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500]
Sep 4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER
Sep 4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ]
Sep 4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA"
Sep 4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca
Sep 4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV]
Sep 4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn'
Sep 4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request
Sep 4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE
Sep 4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful
Sep 4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com"
Sep 4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep 4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
En este punto, Windows muestra un mensaje de error de inmediato:
Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable
Después de unos segundos, Charon lo intenta nuevamente y luego cierra la conexión.
Sep 4 00:16:37 localhost charon: 16[IKE] sending keep alive
Sep 4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
Sep 4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout
Y eso es.
Por lo que puedo decir, estoy siguiendo todas las instrucciones en la wiki de strongSwan.
¿Qué estoy haciendo mal aquí?
Editar: este es definitivamente un problema con los certificados. Deshabilité las verificaciones de validación extendidas editando el registro y reiniciando como se describe en MSKB926182 (jajaja si querías un enlace a eso) y ahora puedo conectarme a mi servidor VPN sin errores. Descubriré cómo generar certificados que satisfagan los requisitos y agregaré una respuesta. Gracias a @ecdsa por el puntero a la página de certificación en la wiki de strongSwan que me hizo apuntar en la dirección correcta.
fuente
Respuestas:
Me di cuenta de esto. @ecdsa me señaló en la dirección correcta, y finalmente pude resolver el problema siguiendo esta guía .
Sobre el error
El mensaje de error fue "Error 13801: las credenciales de autenticación IKE son inaceptables", que sonaba como si mis credenciales de usuario no funcionaran. Sin embargo, este es un mensaje sobre la autenticación del servidor , que se realiza (según mi configuración) mediante el certificado SSL del servidor. Microsoft ha publicado documentación sobre Solución de problemas de conexiones VPN IKEv2 que enumera las posibles causas de este error:
En mi caso, mi problema tenía que ver con los valores de EKU. Siguiendo la guía que vinculé en la parte superior, pude generar un certificado con los valores EKU correctos, y funcionó muy bien.
Para solucionar este problema, puede deshabilitar la comprobación de EKU en su cliente de Windows (por supuesto, esto solo debe hacerse para realizar pruebas):
regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
DisableIKENameEkuCheck
y establezca su valor en1
fuente
ipsec pki --isue ... --san @ipaddress
Tuve un problema idéntico y lo resolví asegurándome de tener la cadena de certificados en el archivo del certificado (certificado de entidad final, CA intermedia, CA raíz, en ese orden). TLS es divertido.
Después de reiniciar strongSwan, esto dejó de funcionar, pero comenzó a funcionar nuevamente cuando solté la CA intermedia y la raíz
/etc/ipsec.d/cacerts
.fuente
¡Después de una larga búsqueda, este hilo consiguió que mi configuración de Windows Phone 10 (WP10) funcionara con IKEv2! Una cosa a mencionar podría ser que tiene que ./configurar su Strongswan con --enable-eap-identity --enable-eap-mschapv2 --enable-openssl (y probablemente --enable-dhcp) para tener los complementos necesarios. Y sí, debe obtener los certificados correctos (en el lado del servidor; el cliente solo necesita conocer la CA raíz del servidor).
fuente