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