Intranator VPN mit SuSE 9.3

Einleitung

Dieser Text beschreibt, wie man zwischen einem Intranator und einem Linux-Rechner mit SuSE Linux 9.3 (und vermutlich auch Nachfolger) ein VPN aufbauen kann.

Voraussetzungen

  • Intranator Software oder Intranator Appliance als Gegenstelle
  • SuSE-Linux 9.3 (SuSE93)
  • openswan-2.2.0-12 & Abhängigkeiten (wird auf SuSE 9.3 mitgeliefert)
  • openssl-0.9.7e-3.2 & Abhängigkeiten (ebenfalls bei SuSE dabei), falls man noch keinen private X.509-Key bzw. ein entsprechendes Zertifikat hat

1. Schlüsselerzeugung

Wer bereits ein X509-Schlüsselpaar besitzt, kann diesen Abschnitt auch überspringen. Zur Schlüsselerzeugung mittels openssl können Sie auf der openssl-Homepage die entsprechenden HowTos lesen:

1.1. Schlüsselerzeugung

Um einen (RSA) Schlüssel zu erzeugen, gibt man folgendes Kommando ein:
 
openssl genrsa -out privkey.pem 2048
 
Das erzeugt einen 2048 Bit langen RSA Key, den man zum Signieren und zum Verschlüsseln verwenden kann und der nicht durch ein Passwort geschützt ist. Da wir den Schlüssel in einer Serverumgebung einsetzen, ist dies erforderlich, weil bei jedem Zugriff auf den Key ansonsten das Paßwort eingegeben werden müsste.

1.2 Zertifikaterzeugung

Nachdem wir nun den privaten Schlüssel erzeugt haben, können wir ein selbstsigniertes Zertifikat erstellen mittels:
 
openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095

 
Dies erstellt ein selbstsigniertes x509 Zertifikat, das 1095 Tage gültig ist.

1.3 Kopieren des RSA-Keys und des zugehörigen Zertifikats

Nachdem nun Schlüssel und Zertifikat erstellt wurden, müssen diese an die richtige Position für unsere spätere Konfiguration kopiert werden, und zwar nach
 
/etc/ipsec.d/keys/private/
 
Falls dieses Verzeichnis noch nicht existiert, legen Sie es einfach an.

1.4 Anzeigen des Inhaltes des Zertifikates

openssl x509 -text -noout -in SCHLUESSELNAME

2. Schlüsselaustausch zwischen Intranator und Linux-Rechner

Nachdem man nun die notwendigen lokalen Schlüssel erzeugt hat, kann man die öffentlichen Schlüssel austauschen. Hierzu wählt man auf dem Intranator unter dem Menüpunkt System -> Schlüssel -> Eigene Schlüssel den gewünschten privaten Intranator-Schlüssel aus, klickt auf den Reiter Daten und wählt dann Zertifikat exportieren aus. Diesen Schlüssel speichert man unter /etc/ipsec.d/certs/intranator.pem ab.

Nun muss man dem Intranator den eigenen öffentlichen Schlüssel übermitteln. Hierfür wählt man auf dem Intranator unter System -> Schlüssel -> Fremde Schlüssel den Button Neu, trägt einen noch nicht belegten Namen in das Feld Name ein und fügt das zuvor erstellte Zertifikat via Copy & Paste ein (es ist zu beachten, dass am Ende keine Leerzeile im Textfeld erscheinen darf!).

3. VPN-Konfiguration auf Seite des Intranators

Nun muss man auf der Seite des Intranators das VPN konfigurieren. Hierzu wählt man unter Dienste -> VPN -> Verbindungen den Button Neu, um ein neues VPN-Profil zu erzeugen.

In Namen des Profils trägt man einen noch nicht benutzten Namen ein (im vorliegenden Fall paranoid), wählt den gewünschten Typ des VPN aus (hier im Beispiel Lokales Netz <-> Host (Tunnel-Mode); hierfür ist auch später die ipsec.conf ausgelegt, d.h. bei anderen Typen muss man ggf. mehr in der ipsec.conf anpassen) und wählt dann Einstellungen speichern.

Nun wird die Seite Schritt 1 von 4: Verbindungseigenschaften festlegen geladen. Hier trägt man unter Gegenstelle entweder eine feste IP-Adresse oder einen DNS-Hostnamen (es funktionieren auch DynDNS-Namen) ein. Wer keine feste IP-Adresse besitzt und keinen DynDNS-Namen registriert hat, muss hier Dynamische IP wählen. Die restlichen Einstellungen sollten eigentlich bereits mit sinnvollen Defaults vorbelegt sein. Mit Einstellungen speichern kommt man nun auf die Seite Schritt 2 von 4: Authentifizierungsmethode festlegen.

Hier muss man nun die richtigen Zertifikate auswählen. Unter Eigener Schlüssel muss genau der Schlüssel ausgewählt werden, den man vom Intranator zuvor exportiert hat. Unter Schlüssel Gegenstelle muss man den Schlüssel auswählen, den man zuvor auf den Intranator hochgeladen hat. Einstellungen speichern bringt diesmal die Seite Schritt 3 von 4: Aktivierungsart festlegen.

Hier kann man normalerweise einfach direkt auf „Einstellungen speichern“ klicken, in den wenigsten Fällen muss man hier etwas anderes eintragen. Nun wird die Seite Schritt 4 von 4: Lebensdauer festlegen geladen. Auch hier muss man üblicherweise keine Änderungen vornehmen und kann direkt auf Einstellungen speichern klicken.

4. ipsec.conf auf dem Linux-Rechner

Die ipsec.conf liegt defaultmäßig unter /etc/ipsec.conf. Wem es besser gefällt, der kann diese auch nach /etc/ipsec.d/ verschieben und dann einen Link nach /etc legen, das ist allerdings Geschmackssache.
 
Die /etc/ipsec.conf Datei sieht in unserem Beispiel wie folgt aus:
 
# OpenS/WAN IPsec configuration file
# basic configuration
### Converted to version 2.0 ipsec.conf by freeswan %post
version 2.0
config setup
   interfaces=%defaultroute
   klipsdebug=none
   plutodebug=all
   ### Commented out by freeswan %post
   #plutoload=%search
   #plutostart=%search
   uniqueids=yes
conn intranatorhost
   auto=add
   disablearrivalcheck=no
   type=tunnel
   auth=esp
   authby=rsasig
   pfs=yes
   keylife=60m
   ikelifetime=480m
   rekey=yes
   keyingtries=1

Soviel zu den allgemeinen Einstellungen der Verbidung. Nun widmen wir uns den verbindungsspezifischen Einstellungen, wobei left der Linux-Rechner ist und right der Intranator).
 
   #
   # right: our side (== SuSE)
   right=%defaultroute
   rightid="/CN=extranator.artif"
   rightrsasigkey=%cert
   rightcert=/etc/ipsec.d/keys/private/cert.pem


Der Parameter right= gibt an, über welches Interface die IPSec-Verbindung laufen soll.
%defaultroute nimmt das Interface, über das die Defaultroute geleitet wird.
Der Parameter rightid= gibt die ID des zu verwendenden Zertifikats an, rightcert=/etc/ipsec.d/keys/private/cert.pem gibt an, wo das Zertifikat hinterlegt ist. Nun folgt die Konfiguration für die Gegenstelle (Intranator).
 
   #
   # left: peer side (== Intranator)
   left=%any
   leftid="/C=DE/ST=BW/L=Tuebingen/O=artif orange GmbH u. Co. KG/OU=IT/CN=webmail.artif-orange.de/Email=admin@artif-orange.de"
   leftrsasigkey=%cert
   leftcert=/etc/ipsec.d/keys/public/1.pem
   leftsubnet=192.168.1.0/24

 
left=%any bedeutet, dass wir Verbindungen von jedem verfügbaren Interface entgegennehmen.
leftid=
ist die ID des Zertifikats der Gegenstelle.
leftcert=/etc/ipsec.d/keys/public/1.pem ist der Zugriffspfad auf das Zertifikat der Gegenstelle.
leftsubnet=192.168.1.0/24 ist das Subnet auf der Gegenseite.
 
Nun noch ein paar Konfigurationszeilen, um Opportunistic Encryption auszuschalten:
 
### Added by freeswan %post
# Switch off Opportunistic Encryption policies -- BEGIN
conn block
        auto=ignore
conn private
        auto=ignore
conn private-or-clear
        auto=ignore
conn clear-or-private
        auto=ignore
conn clear
        auto=ignore
conn packetdefault
        auto=ignore
#conn OEself
#       auto=ignore
# Switch off Opportunistic Encryption – END


5. ipsec.secrets auf dem Linuxrechner

Nun muss man ipsec noch mitteilen, an welcher Stelle der private Schlüssel zu finden ist. Dazu trägt man in die Datei /etc/ipsec.secrets folgende Zeile ein:
 
: RSA /etc/ipsec.d/private/privkey.pem

 
Bei Problemen mit dem Verbindungsaufbau kann es sein, dass man den restlichen Inhalt der Datei (also alle Zeilen, die nicht mit : RSA <Pfad> beginnen) löschen muss.
 

6. Verbindung aufbauen

Jetzt kann man die VPN-Verbindung aufbauen mit
 
rcipsec stop
rcipsec start
ipsec auto --up intranatorhost

 
Das rcipsec stop machen wir dabei nur zur Sicherheit, falls ipsec bereits gestartet war.
 

7. Mögliche Probleme

7.1 Probleme beim Übertragen von Daten

Wenn die MTU des Interfaces, über das die ipsec-Verbindung läuft, zu groß ist, kann es vorkommen, dass Daten nicht übertragen werden können (z.B. wird das Verwenden von rsync damit dann unmöglich). Im Logfile kann man dies an folgenden Fehlermeldungen erkennen:

Mar  8 00:02:45 gateway kernel: pmtu discovery on SA ESP/2272e2ed/54a0c75f
Mar  8 00:02:45 gateway kernel: pmtu discovery on SA ESP/2272e2ed/54a0c75f
Mar  8 00:02:45 gateway kernel: pmtu discovery on SA ESP/2272e2ed/54a0c75f
Mar  8 00:02:46 gateway kernel: pmtu discovery on SA ESP/2272e2ed/54a0c75f


In diesem Fall muss man die MTU des entsprechenden Interfaces herabsetzen. Bei uns hat sich eine MTU von 1492 (anstatt 1500) als ausreichend erwiesen.