Einrichtung eines Virtual Private Network mit IPsec

Werbung
Fachhochschule für die Wirtschaft
- FHDW Hannover
Betriebssysteme
Projektarbeit
Einrichtung eines Virtual Private Network
mit IPsec
Prüfer:
Prof. Dr. Hellberg
Verfasser:
Arthur Brack und Arne Möhle
3. Theoriequartal
Studiengang Informatik
21. Dezember 2004
Inhaltsverzeichnis
1 Einleitung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Projektbeschreibung . . . . . . . . . . . . . . . . . . . . . . .
2 Grundlagen
2.1 Virtual Private Network . . . . . . . . . . . . .
2.1.1 Architekturen . . . . . . . . . . . . . . .
2.1.1.1 Client-to-Client . . . . . . . . .
2.1.1.2 Network-to-Network . . . . . .
2.1.1.3 Client-to-Network . . . . . . .
2.1.2 Überblick über Implementierungen . . .
2.2 Verschlüsselung . . . . . . . . . . . . . . . . . .
2.2.1 Klassifizierung von Kryptosystemen . . .
2.2.1.1 Symmetrische Kryptosysteme .
2.2.1.2 Asymmetrische Kryptosysteme
2.2.2 RSA-Kryptosystem . . . . . . . . . . . .
2.2.3 Public-Key-Infrastruktur (PKI) . . . . .
2.2.4 Diffie-Hellman-Schlüsselaustausch . . . .
2.3 Security Architecture for IP (IPsec) . . . . . . .
2.3.1 Verbindungsmodi . . . . . . . . . . . . .
2.3.1.1 Transport-Modus . . . . . . . .
2.3.1.2 Tunnel-Modus . . . . . . . . .
2.3.2 Security Association (SA) . . . . . . . .
2.3.3 Security Policy (SP) . . . . . . . . . . .
2.3.4 Internet Key Exchange (IKE) . . . . . .
2.3.4.1 Phase 1 . . . . . . . . . . . . .
2.3.4.2 Phase 2 . . . . . . . . . . . . .
2.3.5 Authentication Header (AH) . . . . . . .
2.3.6 Encapsulated Security Payload (ESP) . .
2.3.7 Vor- und Nachteile von IPsec . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
2
4
4
5
5
5
5
6
7
7
7
7
8
9
10
10
11
11
12
14
14
15
15
17
17
19
20
3 Einrichtung und Konfiguration
3.1 Netzwerk-Aufbau . . . . . . . . . . .
3.2 Installation benötigter Software . . .
3.3 Aufbau der Public-Key-Infrastruktur
3.4 Einrichtung Linux Gateway . . . . .
3.4.1 Konfiguration von Setkey . .
3.4.2 Konfiguration von Racoon . .
3.4.3 Initialisierung von IPsec . . .
3.5 Einrichtung Linux RoadWarrior . . .
3.6 Einrichtung Windows Roadworrior .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
22
22
25
25
26
27
29
32
4 Ausblick
4.1 DHCP-over-IPsec . . . . . . . . . . . . . . . .
4.2 Firewall Traversal . . . . . . . . . . . . . . . .
4.3 Network Address Translation (NAT) Traversal
4.4 Performanz-Untersuchungen . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
34
34
35
36
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A Literaturverzeichnis
37
B Ausgewählte Links
38
C Glossar
39
2
Kapitel 1
Einleitung
1.1
Motivation
Insbesondere Firmen haben oft Außendienstmitarbeiter, die Zugriff auf das
lokale Netz der Firma für ihre Arbeit benötigen. Hierfür können zum Beispiel
Leitungen bei Telefondienstanbietern gemietet werden, die eine vertrauliche
und geschützte Verbindung gewährleisten.
Eine weitere Methode besteht darin, das kostengünstigere Internet für
die Verbindung zum lokalen Netz der Firma zu verwenden. Da die Firmendaten jedoch meist vertraulich sind, dürfen diese nicht ungeschützt über das
Internet übertragen werden. Auch sollten sich nur authentifizierte Personen
in das LAN einwählen dürfen. Um dies zu gewährleisten, kann ein Virtual
Private Network (VPN) aufgebaut werden, welches durch einen ’Tunnel’ im
öffentlichen Netz einen sicheren und geschützten Zugang zum lokalen Netz
der Firma bietet.
Hierfür existieren Implementierungen von verschiedenen Herstellern, die
mehr oder weniger stabil und preisgünstig sind. Die Open-Source Gemeinde
bietet allerdings unter dem Betriebssystem Linux eine freie und stabile Implementierung des standardisierten Protokolls IPsec, mit dem man ein Virtual
Private Netzwork aufbauen kann. Dieses wird als Grundlage für diese Projektarbeit verwendet.
1.2
Projektbeschreibung
Zuerst soll das VPN Konzept und dessen unterschiedliche Architekturen vorgestellt werden. Danach wird auf die IPsec-Implementierung und die dazugehörigen Protokolle genauer eingegangen. Zudem werden hierfür notwendige
Grundlagen zur Public-Key-Infrastruktur und Verschlüsselung behandelt.
3
Eingerichtet werden soll eine heterogene Client-to-Network VPN-Architektur mit IPsec, wobei mehrere Clients als RoadWarrior über das Internet
VPN-Tunnel zu einem VPN-Gateway aufbauen können und somit Zugriff auf
das LAN haben. Die Authentifikation der RoadWarrior und des Gateways soll
mit Hilfe von Zertifikaten, also einer Public-Key-Infrastruktur, erfolgen. Das
Gateway wird unter Suse Linux 9.1 laufen, ein RoadWarrior unter Windows
und einer ebenfalls unter Linux.
Am Ende werden auf Probleme beim Einsatz von IPsec und deren Lösungen eingegangen sowie ein Ausblick auf erweiterte Konfigurationsmöglichkeiten gegeben.
4
Kapitel 2
Grundlagen
2.1
Virtual Private Network
In einem Virtual Private Network sind mehrere Hosts und/oder nicht-öffentliche Netzwerke über ein öffentliches Netzwerk so miteinander verbunden, dass
private Daten untereinander ausgetauscht werden können. Dabei wird üblicherweise eine Verbindung über einen Tunnel1 durch das öffentliche Netzwerk
hergestellt, die meistens noch zusätzlich verschlüsselt wird um die privaten
Daten zu schützen.
So kann sich z.B. ein Mitarbeiter einer Firma in das lokale Firmennetzwerk einklinken, indem er einen Tunnel über das Internet erstellt. So hat er
vollen Zugriff auf das Firmennetzwerk, das aber immer noch gegen Angriffe
aus dem Internet geschützt ist. Ebenso ist es möglich zwei Firmennetzwerke,
die räumlich getrennt voneinander existieren, über einen Tunnel im Internet
zu verbinden, um diese als ein logisches Netzwerk darzustellen. Man kann
aber auch öffentliche Leitungen des Telefonnetzes mieten, um ein VPN aufzubauen. In diesem Fall ist keine Verschlüsselung notwendig, da die gemietete
Leitung als ’abhörsicher’ gilt.
Folgende Sicherheitsanforderungen sind beim Aufbau eines VPNs zu gewährleisten:
• Authentifizierung der Kommunikationspartner
• Datenintegrität
• Vertraulichkeit
• Schutz vor Replay-Attacken
1
In einem Tunnel werden die Daten eines Netzwerkprotokolls eingebettet in einem
anderen Netzwerkprotokoll übetragen.
5
2.1.1
Architekturen
In VPNs wird zwischen drei grundlegenden Arten von Architekturen unterschieden, die beliebig miteinander kombiniert werden können. Diese werden
in den folgenden Kapiteln beschrieben.
2.1.1.1
Client-to-Client
Bei einer Client-to-Client Architektur wird wie in Abbildung 2.1 gezeigt eine
gesicherte Verbindung direkt zwischen zwei Hosts aufgebaut.
Abbildung 2.1: Client-to-Client Architektur
2.1.1.2
Network-to-Network
Bei einer Network-to-Network Architektur werden zwei Netzwerke über Gateways, zwischen denen der Tunnel aufgebaut wird, miteinander verbunden.
Der Vorteil dieser Architektur ist, dass nur die Gateways über die VPNSoftware verfügen müssen und die Hosts nicht umkonfiguriert werden müssen.
Allerdings ist damit die Verbindung zwischen dem Gateway und den Hosts
des Netzwerks nicht sichergestellt. Die Abbildung 2.2 zeigt diese Architektur.
2.1.1.3
Client-to-Network
Bei einer Client-to-Network Architektur ist wie in Abbildung 2.3 gezeigt ein
Tunnel zwischen dem Gateway zu einem Netzwerk und einem Host aufgebaut.
Dieses Szenario wird oft eingesetzt, wenn z.B. ein Außendienstmitarbeiter als
RoadWarrior eine Verbindung in das private Firmennetz aufbaut.
6
Abbildung 2.2: Network-to-Network Architektur
Abbildung 2.3: Client-to-Network Architektur
2.1.2
Überblick über Implementierungen
Es gibt verschiede Ansätze ein VPN zu realisieren. Diese unterscheiden sich
maßgeblich darin, dass sie auf unterschiedlichen Protokollschichten des OSIModells aufsetzen. So setzen z.B. SSL-basierte (Secure-Socket-Layer) Lösungen auf der Transportschicht auf, während z.B. L2TP-basierte (Layer-toTunneling-Protocol) Lösungen auf der Sicherungsschicht aufsetzen. VPNProtokolle auf der Transportschicht oder höher bieten nur einen Schutz für
die jeweiligen Applikationen und nicht für den gesamten IP-Verkehr, wogegen Protokolle der Sicherungsschicht und darunter zu hardwareabhängig sind
und damit nicht universell einsetzbar.
Um den gesamten Datenverkehr zu schützen sind also Lösungen, die auf
7
der Vermittlungsschicht aufsetzen, am sinnvollsten. Das Security Architecture for IP (IPsec) ist eine dieser Lösungen und wird in dieser Projektarbeit
behandelt.
2.2
Verschlüsselung
In diesem Kapitel werden Grundlagen zur Verschlüsselung erläutert, die für
das Veständnis der IPsec-Protokolle notwendig sind.
2.2.1
Klassifizierung von Kryptosystemen
Ein Kryptosystem ist ein System, das Verfahren zur Ver- und Entschlüsselung von Informationen beschreibt, mit der Absicht, diese gegenüber Dritten
unleserlich zu machen. Mathematisch besteht ein Kryptosystem aus einer
Menge von Klartexten M , einer Menge von Chiffretexten C, einer Menge von Schlüsseln, dem sogenannten Schlüsselraum K, sowie den Funktionen zur Verschlüsselung encrypt : K × M → C und zur Entschlüsselung
decrypt : K × C → M . Für diese beiden Funktionen gilt mit m ∈ M und
k, k 0 ∈ K:
m = decrypt(k 0 , encrypt(k, m))
Die Sicherheit eines Verschlüsselungsverfahrens hängt von der Größe des
Schlüsselraums und der Güte der Verschlüsselungsfunktion ab.
Man teilt die Kryptosysteme in symmetrische und asymmetrische Kryptosysteme ein, die im folgenden erläutert werden. Die Abbildung 2.4 verdeutlicht noch einmal die Unterschiede.
2.2.1.1
Symmetrische Kryptosysteme
Ein symmetrisches Kryptosystem zeichnet sich dadurch aus, dass zur Verund Entschlüsselung der gleiche Schlüssel verwendet wird, d.h. nach obiger
Definition k = k 0 . Dabei ist es unbedingt erforderlich, dass dieser Schlüssel
geheim bleibt und deshalb nur authorisierten Personen bekannt gegeben wird.
Vertreter von symmetrischen Kryptosystemen sind z.B. das AES-Verfahren (Advanced Encryption Standard) oder das 3DES-Verfahren (Triple Data
Encryption Standard).
2.2.1.2
Asymmetrische Kryptosysteme
Asymmetrische Kryptosysteme benutzen für die Ver- und Entschlüsselung
unterschiedliche Schlüssel. Dabei ist es praktisch unmöglich, bei Kenntnis des
8
Abbildung 2.4: Klassifizierung von Kryptosystemen
einen den anderen Schlüssel zu berechnen. Dieses Verfahren wird auch PublicKey-Verschlüsselung genannt, da der Schlüssel zum Verschlüsseln veröffentlicht werden kann (öffentlicher Schlüssel), während der Schlüssel zum Entschlüsseln geheim bleiben muss (geheimer bzw. privater Schlüssel). Das bekannteste asymmetrische Kryptosystem ist das RSA-Verfahren, das im folgenden erläutert wird.
2.2.2
RSA-Kryptosystem
Das RSA-Verfahren (benannt nach Ronald L. Rivest, Adi Shamir und Leonard Adleman) ist ein asymmetrisches Kryptosystem, bei dem also zur Verund Entschlüsselung unterschiedliche Schlüssel verwendet werden.
Eine wichtige Eigenschaft des RSA-Kryptosystems ist die Möglichkeit,
mit dem privaten Schlüssel eine Nachricht zu verschlüsseln und mit dem
öffentlichen zu entschlüsseln. Denn es gilt für den privaten Schlüssel k 0 , den
öffentlichen Schlüssel k und der Klartextnachricht m:
9
m = decrypt(k 0 , encrypt(k, m)) = decrypt(k, encrypt(k 0 , m))
Dieser Zusammenhang wird bei digitalen Signaturen ausgenutzt, indem
zum Signieren der Hash-Wert2 einer Nachricht gebildet wird, der dann mit
dem privaten Schlüssel verschlüsselt wird.
signature(m) = encrypt(k 0 , hash(m)) = sm
Der Empfänger der Nachricht, der den öffentlichen Schlüssel des Senders kennt, kann nun eine empfangene Nachricht m0 verifizieren, indem er
den Hash-Wert sm wieder entschlüsselt und mit dem eigenen berechneten
der Nachricht m0 vergleicht. Sind beide identisch, so ist sichergestellt, dass
die empfangene Nachricht nicht verändert wurde und dass der Absender der
Nachricht tatsächlich derjenige ist, der den zum öffentlichen Schlüssel passenden privaten Schlüssel besitzt. Es muss also gelten:
decrypt(k, sm ) = hash(m0 )
Um die Verwaltung der öffentlichen Schlüssel und die Zuordnung zu Personen, Institutionen oder Programmen zentral zu halten, wurde die PublicKey-Infrastruktur entwickelt, die im folgenden Kapitel beschrieben wird.
2.2.3
Public-Key-Infrastruktur (PKI)
Mit Public-Key-Infrastruktur bezeichnet man ein System, welches ermöglicht,
digitale Zertifikate auszustellen und diese zu verteilen und zu prüfen.
Ein Zertifikat erbringt den Nachweis, dass ein öffentlicher Schlüssel zu
einer vorgegebenen Person gehört. Dies wird dadurch erreicht, dass es eine vertraulichen Zertifizierungsstelle (Certification Authority (CA)) gibt, die
Zertifikate ausstellt und diese mit ihrer Signatur versieht. Dies geschieht,
indem der Hash-Wert der Daten des Zertifikats (genauer: des Certification
Signing Request) mit dem privaten Schlüssel der Zertifizierungsstelle verschlüsselt wird. Die CA enthält ihrerseits ein eigenes Zertifikat, dessen öffentlicher Schlüssel zu dem privaten Signierungsschlüssel passt und das von ihr
selber signiert wurde.
Abgesehen von dem öffentlichen Schlüssel enthält ein Zertifikat insbesondere Informationen über den Namen des Inhabers des Zertifikates, die
2
Eine Hash-Funktion ist eine nicht umkehrbare Funktion, die Nachrichten variabler
Länge auf einen Wert (Hash-Wert) fester Bitbreite abbildet. Dabei ist es bei genügend
großen Bitbreiten praktisch unmöglich zwei unterschiedliche Nachrichten zu finden, die
den gleichen Hash-Wert ergeben. Beispiele für solche Hash-Funktionen sind MD5 (Message
Digest Algorithm 5) und SHA (Secure Hash Algorithm).
10
Gültigkeitsdauer des Zertifikats, das Signierungsverfahren und den Namen
und die Signatur der CA.
Die Verifizierung eines Zertifikats geschieht, indem die Signatur bzw. der
verschlüsselte Hash-Wert des Zertifikats mit dem öffentlichen Schlüssel der
zugehörigen CA entschlüsselt und mit dem selber berechneten Hash-Wert
verglichen wird. Dies setzt voraus, dass der Empfänger das Zertifikat der CA
besitzt, die in dem empfangenen Zertifikat angegeben ist.
2.2.4
Diffie-Hellman-Schlüsselaustausch
Der Diffie-Hellmann-Schlüsselaustausch ist kein Verschlüsselungsverfahren,
sondern beschreibt eine Möglichkeit, Schlüssel sicher über unsichere Kanäle
auszuhandeln oder auszutauschen. Dies läuft folgendermaßen ab:
1. Die Kommunikationspartner einigen sich auf eine Primzahl p und auf
die Primitivwurzel g mod p mit 2 ≤ g ≤ p − 2.
2. Der Kommunikationspartner 1 wählt ein zufälliges a und der Kommunikationspartner 2 ein zufälliges b mit a, b ∈ {0...p − 2}. Diese bleiben
geheim und werden nicht übertragen.
3. Nun berechnen beide A = g a mod p bzw. B = g b mod p
4. A und B werden über den unsicheren Kanal ausgetauscht.
5. Beide berechnen jetzt den gemeinsamen Schlüssel K mit K = B a mod
p = Ab mod p. Damit ist der gemeinsame Schlüssel K ausgehandelt.
Die Abbildung 2.5 verdeutlicht noch einmal den Ablauf.
2.3
Security Architecture for IP (IPsec)
IPsec stellt eine Sicherheitsarchitektur für die Kommunikation über IP-Netzwerke zur Verfügung und wurde 1998 während der Entwicklung von IPv6
spezifiziert. Folgende Sicherheitsaspekte können durch IPsec gewährleistet
werden:
• Authentifizierung der Kommunikationspartner
• Vertraulichkeit der Kommunikationspartner
• Authentifizierung der Quelle der gesendeten Daten
• Integrität der Daten
11
Abbildung 2.5: Diffie-Hellmann-Schlüsselaustausch
• Vertraulichkeit der Daten
• Schutz vor Replay-Attacken
Diese Punkte werden durch die verschiedenen Verbindungsmodi und die
Protokolle IKE, AH und ESP sichergestellt, die in den folgenden Kapiteln
beschrieben werden.
2.3.1
Verbindungsmodi
IPsec unterstützt zwei verschiedene Methoden zur Übetragung von Informationen, den Transport- und den Tunnel-Modus.
2.3.1.1
Transport-Modus
Im Transport-Modus werden die Daten aus den höheren Protokollschichten
durch das IPsec Header3 geschützt. Dafür wird das IPsec Header zwischen
das IP Header und das Header der höheren Protokollschicht (z.B. TCP oder
UDP) gesetzt. Falls das ESP Protokoll benutzt wird, wird an das Ende des
gesamten Paketes zusätzlich ein ESP Trailer angehängt. Die Abbildung 2.6
zeigt ein duch IPsec im Transport-Modus geschütztes IP-Paket.
3
Ein IPsec Header ist ein ESP und/oder AH Header, die in den folgenden Kapiteln
beschrieben werden
12
Abbildung 2.6: IP-Paket geschützt im Transport-Modus
Der Transport-Modus kann nur zwischen zwei Hosts aufgebaut werden,
für diesen Modus kommt also nur die Client-to-Client Architektur in Frage.
2.3.1.2
Tunnel-Modus
Im Tunnel-Modus wird im Gegensatz zum Transport-Modus das gesamte
IP-Paket in ein anderes IP-Paket eingepackt und durch das IPsec Protokoll
geschützt, indem das IPsec Header zwischen den beiden IP-Headern eingefügt
wird. Dies ist in Abbildung 2.7 dargestellt.
Abbildung 2.7: IP-Paket geschützt im Tunnel-Modus
In diesem Modus lassen sich alle in Kapitel 2.1.1 beschriebenen VPNArchitekturen realisieren. In einem Client-to-Network Szenario könnte die
Kommunikation wie in Abbildung 2.8 dargestellt aussehen, nachdem die Verbindung zwischen dem Gateway und dem Client aufgebaut wurde:
13
Abbildung 2.8: Client-To-Network Szenario mit IPsec
1. Der Host H1 schickt ein Paket, das an den Client H2 addressiert ist,
ab.
2. Das Gateway schützt das Paket mit IPsec und packt es dann in ein
neues IP Paket ein, das als Quelladdresse die im Internet sichtbare
Adresse des Gateways enthält, und schickt es ab.
3. Der Client H2 empfängt das Paket, entpackt es und erhält somit das
ursprünglich von H1 abgeschickte Paket.
4. Der Rückweg ist entsprechend: Das Originalpaket wird eingepackt und
an das Gateway geschickt.
5. Das Gateway entpackt das Paket und schickt das entpackte Paket an
den Host H1 weiter.
6. Der Host empfängt das Originalpaket von H2.
Damit sich der Client normal im LAN bewegen kann, kann dem Client
eine virtuelle IP-Addresse aus dem LAN zugewiesen werden. Die Funktionsweise ist in Kapitel 4.1 beschrieben.
14
2.3.2
Security Association (SA)
Eine Security Association definiert eine Fülle von Parametern, die für die
sichere Kommunikation zwischen zwei Hosts notwendig sind. Eine SA für
IPsec hat unter anderem folgende Parameter:
• Ziel-IP-Adresse (Adresse des Kommunikationspartners)
• IPsec-Protokoll (ESP / AH)
• Security Parameter Index (SPI)
• aktuelle Sequenznummer
• IPsec-Modus (Tunnel-Modus / Transport-Modus)
• Verschlüsselungsparameter (Algorithmus, Schlüssel, etc.)
• Authentifizierungsverfahren
• Lebensdauer der SA
Eine SA ist immer nur unidirektional gültig, beide Kommunikationpartner
benötigen also eine SA für eingehenden und eine für ausgehenden Verkehr.
Eine IPsec Kommunikation zwischen zwei Hosts kann durch mehrere SAs
geschützt werden, dem sogenannten SA-Bündel. Dies ist z.B. der Fall, wenn
das AH-Protokoll zur Autentifizierung und das ESP zur Verschlüsselung genutzt wird. Alle ausgehandelten SAs werden in einer Security Association
Database (SAD) gespeichert und sind eindeutig über das Tupel (Ziel-IPAdresse, IPsec-Protokoll, SPI) identifizierbar.
2.3.3
Security Policy (SP)
Eine Security Policy definiert, wann welche Security Association zu verwenden ist. Dies geschieht durch die Angabe der Kommunikationspartner,
der Richtung der Kommunikation, der zu verwendenden Protokolle (ESP
und/oder AH), sowie des Modus (Tunnel- oder Transportmodus). Zusätzlich
kann angegeben werden, ob überhaupt IPsec zur Sicherung der Pakete angewandt oder diese nicht durch IPsec behandelt werden sollen. Alle SPs werden
in einer Security Policy Database (SPD) gespeichert.
15
2.3.4
Internet Key Exchange (IKE)
Bevor Daten zwischen den Hosts ausgetauscht werden können, müssen IPsecSAs definiert werden. Das in [RFC2409] spezifizierte IKE Protokoll bietet
ein Verfahren an, das die zu verwendenden SAs automatisch aushandelt. Es
gliedert sich in zwei Phasen auf: In der ersten Phase wird eine sogenannte
ISAKMP-SA ausgehandelt, die eine Kommunikationsgrundlage über einen sicheren, authentifizierten Kanal für die zweiten Phase schafft. In der zweiten
Phase werden IPsec-SAs für die spätere Kommunikation mittels ESP oder
AH definiert. Danach ist das IKE abgeschlossen und die normale Kommunikation zwischen den beiden Hosts kann - auf Grundlage der ausgehandelten
IPsec-SAs - beginnen. Das IKE-Protokoll baut auf dem UDP-Protokoll auf
und verwendet dafür üblicherweise den Port 500.
2.3.4.1
Phase 1
Die erste Phase kann in zwei verschiedenen Modi ablaufen, im Main-Modus
oder im Aggressive-Modus, die sich hinsichtlich Aufwand und Sicherheit unterscheiden. Um die Authentifizierung der Kommunikationspartner sicherzustellen, werden folgende Authentifizierungsverfahren unterstützt:
Digitale Signaturen Hierfür werden Zertifikate verwendet, die bei einer
Zertifizierungsstelle registriert sind.
Preshared Keys (PSK) Es werden vorher über einen sicheren Kanal Schlüssel eines symmetrischen Kryptosystems zur Authentifizierung verwendet.
Public-Key-Verfahren Der private Schlüssel wird zum Signieren und der
öffentliche zur Verifizierung verwendet. Hierfür wird RSA eingesetzt.
Revidiertes Public-Key-Verfahren Eine schnellere, verbesserte Variante
des normalen Public-Key-Verfahren.
Es werden allerdings von den meisten Implementierungen, wie von IPsec
unter Windows 2000/XP und den KAME-Tools Setkey und Racoon unter
Linux 2.6, nur die Authentifizierung mit PSK und Zertifikaten unterstützt.
Main-Mode
Der Main-Mode ist der sicherere, aber auch der aufwendigere der beiden
Modi. Er stellt für alle Authentifizierungsalgorithmen die Vertraulichkeit der
Kommunikationspartner sicher. Die Kommunikation in der ersten Phase läuft
im Main-Modus wie folgt ab:
16
1. Der Initiator schickt dem Responder eine Nachricht, in der er einen
oder mehrere Vorschläge für ISAKMP-SAs macht. In diesen SAs sind
unter anderem die Authentifizierungsmethode, der Verschlüsselungsalgorithmus und der Hashalgorithmus enthalten.
2. Der Responder antwortet mit einer Nachricht, in der er einen der Vorschläge auswählt und diesen zurückschickt.
3. In der dritten Nachricht schickt der Initiator das zufällig erzeugte Schlüsselmaterial der Diffie-Hellmann-Berechnung (DH Erg.), einen zufälligen Nonce, der je nach Authentifizierungsalgorithmus unterschiedlich
für die Authentifizierung verwendet wird, sowie möglicherweise weitere
Daten zum Responder.
4. Der Responder schickt die analogen Informationen zurück zum Initiator. Jetzt haben beide Seiten den symmetrischen Schlüssel.
5. In der fünften Nachricht werden Authentifizierungsdaten vom Initiator
übertragen, die bereits mit dem Schlüssel, der durch Diffie-Hellmann
erstellt wurde, verschlüsselt sind, und vom Responder überprüft.
6. Der Responder antwortet im Falle der korrekten Authentifizierung wieder mit den analogen Daten zur fünften Nachricht. Sind diese vom
Initiator akzeptiert, ist die erste Phase abgeschlossen und die zweite
Phase kann beginnen.
Die Authentifizierung mit Zertifikaten, welche wir bei der Konfiguration einrichten werden, erfolgt wie in Abbildung 2.9 verdeutlicht. In den ersten beiden Nachrichten wird ausgehandelt, dass die Zertifikatsmethode zur
Authentifizierung benutzt werden soll. In der dritten und vierten Nachricht
werden die Zertifikate, falls noch nicht vorher ausgetauscht, angefordert. Als
letztes werden in der fünften und sechsten Nachricht die geforderten Zertifikate und die signierten Noncen ausgetauscht, was hier bereits verschlüsselt
geschieht (schraffierte Felder). Können die Signaturen und Zertifikate von beiden Kommunikationspartnern verifiziert werden, sind diese authentifiziert.
Aggressive-Mode Läuft die erste Phase im schnelleren Aggressive-Mode
ab, wird im Falle einer Authentifizierung mit Preshared Keys oder digitalen Signaturen die Identität der Kommunikationspartner nicht vertraulich
behandelt. Dies stellt eine Sicherheitslücke dar, weshalb dieser Modus nicht
benutzt werden sollte und auch nicht weiter erläutert wird.
17
Abbildung 2.9: IKE Main-Modus mit Zertifikaten
2.3.4.2
Phase 2
Die zweite Phase läuft im sogenannten Quick-Mode ab, in dem die für den
späteren Nutzdatenverkehr verwendeten IPsec-SAs ausgehandelt werden. Sie
baut auf der ersten Phase auf, indem die Nachrichten, die in dieser Phase
ausgetauscht werden, mit der bereits ausgehandelten ISAKMP-SA geschützt
werden; d.h. sie stellt die Datenintegrität, Authentifizierung und Vertraulichkeit sicher. In dieser Phase können mehrere IPsec-SAs ausgehandelt werden,
außerdem wird immer wenn die Gültigkeit der IPsec-SAs abgelaufen ist, der
Quick-Modus erneut ausgeführt, um neue IPsec-SAs auszuhandeln.
2.3.5
Authentication Header (AH)
Das Authentication Header Protokoll (AH) ist in [RFC2402] spezifiziert. Es
stellt die Datenintegrität, die Authentifizierung der Quelle und den Schutz
vor Replay-Angriffen sicher. Das AH-Header wird zwischen dem IP-Paket
und den Daten eingefügt und ist wie in Abbildung 2.10 dargestellt aufgebaut:
Die Felder werden im folgenden beschrieben:
18
Abbildung 2.10: Aufbau des AH-Headers
Next Header Dieses Feld gibt das höherschichtige Protokoll an (IPv4 =
4, TCP = 6, UDP = 17, ESP = 50). Weitere Werte sind in [IANA]
definiert.
Payload Length Dieses Feld gibt die Größe des AH-Headers in 32-Bit Worten an, nachdem zwei 32-Bit Worte abgezogen wurden4 .
Reserved Dieses Feld ist für zukünftige Zwecke reserviert und muss mit
Nullen aufgefüllt werden.
Security Parameter Index (SPI) Dieses Feld identifiziert zusammen mit
der Ziel-IP-Adresse und dem IPsec-Protokoll die ausgehandelte Security Association (SA) (siehe Kapitel 2.3.4), für die dieses Paket gültig
ist.
Sequence Number Eine monoton mit jedem gesendeten Paket steigende
Nummer, die vor Replay-Attacken schützen soll. Die Zähler von Sen4
Das AH-Header gehört zur Gruppe der IPv6 Extension Header, für die bestimmte
Regeln bei der Berechnung der Länge des Headers gelten.
19
der und Empfänger werden nach dem Aushandeln der SA mit Null
initialisiert. Wenn 232 Pakete gesendet wurden, muss eine neue SA ausgehandelt werden.
Authentication Data Dieses Feld stellt die Datenintegrität und die Authentifizität des Empfängers sicher. Es enthält eine Signatur, die mit
dem in der SA vereinbarten Signierungsverfahren erstellt wurde. Bei
der Berechnung der Signatur wird das gesamte Paket einbezogen, mit
Ausnahme einiger variabler Felder des IP-Headers, die sich durch das
Routing verändern.
2.3.6
Encapsulated Security Payload (ESP)
Das Encapsulated Security Payload Protokoll (ESP) ist in [RFC2406] spezifiziert. Es stellt zusätzlich zum AH-Protokoll durch Verschlüsselung die Vertraulichkeit der Daten sicher, und entspricht ansonsten dem AH-Protokoll.
Ein durch ESP geschütztes Paket hat den in Abbildung 2.11 gezeigten Aufbau:
Die Felder werden im folgenden beschrieben:
Security Parameter Index (SPI) Dieses entspricht dem Feld im
AH-Header.
Sequence Number Dieses entspricht dem Feld im AH-Header.
Initialization Vector (IV) Der Initialisierungsvektor ist für einige symmetrische Verschlüsselungsverfahren notwendig und wird hiermit übermittelt. Seine Länge hängt von der Art des in der SA vereinbarten
Verschlüsselungsverfahrens ab.
Padding Falls ein Blockverschlüsselungsverfahren verwendet wird, so müssen
die Daten auf ein Vielfaches der Blocklänge gebracht werden, indem der
letzte, unvollständige Block mit Fülldaten aufgefüllt wird.
Padding Length Hier wird die Länge der aufgefüllten Daten gespeichert,
damit diese wieder entfernt werden können.
Next Header Dieses entspricht dem Feld im AH-Header.
Authentication Data Dieses entspricht dem Feld im AH-Header. Bei der
Berechnung der Signatur wird allerdings das Header des IP-Pakets nicht
einbezogen.
20
Abbildung 2.11: Aufbau des ESP-Header und -Trailer
2.3.7
Vor- und Nachteile von IPsec
Vorteile
• standardisiert
• flexible Konfiguration durch Auswahl zwischen z.B. AH oder ESP und
Tunnel- oder Transportmodus
• keine Festlegung auf bestimmte Verschlüsselungsverfahren
• Transparenz gegenüber Applikationen
Nachteile
• sehr komplex, dadurch Gefahr von fehleranfälligen Implementierungen
• noch nicht weit verbreitet
21
Kapitel 3
Einrichtung und Konfiguration
3.1
Netzwerk-Aufbau
Wie bereits erwähnt, simulieren wir den Fall, dass sich Außendienstmitarbeiter in das LAN ihrer Firma aus dem öffentlichen Netz einwählen, was
mit einer Client-to-Network-Architektur umgesetzt wird. Der Netzwerkaufbau wird in Abbildung 3.1 gezeigt.
Abbildung 3.1: Netzwerk Aufbau
Das LAN 192.168.100.0/255.255.255.0 besteht aus einem Linux-Host und
einem Linux-VPN-Gateway, welches die Schnittstelle in das öffentliche Netz
194.25.25.0/255.255.255.0 bildet. Im diesem Netz befindet sich ein Windows
RoadWarrior, sowie ein Linux RoadWarrior.
22
Der Linux-Host im LAN und das Linux-Gateway laufen als Gastbetriebssysteme über VMWare 4.5.2 auf einem Windows XP SP1 Rechner. Der Linux
RoadWarrior läuft ebenfalls als Gastbetriebssystem unter VMWare auf dem
Windows RoadWarrior mit Windows XP SP1. Alle drei Linux-Hosts laufen
unter SUSE Linux Professional 9.1 mit dem Kernel 2.6.4.
Der Linux-Host muss als Standardgateway das Linux-Gateway eingetragen haben, welches selber IP-Forwarding aktiviert haben muss. Für unseren
Aufbau haben der Windows RoadWarrior und der Linux RoadWarrior ebenfalls das Linux-Gateway als Standardgateway eingetragen. In einem realen
Aufbau würde man z.B. das vom Provider zugewiesene Gateway nehmen,
welches Pakete zum Linux-Gateway über das öffentliche Netz routet.
3.2
Installation benötigter Software
Für den Aufbau der Public-Key-Infrastruktur mit X.509-Zertifikaten haben
wir das Tool TinyCA für Linux gewählt, welches eine einfache Schnittstelle zu
OpenSSL bietet. Dieses ist unter SUSE Linux einfach mit YAST einzubinden.
Unter Windows 2000/XP ist die Konfiguration von IPSec sehr kompliziert
und umständlich, allerdings gibt es das Tool ipsec.exe von Markus Müller,
das die Konfiguration erleichtert und unter http://vpn.ebootis.de heruntergeladen werden kann. Dieses setzt wiederum auf den ’Support Tools’ von
Windows 2000/XP auf, welche auf der WindowsXP-Installations-CD unter
’TOOLS/Support Tools’ zu finden sind. Sind die Support Tools installiert,
muss das Programm von Markus Müller in das Verzeichnis der Installation
kopiert werden.
3.3
Aufbau der Public-Key-Infrastruktur
Um eine Public-Key-Infrastruktur aufzubauen, muss zunächst eine Certification Authority vorhanden sein. Hierfür kann eine bereits vorhandene, vertrauenswürdige Zertifizierungsstelle, z.B. VeriSign, benutzt werden. Wir erstellen
für diese Zwecke eine eigene CA, von der die Zertifikate für das Gateway und
die RoadWarrior signiert werden.
Zur Erstellung der CA und der Zertifikate benutzen wir TinyCA. Die
Bedienung des Programmes ist intuitiv, deshalb beschreiben wir nur die Reihenfolge der Erstellung der Zertifikate:
Zuerst wird eine CA erstellt, wobei beachtet werden sollte, dass die verwendete Schlüssellänge mindestens 2048 Bit sein sollte, um optimale Sicherheit zu gewährleisten. Ist die CA erfolgreich erstellt, sieht das Ergebnis ähn-
23
lich wie in Abbildung 3.2 aus.
Abbildung 3.2: Certification Authority in TinyCA
Danach erstellen wir das Zertifikat des Gateways. Hierfür wird zuerst eine
Certification Signing Request gestellt (in TinyCA unter ’Request’) und dieser
von der CA signiert. Ist dies geschehen, sollte das Zertifikat unter ’Certificates’ und der zugehörige private Schlüssel unter ’Keys’ auftauchen. Für den
Windows RoadWarrior und den Linux RoadWarrior ist ebenso vorzugehen.
Das Ergebnis sollte dann wie in Abbildung 3.3 gezeigt aussehen.
Damit die erstellten Zertifikate und Schlüssel beim Aufbau des VPNs
zur Authorisierung genutzt werden können, müssen diese noch in bestimmte
Formate exportiert werden. Für das Linux-Gateway und den Linux RoadWarrior müssen das Zertifikat der CA, die Certificate Revocaton List der
CA, das Zertifikat des Gateways bzw. des RoadWarriors und deren private
Schlüssel jeweils im PEM-Format exportiert werden, wobei darauf zu achten
ist, dass der Schlüssel unverschlüsselt abgespeichert wird. Für den Windows
RoadWarrior muss das Zertifikat inklusive Schlüssel im PKCS#12-Format
exportiert werden. In diesem ist zusätzlich schon das Zertifikat der CA enthalten.
Nun kann das exportiere Zertifikat auf dem Windows RoadWarrior importiert werden. Unter Windows 2000/XP werden alle Zertifikate in einem
zentralen Zertifikatsspeicher gespeichert und vom Betriebssystem verwaltet.
24
Abbildung 3.3: Zertifikate in TinyCA
Allerdings funktioniert das Importieren von Zertifikaten nicht einwandfrei,
weshalb hierfür das Tool ipsec.msc, das ebenfalls von Markus Müller bereitgestellt wird, verwendet wird. Mit diesem Tool muss das Zertifikat der CA in
den Ordner ’Vertrauenswürdige Stammzertifizierungsstellen’ und das Zertifikat des RoadWarriors in den Ordner ’Eigene Zertifikate’ importiert werden.
Die Abbildung 3.4 zeigt den Ordner ’Eigene Zertifikate’ nach dem Importieren.
Auf dem Linux-Gateway und dem Linux RoadWarrior legen wir jeweils
die vier exportierten Dateien (das CA-Zertifikat, die CRL, das eigene Zertifikat und der private Schlüssel) in dem Verzeichnis ’/etc/ipsec/certs/’ ab.
Danach müssen auf beiden Linux-Rechnern OpenSSL-konforme Links zu dem
Zertifikat der CA und der CRL erstellt werden, damit sie beim Aufbau des
VPN gefunden werden können. Dies geschieht mit den Kommandos
ln -s VPNCA-cacert.pem ‘openssl x509 -noout -hash -in
VPNCA-cacert.pem‘.0
und
ln -s crl.pem ‘openssl x509 -noout -hash -in
VPNCA-cacert.pem‘.r0
25
Abbildung 3.4: Zertifikatverwaltung unter Windows
Hierbei werden Links erzeugt, deren Namen den Hashwert des Zertifikats der
CA enthalten und auf das Zertifikat und die CRL verweisen.
3.4
Einrichtung Linux Gateway
Die Konfiguration von IPsec unter Linux lässt sich mit verschiedenen Tools
durchführen, wie z.B. FreeS/WAN, Isakmpd oder den KAME-Tools setkey
und racoon, welche wir hier verwenden. Hierfür ist das iputils-Paket über
YAST zu installieren. Im folgenden wird erläutert, wie setkey und racoon zu
konfigurieren sind.
3.4.1
Konfiguration von Setkey
Mit dem Kommando setkey können die Einträge der Security Association
Database und der Security Policy Database von IPsec editiert werden. Dies ist
nur notwendig, falls statische, manuell konfigurierte Verbindungen aufgebaut
werden sollen. Da dies in unserem Fall automatisch durch racoon, den IKEDaemon, durchgeführt wird, müssen nur für racoon eventuelle, ältere SPDund SAD-Einträge gelöscht werden, was durch folgende Konfigurationsdatei
geschieht:
# lösche SAD und SPD
26
flush;
spdflush;
3.4.2
Konfiguration von Racoon
Racoon ist der IKE-Daemon, der für die IKE-Phase zuständig ist. Er wird
aufgerufen, wenn ein Paket entsprechend einer Security Policy authentifiziert
oder verschlüsselt werden muss, aber keine entsprechende Security Association vorhanden ist. Damit racoon dann die SAs aushandeln kann, müssen die
Parameter für Phase 1 und Phase 2 mit der folgenden Konfigurationsdatei
gesetzt werden.
(1)
path certificate "/etc/ipsec/certs";
(2)
(3)
(4)
(5)
(6)
remote anonymous {
exchange_mode main;
generate_policy on;
passive on;
certificate_type x509 "LinuxGateway-cert.pem"
"LinuxGateway-key.pem";
my_identifier asn1dn;
(7)
(8)
(9)
(10)
(11)
(12)
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group modp1024;
}
}
(13) sainfo anonymous {
(14)
encryption_algorithm 3des;
(15)
authentication_algorithm hmac_md5;
(16)
compression_algorithm deflate;
}
Beschreibung der Zeilen:
(1) Das Verzeichnis der Zertifikate.
(2) Mit dem remote-Befehl wird der Kommunikationspartner (bzw. seine
IP-Adresse) definiert und wie mit ihm in der ersten Phase des IKE
27
kommuniziert werden soll. Der Eintrag ’anonymous’ gilt für jeden Kommunikationspartner, für den kein weiterer remote-Eintrag definiert ist.
(3) Der Modus der ersten Phase.
(4) Es wird angegeben, dass sich die beim Aufbau der Verbindung zu erzeugenden SPD-Einträge nach dem Client richten.
(5) Hier wird festgelegt, dass das Gateway nicht selber eine Verbindung
aufbaut, sondern auf einen Aufbau von außen wartet.
(6) Hier werden das Zertifikat und der private Schlüssel des Gateways angegeben.
(7) Dieser Parameter gibt die Identität an, die an den Kommunikationspartner geschickt werden soll. asn1dn besagt, dass hierfür das Subject-Feld
des Zertifikats benutzt werden soll.
(8) Hier wird ein Vorschlag für eine ISAKMP-SA der ersten IKE-Phase angegeben.
(9) Der zu verwendenden Verschlüsselungsalgorithmus.
(10) Der zu verwendenden Hashalgorithmus.
(11) Die zu verwendende Authentifizerungsmethode.
(12) Die Primzahllänge für den Diffie-Hellmann-Algorithmus.
(13) Hier wird ein IPsec-SA-Vorschlag für die Phase 2 angegeben.
(14) Der zu verwendende Verschlüsselungsalgorithmus.
(15) Du verwendende Authentifizierungsalgorithmus.
(16) Der zu verwendende Kompressionsalgorithmus.
3.4.3
Initialisierung von IPsec
Wir legen die beiden Konfigurationsdateien im Verzeichnis ’/etc/ipsec/’ ab
und erstellen folgendes Script, das beide automatisch einliest und ausführt.
#! /bin/sh
RACOON_OPTS="-l /var/log/racoon.log -v"
28
RACOON_CONF="/etc/ipsec/racoon.conf"
SETKEY_CONF="/etc/ipsec/setkey.conf"
start() {
echo $"Starting ipsec..."
echo $"Starting setkey... "
setkey -f $SETKEY_CONF
echo $"Starting racoon daemon... "
racoon $RACOON_OPTS -f $RACOON_CONF
}
stop() {
echo $"Stopping racoon daemon..."
killall racoon
echo $"Flushing SAD ..."
setkey -F
echo $"Flushing SPD ..."
setkey -F -P
}
restart() {
stop
start
}
showlog() {
less /var/log/racoon.log
}
rmlog() {
rm /var/log/racoon.log
echo racoon log file deleted
}
case "$1" in
29
start)
start
;;
stop)
stop
;;
restart)
restart
;;
showlog)
showlog
;;
rmlog)
rmlog
;;
*)
echo $"Usage: $0 {start|stop|restart|showlog|rmlog}"
exit 1
esac
In der start-Funktion wird zuerst setkey mit der Konfigurationsdatei aufgerufen, danach wird der racoon-Daemon gestartet. In der stop-Funktion
wird der racoon-Prozess zerstört und die SPD- und SAD-Einträge gelöscht.
Sobald eine Verbindung von einem RoadWarrior aufgebaut wird, werden
automatisch die entsprechenden SPD- und SAD-Einträge eingetragen und
ein Tunnel erstellt. Die Einträge der SPD und SAD können mit dem Befehl
’setkey -D -P’ bzw. ’setkey -D’ ausgegeben werden. In Abbildung 3.5 sind
die SAD-Einträge nach einem erfolgreichen Verbindungsaufbau dargestellt,
in Abbildung 3.6 ein Ausschnitt der SPD-Einträge.
3.5
Einrichtung Linux RoadWarrior
Die Konfiguration des Linux RoadWarrior unterscheidet sich kaum vom LinuxGateway. Da der RoadWarrior aktiv die IPsec-Verbindung aufbaut und damit
die Security Policies nun nicht mehr von racoon erstellt werden können, muss
die Konfiguration von setkey.conf folgendermaßen aussehen.
# lösche SAD und SPD
flush;
30
Abbildung 3.5: SAD-Einträge in setkey
Abbildung 3.6: SPD-Einträge in setkey
spdflush;
spdadd 194.25.25.4 192.168.100.0/24 any -P out ipsec
esp/tunnel/194.25.25.4-194.25.25.1/require;
spdadd 192.168.100.0/24 194.25.25.4 any -P in ipsec
esp/tunnel/194.25.25.1-194.25.25.4/require;
31
Die beiden spdadd-Befehle fügen der SPD zwei Einträge hinzu. Der erste
Eintrag besagt, dass in das Netz 192.168.100.0/24 ausgehende Pakete durch
IPsec behandelt werden sollen und durch einen Tunnel zwischen dem Linux
RoadWarrior (194.25.25.4) und dem Linux-Gateway (194.25.25.1) geschützt
werden sollen. Der zweite Eintrag besagt, dass für die Rückrichtung die gleiche Behandlung erfolgen soll.
path certificate "/etc/ipsec/certs";
remote 194.25.25.1 {
exchange_mode main;
generate_policy off;
passive off;
certificate_type x509 "LinuxRoadWarrior-cert.pem"
"LinuxRoadWarrior-key.pem";
my_identifier asn1dn;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group modp1024;
}
}
sainfo address 194.25.25.4 any address 192.168.100.0/24 any {
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
Die racoon-Konfigurationsdatei ist ebenfalls sehr ähnlich. Da die IP-Adresse des Gateways hier bekannt ist, wird diese beim remote-Eintrag angegeben. Zudem sind generate policy und passive deaktiviert, da die Security
Policies von setkey schon eingetragen wurden und der RoadWarrior die Verbindung aktiv aufbaut. Die sainfo gibt an, dass in der zweiten IKE-Phase
für Verbindungen von 194.25.25.4 in das Netz 192.168.100.0/24 als IPsecSA-Vorschlag die aufgelisteten Algorithmen verwendet werden sollen.
Zum Initialisieren von IPsec kann das gleiche Script wie für das Linux
Gateway genutzt werden. Der Aufbau des Tunnels kann nun z.B. durch einen
Ping oder andere Pakete gestartet werden, denn erst wenn ein Paket an den
32
Host im Zielnetz gesendet wird, wird die IKE-Phase gestartet und die SAs
ausgehandelt.
3.6
Einrichtung Windows Roadworrior
Mit der geleisteten Vorarbeit ist die Einrichtung von IPsec unter Windows
nun nicht mehr schwierig. Es muss lediglich die schon vorhandene Konfigurationsdatei ipsec.conf von Markus Müller angepasst werden:
# Name der Verbindung
conn FHDWVPN
# RoadWarrior IP-Adresse
left=%any
# VPN-Gateway IP-Adresse
right=194.25.25.1
# Zielnetz
rightsubnet=192.168.100.0/255.255.255.0
# CA
rightca="C=DE, L=Hannover, O=FHDW, CN=VPNCA"
# RoadWarrior startet die Verbindungsaufnahme
auto=start
Beschreibung der Konfiguration:
conn Gibt den Namen der Verbindung an.
left Hier wird die IP-Adresse des RoadWarriors angegeben. Da diese dynamisch ist, kann hier ’any’ angegeben werden.
right Dies ist die IP-Adresse des Gateways, zu dem ein Tunnel aufgebaut
werden soll.
rightsubnet Das Netz, mit dem kommuniziert werden soll.
rightca Angaben zur Zertifizierungsstelle, von der das Zertifikat des Gateways signiert sein muss. Dabei ist C=Country, L=Location, O=Organisation und CN=Common Name. Diese Werte für die CA werden zum
Beispiel in TinyCA angezeigt und können von dort übernommen werden.
33
auto Gibt an, dass der RoadWarrior von sich aus die Verbindung startet.
Achtung: Am Ende der einzelnen Zeilen dürfen keine Leerzeichen oder Tabs
stehen, sonst kann die Datei nicht korrekt eingelesen werden!!!
Nachdem die Konfigurationsdatei erstellt wurde, kann eine IP-Sicherheitsrichtlinie namens ’FreeSwan’ mit dem Befehl ’ipsec.exe’ erstellt und aktiviert
werden.
Die Konfiguration der Parameter der IKE-Phase kann mit dem Tool ipsec.msc durchgeführt werden. Dafür muss die erwähnte IP-Sicherheitsrichtlinie
bearbeitet werden. Da diese aber standardmäßig zu den Einstellungen unseres Linux-Gateways passen, ist dies nicht unbedingt notwendig.
Um das VPN aufzubauen muss lediglich ein Paket an einen Host im Zielnetz gesendet werden, z.B. durch einen Ping. Erst dann wird die IKE-Phase
gestartet und die SAs ausgehandelt. Die Abbildung 3.7 zeigt die Ausgabe der
Konsole beim Verbindungsaufbau.
Abbildung 3.7: Verbindungsaufbau unter Windows
Mit dem Kommando ’ipsec.exe -off’ wird die Sicherheitsrichtlinie wieder
deaktiviert.
34
Kapitel 4
Ausblick
In diesem Kapitel werden erweiterte Konfigurationsmöglichkeiten vorgestellt
sowie Themen angesprochen, mit denen man sich weiter beschäftigen könnte.
4.1
DHCP-over-IPsec
Wenn ein Rechner sich über einen Tunnel in ein LAN einwählt, ist es oft
von Vorteil, wenn dieser eine IP-Adresse aus dem lokalen Netz bekommt
und sich scheinbar ’zuhause’ befindet. Dafür muss das Gateway als DHCPServer konfiguriert sein. Ein RoadWarrior erstellt nun zuerst den Tunnel zum
VPN-Gateway und erhält über DHCP dann eine lokale, virtuelle IP-Adresse.
Diese wird nun als die Quelladresse für die weitere Kommunikation mit dem
Netzwerk verwendet, die IP-Adresse des Tunnelendpunktes bleibt bestehen.
Die Kommunikation mit der lokalen Adresse ist in Abbildung 4.1 gezeigt.
Vergleiche auch Abbildung 2.8 ohne lokale Adresse.
Das Protkoll für DHCP-over-IPsec wird in [RFC3456] beschrieben.
4.2
Firewall Traversal
Befinded sich das VPN-Gateway hinter einer Firewall (was sinnvoll ist, falls
die Überlebensdauer mehr als zwei Nanosekunden betragen soll), so muss
beachtet werden, dass die Firewall je nach verwendeten Protokollen ESPPakete (Protokollnummer 50) und/oder AH-Pakete (Protokollnummer 51) in
beide Richtungen passieren lässt. Zusätzlich muss bei der Verwendung von
IKE zum automatischen Aushandeln der Verbindungsparameter der IKEPort (standardmäßig der UDP-Port 500) in beide Richtungen freigegeben
werden.
35
Abbildung 4.1: Client-To-Network Szenario mit lokaler Adresse
4.3
Network Address Translation (NAT) Traversal
Wird ein VPN über NAT-Geräte aufgebaut, so entstehen durch die IPsec
Protokolle ESP und AH verschiedene Probleme: Passiert ein IP-Paket ein
NAT-Gerät, so werden die IP-Adresse(n) und die Portnummer(n) verändert.
Falls nun das IP-Paket durch ESP geschützt ist, so ist zwar das Ändern der
IP-Adressen möglich, das Ändern der Portnummern dagegen nicht, da ein
mögliches TCP- oder UDP-Header authentifiziert und zudem möglicherweise
verschlüsselt ist (siehe Kapitel 2.3.6). Ist ein IP-Paket durch AH geschützt,
so würde eine Änderung der IP-Adressen oder Portnummern die Integrität
verletzen, da wie in Kapitel 2.3.5 beschrieben, eine Signatur über das gesamte
Paket erstellt wird, welche bei Veränderung des Paketes ungültig würde.
Eine Lösungsmöglichkeit für ESP besteht darin, einen UDP-Tunnel aufzubauen, wie in Abbildung 4.2 gezeigt. Dabei wird vom VPN-Sender zwischen
dem IP- und dem ESP-Header ein UDP-Header eingefügt, dessen Portnummern nun beliebig vom NAT-Gerät verändert werden können. Der VPNEmpfänger muss dieses ’NAT Traversal Protocol’ ebenfalls unterstützen und
das UDP-Header wieder entfernen. Das NAT Traversal von IPsec Paketen
wird in [RFC3715] behandelt.
36
Abbildung 4.2: IPsec-Paket im UDP-Tunnel
4.4
Performanz-Untersuchungen
Unsere Projektarbeit behandelt nicht die Untersuchung der Performanz beim
Einsatz von IPsec. Es wäre allerdings interessant zu erfahren, inwieweit sich
der Durchsatz von Daten verringert, wenn AH und/oder ESP im Transport
oder Tunnelmodus verwendet wird und wie hoch der durch IPsec verursachte
Overhead ist.
37
Anhang A
Literaturverzeichnis
VPNLinux VPN mit Linux, Ralf Spenneberg, Addison Wesley Verlag, 2004
(ISBN 3-8273-2114-X)
RFC2401 Security Architecture for the Internet Protocol (IPsec)
RFC2409 The Internet Key Exchange (IKE)
RFC2402 IP Authentification Header (AH)
RFC2408 Internet Security Association and Key Management Protocol
(ISAKMP)
RFC2406 IP Encapsulating Security Payload (ESP)
RFC3715 IPsec Network Address Translation
RFC3456 DHCP Configuration of IPsec Tunnel Mode
38
Anhang B
Ausgewählte Links
ISO/OSI Folien zu ’ISO/OSI Referenzmodell’, Prof. Hellberg,
http://ux-02.ha.bib.de/ hellberg/Netzwerke/ISO-OSI-Referenzmodell.ppt
Sicherheit Folien zu ’Sicherheitsaspekte in heterogenen Netzen’, Prof. Hellberg, http://ux-02.ha.bib.de/ hellberg/Netzwerke/Folien-070800-LAST69.pps
Kryptographie Folien zu ’Kryptographie’, Prof. Hellberg,
http://ux-02.ha.bib.de/ hellberg/BetrieblicheInformationssysteme/EFS23.ppt
ipsec tool Markus Müller IPsec Tool unter http://vpn.ebootis.de/
wikipedia Kryptologie Projekt
http://de.wikipedia.org/wiki/Wikipedia:WikiProjekt Kryptologie
VPN mit Linux online Ausgewählte Kapitel zu VPN mit IPsec aus [VPNLinux] in http://www.spenneberg.org/VPN-Book/
IANA Internet Assigned Numbers Authority,
http://www.iana.org/assignments/protocol-numbers
rcf-editor Alle Request For Comments (RFCs) unter http://www.rfc-editor.org
39
Anhang C
Glossar
asymmetrisches Kryptosystem Ein Kryptosystem, bei dem zur Verschlüsselung ein anderer Schlüssel benutzt wird als zur Entschlüsselung. Dabei wird ein Schlüssel (geheimer Schlüssel) geheim gehalten, der andere (öffentlicher Schlüssel) kann an andere weitergegeben werden. Bei Kenntnis des
einen Schlüssels kann der andere nur mit exponentiellem oder noch höherem
Aufwand berechnet werden. Dazu gehört z.B. das RSA-Kryptosystem.
Authentication Header (AH) Ein Protokoll von IPsec, das die Datenintegrität, die Authentifizierung der Quelle und den Schutz vor ReplayAngriffen sicher stellt, aber nicht die Vertraulichkeit. Protokollnummer: 51.
Authentifizierung Authentifizierung ist die Überprüfung und Erkennung
der Identität einer Person oder eines Programms.
Certificate Revocation List (CRL) Eine CRL ist eine Liste, die Informationen zu der Gültigkeit von Zertifikaten enthält, um feststellen zu können,
ob ein Zertifikat zum aktuellen Zeitpunkt gültig ist oder gesperrt wurde.
Certificate Signing Request (CSR) Ein Certificate Signing Request
ist ein unsigniertes Zertifikat, das von einer Certification Authority signiert
werden soll.
Certification Authority (CA) Eine Certification Authority stellt eine
vertrauliche, zentrale Signierungsinstanz dar, die digitale Zertifikate ausstellt,
indem sie einen Certificate Signing Request mit ihrem privaten Schlüssel
signiert.
40
Client Ein Client ist ein Rechner oder eine Anwendung, das Dienste eines
Servers in Anspruch nimmt.
Diffie-Hellmann-Schlüsselaustausch Der Diffie-Hellmann-Schlüsselaustausch beschreibt ein Verfahren, symmetrische Schlüssel sicher über unsichere
Kanäle auszuhandeln oder auszutauschen.
Encapsulated Security Payload (ESP) Ein Protokoll von IPsec, das
die Datenintegrität, die Authentifizierung der Quelle, die Vertraulichkeit der
Daten und den Schutz vor Replay-Angriffen sicher stellt. Protokollnummer:
50.
Entschlüsselung Ein Verfahren, das verschlüsselte Daten mit Hilfe eines
Schlüssels in die ursprünglichen Daten zurückwandelt.
Gateway Ein Gateway verbindet zwei Netzwerke mit unterschiedlichen
Protokollen miteinander. Dafür nimmt es eine Protokollumsetzung zwischen
den beiden Netzwerken vor.
geheimer Schlüssel Der Schlüssel eines Kryptosystems, der geheim gehalten wird.
Hash-Funktion Eine nicht umkehrbare Funktion, die Nachrichten variabler Länge auf einen Wert (Hash-Wert) fester Bitbreite abbildet. Dabei ist
es praktisch unmöglich zwei unterschiedliche Nachrichten zu finden, die den
gleichen Hash-Wert ergeben. Beispiele für solche Hash-Funktionen sind MD5
(Message Digest Algorithm 5) und SHA (Secure Hash Algorithm).
Host Ein Host ist ein Rechner in einem Netzwerk.
Initialization Vector (IV) Der Initialisierungsvektor ist für einige symmetrische Verschlüsselungsverfahren notwendig. Seine Länge ist abhängig von
der Art des Verschlüsselungsverfahrens.
Internet Key Exchange (IKE) Ein Verfahren von IPsec, mit dem die
Kommunikationspartner authentifiziert werden und automatisch IPsec-SAs
ausgehandelt werden.
41
Internet Protocol (IP) IP ist ein Netzwerkprotokoll, das in der Netzwerkschicht des OSI-Netzwerkschichtenmodells angesiedelt ist.
Internet Protocol 4 (IPv4) IPv4 ist ein IP, das 32 Bit lange Adressen
verwendet und gegenwärtig der Standard im Internet ist.
Internet Protocol 6 (IPv6) IPv6 ist der Nachfolger des IPv4 und benutzt
im Gegensatz zu diesem 128 Bit lange Adressen.
Internet Security Association and Key Management Protocol
(ISAKMP) ISAKMP definiert eine Verfahren, um SAs auzuhandeln und
zu verwalten.
IPsec Tunnelmodus Im Tunnel-Modus wird das gesamte IP-Paket in ein
anderes IP Paket eingepackt und durch das IPsec Protokoll geschützt, indem das IPsec Header (AH und/oder ESP) zwischen den beiden IP-Headern
eingefügt wird.
IPsec Transportmodus Im Transport-Modus werden die Daten aus den
höheren Protokollschichten eines Paketes durch das IPsec-Header (AH und/oder ESP) geschützt. Dafür wird das IPsec Header zwischen das IP Header
und das Header der höheren Protokollschicht (z.B. TCP oder UDP) gesetzt.
Klartext Eine unverschlüsselte Nachricht.
Kryptosystem Ein System, das Verfahren zur Ver- und Entschlüsselung
von Informationen beschreibt, mit der Absicht, diese gegenüber Dritten unleserlich zu machen.
Layer 2 Tunneling Protocol (L2TP) Ein Protokoll zum Aufbau von
VPNs, das auf der Sicherungsschicht des OSI-Modells aufsetzt.
Local Area Network (LAN) Ein LAN ist ein räumlich begrenztes Computernetzwerk.
NAT Traversal Protocol Das NAT Traversal Protocol beschreibt, wie
ein UDP-Tunnel benutzt wird, um ESP-Pakete NAT-fähig zu machen.
42
öffentlicher Schlüssel Der Schlüssel eines asymmetrischen Kryptosystem,
der veröffentlicht wird.
OpenSSL OpenSSL ist eine Open-Source-Implementierung von SSL.
Padding Das Auffüllen eines unvollständigen Blocks mit beliebigen Daten,
so dass eine gewisse Blockgröße erreicht wird.
Payload Data Nutzdaten
privater Schlüssel siehe geheimer Schlüssel
Public-Key-Infrastruktur (PKI) Mit Public-Key-Infrastruktur bezeichnet man ein System, welches ermöglicht, digitale Zertifikate auszustellen (siehe Certification Authority), zu verteilen und zu prüfen (siehe Signierung und
Verifizierung).
Public-Key-Verschlüsselung siehe asymmetrisches Kryptosystem
Replay-Attacke Eine Replay-Attacke ist das erneute Versenden einer vorher abgehörten Nachrichtensequenz. Hierdurch ist es z.B. möglich Zugriff auf
einen Server zu erhalten, dem vorher schon einmal die aufgezeichnete Nachricht mit eventuellen, verschlüsselten Zugangsinformationen gesendet wurde.
RSA-Kryptosystem Ein asymmetrisches Kryptosystem, benannt nach
Ronald L. Rivest, Adi Shamir und Leonard Adleman, das auf dem Faktorisierungsproblem großer Zahlen aufbaut.
Schlüssel Eine zusätzliche Information, die man benötigt um eine Nachricht zu ver- bzw. zu entschlüsseln.
Schlüssellänge Die Anzahl der Bitstellen einer Zahl, aus der der Schlüssel
besteht. Im Falle des RSA-Verfahrens ist dies die Anzahl der Bitstellen des
Moduls n.
Security Association (SA) Eine SA ist eine unidirektionale Vereinbarung zwischen zwei Kommunikationspartnern über zu verwendende Algorithmen und Schlüssel.
43
Security Association Database (SAD) Die Datenbank, in der Security
Associations gespeichert werden.
Security Architecture for IP (IPsec) IPsec stellt eine Sicherheitsarchitektur für die Kommunikation über IP-Netzwerke zur Verfügung. Folgende
Sicherheitsaspekte werden durch IPsec gewährleistet:
• Authentifizierung der Kommunikationspartner
• Authentifizierung der Quelle der gesendeten Daten
• Datenintegrität
• Vertraulichkeit der Daten
• Schutz vor Replay-Attacken
Security Parameter Index (SPI) Eine SPI identifiziert zusammen mit
der Ziel-IP-Adresse und dem IPsec-Protokoll die ausgehandelte Security Association (SA).
Security Policy (SP) Eine Security Policy definiert, wann welche Security
Association zu verwenden ist.
Security Policy Database (SPD) Die Datenbank, in der Security Policies gespeichert werden.
Server Ein Server ist ein Rechner oder eine Anwendung, die Dienste zur
Verfügung stellen, die von Clients in Anspruch genommen werden können.
Signierung Um Daten zu signieren, wird der Hash-Wert der Daten mit einem geheimen Schlüssel verschlüsselt. Im Falle einer Public-Key-Infrastruktur
ist dies der geheime Schlüssel des Senders. Der Empfänger der verschlüsselten
Daten kann diese verifizieren.
Secure Socket Layer (SSL) Ein Protokoll, das dafür genutzt wird, eine
authentifizierte und verschlüsselte Verbindung aufzubauen.
symmetrisches Kryptosystem Ein Kryptosystem, das zur Ver- und Entschlüsselung den gleichen Schlüssel verwendet, bzw. Schlüssel verwendet, die
sich leicht ineindander überführen lassen.
44
Transmission Control Protocol (TCP) Das TCP ist ein zuverlässiges, verbindungsorientiertes Transportprotokoll, das in Schicht 4 des OSINetzwerkschichtenmodells angesiedelt ist.
Tunnel In einem Tunnel werden die Daten eines Netzwerkprotokolls eingebettet in einem anderen Netzwerkprotokoll übetragen.
User Datagram Protocol (UDP) Das TCP ist ein nicht zuverlässiges,
verbindungsloses Transportprotokoll, das in Schicht 4 des OSI-Netzwerkschichtenmodells angesiedelt ist.
Verifizierung Der Empfänger von signierten Daten kann den Hash-Wert
entschlüsseln und diesen mit dem eigenen berechneten Hash-Wert der Daten
vergleichen. Sind beide gleich, so ist der Sender authentifiziert. Im Falle der
Public-Key-Infrastruktur wird mit dem öffentlichen Schlüssel des Senders
entschlüsselt.
Verschlüsselung Ein Verfahren, das Daten mit Hilfe eines Schlüssels so
umwandelt, dass die ursprüngliche Information der Daten nicht mehr erkennbar ist, aber mit Hilfe der Entschlüsselung wiederhergestellt werden kann.
Virtual Private Network (VPN) In einem Virtual Private Network
sind mehrere Hosts und/oder nicht-öffentliche Netzwerke über ein öffentliches Netzwerk so miteinander verbunden, dass private Daten untereinander
ausgetauscht werden können. Dabei wird üblicherweise eine Verbindung über
einen Tunnel durch das öffentliche Netzwerk hergestellt, die meistens noch
zusätzlich verschlüsselt wird um die privaten Daten zu schützen.
X.509 Standard Der X.509 Standard ist eine konkrete Public-Key-Infrastruktur, die den Standard für digitale Signaturen darstellt.
Zertifikat Ein Zertifikat erbringt den Nachweis, dass ein öffentlicher Schlüssel zu einer vorgegebenen Person gehört. Dies wird dadurch erreicht, dass
ein Zertifikat von einer Zertifizierungsstelle (Certification Authority) signiert
wird, indem der Hash-Wert des Datensatzes mit dem privaten Schlüssel der
Zertifizierungsstelle verschlüsselt wird. Dieser Datensatz enthält insbesondere
Informationen über den Namen des Inhabers des Zertifikates, seinen öffentlichen Schlüssel, die Gültigkeitsdauer des Zertifikats, das Signierungsverfahren
und den Namen der Zertifizierungsstelle.
45
Herunterladen