Dieser Abschnitt beschreibt, wie Sie mit FreeBSD-Gateways ein Virtual-Private-Network (VPN) einrichten. Als Beispiel wird ein VPN zwischen zwei Netzen verwendet, die über das Internet miteinander verbunden sind.
Dieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten. Um IPsec einzurichten, sollten Sie einen neuen Kernel bauen können (siehe Kapitel 9, Konfiguration des FreeBSD-Kernels).
IPsec ist ein Protokoll, das auf dem Internet-Protokoll (IP) aufbaut. Mit IPsec können mehrere Systeme geschützt miteinander kommunizieren. Das in FreeBSD realisierte IPsec-Protokoll baut auf der KAME-Implementierung auf und unterstützt sowohl IPv4 als auch IPv6.
IPsec besteht wiederum aus zwei Protokollen:
Encapsulated Security Payload (ESP) verschlüsselt IP-Pakete mit einem symmetrischen Verfahren (beispielsweise Blowfish oder 3DES). Damit werden die Pakete vor Manipulationen Dritter geschützt.
Der Authentication Header (AH) enthät eine kryptographische Prüfsumme, die sicher stellt, dass ein IP-Paket nicht verändert wurde. Der Authentication-Header folgt nach dem normalen IP-Header und erlaubt dem Empfänger eines IP-Paketes, dessen Integrität zu prüfen.
ESP und AH können, je nach Situation, zusammen oder einzeln verwendet werden.
IPsec kann in zwei Modi betrieben werden: Der Transport-Modus verschlüsselt die Daten zwischen zwei Systemen. Der Tunnel-Modus verbindet zwei Subnetze miteinander. Durch einen Tunnel können dann beispielsweise verschlüsselte Daten übertragen werden. Ein Tunnel wird auch als Virtual-Private-Network (VPN) bezeichnet. Detaillierte Informationen über das IPsec-Subsystem von FreeBSD enthält die Hilfeseite ipsec(4).
Die folgenden Optionen in der Kernelkonfiguration aktivieren IPsec:
Wenn Sie zur Fehlersuche im IPsec-Subsystem Unterstützung wünschen, sollten Sie die folgende Option ebenfalls aktivieren:
Es gibt keinen Standard, der festlegt, was ein Virtual-Private-Network ist. VPNs können mit verschiedenen Techniken, die jeweils eigene Vor- und Nachteile besitzen, implementiert werden. Dieser Abschnitt stellt eine Möglichkeit vor, ein VPN aufzubauen.
Dieses Szenario hat die folgenden Vorausetzungen:
Es müssen zwei Netzwerke vorhanden sein.
Beide Netzwerke müssen intern IP benutzen.
Beide Netzwerke sind über ein FreeBSD-Gateway mit dem Internet verbunden.
Der Gateway jedes Netzwerks besitzt mindestens eine öffentliche IP-Adresse.
Die intern verwendeten IP-Adressen können
private oder öffentliche Adressen sein.
Sie dürfen sich nicht überlappen; zum Beispiel:
nicht beide sollten 192.168.1.x
benutzen.
Als erstes muss security/ipsec-tools
aus
der Ports-Sammlung installiert werden. Dieses Softwarepaket
Dritter enthält einige Anwendungen, die ihnen bei der
Konfiguration von IPsec helfen.
Als nächstes müssen zwei gif(4)-Pseudogeräte
angelegt werden, um die Pakete zu tunneln und dafür zu sorgen,
dass beide Netzwerke richtig miteinander kommunizieren können.
Geben Sie als Benutzer root
die folgenden Befehle
ein: Austausch der internen
und
externen
Werte durch die realen internen
und externen Gateways:
#
ifconfig gif0 create
#
ifconfig gif0 internal1 internal2
#
ifconfig gif0 tunnel external1 external2
Beispiel: Die öffentliche IP-Adresse
des Firmennetzwerkes (LAN) ist:
172.16.5.4
mit einer internen
IP-Adresse von
10.246.38.1
. Das Heimnetzwerk
(LAN) hat die öffentliche
IP-Adresse
192.168.1.12
mit der internen
privaten IP-Adresse
10.0.0.5
.
Dies mag verwirrend erscheinen, schauen Sie sich deshalb das folgende Beispiel aus dem ifconfig(8)-Befehl an:
Wenn Sie fertig sind, sollten beide privaten IPs mit dem ping(8) Befehl, wie die folgende Darstellung zeigt, erreichbar sein:
Wie erwartet, können nun beiden Seiten ICMP-Pakete von ihren privaten Adressen senden und empfangen. Als nächstes müssen beide Gateways so konfiguriert werden, dass sie die Pakete des anderen Netzwerkes richtig routen. Mit dem folgenden Befehl erreicht man das Ziel:
#
corp-net# route add 10.0.0.0 10.0.0.5 255.255.255.0
#
corp-net# route add net 10.0.0.0: gateway 10.0.0.5
#
priv-net# route add 10.246.38.0 10.246.38.1 255.255.255.0
#
priv-net# route add host 10.246.38.0: gateway 10.246.38.1
Ab jetzt sollten die Rechner von den Gateways sowie von den Rechnern hinter den Gateways erreichbar sein. Dies wird an dem folgendem Beispiel deutlich:
Das Konfigurieren der Tunnel ist der einfache Teil. Die
Konfiguration einer sicheren Verbindung geht sehr viel mehr in
die Tiefe. Die folgende Konfiguration benutzt pre-shared
(PSK) RSA-Schlüssel.
Abgesehen von den IP-Adressen, sind beide
/usr/local/etc/racoon/racoon.conf
identisch
und sehen ähnlich aus wie:
Die Erklärung einer jeden verfügbaren Option würde den Rahmen dieses Textes sprengen. Es gibt sehr viele relevante Informationen in der racoon-Konfigurationsanleitung.
Die SPD-Methoden müssn noch konfiguriert werden so dass, FreeBSD und racoon in der Lage sind den Netzwerkverkehr zwischen den Hosts zu ver- und entschlüsseln.
Dies wird durch ein einfaches Shellscript ähnlich wie das
folgende, das auf dem Firmennetzwerk-Gateway liegt,
ausgeführt. Diese Datei wird während der
Systeminitialisierung ausgeführt und sollte unter
/usr/local/etc/racoon/setkey.conf
abgespeichert werden.
Einmal abgespeichert, kann racoon durch das folgende Kommando auf beiden Gateways gestartet werden:
#
/usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log
Die Ausgabe sollte so ähnlich aussehen:
Um sicherzustellen, dass der Tunnel richtig funktioniert,
wechseln Sie auf eine andere Konsole und benutzen Sie
tcpdump(1) mit dem folgenden Befehl, um sich den
Netzwerkverkehr anzusehen. Tauschen Sie em0
durch die richtige Netzwerkkarte aus.
#
tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12
Die Ausgabe der Konsole sollte dem hier ähneln. Wenn nicht, gibt es ein Problem und ein Debuggen der ausgegebenen Daten ist notwendig.
An diesem Punkt sollten beide Netzwerke verfügbar sein und den Anschein haben, dass sie zum selben Netzwerk gehören. Meistens sind beide Netzwerke durch eine Firewall geschützt. Um den Netzwerkverkehr zwischen den beiden Netzwerken zu erlauben, ist es notwendig Regeln zu erstellen. Für die ipfw(8) Firewall fügen Sie folgende Zeilen in ihre Firewall-Konfigurationsdatei ein:
Die Regelnummern müssen eventuell, je nach ihrer Hostkonfiguration, angepasst werden.
Für Benutzer der pf(4)- oder ipf(8)-Firewall sollte folgendes funktionieren:
Zum Ende, um dem Computer den Start vom
VPN während der Systeminitialisierung
zu erlauben, fügen Sie folgende Zeilen in ihre
/etc/rc.conf
: ein
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.