|
Die Client-Dienste, die zu yellow pages gehören, basieren auf dem ypbind
Daemon. Er sendet die Anforderungen an den YP-Server. Zunächst betrachten
wir seine Arbeitsweise und die Konfiguration. Danach sehen wir, wie
das NIS-Protokoll arbeitet. Im Anschluss befassten wir uns mit den
verschiedenen Tools, die auf der Client-Seite zur Verfügung stehen.
|
Die einzige Voraussetzung, um einen NIS-Client zur Verfügung zu haben,
ist der Start des ypbind-Dämons.
|
ypbind etabliert die Verbindung zwischen Client und dem NIS-Server.
Diese Verbindung wird sichtbar durch eine Datei im Verzeichnis
/var/yp/binding1, die normalerweise in der Form domainname.version
benannt ist. Die einzige z. Z. unterstützte Version ist Version 2. Wenn
der Name der NIS-Domäne etwa messiah lautet, heißt die Datei
messiah.2
Das Programm ypbind gehört dem Super-User (d. h. root), demzufolge
findet es sich entweder in /sbin oder /usr/sbin.
Nach dem Start sucht und findet (hoffentlich) ypbind seine Anweisungen
in der Datei /etc/yp.conf. Diese Datei kann folgende Einträge enthalten:
-
domain nisdomain server hostname: Der Client sucht nach hostname
für die Domäne nisdomain;
-
domain nisdomain broadcast: Der Client fragt per Rundspruch im
lokalen Netzwerk nach der Domäne nisdomain;
-
ypserver hostname: Der Client spricht direkt hostname für die
lokale Domäne an. In dieser Konfiguration muß die IP-Adresse des Servers
in der lokalen Datei /etc/hosts enthalten sein.
Wenn die Konfigurationsdatei nicht existiert oder falsche Einträge
enthält, sucht ypbind per Rundspruch (broadcast) im lokalen Netzwerk
nach dem NIS-Server für die lokale Domäne.
Mit wenigen Schritten lässt sich sicherstellen, dass ypbind korrekt
konfiguriert ist.
1. Erstellen Sie die Datei /etc/yp.conf.
2. Überprüfen Sie, dass portmap aktiviert ist (ps aux | grep
portmap). Wenn nicht, müssen wir ihn starten. Dieses Programm verbindet
die TCP/IP- (oder UDP/IP)-Ports des Computers mit den Programmen.
Während der Initialisierung eines RPC-Servers teilt dieser portmap mit,
auf welchen Ports er lauscht und die Programmnummern, die er starten
möchte. Wenn ein Client eine RPC-Anforderung für eine bestimmte
Port-Nummer absetzt, nimmt er zunächst Kontakt mit portmap auf, um zu
erfahren, an welchen Port die RPC-Pakete zu senden sind. Deshalb ist es
unbedingt erforderlich, portmap vor ypbind zu starten.
3. Erstellen Sie das Verzeichnis /var/yp.
4. Starten Sie ypbind.
5. Benutzen Sie das Kommando rpcinfo, um sicherzustellen, das ypbind
korrekt arbeitet:
Die Ausführung von rpc -p localhost sollte folgende Informationen
anzeigen:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 tcp 637 ypbind 100007 2 udp 639 ypbind
|
oder
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind
|
oder versuchen Sie:
rpcinfo -u localhost ypbind, was als Ergebnis folgendes
anzeigen sollte:
program 100007 version 2 ready and waiting
|
oder
program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting
|
abhängig von der Version von ypbind. Der wichtige Teil ist die
Zeile mit der Version 2.
Nachdem ypbind nun korrekt arbeitet, wird Ihr Rechner zu einem
NIS-Client. Nun können Sie Ihren NIS-Server ansprechen. Z. B. zeigt
Ihnen ypcat passwd.byname alle Passwörter nach Benutzern geordnet an,
die im entsprechenden Verzeichnis vorhanden sind.
|
Einige Dateien benötigen noch kleinere Veränderungen, damit YP
effizienter arbeiten kann:
-
/etc/host.conf: nis für Namensauflösung hinzufügen.
-
/etc/passwd: folgende Zeile einfügen:
Dies erlaubt allen Personen, die im Verzeichnis des Servers
enthalten sind, Kontakt zum Client aufzunehmen. Diese Berechtigungen
können durch die Symbole + und - verfeinert werden, um den Zugang
zum Client zu gewähren oder zu sperren. Um z. B. den guest-Benutzer
auszusperren, würden Sie die Zeile
hinzufügen. Die Felder, die Sie nicht verändern möchten, sollten
leer bleiben. Es ist aber möglich, mehr hinzuzufügen:
/etc/passwd
|
+me::::::/bin/ksh
|
Der Benutzer me bekommt ksh anstelle ihrer sonstigen
Login-Shell (die in /etc/password des NIS-Servers definiert ist).
Ich möchte noch hinzufügen, das NIS auch die Benutzung von
Netzgruppen perfekt unterstützt
/etc/passwd
|
+@sysadmins:::::::
|
erlaubt den Mitgliedern der Netzgruppe sysadmins Verbindungen zu
diesem Client.
/etc/group (und/oder /etc/shadow für bestimmte libc-Versionen):
wie in /etc/passwd, müssen Sie hier
hinzufügen. Sie können auch mit Gruppenberechtigungen
experimentieren, indem sie + und - hinzufügen.
/etc/nsswitch.conf: der Network Services Switch erlaubt es (wie
/etc/hosts.conf), die Reihenfolge zu definieren, in der die gewünschte
Information gesucht wird. Zur Auswahl stehen:
nisplus
|
Suche per NIS+ (d. h. NIS Version 3, eine sichere Version von NIS)
|
nis
|
Suche per NIS (NIS Version 2, entspricht YP)
|
dns
|
Suche per DNS (Domain Name Server)
|
files
|
Suche in den lokalen Dateien
|
db
|
Suche in der Datenbank /var/db
|
Hinter jeder Such-Option kann ein Befehl in folgender Form eingesetzt
werden:
`[' ( `!'? STATUS `=' ACTION )+ `]'
|
wobei:
-
STATUS => "success" oder "notfound" oder "unavail" oder "tryagain"
-
ACTION => "return" oder "continue"
Abhängig von der verwendeten libc-Version verlaufen nicht alle
Abfragen gleich. Zum Beispiel verwaltet die libc5 keine Passwörter in
/etc/shadow. Die auf einer Maschine zur Verfügung stehenden Dienste
benutzen die Bibliothek /lib/libnss_SERVICE.so.X. Weitere Informationen
zu diesem Service finden sich in den Handbuch-Seiten zu nsswitch.conf
("man nsswitch.conf").
Shadow-Passwörter in NIS werden nur mit der glibc2.x-Bibliothek
unterstützt. Deshalb sollte man sorgfältig überlegen, ob man sie in
nsswitch.conf aktiviert.
|
Nachdem unser NIS-Client nun voll funktionsfähig ist, wollen wir sehen,
wie er die benötigten Informationen gewinnt.
Wenn ein Client eine Information benötigt, die sich in einem
YP-Verzeichnis befindet, sucht er zunächst nach einem YP-Server. Dazu
öffnet er eine TCP-Verbindung zum lokalen ypbind-Dämonen. Der Client
informiert ihn über die (NIS-)Domäne, zu der er gehört und ypbind setzt
mittels der Funktion RPC YPPROC_DOMAIN_NOACK einen Rundspruch im lokalen
Netz ab. Die NIS-Server, die diese Domäne bedienen, antworten mit einem
ACK. Die anderen verhalten sich ruhig.
ypbind schickt dem Client das Ergebnis der Anfrage (Erfolg oder
Misserfolg), und bei Erfolg die Adresse des YP-Servers, der zuerst
geantwortet hat. Der Client kann nun den Server mit seiner Anfrage
adressieren, indem er die Domäne, das Verzeichnis und den Schlüssel
angibt.
Dieses Protokol ist ziemlich langsam, weil es TCP-Verbindungen benutzt.
Dies wird noch dadurch verschlimmert, weil eine Menge Sockets benutzt
werden. Um dies zu vermeiden, wartet ypbind nicht auf Anfragen von
Clients. Tatsächlich verwaltet es eine Liste von Servern für jede Domäne
in der Datei /var/yp/binding/<domainename>.<version> und überprüft
regelmässig, ob diese Server noch aktiv sind.
|
Dieser Abschnitt beschreibt kurz einige der Programme aus dem
yp-Tools-Paket. Wenn Sie mehr darüber erfahren wollen, können Sie für
jedes dieser Tools eine sehr ausführliche Handbuchseite aufrufen.
-
domainname: zeigt oder ändert (abhängig von Optionen) den
NIS-Domänen-Namen
-
ypcat: zeigt die Werte aller Schlüssel im NIS-Verzeichnis;
-
ypmatch: zeigt die Werte eines oder mehrerer Schlüssel im
NIS-Verzeichnis
-
ypset: damit kann spezifiziert werden, zu welchen NIS-Server
ypbind Verbindung aufnehmen muss
-
ypwhich: gibt den Namen des NIS-Servers zurück. Mit -m
Verzeichnisname" als Option gibt es den Namen des Hauptverzeichnisses
zurück.
-
yppoll: hat als Argument einen Verzeichnisnamen und gibt den
Namen des Hauptservers zurück..
|
Bis jetzt haben wir noch nicht über eine NIS-Variante gesprochen. NIS in
einem Netzwerk zu benutzen, ist ein grosses Sicherheitsrisiko. Wenn z. B.
der NIS-Server schlecht geschützt ist und eine Person mit bösen
Absichten
-
den NIS-Domänen-Namen
-
die IP-Adresse eines NIS-Clients
herausfindet, ist es sehr einfach vorzutäuschen, dass man von dieser
Maschine mit dieser IP-Adresse arbeitet (Spoofing). Dann kann man durch
ein ypcat passwd mit allergrößter Leichtigkeit die Passwort-Liste
erhalten.
NIS+ bietet eine zusätzliche Sicherheitsschicht, indem es ein auf dem
Austausch von Schlüsseln basierendes Authentifizierungsprotokoll
integriert und Datenverschlüsselung unterstützt..
Die Daten werden in Tabellen gehalten, die sich in verschiedenen
Verzeichnissen befinden. Jede Spalte einer Tabelle enthält einen
Kopfeintrag, der z. B. angibt, ob bei den Daten Groß-/Kleinschreibung
unterschieden wird oder ob es sich um binäre Daten handelt.
Die erwähnte Struktur erlaubt es, Zugriffsrechte für die Verzeichnisse
und Tabellen und zusätzlich für die Spalten in den Tabellen zu
definieren. Es ist daher möglich, den Zugriff auf die Passwort-Tabelle
für jeden Benutzer zu sperren, der nicht auf dem NIS+-Server zugelassen.
ist. Aber es erlaubt allen berechtigten Benutzerinnen Zugriff auf die
gesamte Passwort-Tabelle mit Ausnahme des Passwort-Feldes. Nur der
Eigentümer des Passwort-Feldes kann dieses abfragen..
Es gibt 4 Sicherheitsstufen:
-
Nobody: Der Benutzer ist nicht berechtigt.
-
Owner: Der Benutzer ist als Eigentümer berechtigt.
-
Group: Der Benutzer ist berechtigt und gehört zu einer Gruppe,
die Zugriff auf dieses Objekt hat.
-
World: Der Benutzer ist berechtigt, ist aber nicht Eigentümer und
gehört keiner Gruppe mit Zugriff auf dieses Objekt an.
In dieser Konfiguration ist root fast nur ein gewöhnlicher Benutzer.
Wenn er nicht die entsprechenden Rechte hat, hat er keinen
Zugriff auf die Passwörter der anderen Benutzer. So ist es nicht mehr
möglich, sich als ein anderer Benutzer zu authentifizieren, aber ein
Wechsel mittels su ist noch möglich.
Die Daten werden mit Ausnahme der Passwörter im Netz unverschlüsselt
übertragen. Kein Passwort wird im Klartext übertragen.
NIS+ ist ein mächtiges Werkzeug, aber es ist schwer zu konfigurieren.
|
|
|