6.12. Konfiguration von IPsec Netzwerk-zu-Netzwerk

Sie können IPsec auch so konfigurieren, dass ein ganzes Netzwerk (z.B. LAN oder WAN) mit einem Remote-Netzwerk verbunden wird, und zwar mittels einer Netzwerk-zu-Netzwerk-Verbindung. Dafür müssen auf jeder Seite der zu verbindenden Netzwerke IPsec-Routers erstellt werden, damit Information verarbeitet werden und von einem Netzwerkknoten des Netzwerkes zu einem Knoten auf dem Remote- Netzwerk geroutet werden kann. Abbildung 6-2 zeigt eine Netzwerk- zu Netzwerk-Verbindung mittels IPsec-Tunnel.

Abbildung 6-2. Eine Netzwerk-zu-Netzwerk-Verbindung mittels IPsec-Tunnel

Das Diagramm zeigt zwei separate LANs, die durch das Internet getrennt sind. Diese Netzwerke verwenden IPsec Routers, um eine Verbindung in einem sicheren Tunnel im Internet zu authentifizieren und zu initialisieren. Pakete, die im Transit gefasst werden, müssten brutal entschlüsselt werden, damit der Cipher gecrackt werden kann, der die Pakete zwischen diesen LANs beschützt. Der Prozess der Kommunikation von einem Netzknoten in der 192.168.1.0/24 IP-Reihe zu einem anderen auf 192.169.2.0/24 ist für die Knoten vollständig transparent, da die Verarbeiteng, die Ver- und Entschlüsselung und das Routing der IPsec-Pakete komplett vom IPsec-Router gehandhabt wird.

Die Information, die für eine Netzwerk-zu-Netzwerk-Verbindung gebraucht wird, umfasst:

Nehmen Sie z.B. an, LAN A (lana.example.com) und LAN B (lanb.example.com) wollen sich miteinender durch einen IPsec-Tunnel verbinden. Die Netzwerk-Adresse für LAN A liegt in der 192.168.1.0/24-Reihe, während LAN B die 192.168.2.254-Reihe verwendet. Die Gateway-IP Adresse ist 192.168.1.254 for LAN A und 192.168.2.254 für LAN B. Die IPsec Router sind von jedem LAN-Gateway getrennt und verwenden zwei Netzwerk-Geräte: eth0 wird eine extern zugängliche statische IP-Adresse für das Internet zugeteilt, eth1 fungiert als Routing-Punkt für das Bearbeiten und Übertragen von LAN-Paketen von einem Netzwerkknoten zu den Remote-Netzwerkknoten.

Die IPsec-Verbindung zwischen den Netzwerken verwendet einen vorher gemeinsam benützten Schlüssel mit dem Wert r3dh4tl1nux. Die Administratoren von A und B stimmen überein, racoon automatisch einen Authentifikations-Schlüssel zwischen den beiden IPsec-Routern erstellen zu lassen und diesen gemeinsam zu verwenden. Der Administrator von LAN A entscheidet sich dafür, die IPsec-Verbindung ipsec0 zu nennen, während der Administrator von LAN B die IPsec-Verbindung ipsec1 nennt.

Im folgenden sehen Sie die ifcfg Datei für eine Netzwerk-zu-Netzwerk-Verbindung mit IPsec für LAN A. Der einmalige Name zur Identifizierung der Verbindung ist in diesem Beispiel ipsec1, die daraus resultierende Datei heißt daher /etc/sysconfig/network-scripts/ifcfg-ipsec1.

TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

Die Verbindung ist so eingestellt, dass sie beim Hochfahren (ONBOOT=yes) startet. Sie verwendet die Authentifikations-Methode der vorher gemeinsam verwendeten Schlüsseln (IKE_METHOD=PSK). Der Administrator für LAN A gibt sowohl den Ziel-Gateway ein, der der Gateway für LAN B ist(DSTGW=192.168.2.254), als auch den Quell- Gateway, der die Gateway-IP-Adresse von LAN A ist(SRCGW=192.168.1.254). Der Administrator gibt dann sowohl das Ziel-Netzwerk ein, dass die Netzwerk-Reihe für LAN B ist(DSTNET=192.168.2.0/24) als auch das Quell- Netzwerk (SRCNET=192.168.1.0/24). Abschließend gibt der Administrator die Ziel-IP-Adresse ein, die die extern zugängliche IP-Adresse für LAN B ist (X.X.X.X).

Im folgenden finden Sie die Datei mit den vorher gemeinsam benützten Schlüsseln (/etc/sysconfig/network-scripts/keys-ipsecX genannt, wobei X die 0 für LAN A und die 1 für LAN B ist), die beide Netzwerke verwenden, um sich gegenseitig zu authentifizieren. Der Inhalt dieser Datei sollte identisch sein und nur der Root-Benutzer sollte die Datei lesen oder überschreiben können.

IKE_PSK=r3dh4tl1nux

WichtigWichtig
 

Um die keys-ipsec0 Datei zu verändern, damit sie nurvom Root-Benutzer gelesen oder bearbeitet werden kann, führen Sie nach der Erstellung der Datei den folgenden Befehl aus:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Um den Authentifizierungs-Schlüssel jederzeit zu verändern, bearbeiten Siedie keys-ipsecX Datei bei beiden IPsec Routern. Für eine ordentliche Verbindung müssen beide Schlüssel gleich sein.

Das ist die /etc/racoon/racoon.conf Konfigurationsdatei für die IPsec-Verbindung. Beachten Sie, dass die include-Zeile am unteren Ende der Datei nur erscheint, wenn gerade eine Verbindung mit einem IPsec-Tunnel vorhanden ist.Die Zeile wird jedes Mal automatisch erzeugt, wenn die IPsec-Verbindung aktiviert wird.

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

Im folgenden sehen Sie die Konfigurationsdatei für die Verbindung zum Remote-Netzwerk. Die Datei trägt den Namen X.X.X.X.conf (ersetzen Sie X.X.X.X mit der IP Adresse des Remote-IPsec-Routers). Bachten Sie, dass diese Datei automatisch erzeugt wird, wenn der IPsec-Tunnel aktiviert wird. Sie sollte nicht direkt bearbeitet werden.

;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

Bevor die IPsec-Verbindung gestartet wird, sollte IP-Forwarding beim Kernel eingestellt werden. Aktivieren Sie IP-Forwarding als Root bei einem Shell Prompt:

  1. Bearbeiten Sie /etc/sysctl.conf und stellen Sie net.ipv4.ip_forward to 1 ein.

  2. Führen Sie den folgenden Befehl aus, damit die Änderung wirksam wird:

    sysctl -p /etc/sysctl.conf

Starten Sie die IPsec-Verbindung, indem Sie entweder die IPsec-Router neu starten oder den folgenden Befehl als Root bei jedem Router eingeben:

/sbin/ifup ipsec0

Die Verbindungen sind nun aktiviert und LAN A und LAN B sind in der Lage, miteinander zu kommunizieren. Die Routen werden automatisch durch das Aufrufen des Initialisierungs-Skriptes mit ifup bei der IPsec-Verbindung erzeugt. Um eine Liste der Routen für das Netzwerk anzuzeigen, führen Sie folgenden befehl aus:

/sbin/ip route list

Um die IPsec-Verbindung zu testen, führen Sie die tcpdump Utility auf dem extern routbaren Gerät aus (eth0 in diesem Beispiel). So könne Sie die Netzwerk-Pakete sehen, die zwischen den Hosts (oder Netzwerken) übertragen werden, und überprüfen, dass sie über IPsec verschlüsselt werden. Um die IPsec-Verbindungsqualität z.B. für LAN A zu prüfen, geben sie folgendes ein:

tcpdump -n -i eth0 host lana.example.com

Das Paket sollte eine AH-Kopfzeile enthalten und sollte als ESP-Paket angezeigt werden. ESP heißt, dass es verschlüsselt ist. Zum Beispiel (ein inverser Schrägstrich kennzeichnet die Fortsetzung einer Zeile):

12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	  lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	  (ipip-proto-4)