Mittwoch, 23. März 2005
IPCop VPN zu Windows XP (IPSec, FreeSWAN)
Die letzten drei Tage habe ich mich damit rumgeschlagen, ein VPN
zwischen einem Firmennetz und meinem privaten Rechner herzustellen.
Was folgt ist meine kleine Schritt-für-Schritt Anleitung.
Was folgt ist meine kleine Schritt-für-Schritt Anleitung.
Erstmal mein Setup:
Tutorials: Vorweg schonmal Links, die für meine Einrichtung essentiell hilfreich waren: Nate Carlson und IPSec Setup sowie ebootis. Auch sehr hilfreich und ausführlich ist Using a Linux L2TP/IPsec VPN server with Windows 2000/XP.
Firmennetzwerk: IPCop 1.4.4 als 192.168.1.1. Diese Maschine fungiert als Firewall und Router. Alle Firmen-PCs sind an das 192.168.1.0/255.255.255.0 Subnetz angeschlossen. Besonders interessant ist dabei ein Linux-PC der als interner Webserver dient. Das Ziel der Übung war, auf diesen Webserver per VPN zuzugreifen.
Heimnetzwerk: Mein Heimatnetzwerk besteht aus einem per DSL-angebundenem Linux-Router (192.168.0.42) sowie ein paar Maschinen dahinter. Mein Windows XP Client ist die 192.168.0.2. Der Linux-Router hat ein paar zusätzliche Port-Forwarding Rules per iptables zugestanden bekommen. Ob diese letztendlich nötig waren, bin ich mir nicht sicher, aber der Vollständigkeit halber hier sind sie:
Die ersten drei Zeilen dienen der Annahme von UDP-Paketen auf Port 4500 und 500. Beide sind für die Verhandlung eines VPN per L2TP/IPSec notwendig, sollten aber per NAT eigentlich automagisch verteilt werden. $4 entspricht übrigens meiner externen IP-Adresse im Internet. Diese leite ich per dyndns.org Service um.
Mein Tutorial ist leider unbebildert, Screenshots waren mir etwas zu müßig. Fette Wörter sind Menüpunkte der Oberflächen und Schaltflächen, kursive Wörter sind Eingabe-Labels bzw. sonstige Beschreibungen des Interfaces.
Ich habe für die ganze Sache übrigens gut 3 Tage gebraucht und zahlreiche Wutorgien ausgestoßen. Mein damaliger Fehler war darin begründet vieles über das DFÜ-Netzwerk machen zu wollen anstelle IPSec.exe zu nutzen. Bei ersterem habe ich einfach keine sinnvollen Einstellungen herausfinden können, und als ich dann zu letzterem überging, klappte es dann plötzlich.
Jetzt kann ich also auf das LAN zugreifen. Der nächste Schritt ist ein Routing so dass ich vom internen LAN im VPN auf Internetseiten zugreifen kann, so dass meine IP nicht mehr meine DSL-IP sondern die des IPCop-Systemes ist. Das müsste irgendwie mit Gateway-Einstellungen zu bewerkstelligen sein, und da werde ich gleich meinen Lieblings-Problemlöser und Alleskönner Andy zu ausquetschen. Wenn ich das gelöst kriege, melde ich mich. Bis dahin hilft SSH-Tunneling via Putty schonmal einiges.
(UPDATE: Eine Lösung dieses Problems habe ich in Teil 2 beschrieben)
Tutorials: Vorweg schonmal Links, die für meine Einrichtung essentiell hilfreich waren: Nate Carlson und IPSec Setup sowie ebootis. Auch sehr hilfreich und ausführlich ist Using a Linux L2TP/IPsec VPN server with Windows 2000/XP.
Firmennetzwerk: IPCop 1.4.4 als 192.168.1.1. Diese Maschine fungiert als Firewall und Router. Alle Firmen-PCs sind an das 192.168.1.0/255.255.255.0 Subnetz angeschlossen. Besonders interessant ist dabei ein Linux-PC der als interner Webserver dient. Das Ziel der Übung war, auf diesen Webserver per VPN zuzugreifen.
Heimnetzwerk: Mein Heimatnetzwerk besteht aus einem per DSL-angebundenem Linux-Router (192.168.0.42) sowie ein paar Maschinen dahinter. Mein Windows XP Client ist die 192.168.0.2. Der Linux-Router hat ein paar zusätzliche Port-Forwarding Rules per iptables zugestanden bekommen. Ob diese letztendlich nötig waren, bin ich mir nicht sicher, aber der Vollständigkeit halber hier sind sie:
CODE:
iptables -A FORWARD -p udp -i ppp0 -o eth1 -d 192.168.0.42 \
--dport 4500 -j ACCEPT
iptables -A FORWARD -p udp -i ppp0 -o eth1 -d 192.168.0.42 \
--dport 500 -j ACCEPT
iptables -A FORWARD -p 50 -i ppp0 -o eth1 -d 192.168.0.42 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -i ppp0 -d $4 \
--dport 500 -j DNAT --to 192.168.0.1:500
iptables -t nat -A PREROUTING -p udp -i ppp0 -d $4 \
--dport 4500 -j DNAT --to 192.168.0.1:4500
iptables -t nat -A PREROUTING -p 50 -i ppp0 -d $4 \
-j DNAT --to 192.168.0.1
--dport 4500 -j ACCEPT
iptables -A FORWARD -p udp -i ppp0 -o eth1 -d 192.168.0.42 \
--dport 500 -j ACCEPT
iptables -A FORWARD -p 50 -i ppp0 -o eth1 -d 192.168.0.42 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -i ppp0 -d $4 \
--dport 500 -j DNAT --to 192.168.0.1:500
iptables -t nat -A PREROUTING -p udp -i ppp0 -d $4 \
--dport 4500 -j DNAT --to 192.168.0.1:4500
iptables -t nat -A PREROUTING -p 50 -i ppp0 -d $4 \
-j DNAT --to 192.168.0.1
Die ersten drei Zeilen dienen der Annahme von UDP-Paketen auf Port 4500 und 500. Beide sind für die Verhandlung eines VPN per L2TP/IPSec notwendig, sollten aber per NAT eigentlich automagisch verteilt werden. $4 entspricht übrigens meiner externen IP-Adresse im Internet. Diese leite ich per dyndns.org Service um.
Mein Tutorial ist leider unbebildert, Screenshots waren mir etwas zu müßig. Fette Wörter sind Menüpunkte der Oberflächen und Schaltflächen, kursive Wörter sind Eingabe-Labels bzw. sonstige Beschreibungen des Interfaces.
- Der erste Teil wird nun auf der IPCop Maschine durchgeführt.
Voraussetzung ist eine funktionsfähige Einrichtung vom IPCop; DHCP
sollte aktiviert sein, der grüne Interface ist LAN, das rote Interface
ist Internet.
- Hauptmenü VPNs > VPNs.
- Globale Einstellungen: Lokaler VPN Hostname/IP: Dort die IP bzw. den Hostnamen des IPCop Rechners im Internet einstellen (also z.b. firmenvpn.dyndns.org). Außerdem noch die Checkbox Aktiviert anhaken und auf Speichern klicken
- Zertifizierungsstellen (CAs): In diesem Block stehen Buttons bereit um ein Root-Zertifikat und ein Host-Zertifikat zu erstellen. Beide Zertifikate sollten nun erstellt werden. Danach stehen in der Oberfläche zwei Diskettensymbole zur Verfügung mit denen wir das erstellte Zertifikat runterladen können. Das ist zentral wichtig, da die Zertifikate später in die Windows-Maschine importiert werden müssen. Also die beiden Dateien cacert.pem und hostcert.pm runterladen und via Mail/FTP/SSH/SCP/Copy+Paste auf die Windows-Maschine transferieren.
- Verbindungsstatus und -kontrolle: Dort sollten noch keine Einträge zu finden sein. Also legen wir welche an. Auf Hinzufügen klicken. Im nächsten Bildschirm die Methode Host-zu-Netz VPN (Roadwarrior) aktivieren und auf Hinzufügen klicken. Es folgt die Maske für eine neue Verbindung.
- Dort als Name: z.b. "FirmenVPN" eintragen. Schnittstelle auf RED richten. Das Lokale Subnetz habe ich auf "192.168.1.0/255.255.255.0" gestellt. Die Felder Remote Host/IP und Anmerkung können leer gelassen werden um den Zugriff auch auf andere zukünftige Clients zu ermöglichen und nicht auf einen festen Host zu beschränken.
- Im Block Authentifizierung die Methode Erzeuge ein Zertifikat auswählen. Nun den Namen eintragen, z.B. "FirmenVPN" der später beim Client eingerichtet wirst. Ist eigentlich ziemlich egal, genauso wie die restlichen Daten des Zertifikates. Nachdem auch noch ein sinnfreies Passwort eingetragen wurde auf Speichern klicken.
- Man landet nun wieder auf der VPNs-Übersicht. Dort ist unser neuer Eintrag hinzugefügt worden mit einer Latte von Button-Optionen. Auch hier ist das Diskettensymbol wieder unser erster Klick: Die Datei sollte als "firmenvpn.p12" (je nach Name der Verbindung) gespeichert werden und auch flugs auf unseren Windows PC transferiert werden
- Somit sind wir auf der IP-Cop Maschine vorerst fertig und widmen uns dem Windows-PC
- Für den Windows-XP Rechner ist das wichtigste nun die Installation der Windows Support Tools. Diese gibt's für das SP2 hier. Sobald diese installiert sind, sollte das Tool ipsec.exe von Marcus Müller installiert werden. Das besteht nur aus drei Dateien, die eine IPSec Verbindung herstellen.
- Jetzt müssen die vorher vom IPCop geholten Zertifikate auf dem Windows-Rechner installiert werden. Dabei hilft die .mcc Datei aus dem IPSec.exe Paket. Zuerst das Windowstool "mmc.exe" starten (über Start > Ausführen > mmc.exe). Per Datei > Öffnen wählen wir jetzt die Datei "IPSec.mmc" aus dem ipsec.exe-Tool aus. Es öffnet sich ein Snap-In Dialog mit vier Menüpunkten.
- Nun in die Sektion Zertifikate (Lokaler Computer) wandern, und per Rechtsklick auf Eigene Zertifikate den Punkt im Kontextmenü Alle Tasks > Importieren wählen. Es startet ein kleiner Wizard, den wird mit Weiter erstmal bestätigen. Nach dem Klick auf Durchsuchen können wir ein zu importierendes Zertifikat wählen. Beginnen wir mit der Datei cacert.pem die wir vom IPCop Rechner bezogen haben. Damit diese ausgewählt werden kann muss im Dateityp-Dropdown erstmal Alle Dateien (*.*) gewählt sein. Eine .pem Datei ist übrigens identisch mit einer .crt Datei. Nachdem wir sie ausgewählt haben klicken wir im Wizard auf Weiter >. Im Folgedialog nur noch die Option Zertifikatsspeicher automatisch auswählen anklicken und mit Weiter > den Wizard beenden.
- Das Zertifikat wurde nun erfolgreich für den Computer installiert. Dasselbe machen wir für unsere hostcert.pem und firmenvpn.p12 Datei, so dass wir insgesamt 3 Zertifikate installiert haben. Diese Zertifikate gelten nur für den PC an sich und können später vom IPSec.exe Tool verwendet werden um eine automatische Anwahl zu starten. Hätten wir die Zertifikate per Doppelklick auf die Dateien und nicht per MMC eingerichtet, könnte der PC selber nicht darauf zugreifen. Im selben Atemzug ist darauf hinzuweisen dass die Einrichtung hier NICHT per DFÜ-Netzwerk vorgenommen wird, sondern mittels IPSec.exe quasi versteckt für Windows eingerichtet wird.
- Bevor wir die MMC wieder verlassen, sollten wir den Menüpunkt Zertifikate > Andere Personen > Zertifikate
aufsuchen. Wenn noch keine Untergruppe dort besteht, erstmal die
Hauptgruppe wählen und F5 (Aktualisieren) drücken. Sollte auch jetzt
noch kein Zertifikat bestehen, nochmal mittels Rechtsklick den vorigen
Schritt wiederholen und die Datei hostcert.pem installieren. Anstelle der Option Zertifikatsspeicher automatisch auswählen müssen wir dann darunter ein festes Importziel wählen und dieses auf Andere Personen
stellen. Nun sollte sich in dem Zertifikatssordner ein Zertifikat für
den IPCop-Rechner befinden welches von der CA des IPCop Rechners
bestätigt wurde. Mittels Doppelklick auf das Zertifikat können wir uns
die Details anzeigen lassen. In der Detailliste nun den Punkt Stellenschlüsselkennung
anklicken. Dort ist eine Verzeichnisadresse aufgeführt, die wir uns
unbedingt notieren müssen. Dafür fügen wir in umgekehrter Reihenfolge
alle aufgeführten Punkte zu einem String zusammen. Bei mir ist dies
folgender:
C=DE, S=Rheinland, L=Bonn, O=Firma, OU=Abteilung, CN=Firma CA, E=me@spambin.de
- Es folgt nun die finale Einrichtung vom IPSec.exe Tool
- Zuerst die Datei ipsec.conf aus dem ipsec.exe-Paket
bearbeiten. Dort tragen wir quasi die Zugangsdaten zum IPCop Server
ein. Dazu kann alles aus der Datei gelöscht werden und folgendes
eingefügt werden:
CODE:conn firmenvpn
left=%any
right=firmenvpn.dyndns.org
rightsubnet=192.168.1.0/255.255.255.0
rightca="C=DE, S=Rheinland, \
L=Bonn, O=Firma, OU=Abteilung, \
CN=Firma CA, E=me@spambin.de"
network=auto
auto=start
pfs=yes
Wie man leicht sehen kann, sind hier die IP/Name des Hosts einzutragen, das gewünschte Subnetz und - ganz wichtig - der vorige String unseres Hostzertifikats. Sobald die Datei gespeichert wurde, kann die Datei IPSec.exe aufgerufen werden. - Nun wird ein Profil erstellt, das einen gültigen FreeSWAN Zugang als IPSec Richtlinie erstellt. Diese könnten wir mittels des MMC-Dialogs übrigens später auch im Punkt IP-Sicherheitsrichtlinien auf lokalem Computer einsehen.
- Jetzt ist eigentlich schon alles fertig. Ein ping 192.168.1.1 bringt nun die Verhandlung von IP-Richtlinien hervor und kurz darauf sollte erfolgreich die Verbindung stehen.
- Zuerst die Datei ipsec.conf aus dem ipsec.exe-Paket
bearbeiten. Dort tragen wir quasi die Zugangsdaten zum IPCop Server
ein. Dazu kann alles aus der Datei gelöscht werden und folgendes
eingefügt werden:
Ich habe für die ganze Sache übrigens gut 3 Tage gebraucht und zahlreiche Wutorgien ausgestoßen. Mein damaliger Fehler war darin begründet vieles über das DFÜ-Netzwerk machen zu wollen anstelle IPSec.exe zu nutzen. Bei ersterem habe ich einfach keine sinnvollen Einstellungen herausfinden können, und als ich dann zu letzterem überging, klappte es dann plötzlich.
Jetzt kann ich also auf das LAN zugreifen. Der nächste Schritt ist ein Routing so dass ich vom internen LAN im VPN auf Internetseiten zugreifen kann, so dass meine IP nicht mehr meine DSL-IP sondern die des IPCop-Systemes ist. Das müsste irgendwie mit Gateway-Einstellungen zu bewerkstelligen sein, und da werde ich gleich meinen Lieblings-Problemlöser und Alleskönner Andy zu ausquetschen. Wenn ich das gelöst kriege, melde ich mich. Bis dahin hilft SSH-Tunneling via Putty schonmal einiges.
(UPDATE: Eine Lösung dieses Problems habe ich in Teil 2 beschrieben)
Kommentare
Ansicht der Kommentare:
(Linear | Verschachtelt)
Danke für dieses tolle HowTo. Werd mich heute Abend gleich ransetzen und mal versuchen obs bei mir hinhaut.
Danke und Grüsse aus Wien
Witti
Danke und Grüsse aus Wien
Witti
Toller Tip. Habe es heute in einer VMWare Umgebung ausprobiert und es hat sofort geklappt.
Schönes Ding, werd ich ausprobieren.
Mich interessiert aber eher die andere Richtung. Kann ich mit dieser Konfiguration von einem Rechner hinter dem IpCop (quasi im Firmen-Lan) auch auf den über VPN angeschlossenen Rechner zugreifen? (Habe Privat einen IpCop laufen und möchte per VPN auf einen anderen Rechner eine Remote-Desktop-Verbindung herstellen)
Mich interessiert aber eher die andere Richtung. Kann ich mit dieser Konfiguration von einem Rechner hinter dem IpCop (quasi im Firmen-Lan) auch auf den über VPN angeschlossenen Rechner zugreifen? (Habe Privat einen IpCop laufen und möchte per VPN auf einen anderen Rechner eine Remote-Desktop-Verbindung herstellen)
Ich
weiß leider nicht ob ich Deine Frage ganz richtig verstehe;
üblicherweise ist ja ein VPN nur notwendig wenn man NICHT im Firmen-LAN
ist. Sprich, eine Remote-Desktop-Verbindung innerhalb des LANs sollte
ja unproblematisch sein und garkein VPN benötigen?
Denn ein VPN kapselt ja nur ein LAN in einer Internetverbindung. Ein LAN via Internetverbindun im LAN zu kapseln klingt mir eher fragwürdig? Aber vermutlich habe ich Dich irgendwie falsch verstanden.
Denn ein VPN kapselt ja nur ein LAN in einer Internetverbindung. Ein LAN via Internetverbindun im LAN zu kapseln klingt mir eher fragwürdig? Aber vermutlich habe ich Dich irgendwie falsch verstanden.
Kaum online und schon bemerkt. Garvin Hicking hat aufgrund seiner eigenen Erfahrungen mit dem Aufbau eines VPN Tunnels zwischen einem XP PC und einer IPCop direkt ein Howto geschrieben um allen Hilfesuchenden einen Weg aus dem Dickicht zu zeigen. Er be...
Aufgenommen: Mär 23, 20:48
Garvin hat sich durchgehackt und ein Howto IPCop VPN zu Windows XP (IPSec, FreeSWAN) geschrieben. Einen Teil seines 3-tägigen Martyriums habe ich ihn begleitet Als Zückerchen für seine Bemühungen gibts jetzt von mir noch zwei brandheiße Links, warum
Aufgenommen: Mär 25, 16:06
Dies ist nun endlich die Lösung meines über gebliebenen Problemes meiner VPN IPSec Odyssee. Nachdem ich mich am Donnerstag abend bei der LUUSA für eine Weile mit Waldemar Brodkorb zusammen schließen durfte, wurde das eigentliche Problem schnell erfasst
Aufgenommen: Mär 26, 01:27