Wir möchten erfolgreich eine VPN-Verbindung auf iOS-Endgeräte verteilen. Das „OnDemand“ VPN soll verwendet werden und daher muss der Nutzer mit Zertifikaten authentifiziert werden. die Authentifizierung am NPS (Radius) ist noch eine andere Sache, dieser Beitrag konzentriert sich auf das IKEv2 zwischen iOS und Windows Server RRAS.
Unsere iOS-VPN-Intune Checkliste
- Microsoft Endpoint Manager (ehemals Intune) soll die VPN-Verbindung via Konfigurationsprofil verteilen
- Die Devices sind schon im EPM angekommen und synchronisieren fröhlich Richtlinien
- Microsoft Endpoint Manager soll den Nutzern (auf den Geräten) automatisch ein Zertifikat ausstellen (via „Certificate Connector“)
- Funktioniert perfekt mit einer Microsoft CA
- Die CA und NPS sind nicht Teil dieses Beitrages, aber mit Anleitung durchaus machbar
- Die iPhone/iPads Geräte haben iOS 14.2 oder neuer (!)
- Es wird IKEv2 verwendet
- Denn das ist die einzige Möglichkeit, iOS mit RRAS unter der Verwendung von Zertifikaten zu verbinden
- Der RRAS Server ist ein Windows Server 2019
- Kein Server 2016, der kann einige Kombinationen der Security Association Parameters nicht
- RRAS ist korrekt konfiguriert (Ports, Erreichbarkeit, Radius …)
- NPS ist korrekt konfiguriert (Verbindungsanforderungs- und die Verbindungsrichtlinie …)
Im Prinzip folgen wir dem brauchbaren „Deploy Always On VPN“ Guide von Microsoft unter https://docs.microsoft.com/en-us/windows-server/remote/remote-access/vpn/always-on-vpn/deploy/always-on-vpn-deploy-deployment
Der Trick ist eine funktionierende Kombination aus iOS IKEv2-Parametern und den zugehörigen Phase1/2 Parametern auf der RRAS-Gegenstelle zu erstellen. Denn das ist nicht Default und leider auch praktisch nirgends dokumentiert.
RRAS-Server
Um erfolgreich eine IKEv2 Verbindung von iOS zum RRAS Server herzustellen, ist dem RRAS-Server (und iOS) die richtige Kombination der Ciphersuits vorzugeben. Das geht am RRAS via CustomPolicy
. Natürlich exklusiv an der PowerShell.
Viele Kombinationen funktionieren nicht. Diese hier funktioniert:
Set-VpnServerConfiguration -CustomPolicy -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -DHGroup Group14 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup PFS2048 -SALifeTimeSeconds 28800 -MMSALifeTimeSeconds 86400 -SADataSizeForRenegotiationKilobytes 1024000
Dann muss man dem RRAS-Server in aller Regel erklären, das er auch fragmentierte IKE Pakete annehmen soll. Bei einer Schlüsselgröße von 2048bit mit Zertifikaten und einer MTU von 1492 oder 1500byte wird es oft knapp und Pakete fragmentieren:
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters\Ikev2\" -Name EnableServerFragmentation -PropertyType DWORD -Value 1 -Force
Wenn beides geschehen ist, muss der RRAS neu starten:
Restart-Service RemoteAccess
Microsoft Endpoint Manager
Innerhalb der VPN-Richtlinie kommt es auf die IKEv2 Parameter an. Die sind in einer bestehenden Richtlinie erreichbar unter Devices > Richtlinie (Name) > Properties > Configuration settings > IKEv2 Settings. Dort gibt es ab etwa der Mitte die „wichtigen“ (und nicht offensichtlichen) Einstellungen:
Perfect forward secrecy: Enable
Certificate revocation check: Disable
Use IPv4/IPv6 internal subnet attributes: Disable
Mobility and multihoming (MOBIKE): Enable
Redirect: Enable
Security Association Parameters
Encryption algorithm: AES-256
Integrity algorithm: SHA2-256
Diffie-Hellman group: 14
Lifetime (minutes): 1440
Child Security Association Parameters
Encryption algorithm: AES-256
Integrity algorithm: SHA2-256
Diffie-Hellman group: 14
Lifetime (minutes): 480
… und schon geht’s. Also schon ging es bisher bei unseren Systemen 🙂
Vielleicht schreiben wir irgendwann noch einen großen Artikel mit allen Schritten, also von der Zertifizierungsstelle bis zum Endgerät … oder jemand anderes tut das. Oder, wenn ihr sowas braucht, ruft ihr uns an 😋