Mobile VPN mit pfSense und IKEv2

Kurze Zusammenfassung der Einstellungen für pfSense und Android.

VPN Serverkonfiguration

VPN –> IPsec –> Mobile Clients

  • Mobile Client Support aktivieren
  • User Authentication: Local Database
  • Group Authentication: None
  • Virtual Address Pool: beliebigen, nicht verwendeten Pool benutzen
  • Virtual IPv6 Address Pool: ebenfalls beliebigen, nicht verwendeten Pool verwenden (bei Bedarf)

pfSense unterstützt derzeit nicht das Vermischen von IPv4 und IPv6 im VPN Tunnel. D.h., dass zu einer IPv4 Gegenstelle auch nur IPv4 Traffic getunnelt werden kann und analog bei einer IPv6 Gegenstelle nur IPv6 getunnelt werden kann.

Alle anderen Einstellungen nach Bedarf.

System –> Cert. Manager –> CAs

Hier zunächst eine CA erstellen, wenn nicht bereits erledigt. Unter dieser CA wird anschließend das Serverzertifikat erstellt.

System –> Cert. Manager –> Certificates

Hier ein eigenes, internes Zertifikat unter der eben erstellten CA erstellen, nennen wir es z.B. “IKEv2 Server”. Wichtig ist, dass als Common Name der FQDN eingetragen wird, der später auch im VPN Client des Smartphones benutzt wird. Sonst funktioniert später die Authentifizierung nicht.

VPN –> IPsec –> Phase 1

  • Key Exchange Version: IKEv2
  • Internet Protocol: IPv4 (IPv6 bei Bedarf, Hinweis s. oben)
  • Interface: (vermutlich) WAN
  • Authentication Method: EAP-MSChapv2
  • My Identifier: Distinguished Name – Hostname (FQDN) der Firewall eintragen
  • Peer Identifier: Any
  • My Certificate: für den VPN Server erzeugtes Zertifikat auswählen (“IKEv2 Server”)
  • Encryption Algorithm: AES 256 bits
  • Hash Algorithm: SHA256
  • DH Group: 2
  • Lifetime: 28800s

Alles weitere nach Bedarf, ich habe noch DPD aktiviert.

DH Group 2 ist Pflicht, sofern man neben Androidclients auch Windowsrechner mit Boardmitteln zum VPN verbinden möchte. Strongswan hat diese Group aber nach einem Update aus den Standardproposals entfernt. Man muss es daher zwingend von Hand wieder aktivieren, indem man unter den IKEv2-Algorithmen seine verwendeten Proposals definiert, in diesem Fall aes256-sha256-modp1024.

Die Verschlüsselungsparameter lassen sich unter Windows mit Hilfe der Powershell anpassen. s. hier: Verschlüsselungen im Windows 10 IKEv2 Client anpassen. Damit ist man nicht mehr auf die veraltete DH-Group 2 angewiesen.

VPN –> IPsec –> Phase 2

  • Mode: Tunnel IPv4
  • Local Network: Network 0.0.0.0/0 (um jeglichen Traffic ins VPN zu tunneln)
  • Protocol: ESP
  • Encryption Algorithm: AES Auto
  • Hash Algorithm: SHA1
  • PFS key group: off
  • Lifetime: 3600s

VPN –> IPsec –> Pre-Shared Keys

Pro User einen Identifier (=Username) und Pre-Shared Key (Typ: EAP) vergeben

Client Konfiguration

Android

Als VPN Client für Android eignet sich sehr gut die App “strongswan”. Das Zertifikat des Servers muss in den Client importiert werden. Einstellungen für strongswan:

  • Server: FQDN der pfSense (=gleich Common Name des erstellten Zertifikats)
  • VPN-Typ: IKEv2 EAP (Benutzername/Passwort)
  • Benutzername: Identifier aus den Pre-Shared Key Einstellungen
  • Passwort: der zum Identifier passende Pre Shared Key
  • CA-Zertifikat: das importierte Zertifikat der pfSense (oder automatisch wählen)
  • Profilname: Anzeigename innerhalb von strongswan, daher beliebig

Windows (ab Windows 7)

Seit Windows 7 unterstützt der Boardeigene VPN Client IPsec mit IKEv2 und Zertifikaten. Hierfür muss man sich zunächst das Zertifikat der CA von der pfSense exportieren und auf dem Windows-PC importieren. Es muss unter den “Vertrauenswürdigen Stammzertifizierungsstellen” gespeichert werden. Das lässt sich zum Beispiel mit der Managementkonsole (Start –> Ausführen –> mmc) erledigen. Anschließend kann die VPN Verbindung unter den Netzwerkeinstellungen konfiguriert werden.

VPN Android IPsec pfsense ikev2 roadwarrior windows

Vorheriger Post
Nächster Post