IPSec ist eine Erweiterung für IPv4 (in IPv6 fest implementiert), um Authentifizierung und sichere (verschlüsselte) Übertragung auf Netzwerkprotokoll-Ebene zu realisieren. IPSec stellt aber nur ein Framework für eine verschlüsselte Verbindung bereit, es bietet eine solche nicht an.

IPSec ist auf der IP-Ebene (Network Layer) implementiert. Somit wirkt es auch auf der Transport-Ebene: TCP, UDP.

Insbesondere wird dies für VPNs und für LinuxWireless benötigt.

IPSec ist im Kernel 2.6.x implementiert. Man muss es also nicht patchen.


IPSec mit FreeSwan

Es folgt eine kleine Anleitung wie man einen externen Rechner mit fester IP bzw ein Subnet hinter einem solchen an sein Heimnetz mit dynamischer IP per IPSec koppelt. So habe ich es gemacht... bitte nach belieben kommentieren, korrigieren usw:)

Kernel patchen und FreeSwan Tools installieren

IPSec-Unterstützung gibt es im Linux kernel durch "Freeswan".. das muss allerdings erst hineingepatched werden. also: Konfigurierte Kernelquellen bereithalten

Tips für Debian-Benutzer

apt-get install kernel-patch-freeswan freeswan) installiert die Programme zur Konfiguration von FreeSWAN und einen von Debian um X509-Unterstützung erweiterten FreeSWAN Patch. Unter Debian baut man daraus wie folgt ein Kernel-Packet, das nachher mit dpkg -i  installiert werden kann:

Tips für SuSE-Benutzer

Der SuSE-Standard-Kernel enthält schon Unterstützung für FreeSWAN. Es muß lediglich das entsprechende Modul geladen werden. Dies geschieht per: modprobe ipsec (root-Reche erforderlich). Zusätzlich muß natürlich auch das Paket installiert werden, das die Programme zur Konfiguration von FreeSWAN enthält.

Forwarding muss auf beiden Gateway-Rechnern aktiviert sein. Masquerading muss für das jeweilige Zielnetz deaktiviert sein (s.u.)

FreeSwan konfigurieren

Ich beschreibe die Konfiguration am Beispiel eines Netzes hinter einem Rechner mit statischer IP (hier: 217.170.168.136 (aus der Luft gegriffene IP), das per IPSec an das Heimnetz hinter einem Rechner mit dynamischer IP gekoppelt werden soll.

Das Netz hinter dem Rechner mit der statischen IP ist 10.0.2.0/24, das Heimnetz ist 10.0.0.0/24.

Erstmal brauchen beide Rechner ein Schlüsselpaar. Dieses wird in /etc/ipsec.secrets gespeichert. Wir führen auf beiden Rechnern aus:

ipsec newhostkey --output /etc/ipsec.secrets

Dann brauchen beide ein "Shared Secret" mit dem die Daten verschlüsselt werden, dazu fügen wir oben in die ipsec.secrets auf beiden Rechnern ein:

217.170.168.136 0.0.0.0: PSK "Shared secret Deiner Wahl in Anfuehrungszeichen"

statt "0.0.0.0" kann man auch "%any" schreiben.

Danach erstellen wir die ipsec.conf für beide Rechner:

Für den Rechner mit der dynamischen IP: (hier: left)

# /etc/ipsec.conf - FreeS/WAN IPsec configuration file

# basic configuration
config setup
        interfaces=%defaultroute
        klipsdebug=none
        plutodebug=none
        plutoload=%search
        plutostart=%search
        uniqueids=yes

# defaults for subsequent connection descriptions
# (mostly to fix internal defaults which, in retrospect, were badly chosen)
conn %default
        keyingtries=0
        disablearrivalcheck=no
        authby=rsasig
        compress=yes
        auto=add


# sample VPN connection
conn isis-osiris
        # Left security gateway, subnet behind it
        left=%defaultroute
        leftsubnet=10.0.0.0/24
        leftid=@isis.osiris.net
        leftrsasigkey=# hier den public key aus der ipsec.secrets von left einfuegen #
        # Right security gateway, subnet behind it, next hop toward left.
        right=217.170.168.136
        rightsubnet=10.0.2.0/24
        rightnexthop=217.170.168.1
        rightid=@osiris.net
        rightrsasigkey=# hier den public key aus der ipsec.secrets von right einfuegen #
        auto=start

diese ipsec.conf kopieren wir auf den Rechner mit der statischen IP und ändern folgendes:

in conn isis-osiris:

left=%any
auto=add
keyingtries=1

... fertig.

IPSec auf beiden Rechnern (neu)starten:

/etc/init.d/ipsec restart

Status bewundern.

ipsec whack --status

Die Maschine mit der dynamischen IP sollte die IPSec Verbindung automatisch initiieren (wegen auto=start).

Firewall/Routing Einstellungen

Damit man jetzt zwischen den beiden Netzen 10.0.0.0 und 10.0.2.0 kommunizieren kann, müssen natürlich noch entsprechende Routen gelegt werden:

auf Heimnetz-router:

route add -net 10.0.2.0 netmask 255.255.255.0 dev ipsec0

auf dem anderen Router:

route add -net 10.0.0.0 netmask 255.255.255.0 dev ipsec0

Ausserdem sollten Verbindungen zwischen diesen beiden Netzen nicht masqueraded werden.

Damit die beiden Gateways eine IPSec Verbindung aufbauen können, muss auf beiden Seiten UDP port 500 offen sein, sowie das IP Protokoll ESP (50) erlaubt sein.

Test

Es ist zu beachten, dass die beiden Gateways selbst nicht über den IPSec tunnel kommunizieren können. Das geht zwar, aber dazu ist wohl ein zusätzlicher Tunnel nötig (dazu lesen wir in der offiziellen FreeSwan Doku nach;). Wenn die Verbindung steht, sollte man einfach aus dem Heimnetz eine IP in dem Netz hinter dem anderen Router pingen können.

IPSec (zuletzt geändert am 2007-12-23 22:48:50 durch localhost)