[Chaos CD][Datenschleuder] [80]
  [Chaos CD]
  [Datenschleuder] [80] Dig your tunnel!
[ -- ] [ ++ ] [Suchen]  

 

Dig your tunnel!

Dieser Artikel erhebt nicht den Anspruch IPSec _vollständig_ zu erklären, noch gibt er konkrete Anleitungen wie man sein OS zu patchen hat oder wie man es genau konfiguriert. Wer sich tiefer mit der Materie auseinandersetzen will, sollte sich die dicken Bücher kaufen, die es inzwischen mehrfach gibt oder nach "ipsec howto" googeln und sich selber ein Setup aufsetzen.

*** What, what, what, what, what, what, what, what?

IPSec ist eine IP Erweiterung, die einem Verschlüsselung, Authentifizierung, Integrität und Transparenz bietet. Es gibt einem also die Möglichkeit, auf Netzwerkebene IP-Verbindungen zu Verschlüsseln und/oder zu signieren und das völlig transparent für jegliche Applikationen und IP Protokolle.

Die beiden dazu verwendeten IPSec Protokoll sind AH und ESP. Beide IPSec Protokoll können in zwei verschiedenen Arten angewandt werden, die letztlich nur vom Einsatz Zweck abhängen.

Transport Mode (zB. Host-to-Host)

Dieser Mode ist dazu gedacht, in Situationen eingesetzt zu werden, bei denen ein Tunnel nur zwischen zwei kryptographischen Endpunkten bestehen soll. In diesem Mode wird der IPSec Header zwischen IP Header und TCP bzw. UDP Header platziert.

Tunnel Mode (zB. Host-to-Net oder Net-to-Net)

Dieser Mode kann in der gleichen Situation eingesetzt werden, wie der Transport Mode, gibt einem aber noch die weitere Möglichkeit, durch zwei kryptographische Endpunkte, zwei nicht kryptographische Endpunkte zu verbinden, die klassische Implementation eines VPN. Dazu wird das ursprüngliche IP Paket von einem IPSec Header umschlossen und ein weiter IP Header voran gestellt. Die kryptographischen Endpunkte werden im äusseren IP Header referenziert, die nicht kryptographischen Endpunkte im inneren.

ESP (Encapsulating Security Payload)

ESP ist ein Protokoll Header, der in ein IP Paket eingefügt wird und Authentifizierung, Integrität, Verschlüsselung und antireplay protection (die sequence number ist teil der checksum) bietet. Bsp. für Transport-Mode

AH (Authentication Header)

AH bietet alles, was ESP kann, bis auf die Verschlüsselung. Was das Prozessing wesentlich schneller macht und es dadurch als die geeignete Wahl für Verbindungen darstellt die zwar keinerlei "geheime" Daten enthalten, bei denen aber Schutz vor Manipulation gewährleistet sein muß (zB. DNS anfragen). Bsp. für Transport-Mode

Der Key!

Die Verschlüsselung oder Authentifizierung wird durch einen Schlüssel sichergestellt, der beiden kryptographischen Endpunkten bekannt ist. Er kann auf mehrere Arten ausgetauscht werden kann. Entweder per statischem pre-shared-key für die Encryption, oder per statischem pre-shared-key für die Authentifizierung, mit oder ohne IKE oder auch durch die Verwendung von x509 Zertifikaten oder RSA Schlüsseln. Man kann auch seine Schlüssel im DNS hinterlegen, wenn man dies seinem z.B. bind zutraut ;).

Weiterführende Features

Als weiterführende Features sind noch Compression und Random-padding zu erwähnen. Ersteres ist nicht weiter erklärenswert, trotzdem leider nicht Flächendeckend und Plattform unabhängig verbreitet. Dieses gilt für letzteres allerdings auch, ist aber ein weit interessanteres Feature. Random-padding sorgt dafür, daß an jedes per ESP verschlüsselte Paket, ein Stück Daten mit einer zufälligen Länge angehängt und verschlüsselt wird, um so einem externen Beobachter das Erraten des Inhalts auf Grund von statistisch ermittelten Paketlängen zu erschweren. So gesehen bei dsniff und ssh, wo man die Kommandos, die durch eine ssh Verbindung gingen, aufgrund der Paketlänge erraten kann.

***Warum will man es benutzen?

Sicherheit, Integrität, Authentifizierung, Verbreitung.

Sicherheit

IPSec gibt einem die Möglichkeit sicher zu gehen, daß niemand den Traffic zwischen zwei Punkten im Klartext mitlesen kann. Im Standard ist nur der Cipher DES festgelegt, was niemanden daran hindert, IPSec mit allen anderen Ciphern zu erweitern. So kann man AES oder auch blowfish benutzen und sich selbst ein gutes Gefühl im Bauch verschaffen wenn mal wieder ein Kryptograph einen Cipher auseinander nimmt.

Integrität

IPSec ermöglicht es einem, sicher zu gehen, daß die Daten beim Versenden zwischen zwei Punkten nicht von Dritten manipuliert wurden. Man-In-The-Middle Attacken kann man so recht gut ein Schnippchen schlagen.

Authentifizierung

IP Pakete können signiert werden, so daß der Andere wirklich sicher gehen kann, wer der Absender ist. Die initiale Authentifizierung lässt sich auch als Zugangs-Regelung für bestimmte Netzbereiche missbrauchen.

Verbreitung

IPSec gibt es inzwischen auf fast allen Plattformen, sowohl auf freien Unices als auch unter bunt-OSsen wie Windows und MacOSX. Sogar auf mobilen Endgeräten sind inzwischen IPSec-Implementation vorhanden.

Unterscheiden tun sich die Implementationen eigentlich nur in ihrer Fähigkeit, verschiedene Cipher zum Verschlüsseln der Daten zu benutzen und die Initiale Authentifizierung zu erledigen. Unter Windows2000/XP gibt es z.B. in der Standard-Implementation nur DES bzw. 3DES während es unter MacOSX ab Version 10.2. neuere Cipher wie AES, den Nachfolgercipher von DES, oder auch blowfish gibt. Für Microsoft Windows gibt es inzwischen zusätzlich zum eingebauten Stack noch etliche kommerzielle Zusatzprodukte, die mehr Features bieten.

Auch die üblichen großen Firmen haben inzwischen in viele ihrer blackbox Hardware einen IPSec-Stack implementiert, so daß man schon sagen kann, daß IPSec als Standard weit verbreitet ist auch wenn man dort auf Grund von mangelndem Einblick nicht sicher von eingebauten Hintertüren ist.

***Konfiguration

Die Konfiguration unterscheidet sich natürlich meist erheblich, weswegen sie nicht Bestandteil dieses Artikels sein soll. Es gibt für die entsprechenden Betriebssysteme viele Howtos und Anleitungen oder entsprechenden Support vom Hersteller. Eigentlich sollte inzwischen eine Welle von "IPSec Konfiguration Schulungen" auf uns einbrechen, bisher scheint sich das allerdings in Grenzen zu halten. Dabei tut das vielleicht wirklich mal Not, denn die Konfiguration ist kaum einheitlich zu nennen.

Während bei NetBSD, FreeBSD und MacOSX die Konfiguration des IKE daemon, racoon, gleich aussieht, ist die Konfiguration des isakmpd unter OpenBSD oder des pluto unter Linux total anders. Unter Windows artet die Konfiguration in wildes rumgeklicke im System-Manager aus, was dazu führt das alle Anleitung zur Konfiguration entweder aus tausenden Screenshots oder unverständlichen Klick-Anweisungen bestehen. Generell kann man sagen, daß die einfache Konfiguration von IPSec für die User da draußen noch nicht vorhanden ist, allerdings gibt es auch in diese Richtung schon Ansätze.

***Einsatzorte

IPSec wird momentan gerne als zusätzlicher Booster für das Buzzword VPN benutzt. Das ist zwar nicht falsch, IPSec ist natürlich auch dafür gedacht, ein VPN aufzubauen, allerdings lässt sich IPSEC noch auf andere Art und Weise einsetzen.

*buzz* VPN *buzz*

Als klassischer Einsatzort, lassen sich VPNs mittels IPSec relativ einfach aufbauen. Dazu betreibt man IPSec einfach im Tunnel-mode, das bedeutet, daß ein Paket vom internen Netz einfach vollständig, inkl. IP Header encrypted und mit einem neuen IP Header versehen wird. |Header|Data.. | IPSEC processing | |Header|[Header|Data..]| Auf der anderen Seite des VPN wird das Paket entschlüsselt und unverschlüsselt weiter an den Zielhost versendet.

IPSec und Wavelan

Da Wavelan von hause aus keine guten Sicherheitsoptionen hat, WEP ist tot und mac-acl's sind Unsinn, aber viele Unternehmen oder private Anwender die Freiheit, die Wireless-LAN einem bietet, nicht mehr missen möchten, ist IPSec eine gute Möglichkeit, das Wavelan weiter zu betreiben und trotzdem den Zugang ins interne Netz nur authorisierten Personen zu gewähren.

Auch hier kommt wieder der Tunnel-mode zu Einsatz, nur daß diesmal der Client selber ein Endpunkt der Verbindung ist. Der andere Endpunkt ist die Firewall die mit einem Interface im Wireless-LAN steht. Auf diesem Interface ist nur ESP erlaubt, der Rest kann beruhigt geblockt werden.

Auf dem Wireless Client wird einfach jeder Traffic der aus dem Wireless Interface raus geht, durch den IPSec-tunnel zum IPSec-Gateway geschickt, welches diesen Traffic dann in die entsprechende Richtung weiterroutet.

Die Identität des Wavelan Users ist so immer gesichert, was einem auch ermöglicht auf dem Gateway einem User z.B. keinen Zugriff auf den internen Unternehmens Webserver zu ermöglichen ihn aber trotzdem den Unternehmens Kühlschrank per Webinterface neu zu bestücken.

Auch nach dem Verlassen des Unternehmen kann ein Mitarbeiter so relativ einfach der Zugriff aufs Firmennetz entzogen werden, indem sein Key gelöscht oder sein Zertifikat revoked wird.

Remote access

Ein Remote Access über IPSec erlaubt es z.B. einem herumreisenden Mitarbeiter, per IPSec Zugriff aufs interne Netz seiner Firma zu bekommen, um beispielsweise auf den Fileserver zuzugreifen.

Die Implementation ist ähnlich der vom Wavelan-Szenario und auch die Möglichkeit gleichen sich.

Auch hier kommt der Tunnel-mode zum Einsatz, die Endpunkte sind in diesem Fall die Unternehmensfirewall, oder ein Extra-Gateway, und der Rechner des Mitarbeiters. Da man in diesem Fall allerdings nicht die IP-Addresse des Client im vornherein bestimmen bzw. wissen kann, wird hier die Authentifizierung nicht mit Hilfe der Source-IP-Addresse sondern einzig und allein per Zertifikat gemacht. Das heisst: ein Zertifikat ist nicht an eine bestimmt Source-IP-Adresse gebunden sondern die Authentifizierung kann von jeder beliebigen IP-Addresse erfolgen.

Stolperfalle sind hier meistens die Firewall in anderen Netzen, die versuchen, IPSec Paket mit NAT zu versehen und dabei die beinhaltete Checksum ungültig machen.

tunnel(tunnel(tunnel))

Eine unkonventionelle Methode IPSec einzusetzen, ist das Tunneln von IPv4 oder IPv6 Netzen zu Standorten, die nur über dynamisch vergebene IP-Adressen Zugang zum Internet haben, zB. TDSL. Über ein Zertifikat, welches nicht an eine bestimmte IP-Addresse gebunden ist wird ein IPSec-tunnel zu einem Tunnel-Server aufgebaut, der durch diesen Tunnel entweder IPv4 direkt oder IPv6 durch einen GRE oder SIT tunnel getunnelt wird.

My name is..

Eine sicherlich sehr sinnvolle Anwendung von IPSec ist die Authentifizierung von DNS requests, bzw. derer die darauf antworten. Hier sind mehrere Arbeitsweisen denkbar. Einmal ein Transport-Mode Setup welches z.B. dem Secondary-Nameserver sichergehen läßt, daß es seine Zone-File Updates vom richtigen Master-Nameserver bekommt. Oder ein Tunnel-Mode-Setup, das vielen Clients hinter einem IPSec-Router ermöglicht, auch wirklich den beim Provider befindlichen Nameserver zu befragen und nicht etwa den inoffiziellen Backup Nameserver von Mr.X.

Ähnlich lassen sich SMTP Server oder HTTP Proxys untereinander verbinden, wobei man dabei noch Encryption hinzuschalten möchte.

Streaming

Man könnte IPSec-Tunnel auch dazu nutzen, das Streamen von rechtlich eher nicht unkritischen Audio oder Video Daten, zu verschleiern. Zumindest der Beweis, woher die Daten ursprünglich kamen, könnte so schwerer zu erbringen sein. Hierbei könnten Scheintunnel und Random-padding behilflich sein. Dabei sollte man natürlich sichergehen, daß die Keys zur Verschlüsselung der Daten nicht später einsehbar sind.

mounten

Auch zum Sichern von Filesharing Protokollen wie NFS oder SMB läßt sich IPSec nutzen, eine transport-mode Verbindung zwischen Client und Server kann hier vor im Klartext herumfliegenden Daten schützen. In diesem Fall muß man sich allerdings im Klaren sein, das die Performance hier nicht überragend sein wird.

***Performance

Die Hardwareanforderungen von IPSec werden natürlich vom Einsatzort und dem verwendeten Cipher bestimmt. 3DES ist natürlich langsamer als zB. AES oder blowfish.

Ein dynip-IPv6 tunnel z.B. der eh nur über eine 144kbit/s Leitung durchgeht, braucht nicht viel Rechenleistung auf der Tunnel-Server Seite. Auch ein bis zwei Wavelan-Clients die über IPSec mit AES oder blowfish ins interne Netz kommen, brauchen nicht viel Hardware, da reicht auch schon mal ein Pentium 200.

Wer allerdings 1000 Außenstellen mit VPN anbinden will und z.B. nur 3DES benutzen möchte, sollte sich entweder nach Hardwarelösungen von den üblichen Verdächtigen wie Cisco, Nokia etc. umsehen, oder einen schnellen Server mit Hardware-acceleration einsetzen der auch entsprechende Netzwerklast gleichzeitig verträgt. Auch eine übersichtliche Möglichkeit zur Konfiguration tut der Sicherheit keinen Abbruch.

***Grenzen der Sicherheit

Die Verschlüsselung mit IPSec ist natürlich nur so stark wie der gewählte Cipher, allerdings kann man über das System IPSec schon behaupten, daß es recht ordentlich durchdacht wurde. Von Fehlern oder Backdoors in der Implementation einmal abgesehen. Auch hilft IPSec nicht gegen schlecht abgesicherte Tunnelendpunkte. Ein System ist eben nur so sicher wie sein schwächstes Glied.

Auch bei IPSec sollte man sich immer fragen, ob die Daten die darüber geschickt werden sollen, nicht doch zu vertraulich sind, um überhaupt in digitaler Form zu bestehen.

***Schlusswort

Zum Schuss bleibt noch anzumerken, daß hoffentlich mit IPv6 die Einsatzweite von IPSec zunehmenen wird, allein schon deswegen, weil viele auf IPv6 aufbauende Protokolle (zB. BGP-4) vollständig Authentifizierung auf IPSec auslagern. Auch werden lästige Probleme wie NAT (einige IP-Stacks versuchen mit IPSec versehene IP Pakete mit NAT zu befingern, was der checksum gar nicht gut bekommt) und dynip einfach verschwinden.

Auf jeden Fall kann uns IPSec jetzt schon in Zeiten von TKÜV und ähnlicher Dinge helfen, die schon geschenen Einschränkungen zu umgehen.

Vielleicht können wir ja bald mit unseren mobilen Endgeräten über IPv6 und IPSec den Füllstand unseres heimischen Kühlschränke überprüfen ohne, daß die ISPs dazwischen die Daten an die nächste Supermarkt Kette verkaufen.

Bis dahin: hoffen wir, daß niemand das Filtern von ESP beschliesst.

***URLs

 

  [Chaos CD]
  [Datenschleuder] [80] Dig your tunnel!
[ -- ] [ ++ ] [Suchen]