Aus Linux-Magazin 10/2003

Poptop, ein Daemon für das Point-to-Point-Tunneling-Protokoll PPTP

Mit dem Poptop-Daemon spricht Linux auch die umstrittene Microsoft-VPN-Sprache PPTP. Ist er mit einem zusätzlichen Kernelmodul und einem aktuellen »pppd« ausgerüstet, bindet Poptop im heterogenen Netz Microsoft- und Linux-Clients gleichzeitig an.

Unter der Federführung von Microsoft wurden bereits vor Jahren das Point-to Point Tunneling Protocol PPTP und die Microsoft Point-to-Point Encryption MPPE entwickelt. Diese sind seit Windows 95 in der Microsoft-Welt der Quasistandard für den Aufbau verschlüsselter Verbindungen – allerdings hat das Protokoll einige Sicherheitsprobleme (siehe Kasten “PPTP-Lücken”). Erst die neuesten Produkte unterstützen auch das IPsec-Protokoll, daher ist PPTP noch weit verbreitet.

Muss ein Admin mit wenig Aufwand einem Windows-Anwender einen gesicherten VPN-Zugang ermöglichen, bietet sich dieses Protokoll an, da der Microsoft-Client bereits alle Voraussetzungen mitbringt. Unter Umständen ist lediglich ein zusätzliches Patch oder Service Pack erforderlich, um dem Client starke Verschlüsselung zu ermöglichen.

Kernelpatch, Poptop und neuen PPTP installieren

Auf Linux-Seite sind drei Modifikationen erforderlich: Der Admin muss den PPTP-Daemon Poptop[1], ein Kernelpatch und einen aktuellen »pppd« installieren[2]. Diese Modifikationen sind nötig, da die MPPE-Verschlüsselung nicht vom PPTP-, sondern vom PPP-Daemon ausgeführt wird. Der PPTP-Daemon baut lediglich einen GRE-Tunnel auf (Generic Routing Encapsulation), über den der PPP-Daemon dann kommuniziert und verschlüsselte Pakete austauscht. Da der PPP-Daemon auch Kernelanteile enthält, muss der Kernel modifiziert werden.

Die aktuelle stabile Poptop-Version ist 1.1.3-20030409. Root übersetzt und installiert sie mit dem üblichen Dreisatz:

./configure
make
make install

Es gibt auch RPM- und Debian-Pakete, die eine einfache Installation inklusive passender Startskripte erlauben. Für die Modifikationen am Kernel und am PPP-Daemon stehen zwei Möglichkeiten zu Wahl: Die aktuelle Variante setzt ein BSD-MPPE-Modul ein und wird auch in Zukunft von den Entwicklern unterstützt. Die alte Lösung benutzt dagegen ein OpenSSL-MPPE-Modul, das sich in der Konfiguration unterscheidet. Wer ein Upgrade auf das neue Modul und den neuen »pppd« durchführen will, muss seine Konfigurationsdateien auf die aktuelle Syntax umstellen.

MPPE-Modul auswählen

Für das BSD-MPPE-Modul muss der Administrator lediglich ein zusätzliches Kernelmodul übersetzen und installieren sowie den installierten »pppd« durch eine aktuellere Version austauschen. Das »kernelmod«-Paket von der Poptop- Homepage übernimmt alle Schritte, um das Kernelmodul erfolgreich zu übersetzen. Dazu muss der Quelltext des aktuell verwendeten Linux-Kernels unter dem Verzeichnis »/usr/src/« installiert sein.

./kernelmod.sh

Dieser Befehl ermittelt die aktuelle Konfiguration, patcht den Kernelquelltext und baut das Modul. Anschließend entfernt das Skript das Patch und hinterlässt den Kernelquelltext in seinem Ausgangszustand.

Fünf neue Module

Die folgenden fünf Module werden von »kernelmod.sh« erzeugt:

  • arcfour.o
  • ppp_generic.o
  • ppp_mppe_compress.o
  • sha1.o
  • ppp_mppe.o

Läuft das Kommando unter Red Hat Linux, fragt es den Benutzer noch zusätzlich, ob er ein RPM erzeugen möchte. Mit diesem Paket kann er die erzeugten Module später bequem auf weiteren Systemen installieren.

Abschließend erhält noch die Datei »/etc /modules.conf« einige Verweise auf die neuen Module (Listing 1). Diese Angaben braucht niemand abzutippen: Das Kommando »./confmod.sh« aus dem Kernelmod-Paket ergänzt die Einträge automatisch. Nun kann der Admin den aktuellen »pppd« von der Linux-PPTP-Client-Homepage[2] installieren.

Der Client steht im Quelltext und als RPM-Paket in der Version »ppp-2.4.2 _cvs_20030610« zur Verfügung. Das Quelltextarchiv lässt sich mit »./configure && make && make install« installieren. Achtung: Das System muss anschließend auch den neuen PPP-Daemon und nicht einen bereits installierten benutzen.

Listing 1: PPTP-Module

01 alias char-major-108 ppp_generic
02 alias ppp-compress-18 ppp_mppe
03 alias ppp-compress-21 bsd_comp
04 alias ppp-compress-24 ppp_deflate
05 alias ppp-compress-26 ppp_deflate
06 alias tty-ldisc-3 ppp_async
07 alias tty-ldisc-14 ppp_synctty

Listing 2: Optionen des PPTP-Daemon

01 option /etc/ppp/options.pptpd
02 localip 192.168.0.1
03 remoteip 192.168.0.200-254

Listing 3: Optionen des PPP-Daemon

01 lock
02 debug
03 # Name des PPTP-Servers
04 name Einwahlserver
05 nobsdcomp
06 proxyarp
07 #refuse-pap
08 #refuse-chap
09 #refuse-mschap
10 #require-mschap-v2
11 #require-mppe
12 
13 ms-wins IP-Adresse-des-WINS-Servers
14 ms-dns  IP-Adresse-des-DNS-Servers

Listing 4: Chap-Secrets

01 # client     server         secret      IP addresses
02 Username   Einwahlserver   Passwort     *

Verbindungen annehmen

Damit der Poptop-Daemon PPTP-Verbindungen entgegennimmt, muss er entsprechend konfiguriert sein. Die Modifikationen an »/etc/modules.conf« hat bereits der Befehl »./confmod.sh« erledigt. Nun muss der Admin noch die Dateien »/etc/ppptd.conf«, »/etc/ppp/options .pptpd« und »/etc/ppp/chap-secrets« anlegen oder anpassen.

Die Datei »/etc/pptpd.conf« ist in Listing 2 abgedruckt. Mit diesen Angaben sorgt Poptop dafür, dass er bei neu angelegten Tunneln immer die IP-Adresse 192.168.0.1 erhält. Den PPTP-Clients weist er eine IP-Adresse aus dem Bereich 192.168.0.200-254 zu.

Abbildung 1 : Der Linux-PPTP-Client lässt sich mit Hilfe von »pptpconfig« übersichtlich und bequem grafisch konfigurieren. Das Tool ist in PHP mit GTK-Anbindung implementiert.

Abbildung 1 : Der Linux-PPTP-Client lässt sich mit Hilfe von »pptpconfig« übersichtlich und bequem grafisch konfigurieren. Das Tool ist in PHP mit GTK-Anbindung implementiert.

Abbildung 2 : Mit der grafischen Oberfläche ist es möglich, den Verschlüsselungsgrad des Clients einzustellen.

Abbildung 2 : Mit der grafischen Oberfläche ist es möglich, den Verschlüsselungsgrad des Clients einzustellen.

Verschlüsselung immer verlangen

In »/etc/ppp/options.pptpd« (Listing 3) verlangt die Option »require-mppe«, dass Client und Server die Verbindung verschlüsseln. Möchte der Administrator keine unverschlüsselten Verbindungen zulassen, sollte er diese Option aktivieren. Mit »ms-wins« und »ms-dns« informiert Poptop die Clients über existierende WINS- und DNS-Server.

Zu guter Letzt trägt der Admin die Benutzer, die den PPTP-Tunnel nutzen sollen, und ihre Kennwörter in die Datei »/etc/ppp/chap-secrets« ein. Diese Datei enthält pro Zeile einen User mit je vier Feldern (siehe Listing 4).

Beim ersten Start von Poptop mit dem »pptpd«-Kommando und während der Testphase ist es sinnvoll, die Option »-d« zu benutzen. Damit erzeugt der Daemon zusätzliche Debug-Meldungen. Möglicherweise ist noch eine Zeile in der Datei »/etc/syslog.conf« zu ergänzen, um die Syslog-Meldungen auch zu sehen:

daemon.debug    /var/log/pptpd.log

Soll das VPN eine Firewall überwinden, dann muss diese das PPTP-Protokoll (TCP-Port 1723) akzeptieren und zusätzlich auch das GRE-Protokoll erlauben (IP-Protokoll 47).

Abbildung 3: Windows enthält bereits einen PPTP-Client. Mit einer einfachen DFÜ-Netzwerk-Verbindung meldet sich der Client beim Linux-PPTP-Einwahlserver an.

Abbildung 3: Windows enthält bereits einen PPTP-Client. Mit einer einfachen DFÜ-Netzwerk-Verbindung meldet sich der Client beim Linux-PPTP-Einwahlserver an.

Abbildung 4: In den PPTP-Sicherheitseigenschaften von Windows 2000 kann der Benutzer festlegen, dass der Client nur mit Verschlüsselung arbeiten darf.

Abbildung 4: In den PPTP-Sicherheitseigenschaften von Windows 2000 kann der Benutzer festlegen, dass der Client nur mit Verschlüsselung arbeiten darf.

Windows-Clients sind stets vorhanden

Windows-Systeme enthalten seit Windows 95 einen PPTP-Client. Dennoch kann es nötig sein, ein Update[4] oder ein Service-Paket (bei Windows 2000 mindestens Service Pack 2) zu installieren, um die 128-Bit-Verschlüsselung zu unterstützen. Danach lässt sich der PPTP-Client ohne weitere Probleme per grafischer Oberfläche konfigurieren.

Dazu ruft der User im DFÜ-Netzwerk den entsprechenden Wizard auf, fügt mit ihm die neue Netzwerkverbindung hinzu und wählt die Tunnel-Option. Dann gibt er noch die IP-Adresse des Einwahlservers ein und weist der Verbindung einen Namen zu. Nun lässt sich die VPN-Verbindung durch einen Doppelklick auf das neue Icon starten (Abbildung 3). Nach einem Klick auf die Schaltfläche »Eigenschaften« kann der User in der »Sicherheit«-Registerkarte (Abbildung 4) die Sicherheitseinstellungen konfigurieren.

Systematische Fehlerdiagnose

Obwohl alles richtig konfiguriert zu sein scheint, kommt es anfangs häufig zu Problemen. Die Linux-Projekte (PPTP-Server und -Client) betreiben aber eine Mailingliste, deren Mitglieder beim Überwinden der Hürden Hilfestellung geben. Aber vor dem allzu raschen Zugriff auf die Mailingliste sollte der PPTP-Admin die recht ausführliche Dokumentation auf der Poptop- und der PPTP-Client-Homepage zu Rate ziehen. Auf Letzterer liegt außerdem das Diagnose-Howto von James Cameron[3], das sehr genau die verbreiteten Probleme beim Verbindungsaufbau beschreibt und bei der Lösung hilft.

Veraltet und doch aktuell

Microsoft hat selbst erkannt, dass das PPTP-Protokoll keine große Zukunft mehr hat und Windows 2000, XP und 2003 mit dem IPsec-Protokoll ausgestattet. Für die älteren Betriebssysteme stellt Microsoft kostenlos einen L2TP/IPsec-Client[7] zur Verfügung.

Vor einem Einsatz von PPTP sollte der Administrator die Nutzen und Risiken dieses umstrittenen Protokolls sorgfältig abwägen – für Neuinstallationen ist es meist nicht empfehlenswert. (fjl)

Linux-PPTP-Client

Wer auch auf Client-Seite Linux einsetzen möchte, muss – wie beim Server – das Kernelmodul und den aktuellen »pppd« installieren. Statt des Poptop-Daemon ist hier jedoch der PPTP-Client erforderlich. Er ist als Quelltextarchiv und RPM-Paket auf der PPTP-Client- Homepage[2] verfügbar.

Die Installation aus den Quellen ist sehr einfach. Zunächst muss der Admin in der Datei »Makefile« die Variable »PPPD« an den aktuellen Pfad des PPP-Daemon anpassen. Anschließend gibt er »make && make install« ein, um den PPTP-Client zu übersetzen und zu installieren.

Die Entwickler des PPTP-Clients haben auch eine grafische Oberfläche in PHP-GTK entwickelt, mit der der Anwender den PPTP-Client konfigurieren kann. Dieses GUI befindet sich in dem Paket »pptp-php-gtk-20030505«, es liegt als Quelltextarchiv und als RPM vor. Nach dem Übersetzen startet der Befehl »pptpconfig« die grafische Oberfläche, die in Abbildung 1 zu sehen ist.

Bei der Eingabe der Verbindungen kann der Benutzer das Routing, DNS und die Verschlüsselung (siehe Abbildung 2) konfigurieren. Hier wählt er zum Beispiel zwischen der 40-Bit- und der 128-Bit-Variante.

Infos

[1] Poptop, der PPTP-Daemon: [http://www.poptop.org]

[2] PPTP-Client: [http://pptpclient.sf.net]

[3] PPTP-Fehlerdiagnose: [http://pptpclient.sourceforge.net/howto-diagnosis.phtml]

[4] Windows-95-Update: [http://www.microsoft.com/windows95/downloads/contents/WURecommended/S_WUNetworking/dun13win95/Default.asp]

[5] PPTPv2-Analyse: [http://www.counterpane.com/pptpv2-paper.html]

[6] Angriff auf PPTPv2: [mopo.informatik.uni-freiburg.de/pptp_mschapv2/]

[7] L2TP/IPsec-Client für Windows: [http://www.microsoft.com/windows2000/server/evaluation/news/bulletins/l2tpclient.asp]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben