Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
FAQ
Know How
Testberichte
Hardware-DB
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Tutorials

VPN mit Windows 7 und strongSwan

Microsoft hat Windows 7 einen vollwertigen VPN-Client für IPSec spendiert. Das Betriebssystem ist durch Windows Agile VPN in der Lage, Verbindungen zu VPN-Gateways herzustellen.

Dieses Tutorial beschreibt die Konfiguration eines Clients mit Windows 7 RC für den Zugriff auf ein VPN-Gateway mit strongSwan.

Windows 7 ist in der Lage ohne zusätzliche Software eine IPSec-Verbindung herzustellen. Der Verbindungsaufbau läuft über das Protokoll IKEv2 (Internet Key Exchange Version 2). Diese Variante von IKE wird noch von recht wenigen VPN-Routern unterstützt. Das Mobility and Multihoming Protocol (MobIKE) wird von Windows jetzt ebenfalls unterstützt. Für alle Test kam Windows 7 RC Build 7100 zum Einsatz.

Als VPN-Gateway kam ein Linux-Server mit strongSwan zum Einsatz. Für dieses Tutorial habe ich strongSwan 4.3.1 unter debian Linux (Kernel 2.6.18) genutzt.

VPN Netzwerkaufbau

Für diese Anleitung greift ein Notebook mit Windows 7 auf einen strongSwan-Server in Zürich zu.

Netzwerkaufbau strongSwan und Windows 7 Agile VPN

VPN Parameter

Der VPN-Tunnel wird mit den folgenden Parametern aufgebaut.


1

2

Standort


Zürich

mobil

Gerät


strongSwan

Windows 7

Rolle


VPN-Gateway

Remote User

WAN-IP oder Hostname

A

vpn.nwlab.net

dynamisch

Lokales IP-Netz / Maske

B

192.168.178.0/24

-

Der Verbindungsaufbau läuft über IKEv2. Die Authentifizierung erfolgt über Zertifikate.

VPN mit strongSwan einrichten

Um strongSwan für die VPN-Verbindung mit Windows 7 einzurichten, sind zwei Schritte notwendig. Das Serverzertifikat muss angepasst werden und die eigentliche Verbindung muss konfiguriert werden.

Zertifikat für das VPN-Gateway

Damit der Windows 7 Client das Zertifikat des VPN-Gateway akzeptiert, müssen zwei Bedingungen erfüllt sein. Das Zertifikat muss für Server Authentication gekennzeichnet sein und der DNS-Name des strongSwan-Servers muss im subjectDistinguishedName oder subjectAltName stehen. Um ein solches Zertifikat mit OpenSSL zu erstellen fügen Sie die folgenden Zeilen in den Abschnitt usr_cert der openssl.cnf ein:

[ usr_cert ]
extendedKeyUsage = serverAuth
subjectAltName = DNS:vpn.nwlab.net

Ohne diese Angaben akzeptiert Windows 7 RC das Serverzertifikat nicht und baut keine VPN-Verbindung auf.

ipsec.conf

Die Konfiguration der VPN-Verbindungen erfolgt bei strongSwan in der Datei /etc/ipsec.conf.

# ipsec.conf - strongSwan IPsec configuration file

ca vpnca
     cacert=cacert.pem

config setup
     plutostart=no

conn windows
     left=%defaultroute
     leftcert=servercert.pem
     leftsubnet=192.168.178.0/24
     right=%any
     rightsourceip=192.168.77.0/24
     rightid="C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7"
     keyexchange=ikev2
     auto=add

Für unser Beispiel benötigen wir kein IKEv1, daher wird pluto nicht gestartet. IKEv2 wird von charon abgewickelt. Die rightid muss den Angaben des Zertifikates von Windows 7 entsprechen. Dem VPN-Adapter des Clients wird eine IP-Adresse aus dem Netz rightsourceip zugewiesen.

strongSwan kann jetzt mit ipsec start gestartet werden.

Agile VPN unter Windows 7 einrichten

Zertifikat erstellen

Um die VPN-Verbindung in Windows 7 zu erstellen benötigen wir zuerst ein Zertifikat. Diese erstellen wir mit openssl auf dem strongSwan-Gateway. Wir beginnen mit dem Kommando openssl req -newkey rsa:1024 -keyout win7key.pem -out win7req.pem

vpn:~/bla# openssl req -newkey rsa:1024 -keyout win7key.pem -out win7req.pem
Generating a 1024 bit RSA private key
..........................++++++
..............................++++++
writing new private key to 'win7key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Berlin]:
Locality Name (eg, city) []:home
Organization Name (eg, company) [nwlab]:
Organizational Unit Name (eg, section) []:lab
Common Name (eg, YOUR name) []:win7
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Weiter geht es mit openssl ca -in win7req.pem -days 730 -out win7cert.pem -notext.

vpn:~/bla# openssl ca -in win7req.pem -days 730 -out win7cert.pem -notext
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /usr/lib/ssl/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 11 (0xb)
        Validity
            Not Before: May 23 19:39:36 2009 GMT
            Not After : May 23 19:39:36 2011 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Berlin
            organizationName          = nwlab
            organizationalUnitName    = lab
            commonName                = win7
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                EF:A1:DD:29:7E:03:2D:62:0D:E3:D2:EA:E6:1F:F0:EA:01:14:97:42
            X509v3 Authority Key Identifier:
                keyid:09:30:BB:26:5A:05:C3:83:6E:DE:47:4E:FF:50:2C:23:0B:44:C8:D0

Certificate is to be certified until May 23 19:39:36 2011 GMT (730 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Jetz muss das Zertifikat noch als p12-Datei exportiert werden. Das erledigt openssl pkcs12 -export -inkey win7key.pem -in win7cert.pem -name "win7" -certfile cacert.pem -caname "strongSwan Root CA" -out win7cert.p12 Die Datei win7cert.p12 kann jetzt auf den PC mit Windows 7 übertragen werden.

Zertifikat in Windows 7 importieren

Rufen Sie unter Windows 7 die Microsoft Management Console (kurz MMC) auf. Gehen Sie im Menü Datei auf den Punkt Snap-In hinzufügen und fügen Sie das Snap-In

Snap In für die Verwaltung von Zertifikaten hinzufügen

Im folgenden Dialog wählen Sie Computerkonto aus.

Zertifikate für Computerkonto verwalten

Wenn Sie das Snap-In hinzugefügt haben, gehen Sie auf "Eigene Zertifikate" und importieren Sie das p12-File.

Zertifikat für Agile VPN

Verschieben Sie das ebefalls in der p12-Datei enthaltene CA-Zertifikat in den Zweig Vertrauenwürdige Stammzertifizierungsstellen. Nach dem Import kontrollieren Sie die Angaben unter Allgemein, Details und Zertifizierungspfad im Computer- und CA-Zertifikat. Beide Zertifikate müssen von Windows 7 als gültig erkannt werden.

VPN-Verbindung einrichten

Starten Sie das Netzwerk- und Freigabecenter (Systemsteuerung Netzwerkstatus und -aufgaben anzeigen) und klicken Sie auf Neue Verbindung oder neues Netzwerk einrichten.

Netzwerk- und Freigabecenter in Windows 7

Um eine neue VPN-Verbindung einzurichten wählen Sie Verbindung mit dem Arbeitsplatz herstellen.

Netzwerk- und Freigabecenter in Windows 7

Im folgenden Dialog klicken Sie auf Die Internetverbindung (VPN) verwenden.

VPN unter Windows 7 konfigurieren

Jetzt können Sie den DNS-Namen oder die IP-Adresse des VPN-Gateways eingeben und der neuen VPN-Verbindung einen Namen geben. Aktivieren Sie noch Jetzt nicht verbinden, nur für spätere Verwendung einrichten.

IPSec VPN mit IKEv2 unter Windows 7

Da die Verbindung über Zertifikate abgesichert ist, sind die Angaben bei Benutzernamen und Kennwort ohne Belang. Klicken Sie dann auf Erstellen um die VPN-Verbindung anzulegen.

Benutzernamen und Kennwort für VPN

Wenn Sie nun auf das Netzwerksymbol im Systray klicken, sollte die VPN-Verbindung sichtbar sein. Mit einem Rechtsklick können Sie die Eigenschaften der VPN-Verbindung aufrufen.

Windows 7 VPN-Eigenschaften

Gehen Sie in den Reiter Optionen und ändern Sie den VPN-Typ auf IKEv2. Stellen Sie die Authentifizierung auf Computerzertifikate verwenden.

VPN-Typ IKEv2

Nach diesen Anpassungen sollte sich der VPN-Tunnel von Windows 7 Agile VPN zu strongSwan aufbauen lassen.

Fehlersuche

Das umfangreiche Logging von strongSwan erleichtert die Fehlersuche erheblich. Zuerst mal die Ausgabe von ipsec statusall bei eine funktionierenden Verbindung:

vpn:~# ipsec statusall Performance: uptime: 4 minutes, since May 24 17:20:34 2009 worker threads: 10 idle of 16, job queue load: 1, scheduled events: 5 loaded plugins: aes des sha1 sha2 md5 fips-prf random x509 pubkey xcbc hmac gmp kernel-netlink stroke updown Virtual IP pools (size/online/offline): windows: 255/1/0 Listening IP addresses: 192.168.178.66 Connections: windows: 192.168.178.66...%any windows: local: [C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net] uses public key authentication windows: cert: "C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net" windows: remote: [C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7] uses any authentication windows: child: 192.168.178.0/24 === dynamic Security Associations: windows[2]: ESTABLISHED 2 seconds ago, 192.168.178.66[C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net]...192.168.178.21[C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7] windows[2]: IKE SPIs: 53794ad42e466561_i 31a3fe9b3fb8c840_r*, public key reauthentication in 2 hours windows[2]: IKE proposal: 3DES/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024_BIT windows{2}: INSTALLED, TUNNEL, ESP SPIs: cd96db57_i 96a35f69_o windows{2}: AES_CBC-256/HMAC_SHA1_96, rekeying in 49 minutes, last use: no_i no_o windows{2}: 192.168.178.0/24 === 192.168.77.1/32

Im syslog sieht das so aus:

May 24 17:27:39 vpn charon: 09[NET] received packet: from 192.168.178.21[500] to 192.168.178.66[500]
May 24 17:27:39 vpn charon: 09[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
May 24 17:27:39 vpn charon: 09[IKE] 192.168.178.21 is initiating an IKE_SA
May 24 17:27:39 vpn charon: 09[IKE] sending cert request for "C=DE, ST=Berlin, L=home, O=nwlab, OU=lab, CN=vpnca, E=ca@nwlab.net"
May 24 17:27:39 vpn charon: 09[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(MULT_AUTH) ]
May 24 17:27:39 vpn charon: 09[NET] sending packet: from 192.168.178.66[500] to 192.168.178.21[500]
May 24 17:27:39 vpn charon: 10[NET] received packet: from 192.168.178.21[4500] to 192.168.178.66[4500]
May 24 17:27:39 vpn charon: 10[ENC] unknown attribute type INTERNAL_IP4_SERVER
May 24 17:27:39 vpn charon: 10[ENC] unknown attribute type INTERNAL_IP6_SERVER
May 24 17:27:39 vpn charon: 10[ENC] parsed IKE_AUTH request 1 [ IDi CERT CERTREQ AUTH N(MOBIKE_SUP) CP SA TSi TSr ]
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 0e:ac:82:60:40:56:27:97:e5:25:13:fc:2a:e1:0a:53:95:59:e4:a4
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid dd:bc:bd:86:9c:3f:07:ed:40:e3:1b:08:ef:ce:c4:d1:88:cd:3b:15
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 4a:5c:75:22:aa:46:bf:a4:08:9d:39:97:4e:bd:b4:a3:60:f7:a0:1d
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 01:f0:33:4c:1a:a1:d9:ee:5b:7b:a9:de:43:bc:02:7d:57:09:33:fb
May 24 17:27:39 vpn charon: 10[IKE] received cert request for "C=DE, ST=Berlin, L=home, O=nwlab, OU=lab, CN=vpnca, E=ca@nwlab.net"
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 34:4f:30:2d:25:69:31:91:ea:f7:73:5c:ab:f5:86:8d:37:82:40:ec
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 3e:df:29:0c:c1:f5:cc:73:2c:eb:3d:24:e1:7e:52:da:bd:27:e2:f0
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid 59:79:12:de:61:75:d6:6f:c4:23:b7:77:13:74:c7:96:de:6f:88:72
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid e2:7f:7b:d8:77:d5:df:9e:0a:3f:9e:b4:cb:0e:2e:a9:ef:db:69:77
May 24 17:27:39 vpn charon: 10[IKE] received cert request for unknown ca with keyid e2:7f:7b:d8:77:d5:df:9e:0a:3f:9e:b4:cb:0e:2e:a9:ef:db:69:77
May 24 17:27:39 vpn charon: 10[IKE] received end entity cert "C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7"
May 24 17:27:39 vpn charon: 10[CFG] looking for peer configs matching 192.168.178.66[%any]...192.168.178.21[C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7]
May 24 17:27:39 vpn charon: 10[CFG] selected peer config 'windows'
May 24 17:27:39 vpn charon: 10[CFG] using certificate "C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7"
May 24 17:27:39 vpn charon: 10[CFG] using trusted ca certificate "C=DE, ST=Berlin, L=home, O=nwlab, OU=lab, CN=vpnca, E=ca@nwlab.net"
May 24 17:27:39 vpn charon: 10[CFG] checking certificate status of "C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7"
May 24 17:27:39 vpn charon: 10[CFG] certificate status is not available
May 24 17:27:39 vpn charon: 10[IKE] authentication of 'C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7' with RSA signature successful
May 24 17:27:39 vpn charon: 10[IKE] ignoring INTERNAL_IP4_SERVER config attribute
May 24 17:27:39 vpn charon: 10[IKE] ignoring INTERNAL_IP6_SERVER config attribute
May 24 17:27:39 vpn charon: 10[IKE] peer supports MOBIKE
May 24 17:27:39 vpn charon: 10[IKE] authentication of 'C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net' (myself) with RSA signature successful
May 24 17:27:39 vpn charon: 10[IKE] scheduling reauthentication in 10046s
May 24 17:27:39 vpn charon: 10[IKE] maximum IKE_SA lifetime 10586s
May 24 17:27:39 vpn charon: 10[IKE] IKE_SA windows[1] established between 192.168.178.66[C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net]...192.168.178.21[C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7]
May 24 17:27:39 vpn charon: 10[IKE] sending end entity cert "C=DE, ST=Berlin, O=nwlab, OU=lab, CN=vpn.nwlab.net"
May 24 17:27:39 vpn charon: 10[IKE] peer requested virtual IP %any
May 24 17:27:39 vpn charon: 10[CFG] assigning new lease to C=DE, ST=Berlin, O=nwlab, OU=lab, CN=win7
May 24 17:27:39 vpn charon: 10[IKE] assigning virtual IP 192.168.77.1 to peer
May 24 17:27:39 vpn charon: 10[IKE] CHILD_SA windows{1} established with SPIs c43574e5_i 83888140_o and TS 192.168.178.0/24 === 192.168.77.1/32
May 24 17:27:39 vpn charon: 10[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH CP SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(NO_ADD_ADDR) ]
May 24 17:27:39 vpn charon: 10[NET] sending packet: from 192.168.178.66[4500] to 192.168.178.21[4500]

Erzeugt ein Verbindungsversuch vom Windows aus keine Einträge im syslog von strongSwan filtert vermutlich eine Firewall oder ein Router die IKE-Frames aus.

Weiterführende Informationen zu VPN

Bei Fragen zu VPN wird Ihnen im Netzwerkforum geholfen.

 

 
© 2004-2023, network lab - we make your net work - Netzwerkforum
aktualisiert am 22.03.2012