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 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 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] |





