SelfLinux Linux im Netzwerk NIS - Yellow Pages Abschnitt 3 | SelfLinux-0.13.0

| NIS - Yellow Pages | Autoren Formatierung GFDL

#### 4 Die Server - Seite

#### 4.1 Server Einführung

Hier nun werden wir sehen, wie man den Server konfiguriert und wir werden einige Ratschläge zur Nutzung von NIS erteilen.

#### 4.2 Vorwort

Bevor ich anfange, eine Präzisierung. Bis jetzt haben wir nur von NIS gesprochen. Jedoch gibt es davon zwei Varianten: das, was man das traditionelle NIS nennen könnte und NYS. Praktisch gibt es keine Unterschiede zwischen den Beiden (speziell bei der Konfiguration sowohl des Clients als auch des Servers). Das traditionelle NIS gibt es schon länger, aber es unterstützt nicht alle Neuerungen, wie Shadowpasswörter, die von NYS transparent verwaltet werden.

Wir behandeln hier eine aktuelle Version von ypserv (d.h. eine Version die neuer ist als 1.3.2, um unter anderem die Verwaltung von Shadowpasswörtern zur Verfügung zu haben). Deshalb handelt es sich um einen NYS Server und kein traditionelles NIS, wobei wir weiterhin fälschlich von NIS sprechen werden.

#### 4.3 Der NIS Server

Es gibt zwei NIS Server: ypserv und yps. Die Konfuguration unterscheidet sich nicht wesentlich. Aber yps wird von seinem Autor nicht mehr gepflegt und hat schwere Sicherheitslücken. Wir werden uns deshalb nur mit ypserv beschäftigen.

Zuerst zeigen wir die Schritte, die nötig sind, um einen Server zu installieren. Wir zeigen Schritt für Schritt, wie die einzelnen Konfigurationsdateien auf den Installationsprozess des Servers einwirken.

Im Artikel arbeiten wir auf der Maschine charly. Die NIS Domäne trägt den Name bosley. Die Slaveserver sind sabrina, jill und kelly.

#### 4.4 Installation

Zu allererst muss man sicherstellen, dass der portmap Dämon läuft. Wenn dem nicht so ist, muss er gestartet werden.

Danach legt man den Namen der NIS-Domäne fest. Es handelt sich dabei nicht um einen Domänennamen im Sinne von DNS, sondern im Sinne von YPs. Dieser Name muss aus Sicherheitsgründen anders als der der Maschine sein.

Mit dem Kommando domainname kann man den Domänennamen festlegen. In unserem Fall benutzen wir es wie folgt:

root@linux # /bin/domainname bosley

Dieses Kommando fixiert den NIS-Domänennamen im RAM-Speicher. Jedoch, wenn die Serverkonfiguration beendet ist, dann wünscht man sich doch, dass dies automatisch beim Starten der Maschine erledigt wird. Dafür muss man eine Zeile in der Netzwerkkonfiguration /etc/sysconfig/network ändern:

/etc/sysconfig/network

    NISDOMAIN=bosley

oder bei Debian in /etc/defaultdomain

/etc/defaultdomain

    bosley

Sobald das Netzwerk beim nächsten Reboot initialisiert wird, wird auch automatisch der NIS-Domänenname festgelegt.

Der folgende Abschnitt beschäftigt sich mit dem Starten des ypserv Dämons. Zuvor muss man ihn mittels der Datei /etc/ypserv.conf konfigurieren. Dies ist eine ASCII-Datei:

1. Kommentare: Die Zeilen, die mit dem #-Zeichen beginnen.

2. Optionen für den Dämon: Diese Zeile schreibt sich so:

/etc/ypserv.conf

    option: [yes|no]

Mögliche Optionen sind dns (der Server fragt DNS, um die Clients zu finden, die nicht in den hosts-Maps auftauchen), sunos_kludge (obsolet) und xfr_check_port (um den Server auf einen Port unter 1024 zu lenken - yes als Default)

3. Zugangsregeln zum NIS-Server. Das Format ist

    host:map:security:mangle[:field]

Sie erlauben es festzulegen, wer was sehen darf.

Die Manpage von ypserv.conf führt sehr klar alle Optionen und Möglichkeiten für Regeln aus.

Jetzt kann man den Server starten:

root@linux # /etc/init.d/ypserv start

Um zu verifizieren, dass alles korrekt läuft:

root@linux # rpcinfo -u localhost ypserv program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting

Wir haben gesehen, dass es zwei Typen von Servern gibt: Master und Slaves. Der Master besitzt die NIS-Referenzdatenbank, wovon die Slaves nur eine Kopie haben. Sie dienen dazu, den Master von zu vielen Requests zu entlasten. Die Datenbank wird nur auf dem Server gepflegt. Erst danach wird sie auf die Slaveserver weiterkopiert.

Alles ist jetzt bereit, bis auf die Datenbank. Man muss sie nur noch erstellen. Und wer erstellen meint, sagt Makefile. Es ist bereits fertig geschrieben, es müßen lediglich ein paar Variablen angepasst werden. Es befindet sich im Verzeichnis /var/yp. Es ist ausführlich und klar kommentiert. Die wichtigste Zeile ist, wo die Maps, die von NIS benutzt werden sollen, definiert sind. Auf charly sind dies:

    all: passwd group hosts rpc services netid protocols mail shadow \

    # netgrp publickey
    # networks ethers bootparams printcap \
    # amd.home auto.master auto.home passwd.adjunct

Zu dem, was per Default vorgegeben ist, sollte man auch die Verwaltung der Shadowpasswörter hinzufügen. Man muss dann aber auch den Wert der Variable MERGE_PASSWD von true auf false setzen. Sie legt nämlich fest, dass für die Konstruktion der NIS-Datenbank die Dateien /etc/passwd und /etc/shadow zu mischen sind.

Noch ein letztes Detail bevor wir die NIS-Datenbank erstellen, die Verwaltung der Zugriffsrechte. Es gibt zwei Methoden den Zugang zum Server zu verwalten: entweder macht er alles selbst, oder über tcp_wrapper. Wir behandeln hier die Sicherheitseinstellungen über ypserv selbst.

Wenn Sie nur die Binaries von ypserv haben, dann sagt Ihnen die Option -v mit welcher Konfiguration Ihr Binary kompiliert wurde:

root@linux # ypserv -v ypserv - NYS YP Server version 1.3.12 (with securenets)

Die Datei /etc/ypserv.securenets enthält paarweise Kombinationen von netmask/network, mit denen Sie den Serverzugang kontrollieren können. Sie müssen diese Datei unter allen Umständen modifizieren: als Default enthält sie:

    0.0.0.0          0.0.0.0

was aller Welt den Zugang auf Ihren NIS-Server erlaubt. Es ist anzumerken, dass der Datei lediglich die IP-Adressen bekannt sind (nicht der Namen der Maschinen).

Jetzt können wir die NIS-Datenbank erstellen. Wir benutzen dazu das Kommando ypinit. Es erstellt die Datenbank in /var/yp und benutzt die Dateien aus /etc (dies ist der Standard, man kann auch ein anderes Verzeichnis im Makefile festlegen). Hier sind die Dateien, die die Daten für die Datenbank liefern (/etc/passwd, /etc/group, /etc/hosts, /etc/networks, /etc/services, /etc/protocols, /etc/netgroup, /etc/rpc).

Die Option -m gestattet es, den Server mit den Rohdaten zu initialisieren (-m für master), die Option -s kopiert die Daten von der Masterdatenbank auf einen Slave (-s für Slave - Sklave auf Englisch).

Auf Charly initialisieren wir unsere Datenbank wie folgt:

root@linux # ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. localhost is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: localhost
next host to add: sabrina
next host to add: jill
next host to add: kelly
next host to add:
The current list of NIS servers looks like this:
localhost
sabrina
jill
kelly
Is this correct? [y/n: y] y
We need some minutes to build the databases...
Building /var/yp/bosley/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/bosley'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
Updating shadow.byname...
# shadow publickey # networks ethers bootparams printcap \
# amd.home auto.master auto.home passwd.adjunct
gmake[1]: Leaving directory `/var/yp/bosley'

Schon steht die Datenbank. Auf jedem Slaveserver muss man jetzt das folgende Kommando ausführen:

root@linux # ypinit -s charly

Um sicherzustellen, dass alles korrekt läuft, reicht es aus, einen Server in einen Client zu verwandeln, egal ob Master oder Slave, und einen Request abzusetzen. Zum Beispiel auf charly:

    ypcat passwd mulder:x:500:100::/home/mulder:/bin/csh
    scully:x:501:100::/home/scully:/bin/bash

Man kann nebenbei auch feststellen, ob die Shadowpasswörter korrekt funktionieren.

#### 4.5 Installation eines NIS-Servers

1. portmap initialisieren.
2. Den NIS-Domänenname festlegen.
3. Die Konfigurationsdatei des NIS-Servers vorbereiten: /etc/ypserv.conf
4. Den ypserv Dämon starten.
5. In /var/yp/Makefile, die Maps auswählen, die von ypserv verwaltet werden sollen und dann die Kompilierungsoptionen einstellen.
6. Die Zugangsrechte für den NIS-Server in der Datei. /var/yp/securenets festlegen.
7. Die NIS Masterdatenbank erstellen mit Hilfe des ypinit -m Kommandos.
8. Die Slavedatenbanken erstellen mit ypinit -s <master server>

#### 4.6 Aktualisierung der NIS-Datenbank

Sobald man eine Map modifizieren möchte, um zum Beispiel einen neuen Slaveserver oder einen neuen User hinzuzufügen, muss man die NIS-Datenbank aktualisieren. Dies geht wie folgt.

Um einen Slaveserver hinzuzufügen genügt es, ypinit -s charly auf dem neuen Slaveserver auszuführen, und seinen Namen in die Datei /var/yp/ypservers des Masterservers einzufügen.

Wenn man einen neuen User anlegt, können sich mehrere Maps verändert haben (passwd, shadow, alias, etc ...).

Sobald man eine Map modifiziert hat, darf man nicht vergessen, ein make im Verzeichnis /var/yp/ des Masterservers zu machen: dies aktualisiert seine Datenbank, indem es die Information integriert und auf die Slaves verteilt (mit dem Kommando yppush).

Das Program rpc.ypxfrd erlaubt es, die Transaktion zwischen einem Masterserver und seinen Slaves zu beschleunigen. Es gestattet einem Slave, die Datenbank des Master-Servers einfach zu kopieren, anstatt sie komplett neu zu erstellen. rpc.ypxfrd muss zur selben Zeit gestartet werden wie ypserv und nur auf dem Master. Dieses Programm ist notwendig für sehr grosse Maps.