Windows Server 2008 R2 IPSec

Genauso wie man Dateien auf Datenträgern verschlüsseln kann, lassen sich natürlich auch Übertragungswege verschlüsseln. Windows Server 2008 R2 unterstützt für diese Zwecke über seine Firewall nativ das IPSec Protokoll. Im Gegensatz zu vielen anderen Verschlüsselungen arbeitet IPSec auf der Vermittlungsschicht des OSI Modells und nicht auf den Anwendungsorientierten Schichten. Der Vorteil davon ist, dass die kommunizierenden Anwendungen auf den teilnehmenden Computern gar nichts von der Verschlüsselung oder IPSec wissen müssen. Dementsprechend findet auch die gesamte Konfiguration in den Systemeinstellungen und nicht in den Anwendungen statt.

IPSec lässt sich in zwei Bereiche unterteilen. Wie genau IPSec aufgebaut ist und funktioniert werde ich hier nicht erklären. Dazu gibt es zahlreiche gute Artikel im Internet, die sich auch z.T. sehr kritisch damit auseinandersetzen. Wissen sollte man nur, dass die Einstellmöglichkeiten von IPSec denen einer Firewall ähneln. Pakete können auf Basis von Quell- und Zielports, Protokollen und IP-Adressen gefiltert und kontrolliert werden. Vielleicht ist IPSec genau aus diesen Gründen vollständig in die Windows Firewall integriert worden, was uns eine Konfiguration sehr einfach macht.

Um eine IPSec Übertragung zu konfigurieren und zu testen richten wir zwischen zwei Windows Server 2008 R2 VMs das IPSec Protokoll ein und kopieren dann eine Datei zwischen den Systemen hin und her. Verschlüsselt natürlich.

Sicherheitsrichtlinie

  1. Wir beginnen auf einer frischen Windows Server 2008 R2 Instanz und öffnen mit mmc die Microsoft Management Konsole und fügen den Snap-in "IP-Sicherheitsrichtlinien" für den lokalen Computer hinzu (schneller gehts mit "secpol.msc" oder über Start -> Verwaltung -> Lokale Sicherheitsrichtlinie).
  2. Mit einem Rechtsklick auf "IP-Sicherheitsrichtlinien auf lokaler Computer" können wir eine neue IP-Sicherheitsrichtlinie erstellen.
  3. Gib dem ganzen einen Namen, lass den Haken bei Eigenschaften bearbeiten stehen und schließe den Assistenten ab.
  4. Jetzt befindest du dich im Editor der gerade erstellten Richtlinie mit der über den Assistenten konfigurierten ersten Sicherheitsregel. Du hast jetzt die Möglichkeit Regeln zu erstellen über Hinzufügen.
  5. Als erstes kannst du der Regel einen Namen geben.
  6. Wir fahren fort ohne einen Tunnel zu erstellen, erlauben alle Netzwerkverbindungen und fügen dann eine neue IP-Filterliste hinzu.
  7. Gib der Liste einen Namen und klick dann erneut auf Hinzufügen.
  8. Jetzt wähle als Quelladresse die IP-Adresse des Kommunikationspartners. Wenn wir uns jetzt grad auf Server A befinden, wäre das die IP von Server B.
  9. Als Zieladresse wähle "Meine IP-Adresse".
  10. Beziehe die Verschlüsselung auf beliebige Protokolle und lasse auch die Ports beliebig.
  11. Du hast soeben definiert, unter welchen Bedingungen deine Sicherheitsregel aktiv werden soll. Fehlt noch eine Aktion die in diesem Fall ausgeführt wird. Wenn du im Assistenten fortfährst kannst du eine Filteraktion definieren.
  12. Vergib einen Namen und wähle dann "Sicherheit aushandeln".
  13. Daraufhin definieren wir im nächsten Schritt, dass wir keine unsichere Kommunikation zulassen möchten und als Sicherheitsparameter wählen wir Verschlüsselung und Integrität.
  14. Die Aktion kann jetzt hinzugefügt und anschließend ausgewählt werden und schon können wir im Assistenten fortfahren.
  15. Jetzt noch Kerberos auswählen und den Assistenten dann abschließen.

Herzlichen Glückwunsch, du hast soeben eine IP-Sicherheitsrichtlinie erstellt. Damit diese auch aktiv wird, musst du einen Rechtsklick auf die Richtlinie machen und auf "Zuweisen" klicken. Sobald du das getan hast, kannst du einmal probieren von Server B auf Server A (auf dem wir grad die Regel zugewiesen haben) zuzugreifen. Einfach \\[Servername] in den Explorer eingeben. Du müsstest eine Fehlermeldung bekommen. Gehst du zurück zu Server A und entfernst die Zuweisung, sollte der Zugriff wieder funktionieren.

Das tun wir aber nicht. Wir lassen die Richtlinie auf Server A zugewiesen und erstellen analog eine Policy für Server B. Hier müssen eigentlich nur die IP-Adressen entsprechend andersrum konfiguriert werden, ansonsten bleibt alles gleich. Jetzt sollte auch der Zugriff auf den Share von Server A wieder funktionieren.

Testen

Dass das funktioniert kann man auf zwei Weisen sehr schön testen:

Die erste führt uns in die Windows Firewall Konsole. Dort können wir unter Überwachung -> Sicherheitszuordnungen -> Haupt- oder Schnellmodus die Verbindungseinstellungen sehen. Steht da nichts, existiert auch keine Vereinbarung zwischen den beiden Computern.

Die zweite ist zwar nicht grad professionell aber trotzdem aussagekräftig: Wir kopieren einfach eine Datei zwischen den beiden Servern hin und her. Ist der Transfer vergleichsweise langsam (kann verglichen werden durch Zuweisen und Entfernen der Zuweisung der Sicherheitsrichtlinie), dann passiert da deutlich mehr als nur eine Paketübertragung. Die ganzen Verschlüsselungs- und Entschlüsselungsvorgänge und Authentifizierungen für jedes Paket verlangsamen den Transfer erheblich. Aber nicht verzweifeln, es lassen sich viele andere Einstellungen machen um die Performance zu optimieren. Schlüsselgröße verringern, andere effizientere Verschlüsselungsalgorithmen ausprobieren. Grundsätzlich kann durch Verringern der Sicherheit eine höhere Performance erzielt werden. Einfach einen vertretbaren Mittelwert finden.

Zertifikatsbasiert

Um die IPSec Konfiguration mit Zertifikaten statt Kerberos zu konfigurieren, stellen wir ersteinmal sicher, dass beide Rechner ein Zertifikat haben. Diesmal müssen es aber Computer-Zertifikate sein, keine Nutzer-Zertifikate, wie in den vorangegangenen Artikeln. Diese lassen sich ebenfalls wieder über die Microsoft Management Konsole anfordern. Diesmal aber nicht certmgr.msc starten, denn dann sehen wir nur die Benutzerzertifikate.

  1. Logge dich mit dem lokalen Administratorkonto ein (nicht an der Domäne) und starte mmc.
  2. Dann füge Zertifikate als Snap-in hinzu und wähle Lokaler Computer.
  3. Jetzt kannst du wie gewohnt über Rechtsklick auf Eigene Zertifikate ein Computer Zertifikat anfordern.
  4. Mach das auf beiden Rechnern und stelle dann ebenfalls auf beiden Rechnern die IP-Sicherheitsrichtlinien von Kerberos auf Zertifikatsbasiert um:
    • Doppelklick auf die Richtlinie
    • Filterliste bearbeiten
    • Reiter "Authentifizierungsmethoden"
    • Authentifizierungsmethode bearbeiten
    • "Ein Zertifikat von folgender Zertifizierungsstelle verwenden"
    • Durchsuchen
    • CA auswählen und alles bestätigen.

Jetzt sollte der Datentransfer zwischen den beiden Computern weiterhin funktionieren, nur diesmal über unsere eigenen Zertifikate.

<-- Zurück | Weiter (tbd)