Update to r42970:

This patch provides general tightening and clarification of the sections NIS Slave Servers through NIS Security.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D5811
This commit is contained in:
Bjoern Heidotting 2016-04-03 16:40:49 +00:00
parent d4b395f366
commit 50eb129c54
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48528

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
basiert auf: r42968
basiert auf: r42970
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="network-servers">
<!--
@ -1589,7 +1589,7 @@ ellington has been setup as an YP master server without any errors.</screen>
Server vorhanden sind. Wenn <command>ypinit</command>
auf dem Slaveserver ausgeführt wird, benutzen Sie
<option>-s</option> (Slave) statt <option>-m</option>
(Master). Diese Option benötigt den Names des
(Master). Diese Option benötigt den Namen des
<acronym>NIS</acronym>-Masterservers und den Domänennamen,
wie in diesem Beispiel zu sehen:</para>
@ -1650,63 +1650,55 @@ ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Remember to update map ypservers on ellington.</screen>
<para>Es sollte nun ein Verzeichnis namens
<filename>/var/yp/test-domain</filename> existieren. Die
Kopien der <acronym>NIS</acronym>-Masterserver-Maps
sollten sich in diesem
Verzeichnis befinden. Allerdings müssen diese Daten immer
aktuell sein. Die folgenden Einträge in
<filename>/etc/crontab</filename> des NIS-Slaveservers
erledigen diese Aufgabe:</para>
<para>Hierbei wird auf dem Slaveserver ein Verzeichnis
namens <filename>/var/yp/test-domain</filename> erstellt,
welches Kopien der
<acronym>NIS</acronym>-Masterserver-Maps enthält.
Verzeichnis befinden. Durch hinzufügen der folgenden
Zeilen in <filename>/etc/crontab</filename> wird der
Slaveserver angewiesen, seine Maps mit den Maps des
Masterservers zu synchronisieren:</para>
<programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting>
<para>Diese zwei Zeilen zwingen den Slaveserver, seine Maps
mit denen des Masterservers zu synchronisieren. Diese
Einträge sind nicht zwar nicht unbedingt nötig,
da der Masterserver automatisch versucht, alle
Änderungen seiner <acronym>NIS</acronym>-Maps an seine
Slaveserver weiterzugeben. Da Passwortinformationen aber
auch für nur vom Slaveserver abhängige Systeme
vital sind,
ist es eine gute Idee, diese Aktualisierungen zu erzwingen.
Besonders wichtig ist dies in stark ausgelasteten Netzen,
in denen Map-Aktualisierungen unvollständig sein
könnten.</para>
<para>Diese Einträge sind nicht zwingend notwendig,
da der Masterserver automatisch versucht, alle Änderungen
seiner <acronym>NIS</acronym>-Maps an seine Slaveserver
weiterzugeben. Da Passwortinformationen aber auch für nur
vom Slaveserver abhängige Systeme vital sind, ist es eine
gute Idee, diese Aktualisierungen zu erzwingen. Besonders
wichtig ist dies in stark ausgelasteten Netzen, in denen
Map-Aktualisierungen unvollständig sein könnten.</para>
<para>Führen Sie nun <command>/etc/netstart</command>
auch auf dem Slaveserver aus, um den
<acronym>NIS</acronym>-Server erneut zu starten.</para>
<para>Um die Konfiguration abzuschließen, führen Sie
<command>/etc/netstart</command> auf dem Slaveserver aus,
um die <acronym>NIS</acronym>-Dienste erneut zu
starten.</para>
</sect2>
<sect2>
<title>Einen <acronym>NIS</acronym>-Client einrichten</title>
<para>Ein <acronym>NIS</acronym>-Client
<literal>bindet</literal> sich unter Verwendung des
<command>ypbind</command>-Daemons an einen
<acronym>NIS</acronym>-Server. Das <command>ypbind</command>-Kommando prüft
die Standarddomäne des Systems (die durch
<command>domainname</command> gesetzt wird), und beginnt
RPCs über das lokale Netzwerk zu verteilen (broadcast).
Diese Anforderungen legen den Namen der Domäne fest, für die
<command>ypbind</command> eine Bindung erzeugen will. Wenn
der Server der entsprechenden Domäne eine solche Anforderung
erhält, schickt er eine Antwort an
<command>ypbind</command>. <command>ypbind</command>
speichert daraufhin die Adresse des Servers. Wenn mehrere
Server verfügbar sind (beispielsweise ein Master- und
mehrere Slaveserver), verwendet <command>ypbind</command>
die erste erhaltene Adresse. Ab diesem Zeitpunkt richtet
der Client alle Anfragen an genau diesen Server.
<literal>bindet</literal> sich unter Verwendung von
<command>ypbind</command> an einen
<acronym>NIS</acronym>-Server. Dieser Daemon sendet
RPC-Anfragen auf dem lokalen Netzwerk. Diese Anfragen legen
den Namen der Domäne fest, die auf dem Client konfiguriert
ist. Wenn der Server der entsprechenden Domäne eine solche
Anforderung erhält, schickt er eine Antwort an
<command>ypbind</command>, das wiederum die Adresse des
Servers speichert. Wenn mehrere Server verfügbar sind,
verwendet der Client die erste erhaltene Adresse und richtet
alle Anfragen an genau diesen Server.
<command>ypbind</command> <quote>pingt</quote> den Server
gelegentlich an, um sicherzustellen, dass der Server
funktioniert. Antwortet der Server innerhalb eines
bestimmten Zeitraums nicht (Timeout), markiert
<command>ypbind</command> die Domäne als ungebunden und
beginnt erneut, RPCs über das Netzwerk zu verteilen, um
einen anderen Server zu finden.</para>
beginnt erneut, <acronym>RPC</acronym>s über das Netzwerk zu
verteilen, um einen anderen Server zu finden.</para>
<indexterm>
<primary>NIS</primary>
@ -1714,14 +1706,14 @@ Remember to update map ypservers on ellington.</screen>
</indexterm>
<para>Einen &os;-Rechner als <acronym>NIS</acronym>-Client
einzurichten, ist recht einfach.</para>
einrichten:</para>
<procedure>
<step>
<para>Fügen Sie folgende Zeilen in
<filename>/etc/rc.conf</filename> ein, um den
<acronym>NIS</acronym>-Domänennamen festzulegen, und
um <command>ypbind</command> bei der Initialisierung
um &man.ypbind.8; bei der Initialisierung
des Netzwerks zu starten:</para>
<programlisting>nisdomainname="test-domain"
@ -1731,44 +1723,36 @@ nis_client_enable="YES"</programlisting>
<step>
<para>Um alle Passworteinträge des
<acronym>NIS</acronym>-Servers zu
importieren, löschen Sie alle Benutzerkonten in
<filename>/etc/master.passwd</filename> und fügen
mit <command>vipw</command> folgende Zeile am Ende der
Datei ein:</para>
importieren, löschen Sie alle Benutzerkonten in
<filename>/etc/master.passwd</filename> mit
<command>vipw</command>. Denken Sie daran, zumindest
ein lokales Benutzerkonto zu behalten. Dieses Konto
sollte außerdem Mitglied der Gruppe <systemitem
class="groupname">wheel</systemitem> sein. Wenn es
mit <acronym>NIS</acronym> Probleme gibt, können Sie
diesen Zugang verwenden, um sich als Superuser
anzumelden und das Problem zu beheben. Bevor Sie die
Änderungen speichern, fügen Sie folgende Zeile am Ende
der Datei hinzu:</para>
<programlisting>+:::::::::</programlisting>
<note>
<para>Diese Zeile legt für alle gültigen
Benutzerkonten der
<acronym>NIS</acronym>-Server-Maps einen Zugang an.
Es gibt verschiedene Wege, den NIS-Client durch
Änderung dieser Zeile zu konfigurieren. Lesen
Sie dazu auch den Abschnitt über
<link linkend="netgroups">Netzgruppen</link> weiter
unten. Weitere detaillierte Informationen finden Sie
im Buch <literal>Managing NFS and NIS</literal> von
O'Reilly.</para>
</note>
<note>
<para>Denken Sie daran, zumindest ein lokales
Benutzerkonto, das nicht über NIS importiert wird,
in Ihrer <filename>/etc/master.passwd</filename> zu
behalten. Dieser Benutzer sollte außerdem ein
Mitglied der Gruppe
<systemitem class="groupname">wheel</systemitem>
sein. Wenn es mit NIS Probleme gibt, können Sie
diesen Zugang verwenden, um sich anzumelden,
<systemitem class="username">root</systemitem> zu
werden und das Problem zu beheben.</para>
</note>
<para>Diese Zeile legt für alle gültigen Benutzerkonten
der <acronym>NIS</acronym>-Server-Maps einen Zugang
an. Es gibt verschiedene Wege, den
<acronym>NIS</acronym>-Client durch Änderung dieser
Zeile zu konfigurieren. Eine Methode wird in
<xref linkend="network-netgroups"/> beschrieben.
Weitere detaillierte Informationen finden Sie im Buch
<literal>Managing NFS and NIS</literal> vom O'Reilly
Verlag.</para>
</step>
<step>
<para>Um alle möglichen Gruppeneinträge vom NIS-Server
zu importieren, fügen Sie folgende Zeile in
<filename>/etc/group</filename> ein:</para>
<para>Um alle möglichen Gruppeneinträge vom
<acronym>NIS</acronym>-Server zu importieren, fügen
Sie folgende Zeile in <filename>/etc/group</filename>
ein:</para>
<programlisting>+:*::</programlisting>
</step>
@ -1782,35 +1766,30 @@ nis_client_enable="YES"</programlisting>
&prompt.root; <userinput>service ypbind start</userinput></screen>
<para>Danach sollte <command>ypcat passwd</command> die
<literal>passwd-Map</literal> des NIS-Servers anzeigen
können.</para>
<para>Danach sollte bei der Eingabe von
<command>ypcat passwd</command> auf dem Client die
<literal>passwd-Map</literal> des
<acronym>NIS</acronym>-Servers angezeigt werden.</para>
</sect2>
<sect2>
<title>Sicherheit unter <acronym>NIS</acronym></title>
<para>Im Allgemeinen kann jeder entfernte Anwender einen RPC an
&man.ypserv.8; schicken, um den Inhalt der
<acronym>NIS</acronym>-Maps abzurufen, falls er den
<acronym>NIS</acronym>-Domänennamen kennt. Um solche
unautorisierten Transaktionen zu verhindern, unterstützt
&man.ypserv.8; <quote>securenets</quote>, durch die man den
Zugriff auf bestimmte Rechner beschränken kann.
&man.ypserv.8; versucht, beim Systemstart die Informationen
über <literal>securenets</literal> aus
<filename>/var/yp/securenets</filename> zu laden.</para>
<note>
<para>Die Datei <filename>securenets</filename> kann auch
in einem anderen Verzeichnis stehen, das mit der Option
<option>-p</option> angegeben wird. Diese Datei
enthält Einträge, die aus einer Netzwerkadresse und
einer Netzmaske bestehen, die durch Leerzeichen getrennt
werden. Kommentarzeilen beginnen mit <quote>#</quote>.
<filename>/var/yp/securnets</filename> könnte
beispielsweise so aussehen:</para>
</note>
<para>Da <acronym>RPC</acronym> ein Broadcast-basierter Dienst
ist, kann jedes System innerhalb der Domäne mittels
<application>ypbind</application> den Inhalt der
<acronym>NIS</acronym>-Maps abrufen. Um nicht autorisierte
Transaktionen zu verhindern, unterstützt &man.ypserv.8; eine
Funktion namens <quote>securenets</quote>, durch die der
Zugriff auf bestimmte Rechner beschränkt werden kann. In der
Voreinstellung sind diese Informationen in
<filename>/var/yp/securenets</filename> gespeichert, es sei
denn, &man.ypserv.8; wurde mit der Option <option>-p</option>
und einem alternativen Pfad gestartet. Diese Datei enthält
Einträge, die aus einer Netzwerkadresse und einer Netzmaske
bestehen. Kommentarzeilen beginnen mit <quote>#</quote>.
<filename>/var/yp/securnets</filename> könnte beispielsweise
so aussehen:</para>
<programlisting># allow connections from local host -- mandatory
127.0.0.1 255.255.255.255
@ -1825,43 +1804,30 @@ nis_client_enable="YES"</programlisting>
<para>Wenn &man.ypserv.8; eine Anforderung von einer zu diesen
Regeln passenden Adresse erhält, wird die Anforderung
bearbeitet. Gibt es keine passende Regel, wird die
Anforderung ignoriert und eine Warnmeldung aufgezeichnet. Wenn
<filename>/var/yp/securenets</filename> nicht vorhanden ist,
erlaubt <command>ypserv</command> Verbindungen von jedem Rechner
Anforderung ignoriert und eine Warnmeldung aufgezeichnet.
Wenn <filename>securenets</filename> nicht existiert, erlaubt
<command>ypserv</command> Verbindungen von jedem Rechner
aus.</para>
<para><command>ypserv</command> unterstützt auch das
<application>TCP-Wrapper</application>-Paket von Wietse Venema.
Mit diesem Paket kann der Administrator für
Zugriffskontrollen die Konfigurationsdateien von
<application>TCP-Wrapper</application> anstelle von
<filename>/var/yp/securenets</filename> verwenden.</para>
<para><xref linkend="tcpwrappers"/> beschreibt eine
alternative Methode zur Zugriffskontrolle. Obwohl beide
Methoden einige Sicherheit gewähren, sind sie anfällig
für <quote>IP-Spoofing</quote>-Angriffe. Der
<acronym>NIS</acronym>-Verkehr sollte daher von einer Firewall
blockiert werden.</para>
<note>
<para>Während beide Kontrollmechanismen einige Sicherheit
gewähren, beispielsweise durch privilegierte Ports, sind
sie gegenüber <quote>IP spoofing</quote>-Attacken
verwundbar. Jeder NIS-Verkehr sollte daher von einer
Firewall blockiert werden.</para>
<para>Server, die <filename>/var/yp/securenets</filename>
<para>Server, die <filename>securenets</filename>
verwenden, können Schwierigkeiten bei der Anmeldung von
<acronym>NIS</acronym>-Clients haben, die ein veraltetes TCP/IP-Subsystem
besitzen. Einige dieser TCP/IP-Subsysteme setzen alle
Rechnerbits auf Null, wenn Sie einen
<literal>Broadcast</literal> durchführen und/oder
Rechnerbits auf Null, wenn sie einen
<literal>Broadcast</literal> durchführen oder
können die Subnetzmaske nicht auslesen, wenn sie die
Broadcast-Adresse berechnen. Einige Probleme können
durch Änderungen der Clientkonfiguration behoben werden.
Andere hingegen lassen sich nur durch das Entfernen des
betreffenden Rechners aus dem Netzwerk oder den Verzicht auf
<filename>/var/yp/securenets</filename> umgehen.</para>
<para>Die Verwendung von <filename>/var/yp/securenets</filename>
auf einem Server mit einem solch veralteten
TCP/IP-Subsystem ist eine sehr schlechte Idee, die zu
einem Verlust der <acronym>NIS</acronym>-Funktionalität für
große Teile des Netzwerks führen kann.</para>
<filename>securenets</filename> umgehen.</para>
<indexterm>
<primary>TCP-Wrapper</primary>
@ -1872,53 +1838,41 @@ nis_client_enable="YES"</programlisting>
Reaktion des <acronym>NIS</acronym>-Servers. Diese zusätzliche Reaktionszeit
kann in Clientprogrammen zu Timeouts führen. Dies vor allem
in Netzwerken, die stark ausgelastet sind, oder nur über
langsame <acronym>NIS</acronym>-Server verfügen. Wenn ein oder mehrere der
Clientsysteme dieses Problem aufweisen, sollten Sie die
langsame <acronym>NIS</acronym>-Server verfügen. Wenn ein
oder mehrere Clients dieses Problem aufweisen, sollten Sie die
betreffenden Clients in <acronym>NIS</acronym>-Slaveserver umwandeln, und diese
an sich selbst binden.</para>
</note>
</sect2>
<sect2>
<sect3>
<title>Bestimmte Benutzer an der Anmeldung hindern</title>
<para>In unserem Labor gibt es den Rechner
<para>In diesem Beispiel gibt es innerhalb der
<acronym>NIS</acronym>-Domäne den Rechner
<systemitem>basie</systemitem>, der nur für Mitarbeiter der
Fakultät bestimmt ist. Wir wollen diesen Rechner nicht aus
der <acronym>NIS</acronym>-Domäne entfernen, obwohl
<filename>passwd</filename> des
<acronym>NIS</acronym>-Masterservers Benutzerkonten sowohl für
Fakultätsmitarbeiter als auch für Studenten enthält. Was
können wir also tun?</para>
Fakultät bestimmt ist. Die <filename>passwd</filename>
Datenbank des <acronym>NIS</acronym>-Masterservers enthält
Benutzerkonten sowohl für Fakultätsmitarbeiter als auch für
Studenten. Dieser Abschnitt beschreibt, wie Sie den
Mitarbeitern der Fakultät die Anmeldung am System
ermöglichen, während den Studenten die Anmeldung verweigert
wird.</para>
<para>Es gibt eine Möglichkeit, bestimmte Benutzer an der
Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
diese in der <acronym>NIS</acronym>-Datenbank vorhanden sind.
Dazu muss lediglich an diesem Rechner der Eintrag
<literal><replaceable>Benutzername</replaceable></literal> und
Dazu kann mit <command>vipw</command> der Eintrag
<literal>-<replaceable>Benutzername</replaceable></literal> und
die richtige Anzahl von Doppelpunkten an das Ende von
<filename>/etc/master.passwd</filename> gesetzt werden, wobei
<replaceable>Benutzername</replaceable> der zu blockierende
Benutzername ist. Die Zeile mit dem geblockten Benutzer muss
dabei vor der <literal>+</literal> Zeile, für zugelassene
Benutzer stehen. Diese Änderung sollte bevorzugt durch
<command>vipw</command> erledigt werden, da
<command>vipw</command> Änderungen an
<filename>/etc/master.passwd</filename> auf Plausibilität
überprüft und nach erfolgter Änderung die Passwortdatenbank
automatisch aktualisiert. Um also den Benutzer
<systemitem class="username">bill</systemitem> an der
Anmeldung am Rechner <systemitem>basie</systemitem> zu
hindern, geht man wie folgt vor:
</para>
<screen>basie&prompt.root; <userinput>vipw</userinput>
<userinput>[add -bill to the end, exit]</userinput>
vipw: rebuilding the database...
vipw: done
basie&prompt.root; <userinput>cat /etc/master.passwd</userinput>
Benutzer stehen. In diesem Beispiel wird die Anmeldung für
den Benutzer
<systemitem class="username">bill</systemitem> am Rechner
<systemitem>basie</systemitem> blockiert:</para>
<screen>basie&prompt.root; <userinput>cat /etc/master.passwd</userinput>
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
@ -1938,9 +1892,10 @@ nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
+:::::::::
basie&prompt.root;</screen>
</sect3>
</sect2>
<sect2 xml:id="netgroups">
<sect2 xml:id="network-netgroups">
<!--
<info><title>Netzgruppen verwenden</title>
<authorgroup>