Next: Die Installation von Linux
Up: Datenreisen und reisende Daten
Previous: Der Newsreader tin
Angesichts der steigenden Verbreitung der Internetdienste und der breiteren Verfügbarkeit von Einwählknoten in das Internet stellen wir hier eine Möglichkeit vor, mit der Welt des Cyberspace in Kontakt zu treten. Dieser Abschnitt ist eine kurze Einführung in PPP und soll eine minimale Lösung zur Anbindung ans Internet anbieten.
Binden Sie Ihren Rechner mit PPP in das Internet ein, so wird er für die Dauer der Verbindung ein Teil dieses Netzes. Das bedeutet, daß ebenso, wie Sie andere Rechner mit den entsprechenden Tools erreichen können, auch Ihr Rechner für andere erreichbar ist. Deshalb darf auf keinen Fall eine Sicherheitsüberprüfung Ihres Systems versäumt werden. Das wichtigste ist, sicherzustellen, daß alle auf Ihrem System verfügbaren Accounts durch Paßwörter geschützt sind. Ein weiteres, oft übersehenes Sicherheitsloch ist das Vermischen von Programmen, die zur Verwendung mit dem Shadow-Password-System gedacht sind, mit solchen, die ohne diese Erweiterung funktionieren. Falls Sie also auf Ihrem Rechner Shadow-Password verwenden, stellen Sie sicher, daß in /etc/passwd in allen Paßwortfeldern ein * eingetragen ist.
Wenn in einem Netzwerk wie dem Internet Hunderttausende von Rechnern verbunden sind und klaglos zusammenarbeiten sollen, so erfordert das ein hohes Maß an Disziplin von allen Systemverwaltern. Durch Ihr Linux-System und seine Fähigkeit, sich in diese heterogene Netzwerkumgebung einzufügen, obliegt Ihnen nun die Aufgabe, Ihr System verantwortungsvoll zu warten und Mißbrauch des Internets von Ihrem System aus zu verhindern. Jeder Systemverwalter ist für sein System und die Benutzer seines Systems verantwortlich.
Zur Teilnahme am Internet gehören immer zwei. Finden Sie also Ihren Partner, der bereit ist, seine Internetverfügbarkeit an Sie weiterzugeben. Von ihm bekommen Sie:
IP-Adressen sind ein sehr empfindlicher Teil des Internets. Verwenden Sie nur IP-Adressen, die Ihnen auch wirklich zugeteilt wurden. Es darf im Internet keine zwei verschiedenen Rechner mit derselben IP-Adresse geben.
Unter Linux ist das PPP in zwei Teile aufgeteilt. Ein Teil befindet sich im Kernel und ist ein Low-Level HDLC-Treiber, der die Bereitstellung der Daten und deren Interpretation vornimmt. HDLC steht für ,,High-Level Data Link Control Protocol`` und definiert das Format, in das die Datenpakete gebracht werden müssen, um zur Gegenseite verschickt werden zu können. Mit HDLC können nicht nur IP-Pakete, sondern auch alle möglichen anderen Netzwerkpakete, wie z. B. Novell- oder LAN-Manager-Pakete, verschickt werden. Dieser Treiber muß nicht besonders konfiguriert werden, er muß nur in den Kernel eingebunden sein. Dies kann entweder beim Übersetzen des Kernels geschehen, oder er kann zur Laufzeit als Modul nachgeladen werden (Siehe insmod). Es läßt sich leicht überprüfen, ob der PPP-Treiber im Kernel enthalten ist. Das Kommando cat /proc/net/dev sollte ungefähr folgende Ausgabe liefern:
livius:~# cat /proc/net/dev
Inter-| Receive | Transmit
face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo: 0 0 0 0 0 0 0 0 0 0 0
ppp0: 0 0 0 0 0 0 0 0 0 0 0
ppp1: 0 0 0 0 0 0 0 0 0 0 0
ppp2: 0 0 0 0 0 0 0 0 0 0 0
ppp3: 0 0 0 0 0 0 0 0 0 0 0
livius:~# _
Werden die mit ppp beginnenden Zeilen nicht ausgegeben, so ist in dem Kernel kein PPP-Treiber vorhanden. Übersetzen Sie den Kernel neu, oder laden Sie das PPP-Modul in den Kernel.
Zwischen Ihrem ,,anderen Ende`` und Ihnen liegt noch etwas, das besonderer
Behandlung bedarf: die Telefonleitung und die Modems. Der Aufbau der
physikalischen Verbindung zwischen den beiden Rechnern wird nicht vom
pppd übernommen. Sie kann entweder mit einem Terminalprogramm, mit
kermit oder mit chat aufgebaut werden. Letzteres ist im
PPP-Paket enthalten und hervorragend geeignet, um das Modem zu steuern
und das Login beim anderen Rechner zu überwinden. Gleichzeitig vermeidet
es den Überhang an Funktionalität, der bei einem Terminalprogramm
vorhanden wäre. Ein weiter Vorteil liegt darin, daß es vollständig
automatisch einen Verbindungsaufbau bewerkstelligen kann und deshalb
auch direkt vom pppd aus gestartet werden kann. Die Parameter,
die chat erwartet, werden allen bekannt vorkommen, die schon einmal
ein UUCP-System konfiguriert haben.
chat erwartet nämlich nur
eine Folge von Zeichenketten, die den Ablauf des Verbindungsaufbaus
charakterisieren, und sendet darauf eine andere Zeichenkette als Antwort.
Um von zu Hause aus den Rechner im Büro anzurufen, verwende ich folgendes
Chatscript:
chat ABORT BUSY '' ATZ OK ATDP6235097 CONNECT '' ogin: ppp ord: mypass
Der Aufbau des Scriptes ist denkbar einfach. Die beiden Wörter ABORT BUSY
veranlassen chat dazu, den Verbindungsaufbau abzubrechen, wenn es
vom Modem die Antwort ,,BUSY`` bekommt. Diese Kombination kann mehrmals
in der Kommandozeile verwendet werden; so könnte man auch noch
ABORT 'NO CARRIER' und ABORT 'NO DIALTONE' in die Zeile
einfügen, um noch weitere Fehlermeldungen des Modems abzufangen. Wichtig
ist lediglich, daß Zeichenfolgen, die Leerzeichen enthalten und trotzdem
als eine Zeichenkette interpretiert werden sollen, in einfache
Anführungszeichen eingeschlossen werden müssen. Die leere Zeichenkette
'' veranlaßt chat, nicht auf eine Antwort zu warten, sondern sofort
die nächste Zeichenfolge der Zeile zu senden. Auf Dauer ist es umständlich,
die gesamte Kommandozeile immer von Hand einzutippen, außerdem enthält sie
ja auch das Paßwort für das andere System. Am einfachsten ist es deshalb,
eine Datei anzulegen, die nur das Chatscript für chat enthält, und
chat einfach mit chat -f Dateiname aufzurufen.
Um die an ihn gestellten Aufgaben erfüllen zu können, braucht der pppd eine Reihe von Informationen. Ein Teil dieser Informationen kann dem Daemon in der Kommandozeile übergeben werden, den anderen holt er sich aus seinen Konfigurationsdateien, die er im Verzeichnis /etc/ppp sucht. Die Dateien options, pap-secrets und chap-secrets sowie zwei Shellscripte namens ip-up und ip-down werden vom pppd dort gesucht. Die Datei options muß vorhanden sein, auch wenn sie leer ist.
Die options-Datei ist sozusagen eine verlängerte Kommandozeile. Alle Optionen, die dem pppd in der Kommandozeile übergeben werden können, dürfen auch in der options-Datei verwendet werden. Wird sowieso nur eine PPP-Verbindung zu einem einzigen Rechner aufgebaut, was in den meisten Fällen wohl zutrifft, so können alle Optionen in die options-Datei eingetragen werden. Der Aufbau der Datei ist denkbar einfach: eine Option pro Zeile, exakt so, wie sie auch in der Kommandozeile angegeben werden kann. Beispiel:
/dev/cua0 38400 name livius.lunetix.de remotename public.lunetix.de 193.98.158.8:193.98.158.12 connect chat -f /etc/ppp/chat-public lock modem crtscts defaultrouteDie erste Zeile legt die serielle Schnittstelle fest, über die die PPP-Verbindung laufen soll, die zweite die Geschwindigkeit. Mit der Option name wird der Name des eigenen Rechners angegeben, mit remotename der des Nachbarn. Die folgende Zeile enthält als erstes die eigene IP-Adresse und als zweiten Parameter, von dem ersten durch einen Doppelpunkt getrennt, die IP-Adresse des Nachbarn. In der sechsten Zeile wird dem pppd mitgeteilt, daß er den Verbindungsaufbau mit dem Programm chat bewerkstelligen soll. In der Datei /etc/ppp/chat-public befindet sich das Chatscript für chat. Um andere Programme von der seriellen Schnittstelle fernzuhalten, wird der pppd mit lock dazu gebracht, unter /var/spool/uucp ein Lockfile anzulegen. Die Optionen modem und crtscts tragen dafür Sorge, daß der pppd die DCD-Leitung des Modems überwacht, um eventuelle Verbindungsabbrüche erkennen zu können, und daß er Hardware-Handshake bei der Kommunikation mit dem Modem verwendet. Statt crtscts kann auch xonxoff oder -crtscts verwendet werden, um auf XON/XOFF Handshake zurückzugreifen. Die Option defaultroute veranlaßt den pppd, eine Standardroute für alle Netzwerkpakete zum anderen Rechner einzurichten. Diese Option ist immer dann sinnvoll, wenn der andere Rechner die einzige Verbindung zum Internet ist.
Der pppd erkennt noch eine Vielzahl anderer Optionen, die in der Manualpage pppd(8) beschrieben sind. Sie decken eine Fülle von Sonderfällen ab, sind aber in der Regel nicht notwendig. Die beschriebene Konfiguration sollte in 95% aller Fälle ausreichend sein, in denen ein einzelner Rechner an das Internet angeschlossen werden soll.
Zur Authentifizierung über das PAP-Protokoll ist die Datei
/etc/ppp/pap-secrets notwendig. Die Datei hat einen vierspaltigen
Aufbau. Die erste Spalte enthält den Namen des Clients, die zweite den
Namen des Servers und die dritte das ,,Geheimnis``, auch
,,secret`` genannt. Die vierte Spalte ist optional und kann eine Liste von
IP-Adressen enthalten, die das andere System verwenden darf. Wichtig ist
hier die Verwendung der Begriffe Client und Server. Client ist immer der
Rechner, von dem eine Authentifizierung verlangt wird, Server ist der,
der die Authentifizierung fordert. Wichtig ist weiterhin, daß für
jede PPP-Verbindung zwei Zeilen vorhanden sein müssen. Als
Namen für Client und Server verwendet der pppd die mit name und
remotename angegebenen Namen.
Eine pap-secrets-Datei für obiges Beispiel sähe so aus:
#/etc/ppp/pap-secrets #client #server #Geheimnis #Adresse livius.lunetix.de public.lunetix.de mein_passwort_bei_public public.lunetix.de livius.lunetix.de publics_passwort_bei_mir
Die Authentifizierung via CHAP funktioniert exakt genauso, die Datei kann einfach kopiert werden. Der große Unterschied zwischen PAP und CHAP besteht darin, daß bei PAP nur eine Authentifizierung am Beginn der Verbindung stattfindet und daß die Geheimnisse unverschlüsselt über die Telefonleitung übetragen werden. Bei CHAP kann auch in regelmäßigen Abständen während der Verbindung eine Authentifizierung verlangt werden. Ferner werden bei CHAP die Geheimnisse verschlüsselt über die Leitung geschickt. Damit wird verhindert, daß Zugangsberechtigungen über die Telefonleitung abgehört werden können.
Da in der beschriebenen Konfiguration schon alle Informationen, die der pppd benötigt, in die options-Datei eingetragen wurden, muß lediglich der pppd von der Kommandozeile aus gestartet werden.
Der pppd legt im Verzeichnis /var/run eine Datei namens device.pid an, in die er seine Prozeß-Id schreibt. Der Parameter device ist hierbei das PPP-Device, auf dem der Daemon läuft, also ppp0, ppp1, ppp2 oder ppp3. Beenden läßt sich die Verbindung am einfachsten mit dem Kommando: kill -INT `cat /var/run/device.pid`
Das Linux Anwenderhandbuch