Home Linux IPsec mit OpenSWAN
05 | 09 | 2010
Schlagzeilen
IPsec mit OpenSWAN PDF Drucken E-Mail
Geschrieben von: Michael Grundmann   
Donnerstag, 30. Oktober 2008 19:50
IPsec ist eine Standardisierung von Protokollen für VPN. Dieser Standard wird plattformübergreifend unterstützt. Ein Linux Implementierung ist OpenSWAN.

Es folgt nun eine Anleitung zum Einrichten einer VPN mit zwei Debian Etch Rechnern (aktueller 2.6er Kernel). Es sollen die lokalen Netze, die sich hinter den beiden Rechner befinden verbunden werden. So sieht der Netzplan der Ausgangssituation aus:

-------- --------
172.16.0.0/16--(eth0)|gateway1|(eth1)--X--(eth1)|gateway2|(eth0)--192.168.2.0/24
-------- --------
Zunächst soll dafür gesorgt werden, dass die Protokolle ISAKMP (UDP Port 500) und ESP (Protokollnummer 50) ein- und ausgehend erlaubt werden. Natürlich soll auch die Kommunikation zwischen den lokalen Netzen freigeschaltet werden. Konkret sie das auf gateway1 so aus:

$ iptables -A INPUT -j ACCEPT -i eth1 -p udp -s gateway2 --sport 500 --dport 500
$ iptables -A OUTPUT -j ACCEPT -o eth1 -p udp -d gateway2 --sport 500 --dport 500
$ iptables -A INPUT -j ACCEPT -i eth1 -p udp -s gateway2 --sport 500 --dport 500
$ iptables -A OUTPUT -j ACCEPT -o eth1 -p udp -d gateway2 --sport 500 --dport 500
$ iptables -A FORWARD -j ACCEPT -i eth0 -o eth1 -s 172.16.0.0/16 -d 192.168.2.0/24
$ iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -s 192.168.2.0/24 -d 172.16.0.0/16
Und auf gateway2 so:

$ iptables -A INPUT -j ACCEPT -i eth1 -p udp -s gateway1 --sport 500 --dport 500
$ iptables -A OUTPUT -j ACCEPT -o eth1 -p udp -d gateway1 --sport 500 --dport 500
$ iptables -A INPUT -j ACCEPT -i eth1 -p udp -s gateway1 --sport 500 --dport 500
$ iptables -A OUTPUT -j ACCEPT -o eth1 -p udp -d gateway1 --sport 500 --dport 500
$ iptables -A FORWARD -j ACCEPT -i eth0 -o eth1 -s 192.168.2.0/24 -d 172.16.0.0/16
$ iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -s 172.16.0.0/16 -d 192.168.2.0/24
ISAKMP wird benutzt um einen Schlüssel zum Chiffrieren auszuhandeln. Über ESP werden die Daten chiffriert und transportiert.
Jetzt auf beiden Rechner das Routing einschaltet:

$ echo 1 > /proc/sys/net/ipv4/ip_forward
Dann muss OpenSWAN installiert werden:

$ apt-get install openswan
Diesen Abschnitt in die Datei /etc/ipsec.conf der beiden Rechner eintragen:

conn testvpn
left=gateway1
leftsubnet=172.16.0.0/16
right=gateway2
rightsubnet=192.168.2.0/24
Der Abschnitt beinhaltet die wichtigsten Parameter zur Definition der VPN. Weiter Optionen finden sich auf der Webseite http://www.openswan.org oder in der Manpage ipsec.conf(5).
Danach wird das Preshared Secret in die Datei /etc/ipsec.secrets beider Rechner eintragen:

gateway1 gateway2: PSK "9sOaDFgC309W90vASjDVP0qu9FAfgdDLJbG0fVDwIck="
Das Preshared Secret wird dabei nicht direkt zum Chiffrieren der übertragenen Daten benutzt. Es dient vielmehr dazu einen sicheren Kommunikationskanal aufzubauen. Über diesen Kanal wird dann ein Schlüssel ausgehandelt mit welchem die übertragenen Daten verschlüsselt werden (aus Leistungsgründen wird symmetrisch Verschlüsselt). Eine Alternative zum Preshared Secret stellt das Zertifikat dar. Das Preshared Secret wurde in diesem Beispiel auf diese Weise erzeugt:

$ openssl rand base64 32
Zum Schluss noch OpenSWAN auf beiden Rechnern neustarten und die VPN ist bereit:

$ ipsec setup --restart
Nun folgen noch ein Paar hilfreiche Kommandos zur Administration. Loggen der Struktur von eingehenden Nachrichten:

$ ipsec whack --debug-parsing
Loggen der Struktur von ausgehenden Nachrichten:

$ ipsec whack --debug-emitting
Loggen aller verfügbaren Informationen:

$ ipsec whack --debug-all
Alle Logmeldungen abstellen:

$ ipsec whack --debug-none
Neueinlesen von ipsec.secrets

$ ipsec auto --rereadsecrets
Kontrollieren der benutzten Zertifikate

$ ipsec auto --listcerts
Aktualisiert ( Donnerstag, 30. Oktober 2008 19:51 )