general: big picture on vpn/ ipsec architecture WLAN/ Rootserver wanted

Fragengeneral: big picture on vpn/ ipsec architecture WLAN/ Rootserver wanted
Mark Fink - Samstag, 22. Januar 2005 20:31 Uhr

Hallo Linux-Experts,

ich bin über die Verwundbarkeit meines Home-WLAN besorgt und daher möchte ich gerne IPSec einführen. Zudem soll ein Rootserver, der bei 1und1 gehostet ist, über den VPN mit IPSec angebunden werden. Soviel zum Grundgedanken (ich hoffe das macht halbwegs Sinn).

Das Internet Gateway ist eine debian/ sarge box mit einem 2.6.8er Kernel. Am Gateway sind aktuell ein XP Desktop über Ethernet und ein XP Laptop über einen ASUS WLAN Access Point angeschlossen. Zudem laufen hier einige Dienste wie Drucker, Samba, Apache, Proxy etc. Das Gateway verfügt über eine selbstgeschriebene IPTABLES Firewall. Das Gateway ist über DSL/Flatrate ans Internet angebunden.

Auf dem Rootserver sollen Mailserver und Webserver für die Verwaltung der eigenen Domains eingesetzt werden. Geplant ist hier debian/ woody.

Jetzt geht die Fragerei los…
+ Ich habe herausgefunden, dass ich auf den XP Rechnern ein Security Plugin installieren muss (ich denke das kriege ich hin). Schwieriger wird hier schon die Konfiguration. Welche Krypto-Verfahren etc.???
+ Wird der VPN von XP zum Rootserver einfach durch die Firewall auf dem Gateway „durchgetunnelt“ oder kommt hier eine Bridge XP-Client -> Gateway nach Gateway -> Rootserver zum Einsatz?
+ Muss ich die Firewall auf dem Gateway anpassen.
+ Was wird auf dem Rootserver alles benötigt?
+ Wie wird die Verbindung vom XP-Client zum Rootserver aufgebaut? Geht das evtl. automatisch?
+ Welche Tools brauche ich noch? Auf dem 2.6er Kernel ist IPSec ja schon vorhanden…

Für ein paar Anregungen evtl. Kritik an der geplanten Architektur und Links zu aktueller Dokumentation würde ich mich sehr freuen.

Viele Grüße,
Mark Fink

1 Antwort
Kay Hannay - Sonntag, 23. Januar 2005 12:37 Uhr

Hallo,

zu 1)
Tools für Windows kannst Du unter [1] finden. Ich benutze Win2k, aber da steht, daß das auch mit WinXP funktioniert.

zu 2)
Das ist Geschmackssache. Ich würde die Kommunikation Gateway RootServer automatisch absichern lassen und dann noch Laptop Gateway. Das kabelgebundene LAN muß nicht zwangsweise angesichert werden, hängt aber von deiner Umgebung ab. Wenn Du jeweils die Verbindungen Client RootServer dirket sichern willst, erhöht sich der Administrationsaufwand, da auf jedem Client die Konfigurationen angepasst werden müssen.

zu 3)
Ja, z.B. auf der WLAN Seite solltest Du nur VPN-Verkehr erlauben und diese dann noch wie gewohnt filtern. Bei Kernel 2.6 kommen die IPSec Pakete nämlich 2 Mal an der Firewall (im Regelerk) auf der gleichen Schnittstelle an. Einmal als IPSec Pakete und danach in ausgepackter Form als normale Pakete. Deshalb muß man für vernünftige Filtermöglichkeiten alle IPSec Pakete mit einer Markierung versehen und nur die entpackte Pakete mit der entsprechenden Markierung erlauben. Bei anderen VPN implementierungen wird ein neues Gerät (z.B. ipsec0) erstellt. Da ist das Filtern etwas einfacher.

zu 4)
Ich würde konsequent auf Kernel 2.6 setzen und dann die ipsec-tools installieren (racoon und setkey). Es gibt auch noch andere Implementierungen (FreeSWan, OpenSwan), die kenne ich jedoch nicht.

zu 5)
Geht automatisch, wenn alles richtig konfiguriert ist.

zu 6)
Siehe Punkt 4.

Sehr gut für dieses Thema finde ich das Buch „VPN mit Linux“ von Ralf Spenneberg. Auf seiner Seite gibt es dazu ein Forum [2], welches immer wieder wertvolle Tips liefert. Außerdem gibt es ein detailliertes HowTo [3].

Gruß,
Kay

[1] http://vpn.ebootis.de/
[2] http://www.spenneberg.com/VPNmitLinux/164.html
[3] http://www.ipsec-howto.org/t1.html

Mark Fink - Montag, 24. Januar 2005 14:20 Uhr

Hallo Kay,

vielen herzlichen Dank für Deine Hilfe. Ich werde genau wie vorgeschlagen vorgehen und die Kommunikation nicht durch das Gateway tunneln. Die Links waren ebenfalls sehr hilfreich um mir einen Überblick über das Thema zu verschaffen. Die X.509 Zertifikate habe ich schon erstellt und werde am Mittwoch ans Werk gehen. Ich hoffe nur, dass ich mich nicht selbst aussperre 🙂

Ich möchte überhaupt keine ungesicherte Kommunikation mehr zulassen, auch nicht auf dem lokalen Netzwerk. Hier hätte ich sonst die Befürchtung, dass über den Accesspoint ein Zugriff auf die ungesicherte Kommunikation möglich wäre.

Deine Anmerkungen zum Thema Firewall habe ich bisher nur dem Prinzip nach verstanden. Über die Umsetzung mache ich mir eben Gedanken und komme noch nicht zum Punkt. Hast Du evtl. noch einen Link oder ein paar Tipps hierzu? Wäre prima.

Nochmals vielen Dank und viele Grüße,
Mark

Kay Hannay - Montag, 24. Januar 2005 19:52 Uhr

Hallo Mark,

Einen Link zu dem Thema habe ich leider gerade nicht griffbereit, aber bestimmt wirst Du in dem Forum auf http://www.spenneberg.com fündig. Im Prinzip muß das ganze so aussehen:

Markieren aller ESP Pakete:
$IPTABLES -t mangle -A PREROUTING -i $IF_WLAN -p esp -j MARK –set-mark 1

Erlaube Pakete für ISAKMP:
$IPTABLES -A INPUT -p udp -s $NET_WLAN -d $IP_WLAN –dport 500 –sport 500 -i $IF_WLAN -j ACCEPT

Um aus dem LAN beispielsweise HTTP zu erlauben:
$IPTABLES -A INPUT -p tcp -s $NET_WLAN -d $IP_WLAN -m mark –mark 1 –dport 80 -j ACCEPT

Das ist eigentlich nicht so kompliziert, man muß aber etwas aufpassen, daß man richtig auf die Markierungen reagiert, bzw. keine Pakete ohne Markierung durch läßt.

Gruß,
Kay

rottriges - Dienstag, 25. Januar 2005 07:26 Uhr

Hallo Mark,

in der Dezemberausgabe (12/2004)[1] des Linux-Magazins gab es einen Artikel bezüglich IPTables mit IPSec. Vielleicht rentiert sich ja eine Nachbestellung.

Gruß rottriges

[1] http://www.linux-magazin.de/Artikel/ausgabe/2004/12

Mark Fink - Dienstag, 25. Januar 2005 13:34 Uhr

Hallo Rottriges,

den besagten Artiel habe ich mir schon besorgt. Leider ist das beschriebene FW-Skript nur in Auszügen dabei. Ich habe mal an Sebastian Claßen geschrieben, vielleicht gibt er sie raus.
Grundsätzlich verstehe ich jetzt wie die FW mit den Tunneln zusammenarbeitet. Allerdings hätte ich gerne mal ein ausgereiftes Beispiel gesehen bevor ich meine FW-Regeln umstelle.
Peter Hoeg hat die hier diskutierte Architektur ganz brauchbar beschrieben, allerdings auch nur Auszüge seiner FW veröffentlicht (http://www.hoeg.com/articles/lri.html).

Viele Grüße,
Mark

Kay Hannay - Dienstag, 25. Januar 2005 15:55 Uhr

Hallo Mark,

was willst Du denn mit einem kompletten Script? Ein Script zu übernehmen halte ich für eine schlechte Idee, da die Anforderungen immer unterschiedlich sind. Das Verständniss der Funktion sollte eigentlich reichen. Die von mir angegebenen Regeln funktionieren, in einer von der Funktion her gleichen Art, in einer Firewall. Sie decken alles ab, was sich auf IPSec bezieht. Alles weitere ist der gewöhnliche Firewall-Kram, den Du ja anscheinend bereits hast. Wenn Du dazu noch Fragen hast, würde ich Dir eher die Lektüre eines Firewall HowTos oder sonstiger Doku empfehlen.

Gruß,
Kay

Mark Fink - Donnerstag, 27. Januar 2005 15:17 Uhr

Das Firewall-Thema ist für mich zunächst vertagt. Obwohl ich gerne anhand eines kompletten FW-Skript eine bewährte Strategie für eine entsprechende FW ableiten würde. Hierzu gibt es offensichtlich unterschiedliche Ansätze.

Auf der Windows XP Seite benutze ich das IPsec Tool von Marcus Müller. Ich bekomme folgenden Fehler (im oakley.log):
„IKE konnte kein gültiges Computerzertifikat finden“.

Ich habe schon neue Zertifikate erstellt und ein Leerzeichen aus dem CN entfernt. Leider hat das auch nichts gebracht.

Ich vermute daher, dass dem System nicht bekannt ist, welches Zertifikat es verwenden soll, da in ipsec.conf der Name des Zertifikates nicht angegeben wurde. Ich habe auch schon gelesen, dass man das Zertifikat winhost.example.com.p12 nennen soll. Das kann ich mir gar nicht vorstellen.

Liegt es evtl. an ungefüllten Feldern der x509 Zertifikate? Ich habe C, ST, O und CN gefüllt. Es gibt anscheinend Programme, die einen zusätzlichen Firmennahmen brauchen um Zertifikate zu finden. Ist das bei WinXP auch so?

Hier noch meine ipsec.conf:
conn client1
left=%any
right=192.168.1.1
rightca=“CN=CA,O=wetfins,S=default,C=DE“
network=lan
auto=start
pfs=yes

Das Zertifikat client1.p12 habe ich mit openssl erstellt. Die Zeitframes habe ich dabei auch beachtet. cacert = 4Jahre client, server = 1 Jahr.

Die Racoon – Seite erkennt brav den Verbindungsaufbau in Phase 1 „INFO: respond new phase 1 negotiation: 192.168.1.1[500]192.168.1.3[500]“ und meldet „ERROR: phase1 negotiation failed due to time up.“

Sieht insgesammt also gar nicht schlecht aus. Leider fehlt mir gerade eine gute Idee für die Fehlerbehebung…

Viele Grüße,
Mark

Mark Fink - Donnerstag, 27. Januar 2005 22:00 Uhr

Hallo,

reboot immer gut! Einfach nach der alten Windows-Manier durchgestartet und geht. Leider machen jetzt die Firewalls Probleme…
Die Firewall auf dem Laptop habe ich deaktiviert. Wenn ich jetzt die Firewall-regeln auf dem Gateway aktiviere, dann funktioniert nichtmal mehr ein Ping, obwohl ich entsprechende Regeln vorgesehen habe:

# allow incomming echo request (match-filter)
iptables -A INPUT -p icmp -i $WLAN_IF –icmp-type 8 -m mark –mark 1 -s 0/0 -j ACCEPT
# allow outgoing echo reply
iptables -A OUTPUT -o $WLAN_IF -p icmp –icmp-type 0 -d 0/0 -j ACCEPT

raccon bringt auf der Gateway-Seite folgende Fehler:
ERROR: sendmsg (Operation not permitted)
ERROR: sendfromto failed
ERROR: failed to process packet.

Brauche ich auf der Gateway-Seite ein NAT-Traversal auf Port 4500?

Auf http://www.spenneberg.de habe ich leider auch keinen funktionierenden Satz FW-Regeln gefunden. Ich habe mir für den Tunnel folgende FW-Strategie vorgestellt: Alles geht mit Tunnel – ohne Tunnel geht gar nichts.

Viele Grüße,
Mark

Mark Fink - Samstag, 29. Januar 2005 13:57 Uhr

Hallo,

der Tunnel arbeitet jetzt etwa 10 Minuten lang.
Ich denke der Fehler „ERROR: unknown Informational exchange received.“ bringt die ganze Sache zum kippen.
Leider bekomme ich das nicht in den Griff. Nicht einmal die Option „proposal_check obey“ hat geholfen.

Viele Grüße,
Mark Fink

Ich habe mal auf der racoon Seite mitgeschnitten:
Foreground mode.
2005-01-28 10:20:10: INFO: @(#)ipsec-tools 0.3.3 (http://ipsec-tools.sourceforge.net)
2005-01-28 10:20:10: INFO: @(#)This product linked OpenSSL 0.9.7e 25 Oct 2004 (http://www.openssl.org/)
2005-01-28 10:20:10: ERROR: failed to bind to address fe80::20b:6aff:fe2a:5353%253[500] (No such device) .
2005-01-28 10:20:10: ERROR: failed to bind to address fe80::211:6bff:fe30:fc69%253[500] (No such device) .
2005-01-28 10:20:10: INFO: ::1[500] used as isakmp port (fd=6)
2005-01-28 10:20:10: INFO: 217.233.142.63[500] used as isakmp port (fd=7)
2005-01-28 10:20:10: INFO: 192.168.1.17[500] used as isakmp port (fd=8)
2005-01-28 10:20:10: INFO: 192.168.1.1[500] used as isakmp port (fd=9)
2005-01-28 10:20:10: INFO: 127.0.0.1[500] used as isakmp port (fd=10)
2005-01-28 10:21:27: INFO: respond new phase 1 negotiation: 192.168.1.17[500]192.168.1.19[500]
2005-01-28 10:21:27: INFO: begin Identity Protection mode.
2005-01-28 10:21:27: INFO: received Vendor ID: MS NT5 ISAKMPOAKLEY
2005-01-28 10:21:27: WARNING: unable to get certificate CRL(3) at depth:0 SubjectName:/C=DE/ST=default/O =wetfins/CN=client1
2005-01-28 10:21:27: WARNING: unable to get certificate CRL(3) at depth:1 SubjectName:/C=DE/ST=default/O =wetfins/CN=CA
2005-01-28 10:21:27: INFO: ISAKMP-SA established 192.168.1.17[500]-192.168.1.19[500] spi:8f72c4cc0e9f208 2:2e78c51de6f296eb
2005-01-28 10:21:27: INFO: respond new phase 2 negotiation: 192.168.1.17[0]192.168.1.19[0]
2005-01-28 10:21:27: INFO: no policy found, try to generate the policy : 192.168.1.19/32[0] 192.168.1.17 /32[0] proto=any dir=in
2005-01-28 10:21:28: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.19->192.168.1.17 spi=239067853(0xe 3fe2cd)
2005-01-28 10:21:28: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.17->192.168.1.19 spi=3823203614(0x e3e1751e)
2005-01-28 10:21:28: ERROR: such policy does not already exist: 192.168.1.19/32[0] 192.168.1.17/32[0] pr oto=any dir=in
2005-01-28 10:21:28: ERROR: such policy does not already exist: 192.168.1.17/32[0] 192.168.1.19/32[0] pr oto=any dir=out
2005-01-28 10:22:48: INFO: purged ISAKMP-SA proto_id=ISAKMP spi=8f72c4cc0e9f2082:2e78c51de6f296eb.
2005-01-28 10:22:49: INFO: ISAKMP-SA deleted 192.168.1.17[500]-192.168.1.19[500] spi:8f72c4cc0e9f2082:2e 78c51de6f296eb
2005-01-28 10:31:38: INFO: respond new phase 1 negotiation: 192.168.1.17[500]192.168.1.19[500]
2005-01-28 10:31:38: INFO: begin Identity Protection mode.
2005-01-28 10:31:38: INFO: received Vendor ID: MS NT5 ISAKMPOAKLEY
2005-01-28 10:31:38: WARNING: unable to get certificate CRL(3) at depth:0 SubjectName:/C=DE/ST=default/O =wetfins/CN=client1
2005-01-28 10:31:38: WARNING: unable to get certificate CRL(3) at depth:1 SubjectName:/C=DE/ST=default/O =wetfins/CN=CA
2005-01-28 10:31:38: INFO: ISAKMP-SA established 192.168.1.17[500]-192.168.1.19[500] spi:6ae009c23f055e4 c:c61373ba55ea0208
2005-01-28 10:31:38: INFO: respond new phase 2 negotiation: 192.168.1.17[0]192.168.1.19[0]
2005-01-28 10:31:38: ERROR: unknown Informational exchange received.
2005-01-28 10:31:38: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.19->192.168.1.17 spi=63762691(0x3c cf103)
2005-01-28 10:31:38: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.17->192.168.1.19 spi=1974554040(0x 75b14db8)
2005-01-28 10:33:18: INFO: purged ISAKMP-SA proto_id=ISAKMP spi=6ae009c23f055e4c:c61373ba55ea0208.
2005-01-28 10:33:19: INFO: ISAKMP-SA deleted 192.168.1.17[500]-192.168.1.19[500] spi:6ae009c23f055e4c:c6 1373ba55ea0208

Mark Fink - Sonntag, 30. Januar 2005 19:54 Uhr

Hallo,

inzwischen läuft der Tunnel *knocking on wood*

Hier sind noch ein paar zusätzliche Infos hierzu:
http://www.spenneberg.de/2990.html

Sobald mein Rootserver läuft werde ich noch einen Blog zu diesem Thema anlegen. Das kann aber etwas dauern…

Nochmals vielen Dank an Kay für die wertvolle Unterstützung!

Bis dann,
Mark

[1] http://www.spenneberg.de/2990.html

Deine Antwort