Ein IPSec-Gateway im Eigenbau

Seite 3: Schwanenzucht

Inhaltsverzeichnis

Damit die Firewall den IPSec-Verkehr nicht blockiert, muss man unter Umständen zusätzliche Paketfilterregeln erstellen. Der Schlüsselaustausch und die Authentifizierung erfolgen auf UDP-Port 500, die verschlüsselten Daten sendet IPSec über das Internet-Protokoll 50 (Encapsulating Security Payload, ESP). Einfache Regeln dafür sehen so aus:

iptables -A INPUT -p udp --sport 500 --dport 500 -j ACCEPT
iptables -A INPUT -p 50 -j ACCEPT

Je nach Firewall-Konfiguration sind analoge Regeln für die OUTPUT-Chain erforderlich. Vor der eigentlichen Konfiguration von FreeS/WAN sind noch einige Dateien an den richtigen Platz zu kopieren. Das mit

./make_cert Gateway

erstellte Zertifikat GatewayCert.pem muss in /etc/ipsec.d/ liegen, der geheime Schlüssel GatewayKey.pem in /etc/ipsec.d/private/. Das Zertifikat der vertrauenswürdigen CA (cacert.pem) findet seinen Platz in /etc/ipsec.d/cacerts/, die Liste der widerrufenen Zertifikate (crl.pem) in /etc/ipsec.d/crls/. Die Zugriffsrechte entsprechen den normalen Vorgaben; lediglich private/ darf nur für den Eigentümer root les- und schreibbar sein.

Die ebenfalls nur für den Administrator lesbare Datei /etc/ipsec.secrets nimmt die Passphrase auf, mit der FreeS/WAN auf den geheimen Schlüssel zugreifen kann:

: RSA GatewayKey.pem "sehr geheim"

(der Doppelpunkt am Zeilenanfang und eine abschließende Leerzeile sind wichtig).

Die Konfigurationsdatei /etc/ipsec.conf gliedert sich in mehrere Sektionen, deren Beginn ein Eintrag am Zeilenanfang markiert. Die einzelnen Angaben einer Sektion sind eingerückt. Wer mit "#" eine Option auskommentiert, darf dieses Zeichen nicht am Zeilenanfang einfügen.

Die Einträge im Bereich "config setup" enthalten allgemeine Einstellungen. Im Listing links oben stehen dort nur die Standardwerte, deren Bedeutung die FreeS/WAN-Dokumentation erläutert [2]. Sektionen, die mit dem Schlüsselwort "conn" beginnen, beschreiben eine Verbindung, "conn %default" kommt für alle Verbindungen zur Anwendung und enthält ebenfalls einige Standardeinstellungen. Die Einträge in Zeile 13 und 14 sorgen dafür, dass die Authentifizierung grundsätzlich über Zertifikate erfolgt.

Das Präfix "left" oder "right" legt fest, auf welche Seite der Verbindung sich eine Option bezieht. Es hat sich dabei eingebürgert, immer left als lokalen Endpunkt und right als entfernt (remote) zu verwenden.

Hier sucht FreeS/WAN seine Dateien

Die Option auto gibt an, ob FreeS/WAN eine Verbindung nur registrieren (add) oder auch gleich initiieren soll (start). Da das VPN-Gateway Verbindungsanfragen entgegennimmt, aber selbst keine aufbaut, steht in der %default-Sektion "auto=add".

Die eigene Adresse (left) lautet im Listing %defaultroute. Das ersetzt FreeS/WAN selbstständig durch die IP-Adresse der Schnittstelle auf die die Default-Route zeigt - also in der Regel die Adresse, über die Internet-Verkehr abgewickelt wird. Wenn man hier explizit eine IP-Adresse des Rechners einträgt, muss man auch über leftnexthop das zu verwendende Gateway angeben.

Bei einer restriktiven Firewall-Policy muss man explizit dafür sorgen, dass die entschlüsselten Pakete weitergereicht werden. Die Option

leftupdown=/usr/local/lib/ipsec/updown

legt ein Skript fest, das FreeS/WAN automatisch aufruft, wenn eine Verbindung zu Stande kommt. Für Firewalls mit iptables kann man zumeist ohne weitere Modifikationen das mitgelieferte Skript _updown.x509 verwenden, das sich im FreeS/WAN-Verzeichnis (meist /user/local/lib/ipsec) befindet. Es fügt die notwendigen Regeln ein und entfernt sie nach dem Verbindungsende auch wieder.