Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Authentifizierung mit PPP

Mit PPP kann jedes System seine Gegenseite auffordern, sich zu authentifizieren. Dazu kann eins von zwei Authentifizierungsprotokollen verwendet werden. Dies ist zum einen das Password Authentication Protocol (PAP) und zum anderen das Challenge Handshake Authentication Protocol (CHAP). Sobald eine Verbindung steht, kann jede Seite die andere auffordern, sich zu authentifizieren, gleichgültig, ob sie die rufende oder die angerufene Seite ist. Im folgenden reden wir von “Client” und “Server”, um zwischen dem sich authentifizierenden System und dem Authentifizierer zu unterscheiden. Ein PPP-Dämon kann von seinem Gegenüber die Authentifizierung anfordern, indem er einfach eine weitere LCP-Konfigurationsanforderung sendet, die das gewünschte Authentifizierungsprotokoll angibt.

Vergleich von PAP und CHAP

Das von vielen Internet-Service-Providern angebotene PAP arbeitet grundsätzlich auf dieselbe Weise wie die normale Login-Prozedur. Der Client authentifiziert sich, indem er einen Benutzernamen und ein (optional verschlüsseltes) Paßwort an den Server schickt, die der Server dann beide mit seiner Secrets-Datenbank vergleicht.1 Diese Technik ist durch Lauscher angreifbar, die an der seriellen Leitung horchen. Auch Angriffe nach dem Trial-and-Error-Verfahren sind hier möglich.

CHAP hat diese Defizite nicht. Bei CHAP sendet der Authentifizierer (d.h. der Server) einen zufällig erzeugten “Anforderungsstring” zusammen mit seinem Hostnamen an den Client. Der Client verwendet den Hostnamen, um das entsprechende “Secret” nachzusehen, kombiniert es mit der Anforderung und verschlüsselt den String mit Hilfe einer Einweg-Hashfunktion. Das Ergebnis wird zusammen mit dem Hostnamen des Client an den Server zurückgeschickt. Der Server führt nun dieselbe Berechnung durch und akzeptiert den Client, wenn er zu demselben Ergebnis kommt.

Eine weitere Eigenschaft von CHAP besteht darin, daß es die Authentifizierung durch den Client nicht nur beim Start abfragt, sondern solche Anforderungen in regelmäßigen Zeitabständen sendet, um sicherzustellen, daß der Client nicht durch einen Eindringling ersetzt wurde, der beispielsweise nur die Telefonleitung umgeschaltet hat, oder daß nicht ein Modem-Konfigurationsfehler vorliegt, wodurch der PPP-Dämon nicht mitbekommt, daß die bestehende Verbindung abgebrochen wurde und sich inzwischen ein anderer Benutzer eingewählt hat.

pppd speichert die geheimen Schlüssel für CHAP und PAP in zwei separaten Dateien namens /etc/ppp/chap-secrets und /etc/ppp/pap-secrets. Durch Eintragen eines entfernten Hosts in die eine oder andere Datei können Sie exakt bestimmen, ob CHAP oder PAP bei der Authentifizierung verwendet wird.

pppd ist so voreingestellt, daß es von der Gegenseite keine Authentifizierung benötigt; fordert die Gegenstelle eine Authentizierung an, wird diese aber durchgeführt. Weil CHAP wesentlich strenger ist als PAP, versucht pppd, wann immer möglich, auf das erste Verfahren zurückzugreifen. Wird dies von der Gegenseite nicht unterstützt, oder kann pppd kein CHAP-Secret für den anderen Rechner in seiner Datei chap-secrets finden, wechselt es zu PAP. Kann auch kein PAP-Secret für die andere Seite gefunden werden, wird die Authentifizierung vollständig abgebrochen und als Konsequenz daraus schließlich die ganze Verbindung unterbrochen.

Dieses Verhalten kann auf verschiedene Weise angepaßt werden. Wird beispielsweise die Option auth verwendet, verlangt pppd von der Gegenseite eine Authentifizierung. pppd kann dabei entweder auf CHAP oder auf PAP zurückgreifen, solange das Secret der anderen Seite in der CHAP- oder PAP-Datenbank gefunden wird. Es gibt andere Optionen, mit denen auf ein bestimmtes Authentifizierungsprotokoll zurückgegriffen wird. Wir gehen an dieser Stelle aber nicht auf sie ein.

Wenn alle Systeme, mit denen Sie sich über PPP unterhalten, bereit sind, sich Ihnen gegenüber zu authentifizieren, sollten Sie die Option auth in die globale Datei /etc/ppp/options aufnehmen und Paßwörter für alle Systeme in die Datei chap-secrets eintragen. Wird CHAP von einem System nicht unterstützt, fügen Sie den Eintrag in die Datei pap-secrets ein. Auf diese Weise stellen Sie sicher, daß sich keine unautorisierten Systeme in Ihren Host einklinken.

Die nächsten zwei Abschnitte behandeln die beiden PPP-Secrets-Dateien pap-secrets und chap-secrets. Diese Dateien sind im Verzeichnis /etc/ppp zu finden und enthalten Dreiergruppen aus Clients, Servern und Paßwörtern, denen optional eine Liste mit IP-Adressen folgt. Die Interpretation der Client- und Serverfelder ist bei CHAP und PAP unterschiedlich und hängt auch davon ab, ob wir uns bei der Gegenseite ausweisen müssen oder ob wir den Server auffordern, sich bei uns zu authentifizieren.

Die CHAP-Secrets-Datei

Wenn pppd sich über CHAP einem Server gegenüber ausweisen muß, durchsucht es die Datei chap-secrets nach einem Eintrag, bei dem das Client-Feld mit dem lokalen Hostnamen und das Serverfeld mit dem Hostnamen des Servers übereinstimmt, der bei der CHAP-Anforderung übertragen wurde. Muß sich die Gegenseite authentifizieren, sind die Rollen vertauscht: pppd sucht dann nach einem Eintrag, bei dem das Client-Feld mit dem Hostnamen des entfernten Rechners (übertragen während der CHAP-Antwort des Client) und das Serverfeld mit dem lokalen Hostnamen übereinstimmt.

Nachfolgend ein einfaches Beispiel einer chap-secrets-Datei für vlager:2

# CHAP secrets für vlager.vbrew.com # # Client         Server           Secret                Adressen #--------------------------------------------------------------------- vlager.vbrew.com  c3po.lucas.com   "Use The Source Luke" vlager.vbrew.com c3po.lucas.com    vlager.vbrew.com "arttoo! arttoo!"     c3po.lucas.com *                 vlager.vbrew.com "TuXdrinksVicBitter"  pub.vbrew.com

Wenn vlager eine PPP-Verbindung zu c3po aufbaut, fordert c3po vlager auf, sich zu authentifizieren, indem es eine CHAP-Anforderung überträgt. pppd auf vlager durchsucht dann chap-secrets nach einem Eintrag, bei dem das Client-Feld vlager.vbrew.com und das Serverfeld c3po.lucas.com enthält, und findet dabei die erste oben aufgeführte Zeile.3 Daraufhin wird eine CHAP-Antwort aus dem Anforderungsstring und dem Secret (Use The Source Luke) erzeugt und an c3po geschickt.

Zur selben Zeit baut pppd eine CHAP-Anforderung für c3po auf, die einen eindeutigen Anforderungsstring und den voll qualifizierten Hostnamen vlager.vbrew.com enthält. c3po erzeugt die entsprechende CHAP-Antwort auf die oben beschriebene Art und Weise und gibt diese an vlager zurück. pppd filtert sich nun den Hostnamen des Client (c3po.lucas.com) aus der Antwort heraus und durchsucht die Datei chap-secrets nach einem Eintrag, bei dem c3po als Client und vlager als Server vorhanden sind. Das ist im zweiten Eintrag unserer Beispieldatei der Fall, und pppd kombiniert die CHAP-Anforderung und das Secret arttoo! arttoo!, verschlüsselt sie und vergleicht das Ergebnis mit der CHAP-Antwort von c3po.

Das vierte Feld ist optional und enthält eine Liste der IP-Adressen, die für den im ersten Feld aufgeführten Client akzeptabel sind. Die Adressen können in Dotted Quad Notation oder als Hostnamen angegeben werden, die mit Hilfe des Resolvers aufgelöst werden. Fordert beispielsweise c3po eine bestimmte Adresse während der IPCP-Vereinbarung an, die nicht in dieser Liste steht, wird diese Anforderung abgelehnt, und IPCP wird beendet. Bei unserer oben aufgeführten Beispieldatei kann c3po also nur seine eigene IP-Adresse verwenden. Ist das Adreßfeld leer, ist jede Adresse erlaubt. Wird als Wert “-” eingetragen, wird IP für diesen Client gar nicht erst initialisiert.

Die dritte Zeile in unserer chap-secrets-Datei ermöglicht es jedem Host, einen PPP-Link mit vlager aufzubauen, weil das Sternchen (*) als Platzhalter für jeden beliebigen Hostnamen steht. Die einzige Voraussetzung ist, daß er das Secret kennt und die Adresse von pub.vbrew.com verwendet. Einträge mit solchen Platzhaltern (Wildcards) können an jeder beliebigen Stelle in der Secrets-Datei stehen, weil pppd immer den Eintrag verwendet, der am ehesten zu einem Server/Client-Paar paßt.

pppd benötigt möglicherweise bei der Bildung von Hostnamen etwas Hilfe. Wie bereits erwähnt, ist der Name des anderen Host immer im CHAP-Anforderungs- oder -Antwortpaket enthalten. Der lokale Hostname wird standardmäßig durch den Aufruf der Funktion gethostname(2) ermittelt. Wenn Sie den Systemnamen auf Ihren unqualifizierten Hostnamen gesetzt haben, müssen Sie pppd mit der Option domain zusätzlich noch den Domainnamen bekanntgeben:

# pppd … domain vbrew.com

Das hängt den Domainnamen der Brauerei bei allen authentifizierungsbezogenen Aktivitäten an vlager an. Andere Optionen, mit denen Sie den lokalen Hostnamen für pppd anpassen können, sind usehostname und name. Wenn Sie die lokale IP-Adresse mit Hilfe von local:remote auf der Kommandozeile angeben und local einen Namen anstelle einer Dotted Quad enthält, nutzt pppd diesen als lokalen Hostnamen.

Die PAP-Secrets-Datei

Die Secrets-Datei für PAP ist der von CHAP sehr ähnlich. Die ersten beiden Felder enthalten einen Benutzer- und einen Servernamen. Das dritte Feld enthält das PAP-Secret. Fordert die Gegenseite die Authentifizierung an, verwendet pppd den Eintrag, bei dem das Serverfeld mit dem lokalen Hostnamen und das Benutzerfeld mit dem in der Anforderung übertragenen Benutzernamen übereinstimmt. Wenn es sich selbst authentifizieren muß, wählt sich pppd das Secret aus dem Eintrag aus, das ein Feld mit dem lokalen Benutzernamen und ein Serverfeld mit dem Namen des entfernten Hosts enthält.

Eine PAP-Secrets-Datei könnte beispielsweise wie folgt aussehen:

# /etc/ppp/pap-secrets # # Benutzer      Server          Secret          Adressen vlager-pap      c3po            cresspahl       vlager.vbrew.com c3po            vlager          DonaldGNUth     c3po.lucas.com

Die erste Zeile wird von uns zur Authentifizierung verwendet, wenn wir mit c3po kommunizieren. Die zweite Zeile beschreibt, wie ein Benutzer namens c3po sich uns gegenüber zu authentifizieren hat.

Der Name vlager-pap in der ersten Spalte ist der Benutzername, den wir an c3po senden. Per Standardeinstellung wählt pppd den lokalen Hostnamen als Benutzernamen. Sie können aber auch einen anderen Namen bestimmen, indem Sie ihn mit der Option user übergeben.

Wenn ein Eintrag aus der Datei pap-secrets herausgesucht werden soll, um die Authentifizierung mit der Gegenseite durchzuführen, muß pppd den Namen des anderen Hosts kennen. Weil es keine Möglichkeit hat, ihn herauszufinden, müssen Sie ihn mit Hilfe der Option remotename auf der Kommandozeile mit angeben. Soll beispielsweise der obige Eintrag für die Authentifizierung mit c3po verwendet werden, müssen wir dem pppd-Befehl folgende Option hinzufügen:

# pppd ... remotename c3po user vlager-pap

Im vierten Feld (und in allen folgenden Feldern) der PAP-Secrets-Datei können Sie, genau wie bei der CHAP-Secrets-Datei auch, die IP-Adressen angeben, die für einen bestimmten Host erlaubt sind. Die Gegenstelle darf dann nur Adressen aus dieser Liste anfordern. In der Beispieldatei weist der Eintrag, den c3po für die Einwahl benutzt — die Zeile, in der c3po der Client ist —, c3po an, nur seine eigene IP-Adresse und keine andere zu benutzen.

Denken Sie daran, daß PAP eine eher schwache Authentifizierungsmethode ist und daß Sie, wenn möglich, immer auf CHAP zurückgreifen sollten. Aus diesem Grund gehen wir hier nicht detaillierter auf PAP ein. Wenn Sie mehr über PAP erfahren wollen, finden Sie weitere Informationen in der pppd(8)-Manpage.




1.

“Secrets” ist lediglich die PPP-Bezeichnung für Paßwörter. PPP-Secrets können länger sein als die Login-Paßwörter bei Linux.

2.

Die Anführungszeichen sind nicht Teil des Paßworts, sondern dienen nur dazu, die Leerzeichen innerhalb des Paßworts zu schützen.

3.

Der Hostname stammt aus der CHAP-Anforderung.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag