6366 lines
254 KiB
XML
6366 lines
254 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.sgml,v 1.103 2011/12/24 15:51:18 bcr Exp $
|
|
basiert auf: 1.138
|
|
-->
|
|
|
|
<chapter id="network-servers">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Überarbeitet von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<!-- 23 July 2004 -->
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Johann</firstname>
|
|
<surname>Kois</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Netzwerkserver</title>
|
|
|
|
<sect1 id="network-servers-synopsis">
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieses Kapitel beschreibt einige der häufiger verwendeten
|
|
Netzwerkdienste auf &unix;-Systemen. Beschrieben werden
|
|
Installation und Konfiguration sowie Test und Wartung
|
|
verschiedener Netzwerkdienste. Zusätzlich sind im ganzen
|
|
Kapitel Beispielkonfigurationsdateien vorhanden, von denen Sie
|
|
sicherlich profitieren werden.</para>
|
|
|
|
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Den <application>inetd</application>-Daemon konfigurieren
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man ein Netzwerkdateisystem einrichtet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Einen <foreignphrase>Network Information
|
|
Server</foreignphrase> einrichten können, um damit
|
|
Benutzerkonten im Netzwerk zu verteilen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rechner durch Nutzung von DHCP automatisch für ein
|
|
Netzwerk konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In der Lage sein, einen <foreignphrase>Domain Name
|
|
Server</foreignphrase> einzurichten.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Den <application>Apache</application> HTTP-Server
|
|
konfigurieren können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man einen <foreignphrase>File Transfer
|
|
Protocol</foreignphrase> (FTP)-Server einrichtet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit <application>Samba</application> einen Datei- und
|
|
Druckserver für &windows;-Clients konfigurieren
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unter Nutzung des NTP-Protokolls Datum und Uhrzeit
|
|
synchronisieren sowie einen Zeitserver installieren
|
|
können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man den Standard-Protokollierungsdienst,
|
|
<command>syslogd</command>, konfiguriert, um Protokolle von
|
|
anderen Hosts zu akzeptieren.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Die Grundlagen der <filename>/etc/rc</filename>-Skripte
|
|
verstanden haben.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Mit der grundlegenden Netzwerkterminologie vertraut sein.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wissen, wie man zusätzliche Softwarepakete von
|
|
Drittherstellern installiert (<xref linkend="ports"/>).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="network-inetd">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<contrib>Aktualisiert vom </contrib>
|
|
<othername>&os; Documentation Project</othername>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Der <application>inetd</application>
|
|
<quote>Super-Server</quote></title>
|
|
|
|
<sect2 id="network-inetd-overview">
|
|
<title>Überblick</title>
|
|
|
|
<para>&man.inetd.8; wird manchmal auch als <quote>Internet
|
|
Super-Server</quote> bezeichnet, weil er Verbindungen für
|
|
mehrere Dienste verwaltet. Wenn eine Verbindung eintrifft,
|
|
bestimmt <application>inetd</application>, welches Programm
|
|
für die eingetroffene Verbindung zuständig ist,
|
|
aktiviert den entsprechenden Prozess und reicht den Socket an
|
|
ihn weiter (der Socket dient dabei als Standardein- und -ausgabe
|
|
sowie zur Fehlerbehandlung). Der Einsatz des
|
|
<application>inetd</application>-Daemons an Stelle
|
|
viele einzelner Daemonen kann auf nicht komplett ausgelasteten
|
|
Servern zu einer Verringerung der Systemlast führen.</para>
|
|
|
|
<para><application>inetd</application> wird vor allem dazu
|
|
verwendet, andere Daemonen zu aktivieren, einige Protokolle
|
|
werden aber auch direkt verwaltet. Dazu gehören
|
|
<application>chargen</application>,
|
|
<application>auth</application>, sowie
|
|
<application>daytime</application>.</para>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Konfiguration von
|
|
<application>inetd</application> durch Kommandozeilenoptionen
|
|
sowie die Konfigurationsdatei
|
|
<filename>/etc/inetd.conf</filename>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-settings">
|
|
<title>Einstellungen</title>
|
|
|
|
<para><application>inetd</application> wird durch das
|
|
&man.rc.8;-System initialisiert. Die Option
|
|
<literal>inetd_enable</literal> ist in der Voreinstellung zwar
|
|
auf <literal>NO</literal> gesetzt, sie kann aber in
|
|
Abhängigkeit von der vom Benutzer bei der Installation
|
|
gewählten Konfiguration von
|
|
<application>sysinstall</application> aktiviert werden.
|
|
Die Verwendung von</para>
|
|
|
|
<programlisting>inetd_enable="YES"</programlisting>
|
|
|
|
<para>oder</para>
|
|
|
|
<programlisting>inetd_enable="NO"</programlisting>
|
|
|
|
<para>in <filename>/etc/rc.conf</filename> deaktiviert oder startet
|
|
<application>inetd</application> beim Systemstart. Über
|
|
den Befehl</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen>
|
|
|
|
<para>können Sie die aktuelle Konfiguration
|
|
abfragen.</para>
|
|
|
|
<para>Weitere Optionen können über die Option
|
|
<literal>inetd_flags</literal> an
|
|
<application>inetd</application> übergeben werden.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-cmdline">
|
|
<title>Kommandozeilenoptionen</title>
|
|
|
|
<para>Wie die meisten anderen Server-Daemonen lässt
|
|
sich auch <application>inetd</application> über
|
|
verschiedene Optionen steuern. Die vollständige Syntax
|
|
für <application>inetd</application> lautet:</para>
|
|
|
|
<para><command>inetd</command> <option>[-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname]
|
|
[-p filename] [-R rate] [-s maximum] [configuration file]</option></para>
|
|
|
|
<para>Die verschiedenen Optionen können über die Option
|
|
<literal>inetd_flags</literal> der Datei
|
|
<filename>/etc/rc.conf</filename> an
|
|
<application>inetd</application> übergeben werden. In
|
|
der Voreinstellung hat diese Option den Wert
|
|
<literal>-wW -C 60</literal>. Durch das Setzen dieser Werte
|
|
wird das TCP-Wrapping für alle
|
|
<application>inetd</application>-Dienste aktiviert.
|
|
Zusätzlich kann eine einzelne IP-Adresse jeden Dienst
|
|
nur maximal 60 Mal pro Minute anfordern.</para>
|
|
|
|
<para>Für Einsteiger ist es erfreulich, dass diese Parameter
|
|
in der Regel nicht angepasst werden müssen. Da diese
|
|
Parameter aber dennoch von Interesse sein können
|
|
(beispielsweise, wenn Sie eine enorme Anzahl von
|
|
Verbindungsanfragen erhalten), werden einige dieser
|
|
einschränkenden Parameter im Folgenden näher
|
|
erläutert. Eine vollständige Auflistung aller
|
|
Optionen finden Sie hingegen in &man.inetd.8;.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>-c maximum</term>
|
|
|
|
<listitem>
|
|
<para>Legt die maximale Anzahl von parallen Aufrufen eines
|
|
Dienstes fest; in der Voreinstellung gibt es keine
|
|
Einschränkung. Diese Einstellung kann für jeden
|
|
Dienst durch Setzen des <option>max-child</option>
|
|
-Parameters festgelegt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-C rate</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst von einer einzelnen
|
|
IP-Adresse in einer Minute aufgerufen werden kann; in der
|
|
Voreinstellung gibt es keine Einschränkung. Dieser
|
|
Wert kann für jeden Dienst durch Setzen des
|
|
Parameters
|
|
<option>max-connections-per-ip-per-minute</option>
|
|
festgelegt werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-R rate</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst in der Minute aktiviert
|
|
werden kann; in der Voreinstellung sind dies 256
|
|
Aktivierungen pro Minute. Ein Wert von 0 erlaubt
|
|
unbegrenzt viele Aktivierungen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>-s maximum</term>
|
|
|
|
<listitem>
|
|
<para>Legt fest, wie oft ein Dienst in der Minute von einer
|
|
einzelnen IP-Adresse aus aktiviert werden kann; in der
|
|
Voreinstellung gibt es hier keine Beschränkung. Diese
|
|
Einstellung kann für jeden Dienst durch die Angabe
|
|
<option>max-child-per-ip</option> angepasst werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-conf">
|
|
<!-- XXX Dieser Abschnitt ist etwas verwirrend und sollte mal überarbeitet werden. -->
|
|
<title><filename>inetd.conf</filename></title>
|
|
|
|
<para>Die Konfiguration von <application>inetd</application>
|
|
erfolgt über die Datei
|
|
<filename>/etc/inetd.conf</filename>.</para>
|
|
|
|
<para>Wenn <filename>/etc/inetd.conf</filename> geändert
|
|
wird, kann <application>inetd</application> veranlasst werden,
|
|
seine Konfigurationsdatei neu einzulesen.</para>
|
|
|
|
<example id="network-inetd-reread">
|
|
<title>Die <application>inetd</application>-Konfiguration neu
|
|
einlesen</title>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
|
|
</example>
|
|
|
|
<para>Jede Zeile der Konfigurationsdatei beschreibt jeweils einen
|
|
Daemon. Kommentare beginnen mit einem <quote>#</quote>. Ein
|
|
Eintrag der Datei <filename>/etc/inetd.conf</filename> hat
|
|
folgenden Aufbau:</para>
|
|
|
|
<programlisting>service-name
|
|
socket-type
|
|
protocol
|
|
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
|
|
user[:group][/login-class]
|
|
server-program
|
|
server-program-arguments</programlisting>
|
|
|
|
<para>Ein Eintrag für den IPv4 verwendenden
|
|
&man.ftpd.8;-Daemon könnte so aussehen:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>service-name</term>
|
|
|
|
<listitem>
|
|
<para>Der Dienstname eines bestimmten Daemons. Er muss
|
|
einem in <filename>/etc/services</filename> aufgelisteten
|
|
Dienst entsprechen. In dieser Datei wird festgelegt,
|
|
welchen Port <application>inetd</application> abhören
|
|
muss. Wenn ein neuer Dienst erzeugt wird, muss er zuerst
|
|
in die Datei <filename>/etc/services</filename>
|
|
eingetragen werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>socket-type</term>
|
|
|
|
<listitem>
|
|
<para>Entweder <literal>stream</literal>,
|
|
<literal>dgram</literal>, <literal>raw</literal>, oder
|
|
<literal>seqpacket</literal>. <literal>stream</literal>
|
|
muss für verbindungsorientierte TCP-Daemonen
|
|
verwendet werden, während <literal>dgram</literal>
|
|
das <acronym>UDP</acronym>-Protokoll verwaltet.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>protocol</term>
|
|
|
|
<listitem>
|
|
<para>Eines der folgenden:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Protokoll</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>tcp, tcp4</entry>
|
|
|
|
<entry>TCP (IPv4)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp, udp4</entry>
|
|
|
|
<entry>UDP (IPv4)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>tcp6</entry>
|
|
|
|
<entry>TCP (IPv6)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp6</entry>
|
|
|
|
<entry>UDP (IPv6)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>tcp46</entry>
|
|
|
|
<entry>TCP sowohl unter IPv4 als auch unter IPv6</entry>
|
|
</row>
|
|
<row>
|
|
<entry>udp46</entry>
|
|
|
|
<entry>UDP sowohl unter IPv4 als auch unter IPv6</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
|
|
|
|
<listitem>
|
|
<para><option>wait|nowait</option> gibt an, ob der von
|
|
<application>inetd</application> aktivierte Daemon seinen
|
|
eigenen Socket verwalten kann oder nicht.
|
|
<option>dgram</option>-Sockets müssen die Option
|
|
<option>wait</option> verwenden, während Daemonen mit
|
|
Stream-Sockets, die normalerweise auch aus mehreren
|
|
Threads bestehen, die Option <option>nowait</option>
|
|
verwenden sollten. Die Option <option>wait</option>
|
|
gibt in der Regel mehrere Sockets an einen einzelnen
|
|
Daemon weiter, während <option>nowait</option>
|
|
für jeden neuen Socket einen Childdaemon erzeugt.</para>
|
|
|
|
<para>Die maximale Anzahl an Child-Daemonen, die
|
|
<application>inetd</application> erzeugen kann, wird durch
|
|
die Option <option>max-child</option> festgelegt. Wenn
|
|
ein bestimmter Daemon 10 Instanzen benötigt, sollte
|
|
der Wert <literal>/10</literal> hinter die Option
|
|
<option>nowait</option> gesetzt werden. Geben Sie
|
|
hingegen den Wert <literal>/0</literal> an, gibt es
|
|
keine Beschränkung.</para>
|
|
|
|
<para>Zusätzlich zu <option>max-child</option> kann
|
|
die maximale Anzahl von Verbindungen eines Rechners mit
|
|
einem bestimmten Daemon durch zwei weitere Optionen
|
|
beschränkt werden. Die Option
|
|
<option>max-connections-per-ip-per-minute</option>
|
|
legt die maximale Anzahl von Verbindungsversuchen fest,
|
|
die von einer bestimmten IP-Adresse aus unternommen werden
|
|
können. Ein Wert von zehn würde die maximale
|
|
Anzahl von Verbindungsversuchen einer IP-Adresse mit einem
|
|
bestimmten Dienst auf zehn Versuche in der Minute
|
|
beschränken. Durch die Angabe der Option
|
|
<option>max-child-per-ip</option> können Sie hingegen
|
|
festlegen, wie viele Child-Daemonen von einer bestimmten
|
|
IP-Adresse aus gestartet werden können. Durch diese
|
|
Optionen lassen sich ein absichtlicher oder unabsichtlicher
|
|
Ressourcenverbrauch sowie die Auswirkungen eines
|
|
<literal>Denial of Service (DoS)</literal>-Angriffs auf
|
|
einen Rechner begrenzen.</para>
|
|
|
|
<para>Sie müssen hier entweder <option>wait</option>
|
|
oder <option>nowait</option> angeben. Die Angabe von
|
|
<option>max-child</option>,
|
|
<option>max-connections-per-ip-per-minute</option> und
|
|
<option>max-child-per-ip</option> ist hingegen
|
|
optional.</para>
|
|
|
|
<para>Ein multithread-Daemon vom Streamtyp ohne die Optionen
|
|
<option>max-child</option>,
|
|
<option>max-connections-per-ip-per-minute</option> oder
|
|
<option>max-child-per-ip</option> sieht so aus:
|
|
<literal>nowait</literal></para>
|
|
|
|
<para>Der gleiche Daemon mit einer maximal möglichen
|
|
Anzahl von 10 parallelen Daemonen würde so aussehen:
|
|
<literal>nowait/10</literal></para>
|
|
|
|
<para>Wird zusätzlich die Anzahl der möglichen
|
|
Verbindungen pro Minute für jede IP-Adresse auf
|
|
20 sowie die mögliche Gesamtzahl von Childdaemonen
|
|
auf 10 begrenzt, so sieht der Eintrag so aus:
|
|
<literal>nowait/10/20</literal></para>
|
|
|
|
<para>All diese Optionen werden vom
|
|
&man.fingerd.8;-Daemon bereits in der Voreinstellung
|
|
verwendet:</para>
|
|
|
|
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
|
|
|
|
<para>Will man die maximale Anzahl von Child-Daemonen auf
|
|
100 beschränken, wobei von jeder IP-Adresse aus
|
|
maximal 5 Child-Daemonen gestartet werden dürfen,
|
|
verwendet man den folgenden Eintrag:
|
|
<literal>nowait/100/0/5</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>user</term>
|
|
|
|
<listitem>
|
|
<para>Der Benutzername, unter dem der jeweilige Daemon
|
|
laufen soll. Meistens laufen Daemonen als User
|
|
<username>root</username>. Aus Sicherheitsgründen
|
|
laufen einige Server aber auch als User
|
|
<username>daemon</username>, oder als am wenigsten
|
|
privilegierter User <username>nobody</username>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program</term>
|
|
|
|
<listitem>
|
|
<para>Der vollständige Pfad des Daemons, der eine
|
|
Verbindung entgegennimmt. Wird der Daemon von
|
|
<application>inetd</application> intern bereitgestellt,
|
|
sollte die Option <option>internal</option> verwendet
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>server-program-arguments</term>
|
|
|
|
<listitem>
|
|
<para>Dieser Eintrag legt (gemeinsam mit
|
|
<option>server-program</option> und beginnend mit
|
|
<literal>argv[0]</literal>), die Argumente fest, die bei
|
|
der Aktivierung an den Daemon übergeben werden.
|
|
Wenn die Anweisung auf der Kommandozeile also
|
|
<command>mydaemon -d</command> lautet, wäre
|
|
<literal>mydaemon -d</literal> auch der Wert der Option
|
|
<option>server program arguments</option>. Wenn es sich
|
|
beim Daemon um einen internen Dienst handelt, sollte
|
|
wiederum die Option <option>internal</option> verwendet
|
|
werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-security">
|
|
<title>Sicherheit</title>
|
|
|
|
<para>Abhängig von der bei der Installation festgelegten
|
|
Konfiguration werden viele der von
|
|
<application>inetd</application> verwalteten Dienste automatisch
|
|
aktiviert! Wenn Sie einen bestimmten Daemon nicht
|
|
benötigen, sollten Sie ihn deaktivieren! Dazu kommentieren
|
|
Sie den jeweiligen Daemon in <filename>/etc/inetd.conf</filename>
|
|
mit einem <quote>#</quote> aus, um danach die
|
|
<link linkend="network-inetd-reread">inetd-Konfiguration neu
|
|
einzulesen</link>. Einige Daemonen, zum Beispiel
|
|
<application>fingerd</application>, sollten generell deaktiviert
|
|
werden, da sie zu viele Informationen an einen potentiellen
|
|
Angreifer liefern.</para>
|
|
|
|
<para>Einige Daemonen haben unsichere Einstellungen, etwa
|
|
große oder nichtexistierende Timeouts für
|
|
Verbindungsversuche, die es einem Angreifer erlauben, über
|
|
lange Zeit langsam Verbindungen zu einem bestimmten Daemon
|
|
aufzubauen, um dessen verfügbare Ressourcen zu verbrauchen.
|
|
Es ist daher eine gute Idee, diese Daemonen durch die Optionen
|
|
<option>max-connections-per-ip-per-minute</option>,
|
|
<option>max-child</option> sowie
|
|
<option>max-child-per-ip</option> zu beschränken, wenn
|
|
Sie sehr viele Verbindungsversuche mit Ihrem System
|
|
registrieren.</para>
|
|
|
|
<para>TCP-Wrapping ist in der Voreinstellung aktiviert. Lesen Sie
|
|
&man.hosts.access.5;, wenn Sie weitere Informationen zum
|
|
Setzen von TCP-Beschränkungen für verschiedene von
|
|
<application>inetd</application> aktivierte Daemonen
|
|
benötigen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-inetd-misc">
|
|
<title>Verschiedenes</title>
|
|
|
|
<para>Bei <application>daytime</application>,
|
|
<application>time</application>,
|
|
<application>echo</application>,
|
|
<application>discard</application>,
|
|
<application>chargen</application>, und
|
|
<application>auth</application> handelt es sich um intern
|
|
von <application>inetd</application> bereitgestellte Dienste.
|
|
</para>
|
|
|
|
<para>Der <application>auth</application>-Dienst bietet
|
|
Identifizierungsdienste über das Netzwerk
|
|
an und ist bis zu einem bestimmten Grad konfigurierbar,
|
|
während die meisten anderen Dienste nur aktiviert
|
|
oder deaktiviert werden können.</para>
|
|
|
|
<para>Eine ausführliche Beschreibung finden Sie in
|
|
&man.inetd.8;.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-nfs">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Reorganisiert und erweitert von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Bill</firstname>
|
|
<surname>Swingle</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>NFS – Network File System</title>
|
|
|
|
<indexterm><primary>NFS</primary></indexterm>
|
|
|
|
<para>Eines der vielen von FreeBSD unterstützten Dateisysteme
|
|
ist das Netzwerkdateisystem, das auch als <acronym role="Network
|
|
File System">NFS</acronym>
|
|
bekannt ist. <acronym role="Network File System">NFS</acronym>
|
|
ermöglicht es einem System, Dateien und Verzeichnisse
|
|
über ein Netzwerk mit anderen zu teilen. Über
|
|
<acronym role="Network File System">NFS</acronym> können
|
|
Benutzer und Programme auf Daten entfernter Systeme zugreifen, und
|
|
zwar genauso, wie wenn es sich um lokale Daten handeln würde.
|
|
</para>
|
|
|
|
<para>Einige der wichtigsten Vorteile von <acronym>NFS</acronym>
|
|
sind:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Lokale Arbeitsstationen benötigen weniger
|
|
Plattenplatz, da gemeinsam benutzte Daten nur auf einem
|
|
einzigen Rechner vorhanden sind. Alle anderen Stationen
|
|
greifen über das Netzwerk auf diese Daten zu.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Benutzer benötigen nur noch ein zentrales
|
|
Heimatverzeichnis auf einem <acronym>NFS</acronym>-Server.
|
|
Diese Verzeichnisse sind über das Netzwerk auf allen
|
|
Stationen verfügbar.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Speichergeräte wie Disketten-, CD-ROM- oder
|
|
&iomegazip;-Laufwerke können über das Netzwerk von
|
|
anderen Arbeitstationen genutzt werden. Dadurch sind für
|
|
das gesamte Netzwerk deutlich weniger Speichergeräte
|
|
nötig.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert <acronym>NFS</acronym>?</title>
|
|
|
|
<para><acronym>NFS</acronym> besteht aus zwei Hauptteilen: Einem
|
|
Server und einem oder mehreren Clients. Der Client greift
|
|
über das Netzwerk auf die Daten zu, die auf dem Server
|
|
gespeichert sind. Damit dies korrekt funktioniert, müssen
|
|
einige Prozesse konfiguriert und gestartet werden:</para>
|
|
|
|
<para>Der Server benötigt folgende Daemonen:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Server</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Dateiserver</primary>
|
|
<secondary>Unix-Clients</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>rpcbind</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>mountd</application></primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary><application>nfsd</application></primary>
|
|
</indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="3*"/>
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Daemon</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><application>nfsd</application></entry>
|
|
|
|
<entry>Der <acronym>NFS</acronym>-Daemon. Er bearbeitet
|
|
Anfragen der <acronym>NFS</acronym>-Clients.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>mountd</application></entry>
|
|
|
|
<entry>Der <acronym>NFS</acronym>-Mount-Daemon. Er
|
|
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
|
|
weitergibt.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpcbind</application></entry>
|
|
|
|
<entry> Der Portmapper-Daemon. Durch ihn erkennen die
|
|
<acronym>NFS</acronym>-Clients, welchen Port der
|
|
<acronym>NFS</acronym>-Server verwendet.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Der Client kann ebenfalls einen Daemon aufrufen, und zwar
|
|
den <application>nfsiod</application>-Daemon. Der
|
|
<application>nfsiod</application>-Daemon bearbeitet Anfragen vom
|
|
<acronym>NFS</acronym>-Server. Er ist optional und verbessert
|
|
die Leistung des Netzwerks. Für eine normale und korrekte
|
|
Arbeit ist er allerdings nicht erforderlich. Mehr erfahren
|
|
Sie in der Hilfeseite &man.nfsiod.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-configuring-nfs">
|
|
<title><acronym>NFS</acronym> einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>einrichten</secondary>
|
|
</indexterm>
|
|
|
|
<para><acronym>NFS</acronym> lässt sich leicht
|
|
einrichten. Die nötigen Prozesse werden durch einige
|
|
Änderungen in <filename>/etc/rc.conf</filename> bei
|
|
jedem Systemstart gestartet.</para>
|
|
|
|
<para>Stellen Sie sicher, dass auf dem
|
|
<acronym>NFS</acronym>-Server folgende Optionen in der Datei
|
|
<filename>/etc/rc.conf</filename> gesetzt sind:</para>
|
|
|
|
<programlisting>rpcbind_enable="YES"
|
|
nfs_server_enable="YES"
|
|
mountd_flags="-r"</programlisting>
|
|
|
|
<para><application>mountd</application> läuft automatisch,
|
|
wenn der <acronym>NFS</acronym>-Server aktiviert ist.</para>
|
|
|
|
<para>Auf dem Client muss in <filename>/etc/rc.conf</filename>
|
|
folgende Option gesetzt sein:</para>
|
|
|
|
<programlisting>nfs_client_enable="YES"</programlisting>
|
|
|
|
<para><filename>/etc/exports</filename> legt fest, welche
|
|
Dateisysteme <acronym>NFS</acronym> exportieren (manchmal auch
|
|
als <quote>teilen</quote> bezeichnet) soll. Jede Zeile in
|
|
<filename>/etc/exports</filename> legt ein Dateisystem sowie
|
|
die Arbeitsstationen, die darauf Zugriff haben, fest.
|
|
Außerdem ist es möglich, Zugriffsoptionen
|
|
festzulegen. Es gibt viele verschiedene Optionen, allerdings
|
|
werden hier nur einige von ihnen erwähnt. Wenn Sie
|
|
Informationen zu weiteren Optionen benötigen, lesen Sie
|
|
&man.exports.5;.</para>
|
|
|
|
<para>Nun folgen einige Beispieleinträge für
|
|
<filename>/etc/exports</filename>:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Export von Dateisystemen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die folgenden Beispiele geben Ihnen Anhaltspunkte zum
|
|
Exportieren von Dateisystemen, obwohl diese Einstellungen
|
|
natürlich von Ihrer Arbeitsumgebung und Ihrer
|
|
Netzwerkkonfiguration abhängen. Das nächste
|
|
Beispiel exportiert das Verzeichnis <filename>/cdrom</filename>
|
|
für drei Rechner, die sich in derselben Domäne wie
|
|
der Server befinden oder für die entsprechende
|
|
Einträge in <filename>/etc/hosts</filename> existieren.
|
|
Die Option <option>-ro</option> kennzeichnet das
|
|
exportierte Dateisystem als schreibgeschützt. Durch dieses
|
|
Flag ist das entfernte System nicht in der Lage, das exportierte
|
|
Dateisystem zu verändern.</para>
|
|
|
|
<programlisting>/cdrom -ro host1 host2 host3</programlisting>
|
|
|
|
<para>Die nächste Zeile exportiert <filename>/home</filename>
|
|
auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung
|
|
ist nützlich, wenn Sie über ein privates Netzwerk ohne
|
|
<acronym>DNS</acronym>-Server verfügen. Optional
|
|
könnten interne Rechnernamen auch in
|
|
<filename>/etc/hosts</filename> konfiguriert werden.
|
|
Benötigen Sie hierzu weitere Informationen, lesen Sie bitte
|
|
&man.hosts.5;. Durch das Flag <option>-alldirs</option> wird es
|
|
möglich, auch Unterverzeichnisse als Mountpunkte
|
|
festzulegen. Dies bedeutet aber nicht, dass alle
|
|
Unterverzeichnisse eingehängt werden, vielmehr wird es dem
|
|
Client ermöglicht, nur diejenigen Verzeichnisse
|
|
einzuhängen, die auch benötigt werden.</para>
|
|
|
|
<programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
|
|
|
|
<para>Die nächste Zeile exportiert <filename>/a</filename>,
|
|
damit Clients von verschiedenen Domänen auf das Dateisystem
|
|
zugreifen können. Das <option>-maproot=root</option>-Flag
|
|
erlaubt es dem Benutzer <username>root</username> des entfernten
|
|
Systems, als <username>root</username> auf das exportierte
|
|
Dateisystem zu schreiben. Wenn dieses Flag nicht gesetzt ist,
|
|
kann selbst <username>root</username> nicht auf das exportierte
|
|
Dateisystem schreiben.</para>
|
|
|
|
<programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
|
|
|
|
<para>Damit ein Client auf ein exportiertes Dateisystem zugreifen
|
|
kann, muss ihm dies explizit gestattet werden. Stellen Sie also
|
|
sicher, dass der Client in <filename>/etc/exports</filename>
|
|
aufgeführt wird.</para>
|
|
|
|
<para>Jede Zeile in <filename>/etc/exports</filename> entspricht
|
|
der Exportinformation für ein Dateisystem auf einen
|
|
Rechner. Ein entfernter Rechner kann für jedes Dateisystem
|
|
nur einmal festgelegt werden, und kann auch nur einen
|
|
Standardeintrag haben. Nehmen wir an, dass
|
|
<filename>/usr</filename> ein einziges Dateisystem ist. Dann
|
|
wären folgende Zeilen ungültig:</para>
|
|
|
|
<programlisting>#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist
|
|
/usr/src client
|
|
/usr/ports client</programlisting>
|
|
|
|
<para>Das Dateisystem <filename>/usr</filename> wird hier zweimal
|
|
auf den selben Rechner (<hostid>client</hostid>)
|
|
exportiert. Dies ist aber nicht zulässig. Der korrekte
|
|
Eintrag sieht daher so aus:</para>
|
|
|
|
<programlisting>/usr/src /usr/ports client</programlisting>
|
|
|
|
<para>Die Eigenschaften eines auf einen anderen Rechner
|
|
exportierten Dateisystems müssen alle in einer Zeile
|
|
stehen. Zeilen, in denen kein Rechner festgelegt wird, werden
|
|
als einzelner Rechner behandelt. Dies schränkt die
|
|
Möglichkeiten zum Export von Dateisystemen ein, für
|
|
die meisten Anwender ist dies aber kein Problem.</para>
|
|
|
|
<para>Eine gültige Exportliste, in der
|
|
<filename>/usr</filename> und <filename>/exports</filename>
|
|
lokale Dateisysteme sind, sieht so aus:</para>
|
|
|
|
<programlisting># Export src and ports to client01 and client02, but only
|
|
# client01 has root privileges on it
|
|
/usr/src /usr/ports -maproot=root client01
|
|
/usr/src /usr/ports client02
|
|
# The client machines have root and can mount anywhere
|
|
# on /exports. Anyone in the world can mount /exports/obj read-only
|
|
/exports -alldirs -maproot=root client01 client02
|
|
/exports/obj -ro</programlisting>
|
|
|
|
<para>Der Daemon <application>mountd</application> muss
|
|
die Datei <filename>/etc/exports</filename> nach jeder
|
|
Änderung neu einlesen, damit die Änderungen
|
|
wirksam werden. Dies kann durch das Senden des
|
|
HUP-Signals an den <command>mountd</command>-Prozess
|
|
erfolgen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
|
|
|
|
<para>Alternativ können Sie das
|
|
<command>mountd</command>-&man.rc.8;-Skript auch mit dem
|
|
passenden Parameter aufrufen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
|
|
|
|
<para>Lesen Sie bitte <xref linkend="configtuning-rcd"/>
|
|
des Handbuchs für Informationen zum Einsatz der
|
|
rc-Skripte.</para>
|
|
|
|
<para>Eine weitere Möglichkeit, diese Änderungen zu
|
|
übernehmen, wäre der Neustart des Systems. Dies ist
|
|
allerdings nicht nötig. Wenn Sie die folgenden
|
|
Befehle als <username>root</username> ausführen, sollte
|
|
alles korrekt gestartet werden.</para>
|
|
|
|
<para>Auf dem <acronym>NFS</acronym>-Server:</para>
|
|
|
|
<screen>&prompt.root; <userinput>rpcbind</userinput>
|
|
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
|
|
&prompt.root; <userinput>mountd -r</userinput></screen>
|
|
|
|
<para>Auf dem <acronym>NFS</acronym>-Client:</para>
|
|
|
|
<screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
|
|
|
|
<para>Nun sollte alles bereit sein, um ein entferntes Dateisystem
|
|
einhängen zu können. In unseren Beispielen nennen wir
|
|
den Server <hostid>server</hostid>, den Client
|
|
<hostid>client</hostid>. Wenn Sie ein entferntes Dateisystem
|
|
nur zeitweise einhängen wollen, oder nur Ihre Konfiguration
|
|
testen möchten, führen Sie auf dem Client als
|
|
<username>root</username> einen Befehl ähnlich dem
|
|
folgenden aus:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Dateisysteme einhängen</secondary>
|
|
</indexterm>
|
|
|
|
<screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen>
|
|
|
|
<para>Dadurch wird das Verzeichnis <filename>/home</filename> des
|
|
Servers auf dem Client unter <filename>/mnt</filename>
|
|
eingehängt. Wenn alles korrekt konfiguriert wurde, sehen
|
|
Sie auf dem Client im Verzeichnis <filename>/mnt</filename> alle
|
|
Dateien des Servers.</para>
|
|
|
|
<para>Wenn Sie ein entferntes Dateisystem nach jedem Systemstart
|
|
automatisch einhängen wollen, fügen Sie das
|
|
Dateisystem in <filename>/etc/fstab</filename> ein. Dazu ein
|
|
Beispiel:</para>
|
|
|
|
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
|
|
|
|
<para>Eine Beschreibung aller Optionen enthält
|
|
die Hilfeseite &man.fstab.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Dateien sperren (<foreignphrase>Locking</foreignphrase>)</title>
|
|
|
|
<para>Einige Anwendungen (beispielsweise
|
|
<application>mutt</application>) erfordern die Sperrung von
|
|
Dateien, damit sie korrekt arbeiten. Verwenden Sie
|
|
<acronym>NFS</acronym>, so können Sie für die
|
|
Sperrung von Dateien <application>rpc.lockd</application>
|
|
einsetzen. Um diesen Daemon zu aktivieren, müssen Sie
|
|
in <filename>/etc/rc.conf</filename> (sowohl auf Client- als
|
|
auch auf Serverseite) folgende Zeilen aufnehmen (wobei
|
|
vorausgesetzt wird, dasss <acronym>NFS</acronym> auf beiden
|
|
Systemen bereits konfiguriert ist):</para>
|
|
|
|
<programlisting>rpc_lockd_enable="YES"
|
|
rpc_statd_enable="YES"</programlisting>
|
|
|
|
<para>Danach starten Sie die Anwendung zur Verwaltung der
|
|
Dateisperren durch folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput>
|
|
&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen>
|
|
|
|
<para>Benötigen Sie keine echten Dateisperren zwischen den
|
|
<acronym>NFS</acronym>-Clients und dem
|
|
<acronym>NFS</acronym>-Server, können Sie den
|
|
<acronym>NFS</acronym>-Client durch die Übergabe der
|
|
Option <option>-L</option> an &man.mount.nfs.8; zu einer lokalen
|
|
Sperrung von Dateien zwingen. Lesen Sie dazu auch die
|
|
Manualpage &man.mount.nfs.8;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Praktische Anwendungen</title>
|
|
|
|
<para><acronym>NFS</acronym> ist in vielen Situationen
|
|
nützlich. Einige Anwendungsbereiche finden Sie in der
|
|
folgenden Liste:</para>
|
|
|
|
<indexterm>
|
|
<primary>NFS</primary>
|
|
<secondary>Anwendungsbeispiele</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Mehrere Maschinen können sich ein CD-ROM-Laufwerk
|
|
oder andere Medien teilen. Dies ist billiger und
|
|
außerdem praktischer, um Programme auf mehreren
|
|
Rechnern zu installieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In größeren Netzwerken ist es praktisch,
|
|
einen zentralen <acronym>NFS</acronym>-Server einzurichten,
|
|
auf dem die Heimatverzeichnisse der Benutzer gespeichert
|
|
werden. Diese Heimatverzeichnisse werden über das
|
|
Netzwerk exportiert. Dadurch haben die Benutzer immer das
|
|
gleiche Heimatverzeichnis zur Verfügung,
|
|
unabhängig davon, an welchem Arbeitsplatz sie sich
|
|
anmelden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Verschiedene Rechner können auf ein gemeinsames
|
|
Verzeichnis <filename>/usr/ports/distfiles</filename>
|
|
zugreifen. Wenn Sie nun einen Port auf mehreren Rechnern
|
|
installieren wollen, greifen Sie einfach auf dieses
|
|
Verzeichnis zu, ohne die Quelldateien auf jede Maschine
|
|
zu kopieren.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="network-amd">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Wylie</firstname>
|
|
<surname>Stilwell</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Überarbeitet von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect2info>
|
|
|
|
<title><application>AMD</application></title>
|
|
|
|
<indexterm><primary>amd</primary></indexterm>
|
|
<indexterm><primary>Automatic Mounter Daemon</primary></indexterm>
|
|
|
|
<para>&man.amd.8; (Automatic Mounter Daemon) hängt ein
|
|
entferntes Dateisystem automatisch ein,
|
|
wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem
|
|
zugegriffen wird. Dateisysteme, die über einen gewissen
|
|
Zeitraum inaktiv sind, werden von <application>amd</application>
|
|
automatisch abgehängt.
|
|
<application>amd</application> ist eine einfache
|
|
Alternative zum dauerhaften Einhängen von Dateisystemen
|
|
in <filename>/etc/fstab</filename>.</para>
|
|
|
|
<para>In der Voreinstellung stellt <application>amd</application>
|
|
die Verzeichnisse <filename>/host</filename> und
|
|
<filename>/net</filename> als NFS-Server bereit. Wenn auf eine
|
|
Datei in diesen Verzeichnissen zugegriffen wird, sucht
|
|
<application>amd</application> den entsprechenden Mountpunkt
|
|
und hängt das Dateisystem automatisch ein.
|
|
<filename>/net</filename> wird zum Einhängen von
|
|
exportierten Dateisystemen von einer IP-Adresse verwendet,
|
|
während <filename>/host</filename> zum Einhängen
|
|
von exportierten Dateisystemen eines durch seinen Namen
|
|
festgelegten Rechners dient.</para>
|
|
|
|
<para>Ein Zugriff auf eine Datei in
|
|
<filename>/host/foobar/usr</filename> würde
|
|
<application>amd</application> veranlassen,
|
|
das von <hostid>foobar</hostid> exportierte Dateisystem
|
|
<filename>/usr</filename> einzuhängen.</para>
|
|
|
|
<example>
|
|
<title>Ein exportiertes Dateisystem mit
|
|
<application>amd</application> in den Verzeichnisbaum
|
|
einhängen</title>
|
|
|
|
<para>Sie können sich die verfügbaren Mountpunkte
|
|
eines entfernten Rechners mit <command>showmount</command>
|
|
ansehen. Wollen Sie sich die Mountpunkte des Rechners
|
|
<hostid>foobar</hostid> ansehen, so verwenden Sie:</para>
|
|
|
|
<screen>&prompt.user; <userinput>showmount -e foobar</userinput>
|
|
Exports list on foobar:
|
|
/usr 10.10.10.0
|
|
/a 10.10.10.0
|
|
&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen>
|
|
</example>
|
|
|
|
<para>Wie Sie an diesem Beispiel erkennen können, zeigt
|
|
<command>showmount</command> <filename>/usr</filename>
|
|
als exportiertes Dateisystem an. Wenn man in das Verzeichnis
|
|
<filename>/host/foobar/usr</filename> wechselt, versucht
|
|
<application>amd</application> den Rechnernamen
|
|
<hostid>foobar</hostid> aufzulösen und den gewünschten
|
|
Export in den Verzeichnisbaum einzuhängen.</para>
|
|
|
|
<para><application>amd</application> kann durch das Einfügen
|
|
der folgenden Zeile in <filename>/etc/rc.conf</filename>
|
|
automatisch gestartet werden:</para>
|
|
|
|
<programlisting>amd_enable="YES"</programlisting>
|
|
|
|
<para>Mit der Option <varname>amd_flags</varname> kann
|
|
<application>amd</application> angepasst werden.
|
|
Die Voreinstellung für <varname>amd_flags</varname> sieht
|
|
so aus:</para>
|
|
|
|
<programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>
|
|
|
|
<para><filename>/etc/amd.map</filename> legt die Standardoptionen
|
|
fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum
|
|
eingehängt werden. <filename>/etc/amd.conf</filename>
|
|
hingegen legt einige der erweiterten Optionen von
|
|
<application>amd</application> fest.</para>
|
|
|
|
<para>Weitere Informationen finden Sie in den Hilfeseiten
|
|
&man.amd.8; und &man.amd.conf.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-nfs-integration">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>John</firstname>
|
|
<surname>Lind</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect2info>
|
|
|
|
<title>Integrationsprobleme mit anderen Systemen</title>
|
|
|
|
<para>Bestimmte ISA-Ethernetadapter haben Beschränkungen, die
|
|
zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
|
|
führen können. Es handelt sich dabei nicht um ein
|
|
FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon
|
|
ebenfalls betroffen.</para>
|
|
|
|
<para>Das Problem tritt fast ausschließlich dann auf, wenn
|
|
(FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
|
|
wie Systemen von Silicon Graphics, Inc. oder
|
|
Sun Microsystems, Inc. Das Einhängen via NFS
|
|
funktioniert problemlos, auch einige Dateioperationen
|
|
können erfolgreich sein. Plötzlich aber wird der
|
|
Server nicht mehr auf den Client reagieren, obwohl Anfragen von
|
|
anderen Rechnern weiterhin bearbeitet werden. Dieses
|
|
Problem betrifft stets den Client, egal ob es sich beim Client
|
|
um das FreeBSD-System oder den Hochleistungsrechner handelt.
|
|
Auf vielen Systemen gibt es keine Möglichkeit mehr, den
|
|
Client ordnungsgemäß zu beenden. Die einzige
|
|
Lösung ist es oft, den Rechner neu zu starten, da dieses
|
|
NFS-Problem nicht mehr behoben werden kann.</para>
|
|
|
|
<para>Die <quote>korrekte</quote> Lösung für dieses
|
|
Problem ist es, sich eine schnellere Ethernetkarte für
|
|
FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und
|
|
meist zufriedenstellende Lösung, um dieses Problem zu
|
|
umgehen. Wenn es sich beim FreeBSD-System um den
|
|
<emphasis>Server</emphasis> handelt, verwenden Sie beim
|
|
Einhängen in den Verzeichnisbaum auf der Clientseite
|
|
zusätzlich die Option <option>-w=1024</option> . Wenn es
|
|
sich beim FreeBSD-System um den <emphasis>Client</emphasis>
|
|
handelt, dann hängen Sie das NFS-Dateisystem mit der
|
|
zusätzlichen Option <option>-r=1024</option> ein.
|
|
Diese Optionen können auf der Clientseite auch durch
|
|
das vierte Feld der Einträge in
|
|
<filename>/etc/fstab</filename> festgelegt werden, damit die
|
|
Dateisysteme automatisch eingehängt werden. Um die
|
|
Dateisysteme manuell einzuhängen, verwendet man bei
|
|
&man.mount.8; zusätzlich die Option
|
|
<option>-o</option>.</para>
|
|
|
|
<para>Es gibt ein anderes Problem, das oft mit diesem verwechselt
|
|
wird. Dieses andere Problem tritt auf, wenn sich über NFS
|
|
verbundene Server und Clients in verschiedenen Netzwerken
|
|
befinden. Wenn dies der Fall ist, stellen Sie
|
|
<emphasis>sicher</emphasis>, dass Ihre Router die
|
|
nötigen <acronym>UDP</acronym>-Informationen weiterleiten,
|
|
oder Sie werden nirgends hingelangen, egal was Sie machen.</para>
|
|
|
|
<para>In den folgenden Beispielen ist <hostid>fastws</hostid> der
|
|
Name des Hochleistungsrechners (bzw. dessen Schnittstelle),
|
|
<hostid>freebox</hostid> hingegen ist der Name des
|
|
FreeBSD-Systems, das über eine Netzkarte mit geringer
|
|
Leistung verfügt. <filename>/sharedfs</filename> ist das
|
|
exportierte NFS -Dateisystem (lesen Sie dazu auch
|
|
&man.exports.5;). Bei <filename>/project</filename> handelt es
|
|
sich um den Mountpunkt, an dem das exportierte Dateisystem auf
|
|
der Clientseite eingehängt wird. In allen Fällen
|
|
können zusätzliche Optionen, wie z.B.
|
|
<option>hard</option>, <option>soft</option> oder
|
|
<option>bg</option> wünschenswert sein.</para>
|
|
|
|
<para>FreeBSD als Client (eingetragen in
|
|
<filename>/etc/fstab</filename> auf <hostid>freebox</hostid>):
|
|
</para>
|
|
|
|
<programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
|
|
|
|
<para>Manuelles Einhängen auf
|
|
<hostid>freebox</hostid>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
|
|
|
|
<para>&os; als Server (eingetragen in
|
|
<filename>/etc/fstab</filename> auf <hostid>fastws</hostid>):
|
|
</para>
|
|
|
|
<programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
|
|
|
|
<para>Manuelles Einhängen auf <hostid>fastws</hostid>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
|
|
|
|
<para>Nahezu alle 16-bit Ethernetadapter erlauben Operationen
|
|
ohne obengenannte Einschränkungen auf die Lese- oder
|
|
Schreibgröße.</para>
|
|
|
|
<para>Für alle technisch Interessierten wird nun beschrieben,
|
|
was passiert, wenn dieser Fehler auftritt, und warum er
|
|
irreversibel ist. NFS arbeitet üblicherweise mit einer
|
|
<quote>Blockgröße</quote> von 8 kByte (obwohl
|
|
es kleinere Fragmente zulassen würde). Da die maximale
|
|
Rahmengröße von Ethernet 1500 Bytes
|
|
beträgt, wird der NFS-<quote>Block</quote> in einzelne
|
|
Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine
|
|
Einheit handelt, die auch als Einheit empfangen, verarbeitet
|
|
und <emphasis>bestätigt</emphasis> werden muss. Der
|
|
Hochleistungsrechner verschickt die Pakete, aus denen der
|
|
NFS-Block besteht, so eng hintereinander, wie es der Standard
|
|
erlaubt. Auf der anderen Seite (auf der sich die langsamere
|
|
Netzkarte befindet), überschreiben die späteren
|
|
Pakete ihre Vorgänger, bevor diese vom System verarbeitet
|
|
werden (Überlauf!). Dies hat zur Folge, dass der NFS-Block
|
|
nicht mehr rekonstruiert und bestätigt werden kann. Als
|
|
Folge davon glaubt der Hochleistungsrechner, dass der andere
|
|
Rechner nicht erreichbar ist (Timeout!) und versucht die
|
|
Sendung zu wiederholen. Allerdings wird wiederum der komplette
|
|
NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt,
|
|
und zwar immer wieder (oder bis zum Systemneustart).</para>
|
|
|
|
<para>Indem wir die Einheitengröße unter der maximalen
|
|
Größe der Ethernetpakete halten, können wir
|
|
sicherstellen, dass jedes vollständig erhaltene
|
|
Ethernetpaket individuell angesprochen werden kann und vermeiden
|
|
die Blockierung des Systems.</para>
|
|
|
|
<para>Überläufe können zwar nach wie vor auftreten,
|
|
wenn ein Hochleistungsrechner Daten auf ein PC-System
|
|
transferiert. Durch die besseren (und schnelleren) Netzkarten
|
|
treten solche Überläufe allerdings nicht mehr
|
|
<emphasis>zwingend</emphasis> auf, wenn
|
|
NFS-<quote>Einheiten</quote> übertragen werden. Tritt nun
|
|
ein Überlauf auf, wird die betroffene Einheit erneut
|
|
verschickt, und es besteht eine gute Chance, dass sie nun
|
|
erhalten, verarbeitet und bestätigt werden kann.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-nis">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Bill</firstname>
|
|
<surname>Swingle</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Eric</firstname>
|
|
<surname>Ogren</surname>
|
|
<contrib>Erweitert von </contrib>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Udo</firstname>
|
|
<surname>Erdelhoff</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>NIS/YP – Network Information Service</title>
|
|
|
|
<sect2>
|
|
<title>Was ist NIS?</title>
|
|
|
|
<indexterm><primary>NIS</primary></indexterm>
|
|
<indexterm><primary>Solaris</primary></indexterm>
|
|
<indexterm><primary>HP-UX</primary></indexterm>
|
|
<indexterm><primary>AIX</primary></indexterm>
|
|
<indexterm><primary>Linux</primary></indexterm>
|
|
<indexterm><primary>NetBSD</primary></indexterm>
|
|
<indexterm><primary>OpenBSD</primary></indexterm>
|
|
|
|
<para><acronym role="Network Information Service">NIS</acronym>
|
|
wurde von Sun Microsystems entwickelt, um &unix;-Systeme
|
|
(ursprünglich &sunos;) zentral verwalten zu können.
|
|
Mittlerweile hat es sich zu einem Industriestandard entwickelt,
|
|
der von allen wichtigen &unix;-Systemen (&solaris;, HP-UX,
|
|
&aix;, Linux, NetBSD, OpenBSD, FreeBSD und anderen)
|
|
unterstützt wird.</para>
|
|
|
|
<indexterm>
|
|
<primary>yellow pages</primary>
|
|
<see>NIS</see>
|
|
</indexterm>
|
|
|
|
<para><acronym role="Network Information Service">NIS</acronym> war
|
|
ursprünglich als <emphasis>Yellow Pages</emphasis> bekannt,
|
|
aus markenrechtlichen Gründen wurde der Name aber
|
|
geändert. Die alte Bezeichnung (sowie die Abkürzung YP)
|
|
wird aber nach wie vor häufig verwendet.</para>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domänen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Bei NIS handelt es sich um ein RPC-basiertes
|
|
Client/Server-System. Eine Gruppe von Rechnern greift dabei
|
|
innerhalb einer NIS-Domäne auf gemeinsame
|
|
Konfigurationsdateien zu. Ein Systemadministrator wird dadurch
|
|
in die Lage versetzt, NIS-Clients mit minimalem Aufwand
|
|
einzurichten, sowie Änderungen an der Systemkonfiguration
|
|
von einem zentralen Ort aus durchzuführen.</para>
|
|
|
|
<indexterm>
|
|
<primary>Windows NT</primary>
|
|
</indexterm>
|
|
|
|
<para>Die Funktion entspricht dem Domänensystem von
|
|
&windowsnt;; auch wenn sich die interne Umsetzung unterscheidet,
|
|
sind die Basisfunktionen vergleichbar.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wichtige Prozesse und Begriffe</title>
|
|
|
|
<para>Es gibt verschiedene Begriffe und Anwenderprozesse, auf die
|
|
Sie stoßen werden, wenn Sie NIS unter FreeBSD einrichten,
|
|
egal ob Sie einen Server oder einen Client konfigurieren:</para>
|
|
|
|
<indexterm>
|
|
<primary><application>rpcbind</application></primary>
|
|
</indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="3*"/>
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>NIS-Domänenname</entry>
|
|
|
|
<entry>Ein NIS-Masterserver sowie alle Clients
|
|
(inklusive der Slaveserver) haben einen
|
|
NIS-Domänennamen. Dieser hat (ähnlich den
|
|
&windowsnt;-Domänennamen) nichts mit DNS zu tun.
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpcbind</application></entry>
|
|
|
|
<entry>Muss laufen, damit RPC (Remote Procedure Call, ein
|
|
von NIS verwendetes Netzwerkprotokoll) funktioniert.
|
|
NIS-Server sowie Clients funktionieren ohne
|
|
<application>rpcbind</application> nicht.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>ypbind</application></entry>
|
|
|
|
<entry><quote>Bindet</quote> einen NIS-Client an seinen
|
|
NIS-Server. Der Client bezieht den
|
|
NIS-Domänennamen vom System und stellt über
|
|
das RPC-Protokoll eine Verbindung zum NIS-Server her.
|
|
<application>ypbind</application> ist der zentrale
|
|
Bestandteil der Client-Server-Kommunikation in einer
|
|
NIS-Umgebung. Wird <application>>ypbind</application>
|
|
auf einem Client beendet, ist dieser nicht mehr in der
|
|
Lage, auf den NIS-Server zuzugreifen.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>ypserv</application></entry>
|
|
|
|
<entry>Sollte nur auf dem NIS-Server laufen, da es sich um
|
|
den Serverprozess selbst handelt. Wenn &man.ypserv.8;
|
|
nicht mehr läuft, kann der Server nicht mehr auf
|
|
NIS-Anforderungen reagieren (wenn ein Slaveserver
|
|
existiert, kann dieser als Ersatz fungieren). Einige
|
|
NIS-Systeme (allerdings nicht das von FreeBSD) versuchen
|
|
allerdings erst gar nicht, sich mit einem anderen Server
|
|
zu verbinden, wenn der bisher verwendete Server nicht
|
|
mehr reagiert. Die einzige Lösung dieses Problems
|
|
besteht dann darin, den Serverprozess (oder gar den
|
|
Server selbst) oder den
|
|
<application>ypbind</application>-Prozess auf dem Client
|
|
neu zu starten.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>rpc.yppasswdd</application></entry>
|
|
|
|
<entry>Ein weiterer Prozess, der nur auf dem
|
|
NIS-Masterserver laufen sollte. Es handelt sich um einen
|
|
Daemonprozess, der es NIS-Clients ermöglicht, sich
|
|
auf dem NIS-Masterserver anzumelden, um ihr Passwort zu
|
|
ändern.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
<!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
|
|
on the master -->
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert NIS?</title>
|
|
|
|
<para>In einer NIS-Umgebung gibt es drei Rechnerarten:
|
|
Masterserver, Slaveserver und Clients. Server dienen als
|
|
zentraler Speicherort für Rechnerkonfigurationen.
|
|
Masterserver speichern die maßgebliche Kopie dieser
|
|
Informationen, während Slaveserver diese Informationen
|
|
aus Redundanzgründen spiegeln. Die Clients beziehen
|
|
ihre Informationen immer vom Server.</para>
|
|
|
|
<para>Auf diese Art und Weise können Informationen aus
|
|
verschiedenen Dateien von mehreren Rechnern gemeinsam
|
|
verwendet werden. <filename>master.passwd</filename>,
|
|
<filename>group</filename>, und <filename>hosts</filename>
|
|
werden oft gemeinsam über NIS verwendet. Immer, wenn
|
|
ein Prozess auf einem Client auf Informationen zugreifen will,
|
|
die normalerweise in lokalen Dateien vorhanden wären,
|
|
wird stattdessen eine Anfrage an den NIS-Server gestellt, an
|
|
den der Client gebunden ist.</para>
|
|
|
|
<sect3>
|
|
<title>Arten von NIS-Rechnern</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Masterserver</secondary>
|
|
</indexterm>
|
|
|
|
<para>Ein <emphasis>NIS-Masterserver</emphasis> verwaltet,
|
|
ähnlich einem &windowsnt;-Domänencontroller, die
|
|
von allen NIS-Clients gemeinsam verwendeten Dateien.
|
|
<filename>passwd</filename>, <filename>group</filename>,
|
|
sowie verschiedene andere von den Clients verwendete
|
|
Dateien existieren auf dem Masterserver.</para>
|
|
|
|
<note><para>Ein Rechner kann auch für mehrere
|
|
NIS-Domänen als Masterserver fungieren. Dieser
|
|
Abschnitt konzentriert sich im Folgenden allerdings auf
|
|
eine relativ kleine NIS-Umgebung.</para></note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Slaveserver</secondary>
|
|
</indexterm>
|
|
|
|
<para><emphasis>NIS-Slaveserver</emphasis>. Ähnlich
|
|
einem &windowsnt;-Backupdomänencontroller, verwalten
|
|
NIS-Slaveserver Kopien der Daten des NIS-Masterservers.
|
|
NIS-Slaveserver bieten die Redundanz, die für
|
|
kritische Umgebungen benötigt wird. Zusätzlich
|
|
entlasten Slaveserver den Masterserver: NIS-Clients
|
|
verbinden sich immer mit dem NIS-Server, der zuerst
|
|
reagiert. Dieser Server kann auch ein Slaveserver sein.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Client</secondary>
|
|
</indexterm>
|
|
|
|
<para><emphasis>NIS-Clients</emphasis>. NIS-Clients
|
|
identifizieren sich gegenüber dem NIS-Server
|
|
(ähnlich den &windowsnt;-Workstations), um sich am
|
|
Server anzumelden.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>NIS/YP konfigurieren</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt an Hand eines Beispiels die
|
|
Einrichtung einer NIS-Umgebung.</para>
|
|
|
|
<sect3>
|
|
<title>Planung</title>
|
|
|
|
<para>Nehmen wir an, Sie seien der Administrator eines kleinen
|
|
Universitätsnetzes. Dieses Netz besteht aus
|
|
fünfzehn FreeBSD-Rechnern, für die derzeit keine
|
|
zentrale Verwaltung existiert, jeder Rechner hat also eine
|
|
eigene Version von <filename>/etc/passwd</filename> und
|
|
<filename>/etc/master.passwd</filename>. Diese Dateien werden
|
|
manuell synchron gehalten; legen Sie einen neuen Benutzer an,
|
|
so muss dies auf allen fünfzehn Rechnern manuell
|
|
erledigt werden (unter Verwendung von
|
|
<command>adduser</command>). Da diese Lösung sehr
|
|
ineffizient ist, soll das Netzwerk in Zukunft NIS verwenden,
|
|
wobei zwei der Rechner als Server dienen sollen.</para>
|
|
|
|
<para>In Zukunft soll das Netz also wie folgt aussehen:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Rechnername</entry>
|
|
<entry>IP-Adresse</entry>
|
|
<entry>Rechneraufgabe</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><hostid>ellington</hostid></entry>
|
|
<entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
|
|
<entry>NIS-Master</entry>
|
|
</row>
|
|
<row>
|
|
<entry><hostid>coltrane</hostid></entry>
|
|
<entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
|
|
<entry>NIS-Slave</entry>
|
|
</row>
|
|
<row>
|
|
<entry><hostid>basie</hostid></entry>
|
|
<entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
|
|
<entry>Workstation der Fakultät</entry>
|
|
</row>
|
|
<row>
|
|
<entry><hostid>bird</hostid></entry>
|
|
<entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
|
|
<entry>Clientrechner</entry>
|
|
</row>
|
|
<row>
|
|
<entry><hostid>cli[1-11]</hostid></entry>
|
|
<entry><hostid role="ipaddr">10.0.0.[6-17]</hostid></entry>
|
|
<entry>Verschiedene andere Clients</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Wenn Sie NIS das erste Mal einrichten, ist es ratsam, sich
|
|
zuerst über die Vorgangsweise Gedanken zu machen.
|
|
Unabhängig von der Größe Ihres Netzwerks
|
|
müssen Sie stets einige Entscheidungen treffen.</para>
|
|
|
|
<sect4>
|
|
<title>Einen NIS-Domänennamen wählen</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Domänenname</secondary>
|
|
</indexterm>
|
|
|
|
<para>Dies muss nicht der <quote>Domainname</quote> sein. Es
|
|
handelt sich vielmehr um den <quote>NIS-Domainnamen</quote>.
|
|
Wenn ein Client Informationen anfordert, ist in dieser
|
|
Anforderung der Name der NIS-Domäne enthalten.
|
|
Dadurch weiß jeder Server im Netzwerk, auf welche
|
|
Anforderung er antworten muss. Stellen Sie sich den
|
|
NIS-Domänennamen als den Namen einer Gruppe von
|
|
Rechnern vor, die etwas gemeinsam haben.</para>
|
|
|
|
<para>Manchmal wird der Name der Internetdomäne auch
|
|
für die NIS-Domäne verwendet. Dies ist allerdings
|
|
nicht empfehlenswert, da dies bei der Behebung von Problemen
|
|
verwirrend sein kann. Der Name der NIS-Domäne sollte
|
|
innerhalb Ihres Netzwerks einzigartig sein. Hilfreich ist
|
|
es, wenn der Name die Gruppe der in ihr zusammengefassten
|
|
Rechner beschreibt. Die Kunstabteilung von Acme Inc.
|
|
hätte daher die NIS-Domäne
|
|
<quote>acme-art</quote>. Für unser Beispiel verwenden
|
|
wir den NIS-Domänennamen
|
|
<literal>test-domain</literal>.</para>
|
|
|
|
<indexterm><primary>SunOS</primary></indexterm>
|
|
|
|
<para>Es gibt jedoch auch Betriebssysteme (vor allem &sunos;),
|
|
die als NIS-Domänennamen den Name der
|
|
Internetdomäne verwenden. Wenn dies für einen
|
|
oder mehrere Rechner Ihres Netzwerks zutrifft,
|
|
<emphasis>müssen</emphasis> Sie den Namen der
|
|
Internetdomäne als Ihren NIS-Domänennamen
|
|
verwenden.</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Anforderungen an den Server</title>
|
|
|
|
<para>Wenn Sie einen NIS-Server einrichten wollen, müssen
|
|
Sie einige Dinge beachten. Eine unangenehme Eigenschaft
|
|
von NIS ist die Abhängigkeit der Clients vom Server.
|
|
Wenn sich der Client nicht über den Server mit seiner
|
|
NIS-Domäne verbinden kann, wird der Rechner oft
|
|
unbenutzbar, da das Fehlen von Benutzer- und
|
|
Gruppeninformationen zum Einfrieren des Clients führt.
|
|
Daher sollten Sie für den Server einen Rechner
|
|
auswählen, der nicht regelmäßig neu
|
|
gestartet werden muss und der nicht für Testversuche
|
|
verwendet wird. Idealerweise handelt es sich um einen
|
|
alleinstehenden Rechner, dessen einzige Aufgabe es ist, als
|
|
NIS-Server zu dienen. Wenn Sie ein Netzwerk haben, das
|
|
nicht zu stark ausgelastet ist, ist es auch möglich,
|
|
den NIS-Server als weiteren Dienst auf einem anderen Rechner
|
|
laufen zu lassen. Denken Sie aber daran, dass ein Ausfall
|
|
des NIS-Servers <emphasis>alle</emphasis> NIS-Clients
|
|
betrifft.</para>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NIS-Server</title>
|
|
|
|
<para>Die verbindlichen Kopien aller NIS-Informationen befinden
|
|
sich auf einem einzigen Rechner, dem NIS-Masterserver. Die
|
|
Datenbanken, in denen die Informationen gespeichert sind,
|
|
bezeichnet man als NIS-Maps. Unter FreeBSD werden diese
|
|
Maps unter <filename>/var/yp/[domainname]</filename>
|
|
gespeichert, wobei <filename>[domainname]</filename> der
|
|
Name der NIS-Domäne ist. Ein einzelner NIS-Server
|
|
kann gleichzeitig mehrere NIS-Domänen verwalten, daher
|
|
können auch mehrere Verzeichnisse vorhanden sein. Jede
|
|
Domäne verfügt über ein eigenes Verzeichnis
|
|
sowie einen eigenen, von anderen Domänen
|
|
unabhängigen Satz von NIS-Maps.</para>
|
|
|
|
<para>NIS-Master- und Slaveserver verwenden den
|
|
<command>ypserv</command>-Daemon, um NIS-Anfragen zu
|
|
bearbeiten. <command>ypserv</command> empfängt
|
|
eingehende Anfragen der NIS-Clients, ermittelt aus der
|
|
angeforderten Domäne und Map einen Pfad zur
|
|
entsprechenden Datenbank, und sendet die angeforderten
|
|
Daten von der Datenbank zum Client.</para>
|
|
|
|
<sect4>
|
|
<title>Einen NIS-Masterserver einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Serverkonfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<para>Abhängig von Ihren Anforderungen ist die
|
|
Einrichtung eines NIS-Masterservers relativ einfach, da
|
|
NIS von FreeBSD bereits in der Standardkonfiguration
|
|
unterstützt wird. Sie müssen nur folgende
|
|
Zeilen in <filename>/etc/rc.conf</filename> einfügen:
|
|
</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<programlisting>nisdomainname="test-domain"</programlisting>
|
|
|
|
<para>Diese Zeile setzt den NIS-Domänennamen auf
|
|
<literal>test-domain</literal>, wenn Sie das Netzwerk
|
|
initialisieren (beispielsweise nach einem Systemstart).
|
|
</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><programlisting>nis_server_enable="YES"</programlisting>
|
|
Dadurch werden die NIS-Serverprozesse gestartet.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
|
|
Durch diese Zeile wird der
|
|
<command>rpc.yppasswdd</command>-Daemon aktiviert, der,
|
|
wie bereits erwähnt, die Änderung von
|
|
NIS-Passwörtern von einem Client aus
|
|
ermöglicht.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>In Abhängigkeit von Ihrer NIS-Konfiguration
|
|
können weitere Einträge erforderlich sein.
|
|
Weitere Informationen finden Sie im Abschnitt
|
|
<link linkend="nis-server-is-client">NIS-Server, die
|
|
auch als NIS-Clients arbeiten</link>.</para>
|
|
</note>
|
|
|
|
<para>Nachdem Sie obige Parameter konfiguriert haben, müssen
|
|
Sie nur noch <command>/etc/netstart</command> als Superuser
|
|
ausführen, um alles entsprechend Ihren Vorgaben in der
|
|
Datei <filename>/etc/rc.conf</filename> einzurichten.
|
|
Bevor Sie die NIS-Maps einrichten können, müssen Sie
|
|
nun noch den <application>ypserv</application>-Daemon
|
|
manuell starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/ypserv start</userinput></screen>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Die NIS-Maps initialisieren</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>maps</secondary>
|
|
</indexterm>
|
|
|
|
<para><emphasis>NIS-Maps</emphasis> sind Datenbanken, die
|
|
sich im Verzeichnis <filename>/var/yp</filename> befinden.
|
|
Sie werden am NIS-Masterserver aus den Konfigurationsdateien
|
|
unter <filename>/etc</filename> erzeugt. Einzige Ausnahme:
|
|
<filename>/etc/master.passwd</filename>. Dies ist auch
|
|
sinnvoll, da Sie die Passwörter für Ihr
|
|
<username>root</username>- oder andere
|
|
Administratorkonten nicht an alle Server der NIS-Domäne
|
|
verteilen wollen. Bevor Sie also die NIS-Maps des
|
|
Masterservers einrichten, sollten Sie Folgendes tun:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp /etc/master.passwd /var/yp/master.passwd</userinput>
|
|
&prompt.root; <userinput>cd /var/yp</userinput>
|
|
&prompt.root; <userinput>vi master.passwd</userinput></screen>
|
|
|
|
<para>Entfernen Sie alle Systemkonten
|
|
(wie <username>bin</username>, <username>tty</username>,
|
|
<username>kmem</username> oder <username>games</username>),
|
|
sowie alle Konten, die Sie nicht an die NIS-Clients
|
|
weitergeben wollen (beispielsweise <username>root</username>
|
|
und alle Konten mit der UID 0 (=Superuser).</para>
|
|
|
|
<note><para>Stellen Sie sicher, dass
|
|
<filename>/var/yp/master.passwd</filename> weder von der
|
|
Gruppe noch von der Welt gelesen werden kann (Zugriffsmodus
|
|
600)! Ist dies nicht der Fall, ändern Sie dies mit
|
|
<command>chmod</command>.</para></note>
|
|
|
|
<indexterm><primary>Tru64 UNIX</primary></indexterm>
|
|
|
|
<para>Nun können Sie die NIS-Maps initialisieren.
|
|
FreeBSD verwendet dafür das Skript
|
|
<command>ypinit</command> (lesen Sie dazu auch
|
|
&man.ypinit.8;). Dieses Skript ist auf fast allen
|
|
UNIX-Betriebssystemen verfügbar. Bei
|
|
Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings
|
|
<command>ypsetup</command>. Da wir Maps für einen
|
|
NIS-Masterserver erzeugen, verwenden wir
|
|
<command>ypinit</command> mit der Option
|
|
<option>-m</option>. Nachdem Sie die beschriebenen
|
|
Aktionen durchgeführt haben, erzeugen Sie nun die
|
|
NIS-Maps:</para>
|
|
|
|
<screen>ellington&prompt.root; <userinput>ypinit -m test-domain</userinput>
|
|
Server Type: MASTER Domain: test-domain
|
|
Creating an YP server will require that you answer a few questions.
|
|
Questions will all be asked at the beginning of the procedure.
|
|
Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
|
|
Ok, please remember to go back and redo manually whatever fails.
|
|
If you don't, something might not work.
|
|
At this point, we have to construct a list of this domains YP servers.
|
|
rod.darktech.org is already known as master server.
|
|
Please continue to add any slave servers, one per line. When you are
|
|
done with the list, type a <control D>.
|
|
master server : ellington
|
|
next host to add: <userinput>coltrane</userinput>
|
|
next host to add: <userinput>^D</userinput>
|
|
The current list of NIS servers looks like this:
|
|
ellington
|
|
coltrane
|
|
Is this correct? [y/n: y] <userinput>y</userinput>
|
|
|
|
[..output from map generation..]
|
|
|
|
NIS Map update completed.
|
|
ellington has been setup as an YP master server without any errors.</screen>
|
|
|
|
<para>Dadurch erzeugt <command>ypinit</command>
|
|
<filename>/var/yp/Makefile</filename> aus der Datei
|
|
<filename>/var/yp/Makefile.dist</filename>.
|
|
Durch diese Datei wird festgelegt, dass Sie in einer
|
|
NIS-Umgebung mit nur einem Server arbeiten und dass alle
|
|
Clients unter FreeBSD laufen. Da
|
|
<literal>test-domain</literal> aber auch über einen
|
|
Slaveserver verfügt, müssen Sie
|
|
<filename>/var/yp/Makefile</filename> entsprechend anpassen:
|
|
</para>
|
|
|
|
<screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen>
|
|
|
|
<para>Sie sollten die Zeile</para>
|
|
|
|
<programlisting>NOPUSH = "True"</programlisting>
|
|
|
|
<para>auskommentieren (falls dies nicht bereits der Fall ist).</para>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Einen NIS-Slaveserver einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Slaveserver</secondary>
|
|
</indexterm>
|
|
|
|
<para>Ein NIS-Slaveserver ist noch einfacher einzurichten als
|
|
ein Masterserver. Melden Sie sich am Slaveserver an und
|
|
ändern Sie <filename>/etc/rc.conf</filename> analog
|
|
zum Masterserver. Der einzige Unterschied besteht in der
|
|
Verwendung der Option <option>-s</option>, wenn Sie
|
|
<command>ypinit</command> aufrufen. Die Option
|
|
<option>-s</option> erfordert den Namen des
|
|
NIS-Masterservers, daher sieht unsere Ein- und Ausgabe wie
|
|
folgt aus:</para>
|
|
|
|
<screen>coltrane&prompt.root; <userinput>ypinit -s ellington test-domain</userinput>
|
|
|
|
Server Type: SLAVE Domain: test-domain Master: ellington
|
|
|
|
Creating an YP server will require that you answer a few questions.
|
|
Questions will all be asked at the beginning of the procedure.
|
|
|
|
Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
|
|
|
|
Ok, please remember to go back and redo manually whatever fails.
|
|
If you don't, something might not work.
|
|
There will be no further questions. The remainder of the procedure
|
|
should take a few minutes, to copy the databases from ellington.
|
|
Transferring netgroup...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring netgroup.byuser...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring netgroup.byhost...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring master.passwd.byuid...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring passwd.byuid...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring passwd.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring group.bygid...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring group.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring services.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring rpc.bynumber...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring rpc.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring protocols.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring master.passwd.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring networks.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring networks.byaddr...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring netid.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring hosts.byaddr...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring protocols.bynumber...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring ypservers...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
Transferring hosts.byname...
|
|
ypxfr: Exiting: Map successfully transferred
|
|
|
|
coltrane has been setup as an YP slave server without any errors.
|
|
Don't forget to update map ypservers on ellington.</screen>
|
|
|
|
<para>Sie sollten nun über das Verzeichnis
|
|
<filename>/var/yp/test-domain</filename> verfügen.
|
|
Die Kopien der NIS-Masterserver-Maps sollten sich in diesem
|
|
Verzeichnis befinden. Allerdings müssen Sie diese
|
|
auch aktuell halten. Die folgenden Einträge in
|
|
<filename>/etc/crontab</filename> erledigen diese Aufgabe:
|
|
</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 NIS-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 NIS-Server erneut zu
|
|
starten.</para>
|
|
</sect4>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NIS-Clients</title>
|
|
|
|
<para>Ein NIS-Client <literal>bindet</literal> sich unter
|
|
Verwendung des <command>ypbind</command>-Daemons an einen
|
|
NIS-Server. <command>ypbind</command> 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>ybind</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. <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>
|
|
|
|
<sect4>
|
|
<title>Einen NIS-Client konfigurieren</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Client konfigurieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Einen FreeBSD-Rechner als NIS-Client einzurichten, ist
|
|
recht einfach.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Fügen Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> ein, um den
|
|
NIS-Domänennamen festzulegen, und um
|
|
<command>ypbind</command> bei der Initialisierung des
|
|
Netzwerks zu starten:</para>
|
|
|
|
<programlisting>nisdomainname="test-domain"
|
|
nis_client_enable="YES"</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Um alle Passworteinträge des NIS-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>
|
|
|
|
<programlisting>+:::::::::</programlisting>
|
|
|
|
<note>
|
|
<para>Diese Zeile legt für alle gültigen
|
|
Benutzerkonten der NIS-Server-Maps einen Zugang an.
|
|
Es gibt verschiedene Wege, Ihren 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>Sie sollten zumindest ein lokales Benutzerkonto,
|
|
das nicht über NIS importiert wird, in Ihrer
|
|
<filename>/etc/master.passwd</filename> behalten.
|
|
Dieser Benutzer sollte außerdem ein Mitglied der
|
|
Gruppe <groupname>wheel</groupname> sein. Wenn es
|
|
mit NIS Probleme gibt, können Sie diesen Zugang
|
|
verwenden, um sich anzumelden,
|
|
<username>root</username> zu werden und das Problem
|
|
zu beheben.</para>
|
|
</note>
|
|
</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>
|
|
|
|
<programlisting>+:*::</programlisting>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Um den NIS-Client sofort zu starten, führen Sie als
|
|
Superuser die folgenden Befehle aus:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/netstart</userinput>
|
|
&prompt.root; <userinput>/etc/rc.d/ypbind start</userinput></screen>
|
|
|
|
|
|
<para>Nachdem Sie diese Schritte erledigt haben, sollten Sie
|
|
mit <command>ypcat passwd</command> die
|
|
<literal>passwd-Map</literal> des NIS-Servers anzeigen
|
|
können.</para>
|
|
</sect4>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sicherheit unter NIS</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Sicherheit</secondary>
|
|
</indexterm>
|
|
|
|
<para>Im Allgemeinen kann jeder entfernte Anwender einen RPC an
|
|
&man.ypserv.8; schicken, um den Inhalt Ihrer NIS-Maps abzurufen,
|
|
falls er Ihren NIS-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 der Datei
|
|
<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>
|
|
|
|
<programlisting># allow connections from local host -- mandatory
|
|
127.0.0.1 255.255.255.255
|
|
# allow connections from any host
|
|
# on the 192.168.128.0 network
|
|
192.168.128.0 255.255.255.0
|
|
# allow connections from any host
|
|
# between 10.0.0.0 to 10.0.15.255
|
|
# this includes the machines in the testlab
|
|
10.0.0.0 255.255.240.0</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
|
|
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>
|
|
|
|
<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 Ihrer Firewall
|
|
blockiert werden.</para>
|
|
|
|
<para>Server, die <filename>/var/yp/securenets</filename>
|
|
verwenden, können Schwierigkeiten bei der Anmeldung von
|
|
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
|
|
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 NIS-Funktionalität für große
|
|
Teile Ihres Netzwerks führen kann.</para>
|
|
|
|
<indexterm>
|
|
<primary>TCP-Wrapper</primary>
|
|
</indexterm>
|
|
|
|
<para>Die Verwendung der <application>TCP-Wrapper</application>
|
|
verlangsamt die Reaktion Ihres NIS-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 NIS-Server
|
|
verfügen. Wenn ein oder mehrere Ihrer Clientsysteme
|
|
dieses Problem aufweisen, sollten Sie die betreffenden Clients
|
|
in NIS-Slaveserver umwandeln, und diese an sich selbst binden.
|
|
</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Bestimmte Benutzer an der Anmeldung hindern</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Benutzer blockieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>In unserem Labor gibt es den Rechner <hostid>basie</hostid>,
|
|
der nur für Mitarbeiter der Fakultät bestimmt ist.
|
|
Wir wollen diesen Rechner nicht aus der NIS-Domäne
|
|
entfernen, obwohl <filename>passwd</filename> des
|
|
NIS-Masterservers Benutzerkonten sowohl für
|
|
Fakultätsmitarbeiter als auch für Studenten
|
|
enthält. Was können wir also tun?</para>
|
|
|
|
<para>Es gibt eine Möglichkeit, bestimmte Benutzer an der
|
|
Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn
|
|
diese in der NIS-Datenbank vorhanden sind. Dazu müssen
|
|
Sie lediglich an diesem Rechner den Eintrag
|
|
<literal>-<replaceable>Benutzername</replaceable></literal> an
|
|
das Ende von <filename>/etc/master.passwd</filename> setzen,
|
|
wobei <replaceable>Benutzername</replaceable> der zu
|
|
blockierende Benutzername ist. Diese Änderung sollte
|
|
bevorzugt durch <command>vipw</command> erledigt werden, da
|
|
<command>vipw</command> Ihre Änderungen an
|
|
<filename>/etc/master.passwd</filename> auf Plausibilität
|
|
überprüft und nach erfolgter Änderung die
|
|
Passwortdatenbank automatisch aktualisiert. Um also den
|
|
Benutzer <username>bill</username> an der Anmeldung am Rechner
|
|
<hostid>basie</hostid> zu hindern, gehen wir 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>
|
|
|
|
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
|
|
operator:*:2:5::0:0:System &:/:/sbin/nologin
|
|
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
|
|
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
|
|
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
|
|
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
|
|
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
|
|
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
|
|
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
|
|
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
|
|
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
|
|
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
|
|
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
|
|
+:::::::::
|
|
-bill
|
|
|
|
basie&prompt.root;</screen>
|
|
</sect2>
|
|
|
|
<sect2 id="netgroups">
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Udo</firstname>
|
|
<surname>Erdelhoff</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect2info>
|
|
|
|
<title>Netzgruppen verwenden</title>
|
|
|
|
<indexterm><primary>Netzgruppen</primary></indexterm>
|
|
|
|
<para>Die im letzten Abschnitt beschriebene Methode eignet sich
|
|
besonders, wenn Sie spezielle Regeln für wenige
|
|
Benutzer oder wenige Rechner benötigen. In großen
|
|
Netzwerken werden Sie allerdings
|
|
<emphasis>mit Sicherheit</emphasis> vergessen, einige Benutzer
|
|
von der Anmeldung an bestimmten Rechnern auszuschließen.
|
|
Oder Sie werden gezwungen sein, jeden Rechner einzeln zu
|
|
konfigurieren. Dadurch verlieren Sie aber den Hauptvorteil von
|
|
NIS, die <emphasis>zentrale</emphasis> Verwaltung.</para>
|
|
|
|
<para>Die Lösung für dieses Problem sind
|
|
<emphasis>Netzgruppen</emphasis>. Ihre Aufgabe und Bedeutung
|
|
ist vergleichbar mit normalen, von UNIX-Dateisystemen
|
|
verwendeten Gruppen. Die Hauptunterschiede sind das Fehlen
|
|
einer numerischen ID sowie die Möglichkeit, Netzgruppen
|
|
zu definieren, die sowohl Benutzer als auch andere Netzgruppen
|
|
enthalten.</para>
|
|
|
|
<para>Netzgruppen wurden entwickelt, um große, komplexe
|
|
Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten.
|
|
Sie sind also von Vorteil, wenn Sie von dieser Situation
|
|
betroffen sind. Andererseits ist es dadurch beinahe
|
|
unmöglich, Netzgruppen mit einfachen Beispielen zu
|
|
erklären. Das hier verwendete Beispiel veranschaulicht
|
|
dieses Problem.</para>
|
|
|
|
<para>Nehmen wir an, dass Ihre erfolgreiche Einführung von
|
|
NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat. Ihre
|
|
nächste Aufgabe besteht nun darin, Ihre NIS-Domäne
|
|
um zusätzliche Rechner zu erweitern. Die folgenden
|
|
Tabellen enthalten die neuen Benutzer und Rechner inklusive
|
|
einer kurzen Beschreibung.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Benutzername(n)</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><username>alpha</username>,
|
|
<username>beta</username></entry>
|
|
<entry>Beschäftigte der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>charlie</username>,
|
|
<username>delta</username></entry>
|
|
<entry>Die neuen Lehrlinge der IT-Abteilung</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>echo</username>,
|
|
<username>foxtrott</username>,
|
|
<username>golf</username>, ...</entry>
|
|
<entry>Normale Mitarbeiter</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><username>able</username>,
|
|
<username>baker</username>, ...</entry>
|
|
<entry>Externe Mitarbeiter</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Rechnername(n)</entry>
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<!-- Names taken from "Good Omens" by Neil Gaiman and Terry
|
|
Pratchett. Many thanks for a brilliant book. -->
|
|
<entry><hostid>war</hostid>, <hostid>death</hostid>,
|
|
<hostid>famine</hostid>, <hostid>pollution</hostid></entry>
|
|
<entry>Ihre wichtigsten Server. Nur IT-Fachleute
|
|
dürfen sich an diesen Rechnern anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<!-- gluttony was omitted because it was too fat -->
|
|
<entry><hostid>pride</hostid>, <hostid>greed</hostid>,
|
|
<hostid>envy</hostid>, <hostid>wrath</hostid>,
|
|
<hostid>lust</hostid>, <hostid>sloth</hostid></entry>
|
|
<entry>Weniger wichtige Server. Alle Mitarbeiter der
|
|
IT-Abteilung dürfen sich auf diesen Rechnern
|
|
anmelden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>one</hostid>, <hostid>two</hostid>,
|
|
<hostid>three</hostid>, <hostid>four</hostid>, ...</entry>
|
|
<entry>Gewöhnliche Arbeitsrechner. Nur die
|
|
<emphasis>wirklichen</emphasis> Mitarbeiter dürfen
|
|
diese Rechner verwenden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><hostid>trashcan</hostid></entry>
|
|
<entry>Ein sehr alter Rechner ohne kritische Daten. Sogar
|
|
externe Mitarbeiter dürfen diesen Rechner
|
|
verwenden.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Wollten Sie diese Einschränkungen umsetzen, indem Sie
|
|
jeden Benutzer einzeln blockieren, müssten Sie auf jedem
|
|
System für jeden Benutzer eine entsprechende Zeile in
|
|
<filename>passwd</filename> einfügen. Wenn Sie nur einen
|
|
Eintrag vergessen, haben Sie ein Problem. Es mag noch angehen,
|
|
dies während der ersten Installation zu erledigen, im
|
|
täglichen Betrieb werden Sie allerdings
|
|
<emphasis>mit Sicherheit</emphasis> einmal vergessen, die
|
|
entsprechenden Einträge anzulegen. Vergessen Sie nicht:
|
|
Murphy war Optimist.</para>
|
|
|
|
<para>Die Verwendung von Netzgruppen hat in dieser Situation
|
|
mehrere Vorteile. Sie müssen nicht jeden Benutzer einzeln
|
|
verwalten; weisen Sie stattdessen den Benutzer einer Netzgruppe
|
|
zu und erlauben oder verbieten Sie allen Mitglieder dieser
|
|
Gruppe die Anmeldung an einem Server. Wenn Sie einen neuen
|
|
Rechner hinzufügen, müssen Sie
|
|
Zugangsbeschränkungen nur für die Netzgruppen
|
|
festlegen. Legen Sie einen neuen Benutzer an, müssen Sie
|
|
ihn nur einer oder mehrere Netzgruppen zuweisen. Diese
|
|
Veränderungen sind voneinander unabhängig; Anweisungen
|
|
der Form <quote>für diese Kombination aus Benutzer und
|
|
Rechner mache Folgendes ...</quote> sind nicht mehr nötig.
|
|
Wenn Sie die Einrichtung von NIS sorgfältig geplant haben,
|
|
müssen Sie nur noch eine zentrale Konfigurationsdatei
|
|
bearbeiten, um den Zugriff auf bestimmte Rechner zu erlauben
|
|
oder zu verbieten.</para>
|
|
|
|
<para>Der erste Schritt ist die Initialisierung der NIS-Maps
|
|
der Netzgruppe. &man.ypinit.8; kann dies unter FreeBSD nicht
|
|
automatisch durchführen. Sind die Maps aber erst einmal
|
|
erzeugt, werden sie jedoch von NIS problemlos unterstützt.
|
|
Um eine leere Map zu erzeugen, geben Sie Folgendes ein:</para>
|
|
|
|
<screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen>
|
|
|
|
<para>Danach legen Sie die Einträge an. Für unser
|
|
Beispiel benötigen wir mindestens vier Netzgruppen:
|
|
IT-Beschäftige, IT-Lehrlinge, normale Beschäftigte
|
|
sowie Externe.</para>
|
|
|
|
<programlisting>IT_EMP (,alpha,test-domain) (,beta,test-domain)
|
|
IT_APP (,charlie,test-domain) (,delta,test-domain)
|
|
USERS (,echo,test-domain) (,foxtrott,test-domain) \
|
|
(,golf,test-domain)
|
|
INTERNS (,able,test-domain) (,baker,test-domain)</programlisting>
|
|
|
|
<para>Bei <literal>IT_EMP</literal>, <literal>IT_APP</literal>
|
|
usw. handelt es sich um Netzgruppennamen. In den Klammern
|
|
werden diesen Netzgruppen jeweils ein oder mehrere
|
|
Benutzerkonten hinzugefügt. Die drei Felder in der
|
|
Klammer haben folgende Bedeutung:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Der Name des Rechners, auf dem die folgenden Werte
|
|
gültig sind. Legen Sie keinen Rechnernamen fest, ist
|
|
der Eintrag auf allen Rechnern gültig. Dadurch
|
|
gehen Sie vielen Problemen aus dem Weg.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der Name des Benutzerkontos, der zu dieser Netzgruppe
|
|
gehört.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die NIS-Domäne für das Benutzerkonto. Sie
|
|
können Benutzerkonten von anderen NIS-Domänen in
|
|
Ihre Netzgruppe importieren, wenn Sie mehrere
|
|
NIS-Domänen verwalten.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Jedes Feld kann Wildcards enthalten. Die Einzelheiten
|
|
entnehmen Sie bitte &man.netgroup.5;.</para>
|
|
|
|
<note>
|
|
<indexterm><primary>Netzgruppen</primary></indexterm>
|
|
|
|
<para>Netzgruppennamen sollten nicht länger als 8 Zeichen
|
|
sein, vor allem dann, wenn Sie Rechner mit verschiedenen
|
|
Betriebssystemen in Ihrer NIS-Domäne haben. Es wird
|
|
zwischen Groß- und Kleinschreibung unterschieden.
|
|
Die Verwendung von Großbuchstaben für
|
|
Netzgruppennamen ermöglicht eine leichte Unterscheidung
|
|
zwischen Benutzern, Rechnern und Netzgruppen.</para>
|
|
|
|
<para>Einige NIS-Clients (dies gilt nicht für FreeBSD)
|
|
können keine Netzgruppen mit einer großen Anzahl
|
|
von Einträgen verwalten. Einige ältere Versionen
|
|
von &sunos; haben beispielsweise Probleme, wenn Netzgruppen
|
|
mehr als fünfzehn <emphasis>Einträge</emphasis>
|
|
enthalten. Sie können dieses Problem umgehen, indem Sie
|
|
mehrere Subnetzgruppen mit weniger als fünfzehn Benutzern
|
|
anlegen und diese Subnetzgruppen wiederum in einer Netzgruppe
|
|
zusammenfassen:</para>
|
|
|
|
<programlisting>BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
|
|
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
|
|
BIGGRP3 (,joe31,domain) (,joe32,domain)
|
|
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3</programlisting>
|
|
|
|
<para>Sie können diesen Vorgang wiederholen, wenn Sie mehr
|
|
als 255 Benutzer in einer einzigen Netzgruppe benötigen.
|
|
</para>
|
|
</note>
|
|
|
|
<para>Das Aktivieren und Verteilen Ihre neuen NIS-Map ist
|
|
einfach:</para>
|
|
|
|
<screen>ellington&prompt.root; <userinput>cd /var/yp</userinput>
|
|
ellington&prompt.root; <userinput>make</userinput></screen>
|
|
|
|
<para>Dadurch werden die NIS-Maps <filename>netgroup</filename>,
|
|
<filename>netgroup.byhost</filename> und
|
|
<filename>netgroup.byuser</filename> erzeugt. Prüfen Sie
|
|
die Verfügbarkeit Ihrer neuen NIS-Maps mit &man.ypcat.1;.
|
|
</para>
|
|
|
|
<screen>ellington&prompt.user; <userinput>ypcat -k netgroup</userinput>
|
|
ellington&prompt.user; <userinput>ypcat -k netgroup.byhost</userinput>
|
|
ellington&prompt.user; <userinput>ypcat -k netgroup.byuser</userinput></screen>
|
|
|
|
<para>Die Ausgabe des ersten Befehls gibt den Inhalt von
|
|
<filename>/var/yp/netgroup</filename> wieder. Der zweite Befehl
|
|
erzeugt nur dann eine Ausgabe, wenn Sie rechnerspezifische
|
|
Netzgruppen erzeugt haben. Der dritte Befehl gibt die
|
|
Netzgruppen nach Benutzern sortiert aus.</para>
|
|
|
|
<para>Die Einrichtung der Clients ist einfach. Sie müssen
|
|
lediglich auf dem Server <hostid>war</hostid>
|
|
&man.vipw.8; aufrufen und die Zeile</para>
|
|
|
|
<programlisting>+:::::::::</programlisting>
|
|
|
|
<para>durch</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::</programlisting>
|
|
|
|
<para>ersetzen.</para>
|
|
|
|
<para>Ab sofort werden nur noch die Daten der in der Netzgruppe
|
|
<literal>IT_EMP</literal> vorhandenen Benutzer in die
|
|
Passwortdatenbank von <hostid>war</hostid> importiert.
|
|
Nur diese Benutzer dürfen sich am Server anmelden.</para>
|
|
|
|
<para>Unglücklicherweise gilt diese Einschränkung auch
|
|
für die <literal>~</literal>-Funktion der Shell und
|
|
für alle Routinen, die auf Benutzernamen und numerische
|
|
Benutzer-IDs zugreifen. Oder anders formuliert,
|
|
<command>cd ~<replaceable>user</replaceable></command> ist nicht
|
|
möglich, <command>ls -l</command> zeigt die numerische
|
|
Benutzer-ID statt dem Benutzernamen und
|
|
<command>find . -user joe -print</command> erzeugt die
|
|
Fehlermeldung <errorname>No such user</errorname>. Um dieses
|
|
Problem zu beheben, müssen Sie alle Benutzereinträge
|
|
importieren, <emphasis>ohne ihnen jedoch zu erlauben, sich an
|
|
Ihrem Server anzumelden</emphasis>.</para>
|
|
|
|
<para>Dazu fügen Sie eine weitere Zeile in
|
|
<filename>/etc/master.passwd</filename> ein. Diese Zeile sollte
|
|
ähnlich der folgenden aussehen:</para>
|
|
|
|
<para><literal>+:::::::::/sbin/nologin</literal>, was in etwa
|
|
<quote>Importiere alle Einträge, aber ersetze die Shell in
|
|
den importierten Einträgen durch
|
|
<filename>/sbin/nologin</filename></quote> entspricht. Sie
|
|
können jedes Feld dieses Eintrages ersetzen, indem Sie
|
|
einen Standardwert in <filename>/etc/master.passwd</filename>
|
|
eintragen.</para>
|
|
|
|
<warning>
|
|
<para>Stellen Sie sicher, dass die Zeile
|
|
<literal>+:::::::::/sbin/nologin</literal>
|
|
<emphasis>nach</emphasis> der Zeile
|
|
<literal>+@IT_EMP:::::::::</literal> eingetragen ist. Sonst
|
|
haben alle via NIS importierten Benutzerkonten
|
|
<filename>/sbin/nologin</filename> als Loginshell.</para>
|
|
</warning>
|
|
|
|
<para>Danach müssen Sie nur mehr eine einzige NIS-Map
|
|
ändern, wenn ein neuer Mitarbeiter berücksichtigt
|
|
werden muss. Für weniger wichtige Server gehen Sie analog
|
|
vor, indem Sie den alten Eintrag <literal>+:::::::::</literal>
|
|
in den lokalen Versionen von
|
|
<filename>/etc/master.passwd</filename> durch folgende
|
|
Einträge ersetzen:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@IT_APP:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Die entsprechenden Zeilen für normale Arbeitsplätze
|
|
lauten:</para>
|
|
|
|
<programlisting>+@IT_EMP:::::::::
|
|
+@USERS:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Ab jetzt wäre alles wunderbar, allerdings ändert
|
|
sich kurz darauf die Firmenpolitik: Die IT-Abteilung beginnt
|
|
damit, externe Mitarbeiter zu beschäftigen. Externe
|
|
dürfen sich an normalen Arbeitsplätzen sowie an den
|
|
weniger wichtigen Servern anmelden. Die IT-Lehrlinge
|
|
dürfen sich nun auch an den Hauptservern anmelden. Sie
|
|
legen also die neue Netzgruppe <literal>IT_INTERN</literal> an,
|
|
weisen Ihr die neuen IT-Externen als Benutzer zu und beginnen
|
|
damit, die Konfiguration auf jedem einzelnen Rechner zu
|
|
ändern ... Halt. Sie haben gerade die alte Regel
|
|
<quote>Fehler in der zentralisierten Planung führen zu
|
|
globaler Verwirrung.</quote> bestätigt.</para>
|
|
|
|
<para>Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen
|
|
zu bilden, lassen sich solche Situationen leicht vermeiden.
|
|
Eine Möglichkeit ist die Erzeugung rollenbasierter
|
|
Netzgruppen. Sie könnten eine Netzgruppe
|
|
<literal>BIGSRV</literal> erzeugen, um den Zugang zu
|
|
den wichtigsten Servern zu beschränken, eine weitere
|
|
Gruppe <literal>SMALLSRV</literal> für die weniger
|
|
wichtigen Server und eine dritte Netzgruppe
|
|
<literal>USERBOX</literal> für die normalen
|
|
Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die
|
|
Netzgruppen, die sich auf diesen Rechnern anmelden dürfen.
|
|
Die Einträge der Netzgruppen in der NIS-Map sollten
|
|
ähnlich den folgenden aussehen:</para>
|
|
|
|
<programlisting>BIGSRV IT_EMP IT_APP
|
|
SMALLSRV IT_EMP IT_APP ITINTERN
|
|
USERBOX IT_EMP ITINTERN USERS</programlisting>
|
|
|
|
<para>Diese Methode funktioniert besonders gut, wenn Sie
|
|
Rechner in Gruppen mit identischen Beschränkungen einteilen
|
|
können. Unglücklicherweise ist dies die Ausnahme und
|
|
nicht die Regel. Meistens werden Sie die Möglichkeit zur
|
|
rechnerspezischen Zugangsbeschränkung benötigen.
|
|
</para>
|
|
|
|
<para>Rechnerspezifische Netzgruppen sind die zweite
|
|
Möglichkeit, um mit den oben beschriebenen Änderungen
|
|
umzugehen. In diesem Szenario enthält
|
|
<filename>/etc/master.passwd</filename> auf jedem Rechner zwei
|
|
mit <quote>+</quote> beginnende Zeilen. Die erste Zeile
|
|
legt die Netzgruppe mit den Benutzern fest, die sich auf diesem
|
|
Rechner anmelden dürfen. Die zweite Zeile weist allen
|
|
anderen Benutzern <filename>/sbin/nologin</filename> als Shell
|
|
zu. Verwenden Sie auch hier (analog zu den Netzgruppen)
|
|
Großbuchstaben für die Rechnernamen. Die Zeilen
|
|
sollten also ähnlich den folgenden aussehen:</para>
|
|
|
|
<programlisting>+@<replaceable>BOXNAME</replaceable>:::::::::
|
|
+:::::::::/sbin/nologin</programlisting>
|
|
|
|
<para>Wenn Sie dies für alle Rechner erledigt haben, werden
|
|
Sie die lokalen Versionen von
|
|
<filename>/etc/master.passwd</filename> nie mehr verändern
|
|
müssen. Alle weiteren Änderungen geschehen über
|
|
die NIS-Maps. Nachfolgend ein Beispiel für eine
|
|
mögliche Netzgruppen-Map, die durch einige Besonderheiten
|
|
erweitert wurde:</para>
|
|
|
|
<programlisting># Define groups of users first
|
|
IT_EMP (,alpha,test-domain) (,beta,test-domain)
|
|
IT_APP (,charlie,test-domain) (,delta,test-domain)
|
|
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
|
|
DEPT2 (,golf,test-domain) (,hotel,test-domain)
|
|
DEPT3 (,india,test-domain) (,juliet,test-domain)
|
|
ITINTERN (,kilo,test-domain) (,lima,test-domain)
|
|
D_INTERNS (,able,test-domain) (,baker,test-domain)
|
|
#
|
|
# Now, define some groups based on roles
|
|
USERS DEPT1 DEPT2 DEPT3
|
|
BIGSRV IT_EMP IT_APP
|
|
SMALLSRV IT_EMP IT_APP ITINTERN
|
|
USERBOX IT_EMP ITINTERN USERS
|
|
#
|
|
# And a groups for a special tasks
|
|
# Allow echo and golf to access our anti-virus-machine
|
|
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
|
|
#
|
|
# machine-based netgroups
|
|
# Our main servers
|
|
WAR BIGSRV
|
|
FAMINE BIGSRV
|
|
# User india needs access to this server
|
|
POLLUTION BIGSRV (,india,test-domain)
|
|
#
|
|
# This one is really important and needs more access restrictions
|
|
DEATH IT_EMP
|
|
#
|
|
# The anti-virus-machine mentioned above
|
|
ONE SECURITY
|
|
#
|
|
# Restrict a machine to a single user
|
|
TWO (,hotel,test-domain)
|
|
# [...more groups to follow]
|
|
</programlisting>
|
|
|
|
<para>Wenn Sie eine Datenbank verwenden, um Ihre Benutzerkonten zu
|
|
verwalten, sollten Sie den ersten Teil der NIS-Map mit Ihren
|
|
Datenbanktools erstellen können. Auf diese Weise haben
|
|
neue Benutzer automatisch Zugriff auf die Rechner.</para>
|
|
|
|
<para>Eine letzte Warnung: Es ist nicht immer ratsam,
|
|
rechnerbasierte Netzgruppen zu verwenden. Wenn Sie Dutzende
|
|
oder gar Hunderte identische Rechner einrichten müssen,
|
|
sollten Sie rollenbasierte Netzgruppen verwenden, um die
|
|
Grösse der NISs-Maps in Grenzen zu halten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere wichtige Punkte</title>
|
|
|
|
<para>Nachdem Sie Ihre NIS-Umgebung eingerichtet haben,
|
|
müssen Sie einige Dinge anders als bisher erledigen.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Jedes Mal, wenn Sie einen neuen Benutzer anlegen wollen,
|
|
tun Sie dies <emphasis>ausschließlich</emphasis> am
|
|
NIS-Masterserver. Außerdem
|
|
<emphasis>müssen</emphasis> Sie anschließend die
|
|
NIS-Maps neu erzeugen. Wenn Sie diesen Punkt vergessen,
|
|
kann sich der neue Benutzer <emphasis>nur</emphasis> am
|
|
NIS-Masterserver anmelden. Wenn Sie also den neuen Benutzer
|
|
<username>jsmith</username> anlegen, gehen Sie
|
|
folgerndermassen vor:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pw useradd jsmith</userinput>
|
|
&prompt.root; <userinput>cd /var/yp</userinput>
|
|
&prompt.root; <userinput>make test-domain</userinput></screen>
|
|
|
|
<para>Statt <command>pw useradd jsmith</command> könnten
|
|
Sie auch <command>adduser jsmith</command> verwenden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Tragen Sie die Administratorkonten nicht
|
|
in die NIS-Maps ein</emphasis>. Administratorkonten und
|
|
Passwörter dürfen nicht auf Rechnern verbreitet
|
|
werden, auf denen sich Benutzer anmelden können, die
|
|
auf diese Konten keine Zugriff haben sollen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis>Sichern Sie die NIS-Master- und Slaveserver
|
|
und minimieren Sie die Ausfallzeiten</emphasis>. Wenn
|
|
diese Rechner gehackt oder einfach nur ausgeschaltet werden,
|
|
haben viele Leute keinen Netzwerkzugriff mehr.</para>
|
|
|
|
<para>Dies ist die größte Schwäche
|
|
jeder zentralen Verwaltung. Wenn Sie Ihre NIS-Server nicht
|
|
schützen, werden Sie viele verärgerte Anwender
|
|
haben.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Kompatibilität zu NIS v1</title>
|
|
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Kompatibilität zu NIS v1</secondary>
|
|
</indexterm>
|
|
|
|
<para><application>ypserv</application> unterstützt NIS v1
|
|
unter FreeBSD nur eingeschränkt. Die NIS-Implementierung
|
|
von FreeBSD verwendet nur NIS v2, andere Implementierungen
|
|
unterstützen aus Gründen der
|
|
Abwärtskompatibilität mit älteren Systemen auch
|
|
NIS v1. Die mit diesen Systemen gelieferten
|
|
<application>ypbind</application>-Daemonen versuchen, sich an
|
|
einen NIS-v1-Server zu binden (Dies selbst dann, wenn sie ihn
|
|
nie benötigen. Außerdem versuchen Sie auch dann,
|
|
einen v1-Server zu erreichen, wenn Sie zuvor eine Antwort von
|
|
einem v2-Server erhalten.). Während normale Clientaufrufe
|
|
unter FreeBSD unterstützt werden, sind Anforderungen zum
|
|
Transfer von v1-Maps nicht möglich. Daher kann FreeBSD
|
|
nicht als Client oder Server verwendet werden, wenn ein
|
|
NIS-Server vorhanden ist, der nur NIS v1 unterstützt.
|
|
Glücklicherweise sollte es heute keine Server mehr geben,
|
|
die nur NIS v1 unterstützen.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="nis-server-is-client">
|
|
<title>NIS-Server, die auch als NIS-Clients arbeiten</title>
|
|
|
|
<para>Wenn Sie <application>ypserv</application> in einer
|
|
Multi-Serverdomäne verwenden, in der NIS-Server
|
|
gleichzeitig als NIS-Clients arbeiten, ist es eine gute Idee,
|
|
diese Server zu zwingen, sich an sich selbst zu binden. Damit
|
|
wird verhindert, dass Bindeanforderungen gesendet werden und
|
|
sich die Server gegenseitig binden. Sonst könnten seltsame
|
|
Fehler auftreten, wenn ein Server ausfällt, auf den andere
|
|
Server angewiesen sind. Letztlich werden alle Clients einen
|
|
Timeout melden, und versuchen, sich an andere Server zu binden.
|
|
Die dadurch entstehende Verzögerung kann beträchtlich
|
|
sein. Außerdem kann der Fehler erneut auftreten, da sich
|
|
die Server wiederum aneinander binden könnten.</para>
|
|
|
|
<para>Sie können einen Rechner durch die Verwendung von
|
|
<command>ypbind</command> sowie der Option <option>-S</option>
|
|
zwingen, sich an einen bestimmten Server zu binden. Um diesen
|
|
Vorgang zu automatisieren, können Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> einfügen:</para>
|
|
|
|
<programlisting>nis_client_enable="YES" # run client stuff as well
|
|
nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting>
|
|
|
|
<para>Lesen Sie &man.ypbind.8;, wenn Sie weitere Informationen
|
|
benötigen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Passwortformate</title>
|
|
<indexterm>
|
|
<primary>NIS</primary>
|
|
<secondary>Passwortformate</secondary>
|
|
</indexterm>
|
|
<para>Unterschiedliche Passwortformate sind das Hauptproblem,
|
|
das beim Einrichten eines NIS-Servers auftreten kann.
|
|
Wenn der NIS-Server mit DES verschlüsselte Passwörter
|
|
verwendet, werden nur Clients unterstützt, die ebenfalls
|
|
DES benutzen. Wenn sich auf Ihrem Netzwerk beispielsweise
|
|
&solaris; NIS-Clients befinden, müssen die Passwörter
|
|
mit DES verschlüsselt werden.</para>
|
|
|
|
<para>Welches Format die Server und Clients verwenden,
|
|
steht in <filename>/etc/login.conf</filename>. Wenn ein
|
|
System Passwörter mit DES verschlüsselt,
|
|
enthält die <literal>default</literal>-Klasse einen
|
|
Eintrag wie den folgenden:</para>
|
|
|
|
<programlisting>default:\
|
|
:passwd_format=des:\
|
|
:copyright=/etc/COPYRIGHT:\
|
|
[weitere Einträge]</programlisting>
|
|
|
|
<para>Mögliche Werte für
|
|
<literal>passwd_format</literal> sind unter anderem
|
|
<literal>blf</literal> und <literal>md5</literal> (mit
|
|
Blowfish und MD5 verschlüsselte Passwörter).</para>
|
|
|
|
<para>Wenn die Datei <filename>/etc/login.conf</filename>
|
|
geändert wird, muss die Login-Capability Datenbank
|
|
neu erstellt werden. Geben Sie dazu als
|
|
<username>root</username> den folgenden Befehl ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
|
|
|
|
<note>
|
|
<para>Das Format der schon in
|
|
<filename>/etc/master.passwd</filename> befindlichen
|
|
Passwörter wird erst aktualisiert, wenn ein Benutzer
|
|
sein Passwort ändert, <emphasis>nachdem</emphasis>
|
|
die Datenbank neu erstellt wurde.</para>
|
|
</note>
|
|
|
|
<para>Damit die Passwörter auch im gewählten
|
|
Format abgespeichert werden, muss mit
|
|
<literal>crypt_default</literal> in der Datei
|
|
<filename>/etc/auth.conf</filename> die richtige
|
|
Priorität der Formate eingestellt werden. Das
|
|
gewählte Format sollte als Erstes in der Liste
|
|
stehen. Sollen die Passwörter mit DES verschlüsselt
|
|
werden, verwenden Sie den folgenden Eintrag:</para>
|
|
|
|
<programlisting>crypt_default = des blf md5</programlisting>
|
|
|
|
<para>Wenn Sie alle &os; NIS-Server und NIS-Clients entsprechend
|
|
den obigen Schritten eingestellt haben, wird im ganzen
|
|
Netzwerk dasselbe Passwortformat verwendet. Falls Sie
|
|
Probleme mit der Authentifizierung eines NIS-Clients
|
|
haben, kontrollieren Sie die verwendeten Passwortformate.
|
|
In einer heterogenen Umgebung werden Sie DES benutzen
|
|
müssen, da dies der meist unterstützte Standard
|
|
ist.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-dhcp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Greg</firstname>
|
|
<surname>Sutter</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Automatische Netzwerkkonfiguration mit DHCP</title>
|
|
|
|
<sect2>
|
|
<title>Was ist DHCP?</title>
|
|
|
|
<indexterm>
|
|
<primary>Dynamic Host Configuration Protocol</primary>
|
|
<see>DHCP</see>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Internet Systems Consortium (ISC)</primary>
|
|
</indexterm>
|
|
|
|
<para>Über DHCP, das Dynamic Host Configuration Protocol,
|
|
kann sich ein System mit einem Netzwerk verbinden und die
|
|
für die Kommunikation mit diesem Netzwerk nötigen
|
|
Informationen beziehen. &os; verwendet den von
|
|
OpenBSD 3.7 stammenden <command>dhclient</command>.
|
|
Die Informationen in diesem Abschnitt
|
|
beziehen sich daher sowohl auf den <command>dhclient</command>
|
|
von ISC als auch auf den von OpenBSD. Als DHCP-Server wird
|
|
in beiden Fällen der DHCP-Server der ISC-Distribution
|
|
verwendet.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt sowohl die Clientseite des
|
|
ISC- als auch des OpenBSD-Clients sowie die
|
|
Serverseite des DHCP-Systems von ISC. Das Clientprogramm
|
|
<command>dhclient</command> ist in FreeBSD integriert, das
|
|
Serverprogramm kann über den Port
|
|
<filename role="package">net/isc-dhcp42-server</filename>
|
|
installiert werden. Weiter Informationen finden Sie in
|
|
&man.dhclient.8;, &man.dhcp-options.5; sowie
|
|
&man.dhclient.conf.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert DHCP?</title>
|
|
|
|
<indexterm><primary>UDP</primary></indexterm>
|
|
|
|
<para>Der DHCP-Client <command>dhclient</command> beginnt von
|
|
einem Clientrechner aus über den UDP-Port 68
|
|
Konfigurationsinformationen anzufordern. Der Server antwortet
|
|
auf dem UDP-Port 67, indem er dem Client eine IP-Adresse
|
|
zuweist und ihm weitere wichtige Informationen über das
|
|
Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese
|
|
Informationen werden als
|
|
<firstterm>DHCP-Lease</firstterm> bezeichnet und
|
|
sind nur für eine bestimmte Zeit, die vom Administrator des
|
|
DHCP-Servers vorgegeben wird, gültig. Dadurch fallen
|
|
verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk
|
|
verbunden sind, automatisch an den Server zurück.</para>
|
|
|
|
<para>DHCP-Clients können sehr viele Informationen von einem
|
|
DHCP-Server erhalten. Eine ausführliche Liste finden Sie
|
|
in &man.dhcp-options.5;.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Integration in FreeBSD</title>
|
|
|
|
<para>&os; verwendet den DHCP-Client von OpenBSD.
|
|
Sowohl während der Installation als
|
|
auch im Basissystem steht der DHCP-Client zur Verfügung.
|
|
In Netzen mit DHCP-Servern wird dadurch die Konfiguration von
|
|
Systemen erheblich vereinfacht.</para>
|
|
|
|
<indexterm>
|
|
<primary><application>sysinstall</application></primary>
|
|
</indexterm>
|
|
|
|
<para>DHCP wird von <application>sysinstall</application>
|
|
unterstützt. Wenn Sie eine Netzwerkkarte mit
|
|
<application>sysinstall</application> konfigurieren, lautet
|
|
die zweite Frage <quote>Do you want to try DHCP configuration
|
|
of the interface?</quote>. Wenn Sie diese Frage bejahen, wird
|
|
<command>dhclient</command> aufgerufen, und die Netzkarte wird
|
|
automatisch eingerichtet.</para>
|
|
|
|
<para>Um DHCP beim Systemstart zu aktivieren, müssen Sie zwei
|
|
Dinge erledigen:</para>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>Anforderungen</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Stellen Sie sicher, dass <devicename>bpf</devicename> in
|
|
Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile
|
|
<literal>device bpf</literal>
|
|
in Ihre Kernelkonfigurationsdatei ein und erzeugen einen
|
|
neuen Kernel. Weitere Informationen zur Kernelkonfiguration
|
|
finden Sie in <xref linkend="kernelconfig"/> des Handbuchs.
|
|
</para>
|
|
|
|
<para>Das Gerät <devicename>bpf</devicename> ist im
|
|
<filename>GENERIC</filename>-Kernel bereits enthalten.
|
|
Für die Nutzung von DHCP muss also kein angepasster
|
|
Kernel erzeugt werden.</para>
|
|
|
|
<note>
|
|
<para>Wenn Sie um die Sicherheit Ihres Systems besorgt
|
|
sind, sollten Sie wissen, dass
|
|
<devicename>bpf</devicename> auch zur Ausführung
|
|
von Paketsniffern erforderlich ist (obwohl diese dennoch
|
|
als <username>root</username> ausgeführt werden
|
|
müssen). <devicename>bpf</devicename>
|
|
<emphasis>muss</emphasis> vorhanden sein, damit DHCP
|
|
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
|
|
Sie <devicename>bpf</devicename> aus Ihrem Kernel
|
|
entfernen, wenn Sie DHCP nicht verwenden.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Standardmässig läuft die DHCP-Konfiguration
|
|
bei &os; im Hintergrund oder auch
|
|
<firstterm>asynchron</firstterm>. Andere Startskripte laufen
|
|
weiter, während DHCP fertig abgearbeitet wird, was den
|
|
Systemstart beschleunigt.</para>
|
|
|
|
<para>DHCP im Hintergrund funktioniert gut, wenn der DHCP-Server
|
|
schnell auf Anfragen antwortet und der
|
|
DHCP-Konfigurationsprozess ebenso schnell abläuft.
|
|
Jedoch kann DHCP eine lange Zeit benötigen, um auf
|
|
manchen Systemen fertig zu werden. Falls Netzwerkdienste
|
|
versuchen, vor DHCP zum Ende zu kommen, werden diese
|
|
fehlschlagen. Durch die Verwendung von DHCP im
|
|
<firstterm>asynchronen</firstterm>-Modus wird das Problem
|
|
verhindert, so dass die Startskripte pausiert werden, bis
|
|
die DHCP-Konfiguration abgeschlossen ist.</para>
|
|
|
|
<para>Um sich zu einem DHCP-Server im Hintergrund zu verbinden,
|
|
während andere Startskripte fortfahren
|
|
(asynchroner Modus), benutzen Sie den
|
|
<quote><literal>DHCP</literal></quote>-Wert in
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>ifconfig_<replaceable>fxp0</replaceable>="DHCP"</programlisting>
|
|
|
|
<para>Um den Start zu pausieren, damit DHCP vorher
|
|
abgeschlossen werden kann, benutzen Sie den synchronen Modus
|
|
mit dem Eintrag
|
|
<quote><literal>SYNCDHCP</literal></quote>:</para>
|
|
|
|
<programlisting>ifconfig_<replaceable>fxp0</replaceable>="SYNCDHCP"</programlisting>
|
|
|
|
<note>
|
|
<para>Ersetzen Sie <replaceable>fxp0</replaceable>, das
|
|
in diesen Beispielen verwendet wurde, durch den Namen Ihrer
|
|
Netzwerkschnittstelle, so wie es in <xref
|
|
linkend="config-network-setup"/> beschrieben ist.</para>
|
|
</note>
|
|
|
|
<para>Wenn Sie <command>dhclient</command> an einem anderen
|
|
Ort installiert haben, oder zusätzliche Flags an
|
|
<command>dhclient</command> übergeben wollen,
|
|
fügen Sie auch folgende (entsprechend angepasste)
|
|
Zeilen ein:</para>
|
|
|
|
<programlisting>dhclient_program="/sbin/dhclient"
|
|
dhclient_flags=""</programlisting>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>Server</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der DHCP-Server <application>dhcpd</application> ist als
|
|
Teil des Ports
|
|
<filename role="package">net/isc-dhcp42-server</filename>
|
|
verfügbar. Dieser Port enthält die komplette
|
|
ISC-DHCP-Distribution, inklusive der Dokumentation.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Dateien</title>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename>/etc/dhclient.conf</filename></para>
|
|
|
|
<para><command>dhclient</command> benötigt die
|
|
Konfigurationsdatei <filename>/etc/dhclient.conf</filename>.
|
|
Diese Datei enthält normalerweise nur Kommentare, da
|
|
die Vorgabewerte zumeist ausreichend sind. Lesen Sie dazu
|
|
auch &man.dhclient.conf.5;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/sbin/dhclient</filename></para>
|
|
|
|
<para><command>dhclient</command> ist statisch gelinkt und
|
|
befindet sich in <filename>/sbin</filename>. Weitere
|
|
Informationen finden Sie in &man.dhclient.8;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/sbin/dhclient-script</filename></para>
|
|
|
|
<para>Bei <command>dhclient-script</command> handelt es sich
|
|
um das FreeBSD-spezifische Konfigurationsskript des
|
|
DHCP-Clients. Es wird in &man.dhclient-script.8;
|
|
beschrieben und kann meist unverändert übernommen
|
|
werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/var/db/dhclient.leases</filename></para>
|
|
|
|
<para>Der DHCP-Client verfügt über eine Datenbank,
|
|
die alle derzeit gültigen Leases enthält und als
|
|
Logdatei erzeugt wird. Weitere Informationen finden Sie in
|
|
&man.dhclient.8;.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere Informationen</title>
|
|
|
|
<para>Das DHCP-Protokoll wird vollständig im
|
|
<ulink url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>
|
|
beschrieben. Eine weitere, lehrreiche Informationsquelle
|
|
existiert unter
|
|
<ulink url="http://www.dhcp.org/"></ulink>.</para>
|
|
</sect2>
|
|
|
|
<sect2 id="network-dhcp-server">
|
|
<title>Einen DHCP-Server installieren und einrichten</title>
|
|
|
|
<sect3>
|
|
<title>Übersicht</title>
|
|
|
|
<para>Dieser Abschnitt beschreibt die Einrichtung eines
|
|
FreeBSD-Systems als DHCP-Server. Dazu wird die
|
|
DHCP-Implementation von ISC (Internet Systems Consortium)
|
|
verwendet.</para>
|
|
|
|
<para>Der DHCP-Server ist nicht im Basissystem von FreeBSD
|
|
enthalten, daher müssen Sie als Erstes den Port
|
|
<filename role="package">net/isc-dhcp42-server</filename>
|
|
installieren. Lesen Sie <xref linkend="ports"/>, wenn Sie
|
|
weitere Informationen zur Ports-Sammlung benötigen.
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den DHCP-Server installieren</title>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>installieren</secondary>
|
|
</indexterm>
|
|
|
|
<para>Stellen Sie sicher, dass &man.bpf.4; in Ihren Kernel
|
|
kompiliert ist. Dazu fügen Sie die Zeile
|
|
<literal>device bpf</literal>
|
|
Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen
|
|
Kernel. Die Kernelkonfiguration wird in
|
|
<xref linkend="kernelconfig"/> beschrieben.</para>
|
|
|
|
<para>Das Gerät <devicename>bpf</devicename> ist im
|
|
<filename>GENERIC</filename>-Kernel bereits enthalten.
|
|
Für die Nutzung von DHCP muss also kein angepasster
|
|
Kernel erzeugt werden.</para>
|
|
|
|
<note>
|
|
<para>Wenn Sie um die Sicherheit Ihres Systems besorgt
|
|
sind, sollten Sie wissen, dass
|
|
<devicename>bpf</devicename> auch zur Ausführung
|
|
von Paketsniffern erforderlich ist (obwohl diese dennoch
|
|
als <username>root</username> ausgeführt werden
|
|
müssen). <devicename>bpf</devicename>
|
|
<emphasis>muss</emphasis> vorhanden sein, damit DHCP
|
|
funktioniert. Sind Sie sehr sicherheitsbewusst, sollten
|
|
Sie <devicename>bpf</devicename> aus Ihrem Kernel
|
|
entfernen, wenn Sie DHCP nicht verwenden.</para>
|
|
</note>
|
|
|
|
<para>Danach müssen Sie die vom Port
|
|
<filename role="package">net/isc-dhcp42-server</filename>
|
|
erzeugte Vorlage für <filename>dhcpd.conf</filename>
|
|
anpassen. Die bei der Installation erzeugte Datei
|
|
<filename>/usr/local/etc/dhcpd.conf.sample</filename>
|
|
sollten Sie nach
|
|
<filename>/usr/local/etc/dhcpd.conf</filename> kopieren,
|
|
bevor Sie Veränderungen vornehmen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den DHCP-Server einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>DHCP</primary>
|
|
<secondary>dhcpd.conf</secondary>
|
|
</indexterm>
|
|
|
|
<para><filename>dhcpd.conf</filename> besteht aus Festlegungen
|
|
zu Subnetzen und Rechnern und lässt sich am besten an
|
|
einem Beispiel erklären:</para>
|
|
|
|
<programlisting>option domain-name "example.com";<co id="domain-name"/>
|
|
option domain-name-servers 192.168.4.100;<co id="domain-name-servers"/>
|
|
option subnet-mask 255.255.255.0;<co id="subnet-mask"/>
|
|
|
|
default-lease-time 3600;<co id="default-lease-time"/>
|
|
max-lease-time 86400;<co id="max-lease-time"/>
|
|
ddns-update-style none;<co id="ddns-update-style"/>
|
|
|
|
subnet 192.168.4.0 netmask 255.255.255.0 {
|
|
range 192.168.4.129 192.168.4.254;<co id="range"/>
|
|
option routers 192.168.4.1;<co id="routers"/>
|
|
}
|
|
|
|
host mailhost {
|
|
hardware ethernet 02:03:04:05:06:07;<co id="hardware"/>
|
|
fixed-address mailhost.example.com;<co id="fixed-address"/>
|
|
}</programlisting>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="domain-name">
|
|
<para>Diese Option beschreibt die Domäne, die den
|
|
Clients als Standardsuchdomäne zugewiesen wird.
|
|
Weitere Informationen finden Sie in man.resolv.conf.5;.
|
|
</para>
|
|
</callout>
|
|
|
|
<callout arearefs="domain-name-servers">
|
|
<para>Diese Option legt eine, durch Kommata getrennte
|
|
Liste von DNS-Servern fest, die von den Clients
|
|
verwendet werden sollen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="subnet-mask">
|
|
<para>Die den Clients zugewiesene Netzmaske.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="default-lease-time">
|
|
<para>Ein Client kann eine Lease einer bestimmten Dauer
|
|
anfordern. Geschieht dies nicht, weist der Server eine
|
|
Lease mit einer vorgegebenen Ablaufdauer (in Sekunden)
|
|
zu.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="max-lease-time">
|
|
<para>Die maximale Zeitdauer, für die der Server
|
|
Konfigurationsinformationen vergibt. Sollte ein Client
|
|
eine längere Zeitspanne anfordern, wird dennoch
|
|
nur der Wert <literal>max-lease-time</literal> in
|
|
Sekunden zugewiesen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="ddns-update-style">
|
|
<para>Diese Option legt fest, ob der DHCP-Server eine
|
|
DNS-Aktualisierung versuchen soll, wenn
|
|
Konfigurationsdateien vergeben oder zurückgezogen
|
|
werden. In der ISC-Implementation
|
|
<emphasis>muss</emphasis> diese Option gesetzt sein.
|
|
</para>
|
|
</callout>
|
|
|
|
<callout arearefs="range">
|
|
<para>Dadurch werden die IP-Adressen festgelegt, die den
|
|
Clients zugewiesen werden können. IP-Adressen
|
|
zwischen diesen Grenzen sowie die einschließenden
|
|
Adressen werden den Clients zugewiesen.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="routers">
|
|
<para>Legt das Standard-Gateway fest, das den Clients
|
|
zugewiesen wird.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="hardware">
|
|
<para>Die (Hardware-)MAC-Adresse eines Rechners (durch die
|
|
der DHCP-Server den Client erkennt, der eine Anforderung
|
|
an ihn stellt).</para>
|
|
</callout>
|
|
|
|
<callout arearefs="fixed-address">
|
|
<para>Einem Rechner soll immer die gleiche IP-Adresse
|
|
zugewiesen werden. Beachten Sie, dass hier auch ein
|
|
Rechnername gültig ist, da der DHCP-Server den
|
|
Rechnernamen auflöst, bevor er die
|
|
Konfigurationsinformationen zuweist.</para>
|
|
</callout>
|
|
</calloutlist>
|
|
|
|
<para>Nachdem Sie <filename>dhcpd.conf</filename> fertig
|
|
konfiguriert haben, sollten Sie den DHCP-Server aktivieren,
|
|
indem Sie folgende Zeilen in
|
|
<filename>/etc/rc.conf</filename> aufnehmen:</para>
|
|
|
|
<programlisting>dhcpd_enable="YES"
|
|
dhcpd_ifaces="dc0"</programlisting>
|
|
|
|
<para>Dabei müssen Sie den Geräteeintrag
|
|
<literal>dc0</literal> durch die Gerätedatei (mehrere
|
|
Gerätedateien müssen durch Leerzeichen getrennt
|
|
werden) ersetzen, die Ihr DHCP-Server auf Anfragen von
|
|
DHCP-Clients hin überwachen soll.</para>
|
|
|
|
<para>Danach können Sie den Server durch Eingabe des
|
|
folgenden Befehls starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd start</userinput></screen>
|
|
|
|
<para>Sollten Sie die Konfiguration Ihres Servers einmal
|
|
verändern müssen, reicht es nicht aus, ein
|
|
<literal>SIGHUP</literal>-Signal an
|
|
<application>dhcpd</application> zu senden, weil damit die
|
|
Konfiguration <emphasis>nicht</emphasis> erneut geladen wird
|
|
(im Gegensatz zu den meisten Daemonen). Sie müssen
|
|
den Prozess vielmehr mit dem Signal
|
|
<literal>SIGTERM</literal> stoppen, um ihn
|
|
anschließend neu zu starten.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Dateien</title>
|
|
|
|
<indexterm>
|
|
<primary>Server</primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename>/usr/local/sbin/dhcpd</filename></para>
|
|
|
|
<para><application>dhcpd</application> ist statisch
|
|
gelinkt und befindet sich in
|
|
<filename>/usr/local/sbin</filename>. Lesen Sie auch die
|
|
mit dem Port installierte Hilfeseite &man.dhcpd.8;, wenn
|
|
Sie weitere Informationen zu
|
|
<application>dhcpd</application> benötigen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/usr/local/etc/dhcpd.conf</filename></para>
|
|
|
|
<para><application>dhcpd</application> benötigt die
|
|
Konfigurationsdatei
|
|
<filename>/usr/local/etc/dhcpd.conf</filename>, damit
|
|
der Server den Clients seine Dienste anbieten kann.
|
|
Diese Datei muss alle Informationen enthalten, die an
|
|
die Clients weitergegeben werden soll. Außerdem
|
|
sind hier Informationen zur Konfiguration des Servers
|
|
enthalten. Die mit dem Port installierte Hilfeseite
|
|
&man.dhcpd.conf.5; enthält weitere Informationen.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/var/db/dhcpd.leases</filename></para>
|
|
|
|
<para>Der DHCP-Server hat eine Datenbank, die alle
|
|
vergebenen Leases enthält. Diese wird als Logdatei
|
|
erzeugt. Weitere Informationen finden Sie in der vom
|
|
Port installierten Hilfeseite &man.dhcpd.leases.5;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>/usr/local/sbin/dhcrelay</filename></para>
|
|
|
|
<para><application>dhcrelay</application> wird in
|
|
komplexen Umgebungen verwendet, in denen ein DHCP-Server
|
|
eine Anfrage eines Clients an einen DHCP-Server in einem
|
|
separaten Netzwerk weiterleitet. Wenn Sie diese
|
|
Funktion benötigen, müssen Sie den Port
|
|
<filename role="package">net/isc-dhcp42-relay</filename>
|
|
installieren. Weitere Informationen zu diesem Thema
|
|
finden Sie in &man.dhcrelay.8;.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-dns">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Chern</firstname>
|
|
<surname>Lee</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
</author>
|
|
|
|
<author>
|
|
<firstname>Daniel</firstname>
|
|
<surname>Gerzo</surname>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title><acronym>DNS</acronym> – Domain Name Service</title>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<indexterm><primary>BIND</primary></indexterm>
|
|
|
|
<para>DNS ist das für die Umwandlung von Rechnernamen in
|
|
IP-Adressen zuständige Protokoll. &os; verwendet dazu
|
|
BIND (Berkeley Internet Name Domain), die am häufigsten
|
|
verwendete Implementierung von <acronym>DNS</acronym>).
|
|
Eine Anfrage nach <hostid
|
|
role="fqdn">www.FreeBSD.org</hostid> gibt die
|
|
<acronym>IP</acronym>-Adresse des &os;-Webservers, eine Anfrage
|
|
nach <hostid role="fqdn">ftp.FreeBSD.org</hostid> die
|
|
<acronym>IP</acronym>-Adresse des entsprechenden
|
|
<acronym>FTP-Servers</acronym> zurück. Der umgekehrte Weg
|
|
ist ebenso möglich, eine <acronym>IP</acronym>-Adresse
|
|
kann also auch in ihren Rechnernamen aufgelöst werden. Um
|
|
eine <acronym>DNS</acronym>-Abfrage durchzuführen, muss auf
|
|
dem jeweiligen Rechner kein Nameserver installiert sein.</para>
|
|
|
|
<para>&os; verwendet derzeit in der Voreinstellung
|
|
<acronym>BIND</acronym>9 als
|
|
<acronym>DNS</acronym>-Serversoftware. Unsere Installation
|
|
bietet Ihnen eine erhöhte Sicherheit, ein neues
|
|
Dateisystemlayout sowie eine automatisierte
|
|
&man.chroot.8;-Konfiguration.</para>
|
|
|
|
<indexterm><primary>DNS</primary></indexterm>
|
|
|
|
<para>Im Internet wird <acronym>DNS</acronym> durch ein komplexes
|
|
System von autoritativen Root-Nameservern,
|
|
Top Level Domain-Servern (<acronym>TLD</acronym>) sowie anderen
|
|
kleineren Nameservern verwaltet, die individuelle Rechnerinformationen
|
|
speichern und untereinander abgleichen.</para>
|
|
|
|
<para>Derzeit wird BIND vom Internet Systems Consortium
|
|
(<ulink url="https://www.isc.org/"></ulink>) verwaltet.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Begriffsbestimmungen</title>
|
|
|
|
<para>Um dieses Dokument besser verstehen zu können,
|
|
müssen einige <acronym>DNS</acronym>-spezifische
|
|
Begriffe genauer definiert werden.</para>
|
|
|
|
<indexterm><primary>Resolver</primary></indexterm>
|
|
<indexterm><primary>Reverse-DNS</primary></indexterm>
|
|
<indexterm><primary>Root-Zone</primary></indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="3*"/>
|
|
|
|
<thead>
|
|
<row>
|
|
<entry>Begriff</entry>
|
|
|
|
<entry>Bedeutung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>Forward-<acronym>DNS</acronym></entry>
|
|
|
|
<entry>Rechnernamen in <acronym>IP</acronym>-Adressen
|
|
umwandeln.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Origin (Ursprung)</entry>
|
|
|
|
<entry>Die in einer bestimmten Zonendatei beschriebene
|
|
Domäne.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><application>named</application>, BIND</entry>
|
|
|
|
<entry>Gebräuchliche Namen für das unter &os;
|
|
verwendete BIND-Nameserverpaket.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Resolver</entry>
|
|
|
|
<entry>Ein Systemprozess, durch den ein Rechner
|
|
Zoneninformationen von einem Nameserver anfordert.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Reverse-<acronym>DNS</acronym></entry>
|
|
|
|
<entry>die Umwandlung von <acronym>IP</acronym>-Adressen in
|
|
Rechnernamen</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Root-Zone</entry>
|
|
|
|
<entry>Der Beginn der Internet-Zonenhierarchie. Alle
|
|
Zonen befinden sich innerhalb der Root-Zone. Dies ist
|
|
analog zu einem Dateisystem, in dem sich alle Dateien
|
|
und Verzeichnisse innerhalb des Wurzelverzeichnisses
|
|
befinden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>Zone</entry>
|
|
|
|
<entry>Eine individuelle Domäne, Unterdomäne,
|
|
oder ein Teil von <acronym>DNS</acronym>, der von der
|
|
gleichen Autorität verwaltet wird.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<indexterm>
|
|
<primary>Zonen</primary>
|
|
<secondary>Beispiele</secondary>
|
|
</indexterm>
|
|
|
|
<para>Es folgen nun einige Zonenbeispiele:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Innerhalb der Dokumentation wird die Root-Zone in der
|
|
Regel mit <hostid>.</hostid> bezeichnet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid>org.</hostid> ist eine Top level Domain
|
|
(<acronym>TLD</acronym>) innerhalb der Root-Zone.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid role="domainname">example.org.</hostid>
|
|
ist eine Zone innerhalb der
|
|
<hostid>org.</hostid>-<acronym>TLD</acronym>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><hostid>1.168.192.in-addr.arpa.</hostid> ist die Zone mit
|
|
allen IP-Adressen des <hostid
|
|
role="domainname">192.168.1.*</hostid>-IP-Bereichs.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wie man an diesen Beispielen erkennen kann, befindet sich
|
|
der spezifischere Teil eines Rechnernamens auf der linken Seite
|
|
der Adresse. <hostid role="domainname">example.org.</hostid>
|
|
beschreibt einen Rechner also genauer als <hostid>org.</hostid>,
|
|
während <hostid>org.</hostid> genauer als die Root-Zone
|
|
ist. Jeder Teil des Rechnernamens hat Ähnlichkeiten mit
|
|
einem Dateisystem, in dem etwa <filename>/dev</filename> dem
|
|
Wurzelverzeichnis untergeordnet ist.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Gründe für die Verwendung eines
|
|
Nameservers</title>
|
|
|
|
<para>Es gibt zwei Arten von Nameservern: Autoritative Nameserver
|
|
sowie zwischenspeichernde (cachende, auch bekannt als
|
|
auflösende) Nameserver.</para>
|
|
|
|
<para>Ein autoritativer Nameserver ist notwendig, wenn</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Sie anderen verbindliche
|
|
<acronym>DNS</acronym>-Auskünfte erteilen wollen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>eine Domain, beispielsweise
|
|
<hostid role="domainname">example.org</hostid>, registriert
|
|
wird, und den zu dieser Domain gehörenden Rechnern
|
|
<acronym>IP</acronym>-Adressen zugewiesen werden
|
|
müssen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein <acronym>IP</acronym>-Adressblock
|
|
reverse-<acronym>DNS</acronym>-Einträge benötigt,
|
|
um <acronym>IP</acronym>-Adressen in Rechnernamen
|
|
auflösen zu können.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ein Backup-Nameserver (auch Slaveserver genannt) oder
|
|
ein zweiter Nameserver auf Anfragen antworten soll.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Ein cachender Nameserver ist notwendig, weil</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>ein lokaler DNS-Server Daten zwischenspeichern und daher
|
|
schneller auf Anfragen reagieren kann als ein entfernter
|
|
Server.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Wird nach <hostid role="fqdn">www.FreeBSD.org</hostid>
|
|
gesucht, leitet der Resolver diese Anfrage an den Nameserver des
|
|
ISPs weiter und nimmt danach das Ergebnis der
|
|
Abfrage entgegen. Existiert ein lokaler, zwischenspeichernder
|
|
<acronym>DNS</acronym>-Server, muss dieser die Anfrage nur einmal
|
|
nach außen weitergeben. Für alle weiteren Anfragen
|
|
ist dies nicht mehr nötig, da diese Information nun lokal
|
|
gespeichert ist.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wie funktioniert <acronym>DNS</acronym>?</title>
|
|
|
|
<para>Unter &os; wird der BIND-Daemon als
|
|
<application>named</application> bezeichnet.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Datei</entry>
|
|
|
|
<entry>Beschreibung</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><application>named</application></entry>
|
|
|
|
<entry>Der BIND-Daemon.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>&man.rndc.8;</entry>
|
|
|
|
<entry>Das Steuerprogramm für
|
|
<application>named</application>.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename class="directory">/etc/namedb</filename></entry>
|
|
|
|
<entry>Das Verzeichnis, in dem sich die Zoneninformationen
|
|
für BIND befinden.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>/etc/namedb/named.conf</filename></entry>
|
|
|
|
<entry>Die Konfigurationsdatei für
|
|
<application>named</application>.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Je nachdem, wie eine Zone auf dem Server konfiguriert wurde,
|
|
finden sich die zur Zone gehörendenden Dateien in den
|
|
Unterverzeichnissen <filename
|
|
class="directory">master</filename>, <filename
|
|
class="directory">slave</filename>, oder <filename
|
|
class="directory">dynamic</filename> des Verzeichnisses
|
|
<filename class="directory">/etc/namedb</filename>. Diese
|
|
Dateien enthalten die <acronym>DNS</acronym>-Informationen,
|
|
die der Nameserver für die Beantwortung von Anfragen
|
|
benötigt.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>BIND starten</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Start</secondary>
|
|
</indexterm>
|
|
|
|
<para>Da BIND automatisch installiert wird, ist die Konfiguration
|
|
relativ einfach.</para>
|
|
|
|
<para>In der Voreinstellung wird ein in einer &man.chroot.8;-Umgebung
|
|
betriebener <application>named</application>-Server zur einfachen
|
|
Namensauflösung eingerichtet, der nur im lokalen
|
|
IPv4-Loopback-Adressbereich (127.0.0.1) lauscht. Um den Server
|
|
manuell zu starten, verwenden Sie den folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen>
|
|
|
|
<para>Um den <application>named</application>-Daemon beim
|
|
Systemstart automatisch zu starten, fügen Sie folgende
|
|
Zeile in <filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>named_enable="YES"</programlisting>
|
|
|
|
<para><filename>/etc/namedb/named.conf</filename> bietet zahlreiche
|
|
Konfigurationsoptionen, die in diesem Dokument nicht alle
|
|
beschrieben werden können. Wollen Sie die Startoptionen
|
|
von <application>named</application> unter &os; anpassen, sollten
|
|
Sie sich die
|
|
<literal>named_<replaceable>*</replaceable></literal>-Flags in der
|
|
Datei <filename>/etc/defaults/rc.conf</filename> sowie die
|
|
Manualpage zu &man.rc.conf.5; näher ansehen. Zusätzliche
|
|
Informationen bietet Ihnen auch der Abschnitt <xref
|
|
linkend="configtuning-rcd"/> des Handbuchs.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfigurationsdateien</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Konfigurationsdateien</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Konfigurationsdateien von
|
|
<application>named</application> finden sich unter
|
|
<filename class="directory">/etc/namedb</filename> und müssen
|
|
in der Regel an Ihre Bedürfnisse angepasst werden. Es sei
|
|
denn, Sie benötigen nur einen einfachen Resolver. Ein
|
|
Großteil der Konfigurationsarbeiten erfolgt dabei in
|
|
diesem Verzeichnis.</para>
|
|
|
|
<sect3>
|
|
<title><filename>/etc/namedb/named.conf</filename></title>
|
|
|
|
<programlisting>// $FreeBSD$
|
|
//
|
|
// Refer to the named.conf(5) and named(8) man pages, and the documentation
|
|
// in /usr/share/doc/bind9 for more details.
|
|
//
|
|
// If you are going to set up an authoritative server, make sure you
|
|
// understand the hairy details of how DNS works. Even with
|
|
// simple mistakes, you can break connectivity for affected parties,
|
|
// or cause huge amounts of useless Internet traffic.
|
|
|
|
options {
|
|
// All file and path names are relative to the chroot directory,
|
|
// if any, and should be fully qualified.
|
|
directory "/etc/namedb/working";
|
|
pid-file "/var/run/named/pid";
|
|
dump-file "/var/dump/named_dump.db";
|
|
statistics-file "/var/stats/named.stats";
|
|
|
|
// If named is being used only as a local resolver, this is a safe default.
|
|
// For named to be accessible to the network, comment this option, specify
|
|
// the proper IP address, or delete this option.
|
|
listen-on { 127.0.0.1; };
|
|
|
|
// If you have IPv6 enabled on this system, uncomment this option for
|
|
// use as a local resolver. To give access to the network, specify
|
|
// an IPv6 address, or the keyword "any".
|
|
// listen-on-v6 { ::1; };
|
|
|
|
// These zones are already covered by the empty zones listed below.
|
|
// If you remove the related empty zones below, comment these lines out.
|
|
disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
|
|
disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
|
|
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
|
|
|
|
// If you've got a DNS server around at your upstream provider, enter
|
|
// its IP address here, and enable the line below. This will make you
|
|
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
|
|
/*
|
|
forwarders {
|
|
127.0.0.1;
|
|
};
|
|
*/
|
|
|
|
// If the 'forwarders' clause is not empty the default is to 'forward first'
|
|
// which will fall back to sending a query from your local server if the name
|
|
// servers in 'forwarders' do not have the answer. Alternatively you can
|
|
// force your name server to never initiate queries of its own by enabling the
|
|
// following line:
|
|
// forward only;
|
|
|
|
// If you wish to have forwarding configured automatically based on
|
|
// the entries in /etc/resolv.conf, uncomment the following line and
|
|
// set named_auto_forward=yes in /etc/rc.conf. You can also enable
|
|
// named_auto_forward_only (the effect of which is described above).
|
|
// include "/etc/namedb/auto_forward.conf";
|
|
</programlisting>
|
|
|
|
<para>Um vom Cache Ihres Internetproviders zu profitieren,
|
|
können hier <literal>forwarders</literal> aktiviert
|
|
werden. Normalerweise sucht ein Nameserver das Internet
|
|
rekursiv ab, bis er die gesuchte Antwort findet. Durch
|
|
diese Option wird stets der Nameserver Ihres
|
|
Internetproviders zuerst abgefragt, um von dessen
|
|
Cache zu profitieren. Wenn es sich um einen schnellen,
|
|
viel benutzten Nameserver handelt, kann dies zu einer
|
|
Geschwindigkeitssteigerung führen.</para>
|
|
|
|
<warning>
|
|
<para><hostid role="ipaddr">127.0.0.1</hostid> funktioniert
|
|
hier <emphasis>nicht</emphasis>. Ändern Sie diese
|
|
Adresse in einen Nameserver Ihres Einwahlproviders.</para>
|
|
</warning>
|
|
|
|
<programlisting> /*
|
|
Modern versions of BIND use a random UDP port for each outgoing
|
|
query by default in order to dramatically reduce the possibility
|
|
of cache poisoning. All users are strongly encouraged to utilize
|
|
this feature, and to configure their firewalls to accommodate it.
|
|
|
|
AS A LAST RESORT in order to get around a restrictive firewall
|
|
policy you can try enabling the option below. Use of this option
|
|
will significantly reduce your ability to withstand cache poisoning
|
|
attacks, and should be avoided if at all possible.
|
|
|
|
Replace NNNNN in the example with a number between 49160 and 65530.
|
|
*/
|
|
// query-source address * port NNNNN;
|
|
};
|
|
|
|
// If you enable a local name server, don't forget to enter 127.0.0.1
|
|
// first in your /etc/resolv.conf so this server will be queried.
|
|
// Also, make sure to enable it in /etc/rc.conf.
|
|
|
|
// The traditional root hints mechanism. Use this, OR the slave zones below.
|
|
zone "." { type hint; file "/etc/namedb/named.root"; };
|
|
|
|
/* Slaving the following zones from the root name servers has some
|
|
significant advantages:
|
|
1. Faster local resolution for your users
|
|
2. No spurious traffic will be sent from your network to the roots
|
|
3. Greater resilience to any potential root server failure/DDoS
|
|
|
|
On the other hand, this method requires more monitoring than the
|
|
hints file to be sure that an unexpected failure mode has not
|
|
incapacitated your server. Name servers that are serving a lot
|
|
of clients will benefit more from this approach than individual
|
|
hosts. Use with caution.
|
|
|
|
To use this mechanism, uncomment the entries below, and comment
|
|
the hint zone above.
|
|
|
|
As documented at http://dns.icann.org/services/axfr/ these zones:
|
|
"." (the root), ARPA, IN-ADDR.ARPA, IP6.ARPA, and ROOT-SERVERS.NET
|
|
are availble for AXFR from these servers on IPv4 and IPv6:
|
|
xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org
|
|
*/
|
|
/*
|
|
zone "." {
|
|
type slave;
|
|
file "/etc/namedb/slave/root.slave";
|
|
masters {
|
|
192.5.5.241; // F.ROOT-SERVERS.NET.
|
|
};
|
|
notify no;
|
|
};
|
|
zone "arpa" {
|
|
type slave;
|
|
file "/etc/namedb/slave/arpa.slave";
|
|
masters {
|
|
192.5.5.241; // F.ROOT-SERVERS.NET.
|
|
};
|
|
notify no;
|
|
};
|
|
*/
|
|
|
|
/* Serving the following zones locally will prevent any queries
|
|
for these zones leaving your network and going to the root
|
|
name servers. This has two significant advantages:
|
|
1. Faster local resolution for your users
|
|
2. No spurious traffic will be sent from your network to the roots
|
|
*/
|
|
// RFCs 1912 and 5735 (and BCP 32 for localhost)
|
|
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
|
|
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
|
|
zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// RFC 1912-style zone for IPv6 localhost address
|
|
zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
|
|
|
|
// "This" Network (RFCs 1912 and 5735)
|
|
zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// Private Use Networks (RFCs 1918 and 5735)
|
|
zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// Link-local/APIPA (RFCs 3927 and 5735)
|
|
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IETF protocol assignments (RFCs 5735 and 5736)
|
|
zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// TEST-NET-[1-3] for Documentation (RFCs 5735 and 5737)
|
|
zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IPv6 Range for Documentation (RFC 3849)
|
|
zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
|
|
// Domain Names for Documentation and Testing (BCP 32)
|
|
zone "test" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "example" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
|
|
// Router Benchmark Testing (RFCs 2544 and 5735)
|
|
zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IANA Reserved - Old Class E Space (RFC 5735)
|
|
zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IPv6 Unassigned Addresses (RFC 4291)
|
|
zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IPv6 ULA (RFC 4193)
|
|
zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IPv6 Link Local (RFC 4291)
|
|
zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IPv6 Deprecated Site-Local Addresses (RFC 3879)
|
|
zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// IP6.INT is Deprecated (RFC 4159)
|
|
zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; };
|
|
|
|
// NB: Do not use the IP addresses below, they are faked, and only
|
|
// serve demonstration/documentation purposes!
|
|
//
|
|
// Example slave zone config entries. It can be convenient to become
|
|
// a slave at least for the zone your own domain is in. Ask
|
|
// your network administrator for the IP address of the responsible
|
|
// master name server.
|
|
//
|
|
// Do not forget to include the reverse lookup zone!
|
|
// This is named after the first bytes of the IP address, in reverse
|
|
// order, with ".IN-ADDR.ARPA" appended, or ".IP6.ARPA" for IPv6.
|
|
//
|
|
// Before starting to set up a master zone, make sure you fully
|
|
// understand how DNS and BIND work. There are sometimes
|
|
// non-obvious pitfalls. Setting up a slave zone is usually simpler.
|
|
//
|
|
// NB: Don't blindly enable the examples below. :-) Use actual names
|
|
// and addresses instead.
|
|
|
|
/* An example dynamic zone
|
|
key "exampleorgkey" {
|
|
algorithm hmac-md5;
|
|
secret "sf87HJqjkqh8ac87a02lla==";
|
|
};
|
|
zone "example.org" {
|
|
type master;
|
|
allow-update {
|
|
key "exampleorgkey";
|
|
};
|
|
file "/etc/named/dynamic/example.org";
|
|
};
|
|
*/
|
|
|
|
/* Example of a slave reverse zone
|
|
zone "1.168.192.in-addr.arpa" {
|
|
type slave;
|
|
file "/etc/namedb/slave/1.168.192.in-addr.arpa";
|
|
masters {
|
|
192.168.1.1;
|
|
};
|
|
};
|
|
*/</programlisting>
|
|
|
|
<para>Hierbei handelt es sich um Slave-Einträge für
|
|
eine Reverse- und Forward-DNS-Zone, die in der Datei
|
|
<filename>named.conf</filename> definiert sind.</para>
|
|
|
|
<para>Für jede neue Zone muss ein zusätzlicher Eintrag
|
|
in <filename>named.conf</filename> erstellt werden.</para>
|
|
|
|
<para>Ein einfacher Eintrag für eine Zone
|
|
<hostid role="domainname">example.org</hostid> könnte
|
|
beispielsweise so aussehen:</para>
|
|
|
|
<programlisting>zone "example.org" {
|
|
type master;
|
|
file "master/example.org";
|
|
}; </programlisting>
|
|
|
|
<para>Die Option <option>type</option> legt fest, dass es sich
|
|
um eine Master-Zone handelt, deren Zoneninformationen sich in
|
|
der Datei <filename>/etc/namedb/master/example.org</filename>
|
|
befinden. Diese Datei wird durch die Option
|
|
<option>file</option> festgelegt.</para>
|
|
|
|
<programlisting>zone "example.org" {
|
|
type slave;
|
|
file "slave/example.org";
|
|
}; </programlisting>
|
|
|
|
<para>Hier handelt es sich um einen Slaveserver, der seine
|
|
Informationen vom Masterserver der betreffenden Zone bezieht
|
|
und diese in der angegebenen Datei speichert. Wenn der
|
|
Masterserver nicht erreichbar ist, verfügt der
|
|
Slaveserver über die transferierten Zoneninformationen
|
|
und kann diese an andere Rechner weitergeben.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Zonendateien</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Zonendatei</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die in der Datei
|
|
<filename>/etc/namedb/master/example.org</filename> definierte
|
|
Zonendatei für
|
|
<hostid role="domainname">example.org</hostid> könnte
|
|
etwa so aussehen:</para>
|
|
|
|
<programlisting>$TTL 3600 ; 1 hour default TTL
|
|
example.org. IN SOA ns1.example.org. admin.example.org. (
|
|
2006051501 ; Serial
|
|
10800 ; Refresh
|
|
3600 ; Retry
|
|
604800 ; Expire
|
|
300 ; Negative Response TTL
|
|
)
|
|
|
|
; DNS Servers
|
|
IN NS ns1.example.org.
|
|
IN NS ns2.example.org.
|
|
|
|
; MX Records
|
|
IN MX 10 mx.example.org.
|
|
IN MX 20 mail.example.org.
|
|
|
|
IN A 192.168.1.1
|
|
|
|
; Machine Names
|
|
localhost IN A 127.0.0.1
|
|
ns1 IN A 192.168.1.2
|
|
ns2 IN A 192.168.1.3
|
|
mx IN A 192.168.1.4
|
|
mail IN A 192.168.1.5
|
|
|
|
; Aliases
|
|
www IN CNAME example.org.</programlisting>
|
|
|
|
<para>Beachten Sie, dass jeder mit einem <quote>.</quote>
|
|
endende Rechnername ein exakter Rechnername ist, während
|
|
sich alles ohne einen abschließenden <quote>.</quote>
|
|
relativ auf den Ursprung bezieht. <literal>ns1</literal> steht
|
|
daher beispielsweise für
|
|
<literal>ns1.<replaceable>example.org.</replaceable></literal>.</para>
|
|
|
|
<para>Eine Zonendatei hat folgenden Aufbau:</para>
|
|
|
|
<programlisting>recordname IN recordtype value</programlisting>
|
|
|
|
<indexterm>
|
|
<primary>DNS</primary>
|
|
<secondary>Einträge</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die am häufigsten verwendeten DNS-Einträge sind:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>SOA</term>
|
|
|
|
<listitem>
|
|
<para>Start der Zonenautorität</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>NS</term>
|
|
|
|
<listitem>
|
|
<para>Ein autoritativer Nameserver</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>A</term>
|
|
|
|
<listitem><para>Eine Rechneradresse</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>CNAME</term>
|
|
|
|
<listitem>
|
|
<para>Der kanonische Name eines Alias</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>MX</term>
|
|
|
|
<listitem><para>Mail Exchanger</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>PTR</term>
|
|
|
|
<listitem>
|
|
<para>Ein (bei Reverse-DNS verwendeter) Domain Name
|
|
Pointer</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<programlisting>example.org. IN SOA ns1.example.org. admin.example.org. (
|
|
2006051501 ; Serial
|
|
10800 ; Refresh after 3 hours
|
|
3600 ; Retry after 1 hour
|
|
604800 ; Expire after 1 week
|
|
300 ) ; Negative Response TTL</programlisting>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><hostid role="domainname">example.org.</hostid></term>
|
|
|
|
<listitem><para>Der Name der Domäne und damit der
|
|
Ursprung dieser Zonendatei.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><hostid role="fqdn">ns1.example.org.</hostid></term>
|
|
|
|
<listitem><para>Der primäre/autoritative Nameserver
|
|
dieser Zone.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>admin.example.org.</literal></term>
|
|
|
|
<listitem><para>Die für diese Zone verantwortliche
|
|
Person. Das Zeichen <quote>@</quote> wird dabei
|
|
ersetzt (<email>admin@example.org</email> wird also zu
|
|
<literal>admin.example.org</literal>).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>2006051501</literal></term>
|
|
|
|
<listitem><para>Die Seriennummer der Datei. Sie muss
|
|
stets inkrementiert werden, wenn die Zonendatei
|
|
geändert wird. Viele Administratoren bevorzugen
|
|
ein <literal>JJJJMMTTRR</literal>-Format, um die
|
|
Seriennummer festzulegen.
|
|
<literal>2006051501</literal> steht also für
|
|
den 15.05.2006, die beiden letzten Stellen für die
|
|
erste Modifikation der Zonendatei an diesem Tag. Die
|
|
Seriennummer ist von großer Bedeutung, da
|
|
Slaveserver daran eine aktualisierte Zonendatei erkennen
|
|
können.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<programlisting>
|
|
IN NS ns1.example.org.</programlisting>
|
|
|
|
<para>Ein NS-Eintrag. Jeder Nameserver, der für eine Zone
|
|
verantwortlich ist, muss über einen solchen Eintrag
|
|
verfügen.</para>
|
|
|
|
<programlisting>
|
|
localhost IN A 127.0.0.1
|
|
ns1 IN A 192.168.1.2
|
|
ns2 IN A 192.168.1.3
|
|
mx IN A 192.168.1.4
|
|
mail IN A 192.168.1.5</programlisting>
|
|
|
|
<para>Der Eintrag <literal>A</literal> bezieht sich auf
|
|
Rechnernamen. <hostid role="fqdn">ns1.example.org</hostid>
|
|
würde also zu <hostid role="ipaddr">192.168.1.2</hostid>
|
|
aufgelöst werden.</para>
|
|
|
|
<programlisting>
|
|
IN A 192.168.1.1</programlisting>
|
|
|
|
<para>Diese Zeile weist die IP-Adresse
|
|
<hostid role="ipaddr">192.168.1.1</hostid> dem aktuellen
|
|
Ursprung, in unserem Fall also
|
|
<hostid role="domainname">example.org</hostid>, zu.</para>
|
|
|
|
<programlisting>
|
|
www IN CNAME @</programlisting>
|
|
|
|
<para>Der Eintrag für den kanonischen Namen wird dazu
|
|
verwendet, Aliase für einen Rechner zu vergeben. Im
|
|
Beispiel ist <hostid>www</hostid> ein Alias für den
|
|
<quote>Master</quote>-Rechner, dessen Name dem Domainnamen
|
|
<hostid role="domainname">example.org</hostid> (oder
|
|
<hostid role="ipaddr">192.168.1.1</hostid>) entspricht.
|
|
CNAMEs können daher niemals gleichzeitig mit einem
|
|
anderen Eintrag für denselben Hostname eingerichtet
|
|
werden.</para>
|
|
|
|
<indexterm>
|
|
<primary>MX-Eintrag</primary>
|
|
</indexterm>
|
|
|
|
<programlisting>
|
|
IN MX 10 mail.example.org.</programlisting>
|
|
|
|
<para>Die Option MX legt fest, welcher Mailserver für
|
|
eintreffende Mails der Zone verantwortlich ist.
|
|
<hostid role="fqdn">mail.example.org</hostid> ist der
|
|
Rechnername des Mailservers, der eine Priorität von 10
|
|
hat.</para>
|
|
|
|
<para>Es können auch mehrere Mailserver mit verschiedener
|
|
Priorität (10, 20, ...) vorhanden sein. Ein Mailserver,
|
|
der eine Mail an <hostid role="domainname">example.org</hostid>
|
|
verschicken will, verwendet zuerst den MX mit der höchsten
|
|
Priorität (das heißt den mit der niedrigsten
|
|
Prioritätsnummer), danach den mit der
|
|
nächsthöheren Priorität. Und dies solange,
|
|
bis die E-Mail zugestellt werden kann.</para>
|
|
|
|
<para>Für (bei Reverse-DNS verwendete)
|
|
<literal>in-addr.arpa</literal>-Zonendateien wird das gleiche
|
|
Format verwendet. Der einzige Unterschied besteht in der
|
|
Verwendung der Option PTR an Stelle der Optionen A und
|
|
CNAME.</para>
|
|
|
|
<programlisting>$TTL 3600
|
|
|
|
1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
|
|
2006051501 ; Serial
|
|
10800 ; Refresh
|
|
3600 ; Retry
|
|
604800 ; Expire
|
|
300 ) ; Negative Response TTL
|
|
|
|
IN NS ns1.example.org.
|
|
IN NS ns2.example.org.
|
|
|
|
1 IN PTR example.org.
|
|
2 IN PTR ns1.example.org.
|
|
3 IN PTR ns2.example.org.
|
|
4 IN PTR mx.example.org.
|
|
5 IN PTR mail.example.org.</programlisting>
|
|
|
|
<para>Durch diese Datei werden den Rechnernamen der fiktiven
|
|
Domäne IP-Adressen zugewiesen.</para>
|
|
|
|
<para>Beachten Sie bitte, dass es sich bei allen Namen auf der
|
|
rechten Seite eines PTR-Eintrags um absolute
|
|
(<emphasis>fully qualified</emphasis>) Domainnamen handeln
|
|
muss, die mit <quote>.</quote> enden.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Zwischenspeichernde (cachende) Nameserver</title>
|
|
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>Zwischenspeichernde Nameserver</secondary>
|
|
</indexterm>
|
|
|
|
<para>Ein cachender Nameserver hat primär die Aufgabe,
|
|
rekursive Abfragen aufzulösen. Er stellt lediglich
|
|
eigene Anfragen und speichert deren Ergebnisse ab.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><acronym
|
|
role="Doman Name Security Extensions">DNSSEC</acronym></title>
|
|
<indexterm>
|
|
<primary>BIND</primary>
|
|
<secondary>DNS security extensions</secondary>
|
|
</indexterm>
|
|
|
|
<para>Domain Name System Security Extensions, oder kurz <acronym
|
|
role="Domain Name Security Extensions">DNSSEC</acronym>, ist eine
|
|
Sammlung von Spezifikationen, um auflösende Nameserver von
|
|
gefälschten <acronym>DNS</acronym>-Daten, wie beispielsweise
|
|
vorgetäuschte <acronym>DNS</acronym>-Einträge, zu
|
|
schützen. Durch die Verwendung von digitalen Signaturen kann
|
|
ein Resolver die Integrität des Eintrages
|
|
überprüfen. Wichtig dabei ist, dass <acronym
|
|
role="Domain Name Security Extensions">DNSSEC</acronym> nur die
|
|
Integrität über digital signierte Resource Records
|
|
(<acronym role="Resource Record">RR</acronym>e) bereitstellt.
|
|
Weder wird die Vertraulichkeit noch der Schutz vor falschen
|
|
Annahmen des Endbenutzers sichergestellt. Dies bedeutet, dass es
|
|
Leute nicht davor schützen kann, zu <hostid
|
|
role="domainname">example.net</hostid> anstatt zu <hostid
|
|
role="domainname">example.com</hostid> zu gelangen. Das
|
|
einzige, was <acronym>DNSSEC</acronym> tut, ist die
|
|
Authentifizierung, dass die Daten während der
|
|
Übertragung nicht verändert wurden. Die Sicherheit von
|
|
<acronym>DNS</acronym> ist ein wichtiger Schritt in der
|
|
generellen Absicherung des Internets. Für weitere,
|
|
tiefergehende Details über die Funktionsweise von
|
|
<acronym>DNSSEC</acronym> sind die dazugehörigen
|
|
<acronym>RFC</acronym>s ein guter Einstieg in die Thematik. Sehen
|
|
Sie sich dazu die Liste in <xref linkend="dns-read"/> an.</para>
|
|
|
|
<para>Der folgende Abschnitt wird zeigen, wie man
|
|
<acronym>DNSSEC</acronym> für einen autoritativen
|
|
<acronym>DNS</acronym>-Server und einen rekursiven (oder cachenden)
|
|
<acronym>DNS</acronym>-Server, der jeweils
|
|
<acronym>BIND</acronym> 9 verwenden, einrichten kann. Obwohl alle
|
|
Versionen von <acronym>BIND</acronym> 9 <acronym>DNSSEC</acronym>
|
|
unterstützen, ist es notwendig, mindestens die Version 9.6.2
|
|
zu verwenden, um in der Lage zu sein, die signierten Root-Zonen zu
|
|
benutzen, wenn <acronym>DNS</acronym>-Abfragen geprüft
|
|
werden. Der Grund dafür ist, dass früheren Versionen
|
|
die Algorithmen fehlen, um die Überprüfung des
|
|
Root-Zonenschlüssels zu aktivieren. Es wird dringend empfohlen,
|
|
die letzte Version von <acronym>BIND</acronym> 9.7 oder höher
|
|
einzusetzen, um von den Vorteilen der automatischen
|
|
Schlüsselaktualisierung des Root-Zonenschlüssels
|
|
Gebrauch zu machen, genauso wie andere Eigenschaften, um
|
|
automatisch Zonen signieren zu lassen und Signaturen aktuell zu
|
|
halten. Unterschiede zwischen den Versionen 9.6.2 und 9.7 und
|
|
höher werden an den betreffenden Stellen angesprochen.</para>
|
|
|
|
<sect3>
|
|
<title>Rekursive <acronym>DNS</acronym>-Server Konfiguration</title>
|
|
|
|
<para>Die Aktivierung der
|
|
<acronym>DNSSEC</acronym>-Überprüfung von Anfragen,
|
|
die von einem rekursiven <acronym>DNS</acronym>-Server
|
|
stammen, benötigt ein paar Änderungen in der
|
|
<filename>named.conf</filename>. Bevor man jedoch diese
|
|
Änderungen durchführt, muss der
|
|
Root-Zonenschlüssel oder Vertrauensanker erworben werden.
|
|
Momentan ist der Root-Zonenschlüssel nicht in einem
|
|
Dateiformat verfügbar, dass von <acronym>BIND</acronym>
|
|
benutzt werden kann, so dass dieser manuell in das richtige
|
|
Format konvertiert werden muss. Der Schlüssel selbst kann
|
|
durch Abfrage an die Root-Zone erhalten werden, indem man dazu
|
|
<application>dig</application> verwendet. Durch Aufruf
|
|
von</para>
|
|
|
|
<screen>&prompt.user; <userinput>dig +multi +noall +answer DNSKEY . > root.dnskey</userinput></screen>
|
|
|
|
<para>wird der Schlüssel in
|
|
<filename>root.dnskey</filename> abgelegt. Der Inhalt sollte
|
|
so ähnlich wie folgt aussehen:</para>
|
|
|
|
<programlisting>. 93910 IN DNSKEY 257 3 8 (
|
|
AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ
|
|
bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh
|
|
/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA
|
|
JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp
|
|
oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3
|
|
LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO
|
|
Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc
|
|
LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
|
|
) ; key id = 19036
|
|
. 93910 IN DNSKEY 256 3 8 (
|
|
AwEAAcaGQEA+OJmOzfzVfoYN249JId7gx+OZMbxy69Hf
|
|
UyuGBbRN0+HuTOpBxxBCkNOL+EJB9qJxt+0FEY6ZUVjE
|
|
g58sRr4ZQ6Iu6b1xTBKgc193zUARk4mmQ/PPGxn7Cn5V
|
|
EGJ/1h6dNaiXuRHwR+7oWh7DnzkIJChcTqlFrXDW3tjt
|
|
) ; key id = 34525</programlisting>
|
|
|
|
<para>Seien Sie nicht alarmiert, wenn der von Ihnen bezogene
|
|
Schlüssel anders als in diesem Beispiel aussieht. Diese
|
|
könnten sich in der Zwischenzeit geändert haben. In
|
|
dieser Ausgabe sind eigentlich zwei Schlüssel enthalten.
|
|
Der erste Schüssel mit dem Wert 257 nach dem
|
|
DNSKEY-Eintrag ist derjenige, der benötigt wird. Der
|
|
Wert zeigt an, dass es sich um einen sicheren Einstiegspunkt
|
|
(<acronym role="Secure Entry Point">SEP</acronym>), gemein
|
|
auch als Schlüsselsignierungsschlüssel (<acronym
|
|
role="Key Signing Key">KSK</acronym>) bekannt, handelt. Der
|
|
zweite Schüssel mit dem Wert 256 ist der untergeordnete
|
|
Schlüssel, im allgemeinen auch als
|
|
Zonen-Signaturschlüssel (<acronym
|
|
role="Zone Signing Key">ZSK</acronym>) bezeichnet. Weitere
|
|
Schlüsselarten werden später in <xref
|
|
linkend="dns-dnssec-auth"/> erläutert.</para>
|
|
|
|
<para>Nun muss der Schlüssel verifiziert und so formatiert
|
|
werden, dass <acronym>BIND</acronym> diesen verwenden kann.
|
|
Um den Schlüssel zu verifizieren, erzeugen Sie einen
|
|
<acronym role="Delegation Signer">DS</acronym> <acronym
|
|
role="Resource Record">RR</acronym>-Satz. Erstellen Sie eine
|
|
Datei, welche die <acronym
|
|
role="Resource Record">RR</acronym>s enthält,
|
|
mittels</para>
|
|
|
|
<screen>&prompt.user; <userinput>dnssec-dsfromkey -f root-dnskey . > root.ds</userinput></screen>
|
|
|
|
<para>Diese Einträge verwenden SHA-1 sowie SHA-256 und
|
|
sollten ähnlich zu folgendem Beispiel aussehen, in dem
|
|
der längere, SHA-256, benutzt wird.</para>
|
|
|
|
<programlisting>. IN DS 19036 8 1 B256BD09DC8DD59F0E0F0D8541B8328DD986DF6E
|
|
. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5</programlisting>
|
|
|
|
<para>Der SHA-256 <acronym>RR</acronym> kann nun mit dem Abriss
|
|
in <ulink
|
|
url="https://data.iana.org/root-anchors/root-anchors.xml">https://data.iana.org/root-anchors/root-anchors.xml</ulink> verglichen werden. Um
|
|
absolut sicher zu sein, dass der Schlüssel nicht
|
|
zusammen mit den <acronym>XML</acronym>-Daten verändert
|
|
wurde, kann die Datei mittels der <acronym>PGP</acronym>
|
|
Signatur in <ulink
|
|
url="https://data.iana.org/root-anchors/root-anchors.asc">https://data.iana.org/root-anchors/root-anchors.asc</ulink> überprüft werden.</para>
|
|
|
|
<para>Als nächstes muss der Schlüssel in das passende
|
|
Format gebracht werden. Dies unterscheidet sich ein bisschen
|
|
von den <acronym>BIND</acronym> Versionen 9.6.2 und 9.7 und
|
|
höhere. In Version 9.7 wurde die Ünterstützung
|
|
zur automatischen Verfolgung und notwendigen Aktualisierung
|
|
von Änderungen am Schlüssel eingebaut. Dies wird
|
|
durch den Einsatz von <literal>managed-keys</literal>
|
|
erreicht, wie in dem Beispiel unten gezeigt ist. Wenn die
|
|
ältere Version eingesetzt wird, kann der Schlüssel
|
|
durch eine <literal>trusted-keys</literal>-Anweisung eingebaut
|
|
werden und die Aktualisierung muss händisch erfolgen.
|
|
In <acronym>BIND</acronym> 9.6.2 sollte das Format
|
|
folgendermassen aussehen:</para>
|
|
|
|
<programlisting>trusted-keys {
|
|
"." 257 3 8
|
|
"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
|
|
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
|
|
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
|
|
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
|
|
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
|
|
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
|
|
QxA+Uk1ihz0=";
|
|
};</programlisting>
|
|
|
|
<para>In 9.7 wird das Format stattdessen wie folgt
|
|
aussehen:</para>
|
|
|
|
<programlisting>managed-keys {
|
|
"." initial-key 257 3 8
|
|
"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF
|
|
FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX
|
|
bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD
|
|
X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz
|
|
W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS
|
|
Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq
|
|
QxA+Uk1ihz0=";
|
|
};</programlisting>
|
|
|
|
<para>Der Root-Schlüssel kann nun zu
|
|
<filename>named.conf</filename> hinzugefügt werden,
|
|
entweder direkt oder durch Inkludierung der Datei, die den
|
|
Schlüssel enthält. Nachdem diese Schritte
|
|
absolviert sind, muss <acronym>BIND</acronym> konfiguriert
|
|
werden, um <acronym>DNSSEC</acronym>-Validierung für
|
|
Anfragen durchzuführen, indem
|
|
<filename>named.conf</filename> bearbeitet und die folgende
|
|
<literal>options</literal>-Direktive hinzugefügt
|
|
wird:</para>
|
|
|
|
<programlisting>dnssec-enable yes;
|
|
dnssec-validation yes;</programlisting>
|
|
|
|
<para>Um zu prüfen, dass es tatsächlich funktioniert,
|
|
benutzen Sie <application>dig</application>, um eine Anfrage
|
|
zu einer signierten Zone durch den Resolver, der gerade
|
|
konfiguriert wurde, zu stellen. Eine erfolgreiche Antwort
|
|
wird den <literal>AD</literal>-Eintrag aufweisen, um
|
|
anzudeuten, dass die Daten authentisiert sind. Eine Anfrage
|
|
wie</para>
|
|
|
|
<screen>&prompt.user; <userinput>dig @<replaceable>resolver</replaceable> +dnssec se ds </userinput></screen>
|
|
|
|
<para>sollte den <acronym>DS</acronym> <acronym>RR</acronym>
|
|
für die <literal>.se</literal>-Zone zurückgeben. In
|
|
dem Abschnitt <literal>flags:</literal> sollte der
|
|
<literal>AD</literal>-Eintrag gesetzt sein, wie im folgenden
|
|
zu sehen ist:</para>
|
|
|
|
<programlisting>...
|
|
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
|
|
...</programlisting>
|
|
|
|
<para>Der Resolver ist nun in der Lage, Anfragen ans
|
|
<acronym>DNS</acronym> zu authentisieren.</para>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="dns-dnssec-auth">
|
|
<title>Autoritative <acronym>DNS</acronym>-Server
|
|
Konfiguration</title>
|
|
|
|
<para>Um einen autoritativen Nameserver dazu zu bringen, als
|
|
eine <acronym>DNSSEC</acronym>-signierte Zone zu fungieren,
|
|
ist ein wenig mehr Aufwand nötig. Eine Zone ist durch
|
|
kryptographische Schlüssel signiert, die erzeugt werden
|
|
müssen. Es ist möglich, nur einen Schlüssel
|
|
dazu zu verwenden. Die vorgeschlagene Methode ist jedoch,
|
|
einen starken, gut geschützten
|
|
Schlüsselsignierungsschlüssel (<acronym
|
|
role="Key Signing Key">KSK</acronym>) einzusetzen, der nicht
|
|
oft gewechselt wird und einen Zonensignierungsschlüssel
|
|
(<acronym role="Zone Signing Key">ZSK</acronym>), der
|
|
öfter ausgewechselt wird. Informationen zu
|
|
vorgeschlagenen Einsatzarten können in <ulink
|
|
url="http://tools.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym>
|
|
4641: <acronym>DNSSEC</acronym> Operational Practices</ulink>
|
|
nachgelesen werden. Einsatzszenarien, welche die Root-Zone
|
|
betreffen, finden Sie in <ulink
|
|
url="http://www.root-dnssec.org/wp-content/uploads/2010/06/icann-dps-00.txt"><acronym>DNSSEC</acronym> Practice Statement for the Root Zone
|
|
<acronym>KSK</acronym> operator</ulink> sowie <ulink
|
|
url="http://www.root-dnssec.org/wp-content/uploads/2010/06/vrsn-dps-00.txt"><acronym>DNSSEC</acronym> Practice Statement for the Root Zone
|
|
<acronym>ZSK</acronym> operator</ulink>. Der <acronym
|
|
role="Key Signing Key">KSK</acronym> wird dazu verwendet, um
|
|
eine Kette von Autorität für die Daten, die diese
|
|
Validierung benötigen, zu erschaffen und wird als solche
|
|
auch als sicherer Einstiegspunkt (<acronym
|
|
role="Secure Entry Point">SEP</acronym>)-Schlüssel
|
|
bezeichnet. Ein Nachrichtenabriss dieses Schlüssels,
|
|
der auch Delegation Signer (<acronym
|
|
role="Delegation Signer">DS</acronym>)-Eintrag genannt wird,
|
|
muss in der Elternzone veröffentlicht werden, um die
|
|
Vertrauenskette herzustellen. Wie dies erreicht wird,
|
|
hängt von dem Besitzer der Elternzone ab. Der <acronym
|
|
role="Zone Signing Key">ZSK</acronym> wird verwendet, um die
|
|
Zone zu signieren und muss nur dort öffentlich
|
|
zugänglich gemacht werden.</para>
|
|
|
|
<para>Um <acronym>DNSSEC</acronym> für die <hostid
|
|
role="domainname">example.com</hostid>-Zone, welche in den
|
|
vorherigen Beispielen verwendet wird, zu aktivieren, muss
|
|
als erster Schritt <application>dnssec-keygen</application>
|
|
benutzt werden, um das <acronym>KSK</acronym> und
|
|
<acronym>ZSK</acronym> Schlüsselpaar zu generieren.
|
|
Dieses Schlüsselpaar kann unterschiedliche
|
|
kryptographische Algorithmen nutzen. Es wird empfohlen,
|
|
RSA/SHA256 für die Schlüssel zu nutzen. Eine
|
|
Schlüssellänge von 2048 Bits sollte genügen.
|
|
Um den <acronym>KSK</acronym> für <hostid
|
|
role="domainname">example.com</hostid> zu generieren, geben
|
|
Sie</para>
|
|
|
|
<screen>&prompt.user; <userinput>dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE example.com</userinput></screen>
|
|
|
|
<para>ein und um den <acronym>ZSK</acronym> zu erzeugen, setzen
|
|
Sie folgenden Befehl ab:</para>
|
|
|
|
<screen>&prompt.user; <userinput>dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com</userinput></screen>
|
|
|
|
<para><application>dnssec-keygen</application> gibt zwei
|
|
Dateien aus, den öffentlichen und den privaten
|
|
Schlüssel und zwar in Dateinamen, die ähnlich
|
|
lauten wie <filename>Kexample.com.+005+nnnnn.key</filename>
|
|
(öffentlich) und
|
|
<filename>Kexample.com.+005+nnnnn.private</filename>
|
|
(privat). Der <literal>nnnnn</literal>-Teil des Dateinamens
|
|
ist eine fünfstellige Schlüsselkennung. Passen
|
|
Sie genau auf, welche Kennung zu welchem Schlüssel
|
|
gehört. Das ist besonders wichtig, wenn mehrere
|
|
Schlüssel in einer Zone vorliegen. Es ist auch
|
|
möglich, die Schlüssel umzubenennen. Für
|
|
jede <acronym>KSK</acronym>-Datei tun Sie folgendes:</para>
|
|
|
|
<screen>&prompt.user; <userinput>mv Kexample.com.+005+nnnnn.key Kexample.com.+005+nnnnn.KSK.key</userinput>
|
|
&prompt.user; <userinput>mv Kexample.com.+005+nnnnn.private Kexample.com.+005+nnnnn.KSK.private</userinput></screen>
|
|
|
|
<para>Für die <acronym>ZSK</acronym>-Dateien ersetzen Sie
|
|
<literal>KSK</literal> für <literal>ZSK</literal> wenn
|
|
nötig. Die Dateien können nun in der Zonendatei
|
|
inkludiert werden, indem die <literal>$include</literal>
|
|
Anweisung verwendet wird. Es sollte folgendermassen
|
|
aussehen:</para>
|
|
|
|
<programlisting>$include Kexample.com.+005+nnnnn.KSK.key ; KSK
|
|
$include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
|
|
|
|
<para>Schliesslich signieren Sie die Zone und weisen
|
|
<acronym>BIND</acronym> an, die signierte Zonendatei zu
|
|
benutzen. Um eine Zone zu signieren, wird
|
|
<application>dnssec-signzone</application> eingesetzt. Der
|
|
Befehl, um eine Zone <hostid
|
|
role="domainname">example.com</hostid> zu signieren, die in
|
|
<filename>example.com.db</filename> liegt, sollte
|
|
wie folgt aussehen:</para>
|
|
|
|
<screen>&prompt.user; <userinput>dnssec-signzone -o example.com -k Kexample.com.+005+nnnnn.KSK example.com.db Kexample.com.+005+nnnnn.ZSK.key</userinput></screen>
|
|
|
|
<para>Der Schlüssel, welcher mit dem Argument
|
|
<option>-k</option> übergeben wird, ist der
|
|
<acronym>KSK</acronym> und die andere Schlüsseldatei ist
|
|
der <acronym>ZSK</acronym>, welcher für die Signatur
|
|
benutzt werden soll. Es ist möglich, mehr als einen
|
|
<acronym>KSK</acronym> und <acronym>ZSK</acronym> anzugeben,
|
|
was das Ergebnis zur Folge hat, dass die Zone mit allen
|
|
übergebenen Schlüsseln signiert wird. Dies kann
|
|
dann benötigt werden, um Zonendaten mit mehr als einem
|
|
Algorithmus zur Signierung zu verwenden. Die Ausgabe von
|
|
<application>dnssec-signzone</application> ist eine
|
|
Zonendatei mit allen signierten <acronym>RR</acronym>s.
|
|
Diese Ausgabe wird in einer Datei mit der Endung
|
|
<literal>.signed</literal> abgelegt, wie beispielsweise
|
|
<filename>example.com.db.signed</filename>. Die <acronym
|
|
role="Delegation Signer">DS</acronym>-Einträge werden
|
|
ebenfalls in eine separate Datei
|
|
<filename>dsset-example.com</filename> geschrieben. Um diese
|
|
signierte Zone zu verwenden, ändern Sie die
|
|
Zonendirektive in <filename>named.conf</filename>, so dass
|
|
<filename>example.com.db.signed</filename> benutzt wird.
|
|
Standardmässig sind die Signaturen nur 30 Tage
|
|
gültig, was bedeutet, dass die Zone in etwa 15 Tagen
|
|
erneut signiert werden muss, um sicher zu stellen, dass
|
|
Resolver keine Einträge mit veralteten Signaturen
|
|
zwischenspeichern. Es ist möglich, ein Skript und einen
|
|
cron-Job zu schreiben, um dies zu erledigen. Lesen Sie dazu
|
|
die relevanten Anleitungen, um Details zu erfahren.</para>
|
|
|
|
<para>Stellen Sie sicher, dass die privaten Schlüssel
|
|
vertraulich bleiben, genau wie mit allen anderen
|
|
kryptographischen Schlüsseln auch. Wenn ein
|
|
Schlüssel geändert wird, ist es gute Praxis den
|
|
neuen Schlüssel in die Zone zu inkludieren, noch
|
|
während der alte Schlüssel noch zum signieren
|
|
eingesetzt wird, um dann auf den neuen Schlüssel zum
|
|
signieren zu wechseln. Nachdem diese Schritte erfolgt sind,
|
|
kann der alte Schlüssel aus der Zone entfernt werden.
|
|
Wenn das nicht geschieht, können
|
|
<acronym>DNS</acronym>-Daten für einige Zeit nicht
|
|
verfügbar sein, bis der neue Schlüssel durch die
|
|
<acronym>DNS</acronym>-Hierarchie propagiert wurde.
|
|
Für weitere Informationen bezüglich
|
|
Schlüsselübergabe und andere
|
|
<acronym>DNSSEC</acronym>-Einsatzszenarien lesen Sie <ulink
|
|
url="http://www.ietf.org/rfc/rfc4641.txt"><acronym>RFC</acronym>
|
|
4641: <acronym>DNSSEC</acronym> Operational practices</ulink>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Automatisierung mittels <acronym>BIND</acronym> 9.7 oder
|
|
höher</title>
|
|
|
|
<para>Beginnend mit der Version 9.7 von <acronym>BIND</acronym>
|
|
wurde eine neue Eigenschaft vorgestellt, die
|
|
<emphasis>Smart Signing</emphasis> genannt wird. Diese zielt
|
|
darauf ab, das Schlüsselmanagement und den
|
|
Signierungsprozess einfacher zu gestalten und zu
|
|
automatisieren. Durch ablegen der Schlüssel in ein
|
|
Verzeichnis, genannt <emphasis>key repository</emphasis>
|
|
und die Verwendung der neuen Option
|
|
<literal>auto-dnssec</literal>, ist es möglich eine
|
|
dynamische Zone zu erzeugen, welche dann erneut signiert
|
|
wird, wenn dazu der Bedarf besteht. Um diese Zone zu
|
|
aktualisieren, benutzen Sie
|
|
<application>nsupdate</application> mit der neuen Option
|
|
<option>-l</option>. Es hat also
|
|
<application>rndc</application> die Fähigkeit gewonnen,
|
|
Zonen mit Schlüsseln im Key Repository zu verwenden,
|
|
indem die Option <option>sign</option> eingesetzt wird. Um
|
|
<acronym>BIND</acronym> anzuweisen, diese automatische
|
|
Signierung und Zonenaktualisierung für <hostid
|
|
role="domainname">example.com</hostid> zu nutzen, fügen
|
|
Sie die folgenden Zeilen zur <filename>named.conf</filename>
|
|
hinzu:</para>
|
|
|
|
<programlisting>zone example.com {
|
|
type master;
|
|
key-directory "/etc/named/keys";
|
|
update-policy local;
|
|
auto-dnssec maintain;
|
|
file "/etc/named/dynamic/example.com.zone";
|
|
};</programlisting>
|
|
|
|
<para>Nachdem diese Änderungen durchgeführt wurden,
|
|
erzeugen Sie die Schlüssel für die Zone wie in
|
|
<xref linkend="dns-dnssec-auth"/> beschrieben wird, legen
|
|
diese Schlüssel im Key Repository ab, dass als Argument
|
|
<literal>key-directory</literal> in der Zonenkonfiguration
|
|
steht und die Zone wird automatisch signiert.
|
|
Aktualisierungen für eine Zone, die auf diese Art und
|
|
Weise konfiguriert wurde, muss mittels
|
|
<application>nsupdate</application> erfolgen, dass sich um
|
|
die erneute Signierung der Zone mit den hinzugefügten
|
|
Daten kümmern wird. Für weitere Details, lesen
|
|
Sie <xref linkend="dns-read"/> und die Dokumentation von
|
|
<acronym>BIND</acronym>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sicherheit</title>
|
|
|
|
<para>Obwohl BIND die am meisten verwendete (und kontrollierte)
|
|
Implementierung von DNS darstellt, werden dennoch manchmal neue
|
|
Sicherheitsprobleme entdeckt.</para>
|
|
|
|
<para>Zwar startet &os; <application>named</application>
|
|
automatisch in einer &man.chroot.8;-Umgebung, es gibt aber
|
|
noch weitere Sicherheitsmechanismen, mit denen Sie potentielle
|
|
<acronym>DNS</acronym>-Serviceattacken erschweren
|
|
können.</para>
|
|
|
|
<para>Es ist daher eine gute Idee, die Sicherheitshinweise von
|
|
<ulink url="http://www.cert.org/">CERT</ulink> zu lesen sowie
|
|
die Mailingliste &a.security-notifications; zu abonnieren, um
|
|
sich über Sicherheitsprobleme im Zusammenhang mit dem
|
|
Internet und FreeBSD zu informieren.</para>
|
|
|
|
<tip>
|
|
<para>Tritt ein Problem auf, kann es nie schaden, die
|
|
Quellen zu aktualisieren und <application>named</application>
|
|
neu zu kompilieren.</para>
|
|
</tip>
|
|
</sect2>
|
|
|
|
<sect2 id="dns-read">
|
|
<title>Weitere Informationsquellen</title>
|
|
|
|
<para>Hilfeseiten zu BIND/<application>named</application>:
|
|
&man.rndc.8; &man.named.8; &man.named.conf.5; &man.nsupdate.8;
|
|
&man.dnssec-signzone.8; &man.dnssec-keygen.8;</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><ulink
|
|
url="https://www.isc.org/software/bind">Offizielle ISC-Seite
|
|
zu BIND</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="https://www.isc.org/software/guild">Offizielles Forum zu
|
|
ISC- BIND</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://www.oreilly.com/catalog/dns5/">O'Reilly
|
|
DNS and BIND 5th Edition</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="http://www.root-dnssec.org/documentation/">Root
|
|
<acronym>DNSSEC</acronym></ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="http://data.iana.org/root-anchors/draft-icann-dnssec-trust-anchor.html">
|
|
<acronym>DNSSEC</acronym> Vertrauensanker-Publikation für
|
|
die Root-Zone</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc1034">RFC1034
|
|
- Domain Names - Concepts and Facilities</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc1035">RFC1035
|
|
- Domain Names - Implementation and
|
|
Specification</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc4033">RFC4033
|
|
- DNS Security Introduction and Requirements</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc4034">RFC4034
|
|
- Resource Records for the DNS Security
|
|
Extensions</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc4035">RFC4035
|
|
- Protocol Modifications for the DNS Security
|
|
Extensions</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc4641">RFC4641
|
|
- DNSSEC Operational Practices</ulink></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="http://tools.ietf.org/html/rfc5011">RFC 5011
|
|
- Automated Updates of DNS Security (<acronym>DNSSEC</acronym>)
|
|
Trust Anchors</ulink></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-apache">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Der Apache HTTP-Server</title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>konfigurieren</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm><primary>Apache</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Einige der weltgrößten Internetauftritte laufen
|
|
unter &os;. Die Mehrzahl der Webserver im Internet nutzt
|
|
den <application>Apache</application> HTTP-Server. Die
|
|
Installationspakete für den
|
|
<application>Apache</application> sollten auf Ihrem
|
|
Installationsmedium vorhanden sein. Wenn Sie den
|
|
<application>Apache</application> noch nicht installiert haben,
|
|
können Sie dies jederzeit über den Port
|
|
<filename role="package">www/apache13</filename> oder
|
|
<filename role="package">www/apache22</filename> nachholen.</para>
|
|
|
|
<para>Nachdem der <application>Apache</application> erfolgreich
|
|
installiert wurde, muss er noch konfiguriert werden.</para>
|
|
|
|
<note><para>Dieser Abschnitt beschreibt die Version 1.3.X des
|
|
<application>Apache</application> HTTP-Servers, da diese Version
|
|
unter &os; am häufigsten verwendet wird.
|
|
<application>Apache</application> 2.X bringt zwar viele
|
|
Verbesserungen mit sich, wird hier aber nicht beschrieben.
|
|
Sollten Sie an <application>Apache</application> 2.X
|
|
interessiert sein, informieren Sie sich bitte auf
|
|
<ulink url="http://httpd.apache.org/"></ulink>.</para></note>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Konfigurationsdatei</secondary></indexterm>
|
|
|
|
<para>Der <application>Apache</application> HTTP-Server wird unter
|
|
&os; primär über die Datei
|
|
<filename>/usr/local/etc/apache/httpd.conf</filename>
|
|
konfiguriert. Bei dieser Datei handelt es sich um eine typische
|
|
&unix;-Konfigurationsdatei, in der Kommentarzeilen mit einem
|
|
<literal>#</literal>-Zeichen beginnen. Eine komplette
|
|
Beschreibung aller Optionen würde den Rahmen dieses
|
|
Handbuchs sprengen, daher beschreiben wir hier nur die am
|
|
häufigsten verwendeten Optionen.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>ServerRoot "/usr/local"</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt das Standardwurzelverzeichnis für die
|
|
<application>Apache</application>-Installation fest.
|
|
Binärdateien werden in die Verzeichnisse
|
|
<filename class="directory">bin</filename> und
|
|
<filename class="directory">sbin</filename> unterhalb des
|
|
Serverwurzelverzeichnisses installiert, während sich
|
|
Konfigurationsdateien im Verzeichnis
|
|
<filename class="directory">etc/apache</filename>
|
|
befinden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerAdmin you@your.address</literal></term>
|
|
|
|
<listitem>
|
|
<para>Die E-Mail-Adresse, an die Mitteilungen über
|
|
Serverprobleme geschickt werden sollen. Diese Adresse
|
|
erscheint auf vom Server erzeugten Seiten, beispielsweise
|
|
auf Fehlerseiten.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ServerName www.example.com</literal></term>
|
|
|
|
<listitem>
|
|
<para>Über die Option <literal>ServerName</literal>
|
|
können Sie einen Rechnernamen festlegen, den Ihr
|
|
Server an die Clients sendet, wenn sich dieser von
|
|
tatsächlichen Rechnernamen unterscheidet (sie
|
|
könnten etwa <hostid>www</hostid> statt des richtigen
|
|
Rechnernamens verwenden).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>DocumentRoot "/usr/local/www/data"</literal></term>
|
|
|
|
<listitem>
|
|
<para><literal>DocumentRoot</literal>: Das Verzeichnis, in
|
|
dem Sie Ihre Dokumente ablegen. In der Voreinstellung
|
|
befinden sich alle Seiten in diesem Verzeichnis, durch
|
|
symbolische Links oder Aliase lassen sich aber auch andere
|
|
Orte festlegen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Es ist empfehlenswert, eine Sicherungskopie Ihrer
|
|
Konfigurationsdatei anzulegen, bevor Sie Änderungen
|
|
durchführen. Nachdem Sie die Konfiguration beendet
|
|
haben, können Sie den
|
|
<application>Apache</application> starten.</para>
|
|
|
|
<!-- sect3 for performance tuning directives? maxservers minservers -->
|
|
<!-- etc..?? -->
|
|
|
|
<!-- Advanced configuration section.
|
|
|
|
Performance tuning directives.
|
|
|
|
Log file format -->
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Den <application>Apache</application> betreiben</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Starten oder Beenden</secondary></indexterm>
|
|
|
|
<para>Der <application>Apache</application> wird, im Gegensatz zu
|
|
vielen anderen Netzwerkservern, nicht vom
|
|
<application>inetd</application>-Super-Server verwaltet, sondern
|
|
wird als eigenständiger Server betrieben, um die
|
|
Leistung für eintreffende HTTP-Anfragen von den Clients
|
|
(also von Internetbrowsern) zu verbessern. Gestartet, beendet
|
|
oder neu gestartet wird der Server über einen
|
|
Shellskript-Wrapper. Um den <application>Apache</application>
|
|
erstmals zu starten, geben Sie einfach Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl start</userinput></screen>
|
|
|
|
<para>Wenn Sie den Server beenden wollen, geben Sie Folgendes ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl stop</userinput></screen>
|
|
|
|
<para>Wenn Sie die Konfigurationsdatei verändern, müssen
|
|
Sie den Server neu starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl restart</userinput></screen>
|
|
|
|
<para>Um den <application>Apache</application> ohne den Abbruch
|
|
bestehender Verbindungen neu zu starten, geben Sie Folgendes
|
|
ein:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl graceful</userinput></screen>
|
|
|
|
<para>Diese und weitere Optionen werden in
|
|
&man.apachectl.8; beschrieben.</para>
|
|
|
|
<para>Um den <application>Apache</application> beim Systemstart
|
|
zu starten, fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>apache_enable="YES"</programlisting>
|
|
|
|
<para>Um <application>Apache</application> 2.2 zu starten,
|
|
fügen Sie hingegen folgende Zeile ein:</para>
|
|
|
|
<programlisting>apache22_enable="YES"</programlisting>
|
|
|
|
<para>Wenn Sie während des Systemstarts weitere Parameter an
|
|
den
|
|
<application>Apache</application>-<command>httpd</command>-Daemon
|
|
übergeben wollen, können Sie diese durch eine
|
|
zusätzliche Zeile in <filename>rc.conf</filename>
|
|
angeben:</para>
|
|
|
|
<programlisting>apache_flags=""</programlisting>
|
|
|
|
<para>Nachdem der Webserver gestartet ist, können Sie sich
|
|
Ihre Internetseite ansehen, indem Sie in Ihren Browser die
|
|
Adresse <literal>http://localhost/</literal> eingeben. Die
|
|
vordefinierte Standardstartseite ist
|
|
<filename>/usr/local/www/data/index.html</filename>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Virtual Hosting</title>
|
|
|
|
<para>Der <application>Apache</application> unterstützt zwei
|
|
Formen des <foreignphrase>Virtual Hostings</foreignphrase>. Die
|
|
erste Möglichkeit bezeichnet man als namenbasiertes
|
|
virtuelles Hosting. Dabei wird der HTTP/1.1-Header der Clients
|
|
dazu verwendet, den Rechnernamen zu bestimmen. Dadurch wird es
|
|
möglich, mehrere Domains unter der gleichen IP-Adresse zu
|
|
betreiben.</para>
|
|
|
|
<para>Damit der <application>Apache</application> namenbasierte
|
|
virtuelle Domains verwalten kann, fügen Sie die folgende
|
|
Zeile in <filename>httpd.conf</filename> ein:</para>
|
|
|
|
<programlisting>NameVirtualHost *</programlisting>
|
|
|
|
<para>Wenn Ihr Webserver
|
|
<hostid role="fqdn">www.domain.tld</hostid> heißt und Sie die
|
|
virtuelle Domain
|
|
<hostid role="fqdn">www.someotherdomain.tld</hostid> einrichten
|
|
wollen, ergänzen Sie <filename>httpd.conf</filename> um
|
|
folgende Einträge:</para>
|
|
|
|
<screen><VirtualHost *>
|
|
ServerName www.domain.tld
|
|
DocumentRoot /www/domain.tld
|
|
</VirtualHost>
|
|
|
|
<VirtualHost *>
|
|
ServerName www.someotherdomain.tld
|
|
DocumentRoot /www/someotherdomain.tld
|
|
</VirtualHost></screen>
|
|
|
|
<para>Ersetzen Sie dabei die Adressen sowie den Pfad zu den
|
|
Dokumenten durch Ihre eigenen Einstellungen.</para>
|
|
|
|
<para>Ausführliche Informationen zum Einrichten von
|
|
virtuellen Domains finden Sie in der offiziellen
|
|
<application>Apache</application>-Dokumentation unter
|
|
<ulink
|
|
url="http://httpd.apache.org/docs/vhosts/"></ulink>.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Häufig verwendete Apache-Module</title>
|
|
|
|
<indexterm><primary>Apache</primary>
|
|
<secondary>Module</secondary></indexterm>
|
|
|
|
<para>Es gibt viele verschiedene
|
|
<application>Apache</application>-Module, die den Server
|
|
um zusätzliche Funktionen erweitern. Die
|
|
FreeBSD-Ports-Sammlung ermöglicht es Ihnen, den
|
|
<application>Apache</application> gemeinsam mit einigen der
|
|
beliebtesten Zusatzmodule zu installieren.</para>
|
|
|
|
<sect3>
|
|
<title>mod_ssl</title>
|
|
|
|
<indexterm>
|
|
<primary>Webserver</primary>
|
|
<secondary>Verschlüsselung</secondary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>SSL</primary>
|
|
</indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Verschlüsselung</primary>
|
|
</indexterm>
|
|
|
|
<para>Das Modul <application>mod_ssl</application> verwendet die
|
|
OpenSSL-Bibliothek, um, unter Nutzung der Protokolle Secure
|
|
Sockets Layer (SSL v2/v3) sowie Transport Layer Security
|
|
(TLS v1) starke Verschlüsselung zu ermöglichen.
|
|
Durch dieses Modul können Sie ein signiertes Zertifikat
|
|
von einer Zertifizierungsstelle anfordern, damit Sie einen
|
|
sicheren Webserver unter &os; betreiben können.</para>
|
|
|
|
<para>Wenn Sie den <application>Apache</application> 1.3.X noch
|
|
nicht installiert haben, können Sie über den
|
|
Port <filename
|
|
role="package">www/apache13-modssl</filename> eine
|
|
<application>Apache</application>-Version installieren, in die
|
|
<application>mod_ssl</application> als Modul einkompiliert
|
|
wurde. Bevorzugen Sie den
|
|
<application>Apache</application> 2.X, installieren Sie
|
|
stattdessen den Port
|
|
<filename role="package">www/apache22</filename>, bei dem die
|
|
SSL-Unterstützung bereits in der Voreinstellung aktiviert
|
|
ist.</para>
|
|
|
|
<!-- XXX add more information about configuring mod_ssl here. -->
|
|
<!-- Generating keys, getting the key signed, setting up your secure -->
|
|
<!-- web server! -->
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Skriptsprachen</title>
|
|
|
|
<para>Für die wichtigsten Skriptsprachen existieren Module,
|
|
die es erlauben, <application>Apache</application>-Module
|
|
nahezu vollständig in einer Skriptsprache zu programmieren.
|
|
Derartige Module dienen oft dazu, einen Sprach-Interpreter in
|
|
den Webserver einzubetten. Dadurch wird ein zusätzlicher
|
|
externer Interpreter überflüssig, was die Startzeit
|
|
von dynamischen Internetseiten deutlich verringert.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Dynamische Webseiten</title>
|
|
|
|
<indexterm><primary>Webserver</primary>
|
|
<secondary>dynamisch</secondary></indexterm>
|
|
|
|
<para>In den vergangenen Jahren haben immer mehr Unternehmen
|
|
das Internet als Mittel für die Steigerung ihrer
|
|
Einnahmen sowie für die Erhöhung ihrer Reichweite
|
|
entdeckt. Dadurch stieg auch die Nachfrage nach interaktiven
|
|
Internetinhalten. Neben einigen Unternehmen, darunter
|
|
µsoft;, die dafür proprietäre Produkte
|
|
entwickelt haben, hat auch die Open Source Community auf
|
|
diesen Umstand reagiert und unter anderem mit Django,
|
|
Ruby on Rails, <application>mod_perl</application>, und
|
|
<application>mod_php</application> Möglichkeiten zur
|
|
Generierung dynamischer Internetseiten geschaffen.</para>
|
|
|
|
<sect3>
|
|
<title>Django</title>
|
|
|
|
<indexterm><primary>Python</primary></indexterm>
|
|
<indexterm><primary>Django</primary></indexterm>
|
|
|
|
<para>Bei <foreignphrase>Django</foreignphrase> handelt es
|
|
sich um ein unter der BSD-Lizenz verfügbares
|
|
Framework zur schnellen Erstellung von mächtigen
|
|
Internet-Applikationen. Es beinhaltet einen
|
|
objekt-relationalen Mapper (wodurch Datentypen als
|
|
Phyton-Objekte entwickelt werden können) sowie eine
|
|
API für den dynamischen Datenbankzugriff auf diese
|
|
Objekte, ohne dass Entwickler jemals SQL-Code schreiben
|
|
müssen. Zusätzlich existiert ein umfangreiches
|
|
Template-System, wodurch die Programmlogik von der
|
|
HTML-Präsentation getrennt werden kann.</para>
|
|
|
|
<para>Django setzt das Modul
|
|
<application>mod_python</application>,
|
|
den <application>Apache</application>-Webserver sowie eine
|
|
SQL-Datenbank voraus. Für FreeBSD gibt es einen Port,
|
|
der alle Abhängigkeiten mit sinnvollen Optionen
|
|
konfiguriert und installiert.</para>
|
|
|
|
<example id="network-www-django-install">
|
|
<title>Django mit Apache2, mod_python3, und PostgreSQL
|
|
installieren</title>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen>
|
|
</example>
|
|
|
|
<para>Nachdem Django (sowie die abhängigen Pakete)
|
|
installiert ist, müssen Sie ein Projektverzeichnis
|
|
erstellen. Danach konfigurieren Sie Apache so, dass
|
|
der eingebettete Python-Interpreter spezifische URLs
|
|
Ihrer Seiten aufruft.</para>
|
|
|
|
<example id="network-www-django-apache-config">
|
|
<title>Apache-Konfiguration für Django/mod_python</title>
|
|
|
|
<para>Sie müssen die Apache-Konfigurationsdatei
|
|
<filename>httpd.conf</filename> anpassen, damit Apache
|
|
Anfragen für bestimmte URLs an Ihre
|
|
Internet-Applikation übergibt:</para>
|
|
|
|
<screen><Location "/">
|
|
SetHandler python-program
|
|
PythonPath "['/dir/to/your/django/packages/'] + sys.path"
|
|
PythonHandler django.core.handlers.modpython
|
|
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
|
|
PythonAutoReload On
|
|
PythonDebug On
|
|
</Location></screen>
|
|
</example>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Ruby on Rails</title>
|
|
|
|
<indexterm><primary>Ruby on Rails</primary></indexterm>
|
|
|
|
<para>Bei <foreignphrase>Ruby on Rails</foreignphrase> handelt
|
|
es sich um ein weiteres, als Open Source verfügbares
|
|
Webframework. Es bietet einen kompletten Entwicklungsstack
|
|
und erlaubt es Webentwicklern, umfangreiche und mächtige
|
|
Applikationen in kurzer Zeit zu programmieren. Das
|
|
Framework kann über die Ports-Sammlung installiert
|
|
werden.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>mod_perl</title>
|
|
|
|
<indexterm>
|
|
<primary>mod_perl</primary>
|
|
<secondary>Perl</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Kombination <application>Apache</application>/Perl
|
|
vereinigt die Vorteile der Programmiersprache Perl und des
|
|
<application>Apache</application> HTTP-Servers. Durch
|
|
das Modul <application>mod_perl</application> ist es
|
|
möglich, vollständig in Perl geschriebene
|
|
<application>Apache</application>-Module zu erzeugen.
|
|
Da der Perl-Interpreter in den Server eingebettet wird,
|
|
müssen Sie weder einen externen Interpreter noch
|
|
Perl zusätzlich aufrufen.</para>
|
|
|
|
<para><application>mod_perl</application> ist in verschiedenen
|
|
Versionen erhältlich. Bevor Sie
|
|
<application>mod_perl</application> einsetzen,denken Sie
|
|
bitte daran, dass <application>mod_perl</application> 1.0
|
|
nur mit <application>Apache</application> 1.3 und
|
|
<application>mod_perl</application> 2.0 nur mit
|
|
<application>Apache</application> 2.X zusammenarbeitet.
|
|
<application>mod_perl</application> 1.0 kann über
|
|
den Port <filename role="package">www/mod_perl</filename>,
|
|
eine statisch kompilierte Version hingegen über den
|
|
Port <filename role="package">www/apache13-modperl</filename>
|
|
installiert werden. Für die Installation von
|
|
<application>mod_perl</application> 2.0 schließlich
|
|
verwenden Sie den Port <filename
|
|
role="package">www/mod_perl2</filename>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<sect3info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Geschrieben von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect3info>
|
|
|
|
<title>mod_php</title>
|
|
|
|
<indexterm>
|
|
<primary>mod_php</primary>
|
|
<secondary>PHP</secondary>
|
|
</indexterm>
|
|
|
|
<para>Bei PHP, dem <quote>Hypertext Preprocessor</quote>,
|
|
handelt es sich um eine vielseitig verwendbare Skriptsprache,
|
|
die besonders für die Internetprogrammierung geeignet
|
|
ist. PHP kann in <acronym>HTML</acronym> eingebettet werden
|
|
und ähnelt von der Syntax her Sprachen wie C, &java; und
|
|
Perl. Das Hauptanliegen von PHP ist es, Internetprogrammierern
|
|
die rasche Erstellung von dynamisch erzeugten Internetseiten zu
|
|
ermöglichen.</para>
|
|
|
|
<para>Damit Ihr System <acronym>PHP</acronym>5 unterstützt,
|
|
müssen Sie als Erstes den <application>Apache</application>
|
|
Webserver über den Port
|
|
<filename role="package">lang/php5</filename>
|
|
installieren.</para>
|
|
|
|
<para>Wenn Sie den Port <filename role="package">lang/php5</filename>
|
|
das erste Mal installieren, werden die verfügbaren Optionen
|
|
(<literal>OPTIONS</literal>) automatisch angezeigt. Erscheint das
|
|
Konfigurationsmenü bei Ihnen nicht, so liegt dies daran,
|
|
dass Sie den Port <filename role="package">lang/php5</filename>
|
|
schon einmal auf Ihrem System installiert hatten. Es ist aber
|
|
jederzeit möglich, dieses Menü aus dem
|
|
Ports-Verzeichnis heraus über folgenden Befehl erneut
|
|
aufzurufen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make config</userinput></screen>
|
|
|
|
<para>In diesem Konfigurationsmenü müssen Sie die
|
|
Option <literal>APACHE</literal> auswählen, damit
|
|
<application>mod_php5</application> als ein vom
|
|
<application>Apache</application>-Webserver ladbares Modul
|
|
gebaut wird.</para>
|
|
|
|
<note>
|
|
<para>Viele Seiten verwenden nach wie vor (beispielsweise wegen
|
|
der benötigten Kompatibilität zu bereits
|
|
vorhandenen Web-Applikationen) <acronym>PHP</acronym>4.
|
|
Ist dies bei Ihnen der Fall, so müssen Sie statt
|
|
<application>mod_php5</application>
|
|
<application>mod_php4</application> über den Port
|
|
<filename role="package">lang/php4</filename> installieren.
|
|
Der Port <filename role="package">lang/php4</filename>
|
|
unterstützt viele der Konfigurations- und
|
|
Laufzeitoptionen von <filename
|
|
role="package">lang/php5</filename>.</para>
|
|
</note>
|
|
|
|
<para>Dieser Port installiert und konfiguriert die Module, die
|
|
für die Unterstützung von dynamischen
|
|
<acronym>PHP</acronym>-Anwendungen benötigt werden.
|
|
Stellen Sie danach sicher, dass Ihre
|
|
<filename>/usr/local/etc/apache/httpd.conf</filename> die
|
|
folgenden Abschnitte enthält:</para>
|
|
|
|
<programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting>
|
|
|
|
<programlisting>AddModule mod_php5.c
|
|
<IfModule mod_php5.c>
|
|
DirectoryIndex index.php index.html
|
|
</IfModule>
|
|
<IfModule mod_php5.c>
|
|
AddType application/x-httpd-php .php
|
|
AddType application/x-httpd-php-source .phps
|
|
</IfModule></programlisting>
|
|
|
|
<para>Nachdem dies erledigt ist, rufen Sie
|
|
<command>apachectl</command> auf, um das
|
|
<acronym>PHP</acronym>-Modul zu laden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
|
|
|
<para>Bei künftigen Upgrades von <acronym>PHP</acronym>
|
|
wird <command>make config</command> nicht mehr benötigt,
|
|
da die von Ihnen ursprünglich ausgewählten
|
|
Optionen (<literal>OPTIONS</literal>) vom
|
|
&os;-Ports-Framework automatisch gespeichert werden.</para>
|
|
|
|
<para>Die <acronym>PHP</acronym>-Unterstützung von &os; ist
|
|
stark modular aufgebaut, daher verfügt eine
|
|
Basisinstallation nur über wenige Funktionen. Eine
|
|
Erweiterung um zusätzliche Funktionen ist allerdings sehr
|
|
einfach über den Port <filename
|
|
role="package">lang/php5-extensions</filename> möglich.
|
|
Der Port bietet Ihnen ein Auswahlmenü, über das Sie
|
|
verschiedene <acronym>PHP</acronym>-Erweiterungen installieren
|
|
können. Alternativ können Sie einzelne Erweiterungen
|
|
aber weiterhin direkt über den jeweiligen Port
|
|
installieren.</para>
|
|
|
|
<para>Um beispielsweise die Unterstützung des
|
|
Datenbankservers <application>MySQL</application> in
|
|
<acronym>PHP</acronym>5 zu aktivieren, installieren Sie
|
|
den Port <filename>databases/php5-mysql</filename>.</para>
|
|
|
|
<para>Nachdem Sie eine Erweiterung installiert haben,
|
|
müssen Sie den
|
|
<application>Apache</application>-Server neu starten, damit
|
|
die Erweiterung auch erkannt wird:</para>
|
|
|
|
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
|
|
|
<para>Ab nun wird <application>MySQL</application> von
|
|
<application>PHP</application> unterstützt.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-ftp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>FTP – File Transfer Protocol</title>
|
|
|
|
<indexterm><primary>FTP-Server</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Das File Transfer Protocol (FTP) ermöglicht
|
|
auf einfache Art und Weise den Dateiaustausch mit einem
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Server.
|
|
Der
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Server
|
|
<application>ftpd</application> ist bei &os; bereits im
|
|
Basisystem enthalten. Daher sind Konfiguration und Betrieb
|
|
eines
|
|
<acronym role="File Transfer Protocol">FTP</acronym>-Servers
|
|
unter FreeBSD relativ einfach.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<para>Der wichtigste Punkt ist hier die Entscheidung darüber,
|
|
welche Benutzer auf Ihren FTP-Server zugreifen dürfen.
|
|
Ein FreeBSD-System verfügt über diverse
|
|
Systembenutzerkonten, um einzelnen Daemonen den Zugriff auf
|
|
das System zu ermöglichen. Anonyme Benutzer sollten sich
|
|
allerdings nicht über diese Benutzerkonten anmelden
|
|
dürfen. Die Datei <filename>/etc/ftpusers</filename>
|
|
enthält alle Benutzer, die vom FTP-Zugriff ausgeschlossen
|
|
sind. In der Voreinstellung gilt dies auch die gerade
|
|
erwähnten Systembenutzerkonten. Sie können über
|
|
diese Datei weitere Benutzer vom FTP-Zugriff
|
|
ausschließen.</para>
|
|
|
|
<para>Sie können den Zugriff für einige Benutzer
|
|
einschränken, ohne FTP komplett zu verbieten. Dazu
|
|
passen Sie <filename>/etc/ftpchroot</filename> entsprechend an.
|
|
Diese Datei enthält Benutzer und Gruppen sowie die für
|
|
sie geltenden FTP-Einschränkungen und wird in
|
|
&man.ftpchroot.5; ausführlich beschrieben.</para>
|
|
|
|
<indexterm>
|
|
<primary>FTP</primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie einen anonymen FTP-Zugriff auf Ihren Server
|
|
ermöglichen wollen, müssen Sie den Benutzer
|
|
<username>ftp</username> auf Ihrem &os;-System anlegen.
|
|
Danach können sich Benutzer mit dem Benutzernamen
|
|
<username>ftp</username> oder <username>anonymous</username>
|
|
auf Ihrem FTP-Server anmelden. Das Passwort ist dabei
|
|
beliebig (allerdings wird dazu in der Regel eine E-Mail-Adresse
|
|
verwendet). Meldet sich ein anonymer Benutzer an, aktiviert
|
|
der FTP-Server &man.chroot.2;, um den Zugriff auf das
|
|
Heimatverzeichnis des Benutzers <username>ftp</username>
|
|
zu beschränken.</para>
|
|
|
|
<para>Es gibt zwei Textdateien, deren Inhalt Sie bei der Anmeldung
|
|
an Ihrem FTP-Server anzeigen lassen können. Der Inhalt von
|
|
<filename>/etc/ftpwelcome</filename> wird angezeigt, bevor der
|
|
Login-Prompt erscheint. Nach einer erfolgreichen Anmeldung wird
|
|
der Inhalt von <filename>/etc/ftpmotd</filename> angezeigt.
|
|
Beachten Sie aber, dass es dabei um einen Pfad relativ zur
|
|
Umgebung des anzumeldenden Benutzers handelt. Bei einer
|
|
anonymen Anmeldung würde also die Datei
|
|
<filename>~ftp/etc/ftpmotd</filename> angezeigt.</para>
|
|
|
|
<para>Nachdem Sie den FTP-Server konfiguriert haben, müssen
|
|
Sie Ihn in <filename>/etc/inetd.conf</filename> aktivieren.
|
|
Dazu müssen Sie lediglich das Kommentarsymbol
|
|
<quote>#</quote> am Beginn der bereits vorhandenen
|
|
<application>ftpd</application>-Zeile entfernen:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
|
|
|
<para>Nachdem Sie diese Änderung durchgeführt haben,
|
|
müssen Sie, wie in <xref linkend="network-inetd-reread"/>
|
|
beschrieben, die <application>inetd</application>-Konfiguration
|
|
neu einlesen. Lesen Sie bitte Abschnitt <xref
|
|
linkend="network-inetd-settings"/> des Handbuchs für weitere
|
|
Informationen zur Aktivierung von
|
|
<application>inetd</application> auf Ihren System.</para>
|
|
|
|
<para>Alternativ können Sie auch nur den
|
|
<application>ftpd</application>-Server starten. In diesem Fall
|
|
ist es ausreichend, die entsprechende Variable in der Datei
|
|
<filename>/etc/rc.conf</filename> zu setzen:</para>
|
|
|
|
<programlisting>ftpd_enable="YES"</programlisting>
|
|
|
|
<para>Nachdem Sie diese Variable gesetzt haben, wird künftig
|
|
beim Systemstart nur der FTP-Server gestartet. Alternativ
|
|
können Sie den Server auch manuell starten, indem Sie als
|
|
Benutzer <username>root</username> den folgenden Befehl
|
|
ausführen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen>
|
|
|
|
<para>Danach können Sie sich auf Ihrem FTP-Server anmelden:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Wartung</title>
|
|
|
|
<indexterm><primary>syslog</primary></indexterm>
|
|
|
|
<indexterm>
|
|
<primary>Logdateien</primary>
|
|
<secondary>FTP</secondary>
|
|
</indexterm>
|
|
|
|
<para>Der <application>ftpd</application>-Daemon verwendet
|
|
&man.syslog.3;, um Protokolldateien zu erstellen. In der
|
|
Voreinstellung werden alle FTP betreffenden Nachrichten
|
|
in die Datei <filename>/var/log/xferlog</filename>
|
|
geschrieben. Dies lässt sich aber durch das Einfügen
|
|
der folgenden Zeile in <filename>/etc/syslog.conf</filename>
|
|
ändern:</para>
|
|
|
|
<programlisting>ftp.info /var/log/xferlog</programlisting>
|
|
|
|
<indexterm>
|
|
<primary>FTP</primary>
|
|
<secondary>anonymous</secondary>
|
|
</indexterm>
|
|
|
|
<para>Beachten Sie, dass mit dem Betrieb eines anonymen
|
|
FTP-Servers verschiedene Sicherheitsrisiken verbunden sind.
|
|
Problematisch ist hier vor allem die Erlaubnis zum anonymen
|
|
Upload von Dateien. Dadurch könnte Ihr Server zur
|
|
Verbreitung von illegaler oder nicht lizensierter Software
|
|
oder noch Schlimmeren missbraucht werden. Wollen Sie
|
|
anonyme Uploads dennoch erlauben, sollten Sie die
|
|
Zugriffsrechte so setzen, dass solche Dateien erst nach Ihrer
|
|
Zustimmung von anderen Benutzern heruntergeladen werden
|
|
können.</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-samba">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Mit Samba einen Datei- und Druckserver für
|
|
µsoft.windows;-Clients einrichten</title>
|
|
|
|
<indexterm><primary>Samba-Server</primary></indexterm>
|
|
<indexterm><primary>Microsoft Windows</primary></indexterm>
|
|
<indexterm>
|
|
<primary>Dateiserver</primary>
|
|
<secondary>Windows-Clients</secondary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>Druckserver</primary>
|
|
<secondary>Windows-Clients</secondary>
|
|
</indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para><application>Samba</application> ist ein beliebtes
|
|
Open Source-Softwarepaket, das es Ihnen ermöglicht,
|
|
einen Datei- und Druckserver für
|
|
µsoft.windows;-Clients einzurichten. Clients können
|
|
sich dadurch mit einem FreeBSD-System verbinden und dessen
|
|
Speicherplatz oder dessen Drucker verwenden. Dies genauso, als
|
|
wenn es sich um lokale Drucker oder Festplatten handeln
|
|
würde.</para>
|
|
|
|
<para><application>Samba</application> sollte als Softwarepaket
|
|
auf Ihren Installationsmedien vorhanden sein. Wenn Sie
|
|
<application>Samba</application> noch nicht installiert haben,
|
|
können Sie dies jederzeit über den Port oder das
|
|
Paket <filename role="package">net/samba34</filename>
|
|
nachholen.</para>
|
|
|
|
<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. -->
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration</title>
|
|
|
|
<para>Die Standardkonfigurationsdatei von
|
|
<application>Samba</application> heißt
|
|
<filename>/usr/local/share/examples/samba34/smb.conf.default</filename>.
|
|
Diese Datei muss nach <filename>/usr/local/etc/smb.conf</filename>
|
|
kopiert und angepasst werden, bevor
|
|
<application>Samba</application> verwendet werden kann.</para>
|
|
|
|
<para>Die Datei <filename>smb.conf</filename> enthält
|
|
Laufzeitinformationen für
|
|
<application>Samba</application>, beispielsweise
|
|
Druckerdefinitionen oder
|
|
<foreignphrase>filesystem shares</foreignphrase>, also Bereiche
|
|
des Dateisystems, die Sie mit &windows;-Clients teilen wollen.
|
|
Die Konfiguration der Datei <filename>smb.conf</filename>
|
|
erfolgt webbasiert über das im
|
|
<application>Samba</application>-Paket enthaltene Programm
|
|
<application>swat</application>.</para>
|
|
|
|
<sect3>
|
|
<title>Das Samba Web Administration Tool (SWAT) verwenden</title>
|
|
|
|
<para>Das
|
|
<foreignphrase>Samba Web Administration Tool</foreignphrase>
|
|
(SWAT) wird als Daemon von <application>inetd</application>
|
|
aktiviert. Daher müssen Sie den Kommentar vor der
|
|
folgenden Zeile in <filename>/etc/inetd.conf</filename>
|
|
entfernen, bevor Sie <application>swat</application> zur
|
|
Konfiguration von <application>Samba</application> verwenden
|
|
können:</para>
|
|
|
|
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting>
|
|
|
|
<para>Wie bereits in <xref linkend="network-inetd-reread"/>
|
|
beschrieben, müssen Sie die
|
|
<application>inetd</application>-Konfiguration neu einlesen,
|
|
nachdem Sie diese Änderung durchgeführt haben.</para>
|
|
|
|
<para>Nachdem <application>swat</application> in der Datei
|
|
<filename>inetd.conf</filename> aktiviert wurde, rufen Sie
|
|
in Ihrem Internetbrowser die Adresse
|
|
<ulink url="http://localhost:901"></ulink> auf und melden sich
|
|
mit dem <username>root</username>-Benutzerkonto an.</para>
|
|
|
|
<!-- XXX screenshots go here, loader is creating them -->
|
|
|
|
<para>Nachdem Sie sich erfolgreich angemeldet haben, wird die
|
|
Hauptkonfigurationseite von <application>Samba</application>
|
|
geladen. Sie können nun die Dokumentation lesen, oder
|
|
durch einen Klick auf die
|
|
<guimenu>Globals</guimenu>-Karteikarte mit der Konfiguration
|
|
beginnen. Die Einstellungen, die Sie hier vornehmen
|
|
können, entsprechen denen des Abschnitts
|
|
<literal>[global]</literal> von
|
|
<filename>/usr/local/etc/smb.conf</filename>.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Globale Einstellungen</title>
|
|
|
|
<para>Unabhängig davon, ob Sie
|
|
<application>swat</application> verwenden, oder
|
|
<filename>/usr/local/etc/smb.conf</filename> direkt
|
|
editieren, sollten Sie zuerst folgende Einstellungen
|
|
anpassen:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>workgroup</literal></term>
|
|
|
|
<listitem>
|
|
<para>Der NT-Domänenname oder der Arbeitsgruppenname der
|
|
Rechner, die auf den Server Zugriff haben sollen.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>netbios name</literal></term>
|
|
|
|
<listitem>
|
|
<indexterm><primary>NetBIOS</primary></indexterm>
|
|
|
|
<para>Legt den NetBIOS-Namen fest, unter dem der
|
|
<application>Samba</application>-Server bekannt ist.
|
|
In der Regel handelt es sich dabei um den ersten
|
|
Teil des DNS-Namens des Servers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>server string</literal></term>
|
|
|
|
<listitem>
|
|
<para>Legt die Beschreibung fest, die angezeigt werden
|
|
soll, wenn mit <command>net view</command> oder
|
|
über andere Netzwerkprogramme Informationen
|
|
über den Server angefordert werden.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Samba absichern</title>
|
|
|
|
<para>Zwei der wichtigsten Einstellungen in
|
|
<filename>/usr/local/etc/smb.conf</filename> betreffen
|
|
das zu verwendende Sicherheitsmodell sowie das
|
|
Backend-Passwortformat für die Benutzer der
|
|
Samba-Clients. Folgende Optionen sind dafür
|
|
verantwortlich:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>security</literal></term>
|
|
|
|
<listitem>
|
|
<para>Die häufigsten Optionen sind
|
|
<literal>security = share</literal> und
|
|
<literal>security = user</literal>. Wenn Ihre Clients
|
|
Benutzernamen verwenden, die den Benutzernamen auf Ihrem
|
|
&os;-Rechner entsprechen, dann sollten Sie die
|
|
Einstellung <foreignphrase>user level</foreignphrase>
|
|
verwenden. Dies ist auch die Standardeinstellung.
|
|
Allerdings ist es dazu erforderlich, dass sich die
|
|
Clients auf Ihrem Rechner anmelden, bevor sie auf
|
|
gemeinsame Ressourcen zugreifen können.</para>
|
|
|
|
<para>In der Einstellung
|
|
<foreignphrase>share level</foreignphrase> müssen
|
|
sich Clients nicht unter Verwendung eines gültigen
|
|
Logins auf Ihrem Rechner anmelden, bevor sie auf
|
|
gemeinsame Ressourcen zugreifen können. In
|
|
früheren <application>Samba</application>-Versionen
|
|
war dies die Standardeinstellung.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>passdb backend</literal></term>
|
|
|
|
<listitem>
|
|
<indexterm><primary>NIS+</primary></indexterm>
|
|
<indexterm><primary>LDAP</primary></indexterm>
|
|
<indexterm><primary>SQL database</primary></indexterm>
|
|
|
|
<para><application>Samba</application> erlaubt
|
|
verschiedene Backend-Authentifizierungsmodelle. Sie
|
|
können Clients durch LDAP, NIS+, eine SQL-Datenbank
|
|
oder eine Passwortdatei authentifizieren. In der
|
|
Voreinstellung wird <literal>smbpasswd</literal>
|
|
verwendet. Diese Methode wird im folgenden Abschnitt
|
|
näher beschrieben.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Wenn Sie <literal>smbpasswd</literal> verwenden, müssen
|
|
Sie die Datei <filename>/usr/local/etc/samba/smbpasswd</filename>
|
|
erzeugen, damit <application>Samba</application> in der Lage
|
|
ist, Clients zu authentifizieren. Wenn Sie auf Ihrem
|
|
&unix;-Rechner vorhandenen Benutzern den Zugriff von einem
|
|
&windows;-Client aus ermöglichen wollen, verwenden Sie den
|
|
folgenden Befehl:</para>
|
|
|
|
<screen>&prompt.root; <userinput>smbpasswd -a username</userinput></screen>
|
|
|
|
<note>
|
|
<para>Als Backend wird inzwischen <literal>tdbsam</literal>
|
|
empfohlen. Mit dem folgenden Befehl legen Sie neue
|
|
Benutzerkonten an:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>pdbedit <option>-a</option> <option>-u</option> <replaceable>username</replaceable></command></userinput></screen>
|
|
</note>
|
|
|
|
<para>Ausführliche Informationen zur Konfiguration
|
|
von <application>Samba</application> finden Sie im <ulink
|
|
url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/">
|
|
Official Samba HOWTO</ulink>. Sie sollten aber bereits
|
|
nach dem Lesen dieses Abschnitts in der Lage sein,
|
|
<application>Samba</application> zu starten.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><application>Samba</application> starten</title>
|
|
|
|
<para>Der Port <filename role="package">net/samba34</filename>
|
|
legt ein neues Startskript an, mit dem
|
|
<application>Samba</application> gesteuert (also etwa
|
|
gestartet oder beendet) werden kann. Um dieses Skript
|
|
zu aktivieren, fügen Sie folgende Zeile in
|
|
<filename>/etc/rc.conf</filename> ein:</para>
|
|
|
|
<programlisting>samba_enable="YES"</programlisting>
|
|
|
|
<para>Alternativ können Sie auch die folgenden
|
|
beiden Einträge verwenden:</para>
|
|
|
|
<programlisting>nmbd_enable="YES"</programlisting>
|
|
<programlisting>smbd_enable="YES"</programlisting>
|
|
|
|
<note>
|
|
<para>Durch diese Einträge wird
|
|
<application>Samba</application> beim Systemstart
|
|
automatisch aktiviert.</para>
|
|
</note>
|
|
|
|
<para>Danach können Sie <application>Samba</application>
|
|
jederzeit durch folgenden Befehl starten:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
|
|
Starting SAMBA: removing stale tdbs :
|
|
Starting nmbd.
|
|
Starting smbd.</screen>
|
|
|
|
<para>Weitere Informationen zu den rc-Startskripten finden
|
|
Sie im <xref linkend="configtuning-rcd"/> des Handbuchs.</para>
|
|
|
|
<para><application>Samba</application> verwendet drei Daemonen.
|
|
Beachten Sie, dass sowohl <application>nmbd</application> als
|
|
auch <application>smbd</application> durch das Skript
|
|
<filename>samba</filename> gestartet werden. Wenn Sie die
|
|
<foreignphrase>winbind name resolution services</foreignphrase>
|
|
in <filename>smb.conf</filename> aktiviert haben, wird
|
|
zusätzlich der <application>winbindd</application>-Daemon
|
|
gestartet.</para>
|
|
|
|
<para>Sie können <application>Samba</application> jederzeit
|
|
durch den folgenden Befehl beenden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
|
|
|
|
<para><application>Samba</application> ist ein komplexes
|
|
Softwarepaket mit umfassenden Funktionen, die eine weitreichende
|
|
Integration von µsoft.windows;-Netzwerken ermöglichen.
|
|
Für eine Beschreibung dieser Zusatzfunktionen sollten Sie
|
|
sich auf <ulink url="http://www.samba.org"></ulink> umsehen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-ntp">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Hukins</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Die Uhrzeit mit NTP synchronisieren</title>
|
|
|
|
<indexterm><primary>NTP</primary></indexterm>
|
|
|
|
<sect2>
|
|
<title>Überblick</title>
|
|
|
|
<para>Da die interne Uhrzeit eines Computers nie ganz exakt ist,
|
|
wurde mit NTP
|
|
(<foreignphrase>Network Time Protocol</foreignphrase>) eine
|
|
Möglichkeit geschaffen, die exakte Uhrzeit zu ermitteln
|
|
und festzulegen.</para>
|
|
|
|
<para>Viele Internetdienste sind von einer exakten Uhrzeit
|
|
abhängig. Ein Webserver könnte beispielsweise die
|
|
Anforderung erhalten, eine Datei zu versenden, wenn sich diese
|
|
in einer bestimmten Zeitspanne geändert hat. In einem
|
|
lokalen Netzwerk ist es unbedingt notwendig, dass Rechner, die
|
|
Dateien von einem gemeinsamen Dateiserver beziehen, ihre
|
|
Uhrzeit synchronisieren, damit die Zeitstempel der Dateien
|
|
konstistent bleiben. Dienste wie &man.cron.8; führen
|
|
Befehle zu einem bestimmten Zeitpunkt aus. Ist die Uhrzeit
|
|
nicht korrekt, kann dies zu Problemen führen.</para>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntpd</secondary>
|
|
</indexterm>
|
|
|
|
<para>&os; verwendet den &man.ntpd.8;-
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Server,
|
|
um die genaue Uhrzeit von anderen
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Servern
|
|
abzufragen, die eigene Systemzeit zu setzen, oder um diese
|
|
anderen Rechnern anzubieten.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Einen passenden NTP-Server auswählen</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>Serverwahl</secondary>
|
|
</indexterm>
|
|
|
|
<para>Um die Uhrzeit zu synchronisieren, müssen Sie sich mit
|
|
einem
|
|
<acronym role="Network Time Protocol">NTP</acronym>-Server
|
|
verbinden. Ihr Netzwerkadministrator oder Ihr Internetprovider
|
|
haben vielleicht schon einen NTP-Server eingerichtet. Lesen Sie
|
|
deren Dokumentation, um dies zu überprüfen. Es gibt
|
|
im Internet eine
|
|
<ulink url="http://support.ntp.org/bin/view/Servers/WebHome">
|
|
Liste mit frei zugänglichen NTP-Servern</ulink>, aus der
|
|
Sie sich einen in Ihrer Nähe gelegenen Server
|
|
auswählen können. Beachten Sie aber auf jeden Fall
|
|
die Nutzungsbedingungen des entsprechenden Servers, und fragen
|
|
Sie um Erlaubnis, wenn dies nötig ist.</para>
|
|
|
|
<para>Die Auswahl von mehreren NTP-Servern kann sinnvoll sein,
|
|
wenn ein Server ausfällt oder falsche Zeiten liefert.
|
|
&man.ntpd.8; verwendet die Antworten anderer Server, um
|
|
zuverlässige Server zu bestimmen, die dann bevorzugt
|
|
abgefragt werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>NTP unter &os; einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>Konfiguration</secondary>
|
|
</indexterm>
|
|
|
|
<sect3>
|
|
<title>NTP aktivieren</title>
|
|
|
|
<indexterm><primary>ntpdate</primary></indexterm>
|
|
|
|
<para>Wenn Sie Ihre Uhrzeit nur beim Systemstart
|
|
synchronisieren wollen, können Sie &man.ntpdate.8;
|
|
verwenden. Für Desktoprechner, die regelmäßig
|
|
neu gestartet werden und keine ständige Synchronisation
|
|
benötigen, ist dies akzeptabel. In allen anderen
|
|
Fällen sollten Sie jedoch &man.ntpd.8; verwenden.</para>
|
|
|
|
<para>Die Ausführung von &man.ntpdate.8; während des
|
|
Systemstarts ist aber auch für Rechner, die &man.ntpd.8;
|
|
verwenden, sinnvoll. &man.ntpd.8; passt die Systemzeit nur
|
|
bei größeren Abweichungen an, während
|
|
&man.ntpdate.8; die Zeit immer synchronisiert, egal wie
|
|
groß die Differenz zwischen Systemzeit und korrekter
|
|
Zeit ist.</para>
|
|
|
|
<para>Um &man.ntpdate.8; beim Systemstart zu aktivieren,
|
|
fügen Sie den Eintrag
|
|
<literal>ntpdate_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> ein. Außerdem müssen
|
|
Sie alle Server, mit denen Sie sich synchronisieren wollen,
|
|
sowie alle an &man.ntpdate.8; zu übergebenden Optionen
|
|
in den <varname>ntpdate_flags</varname> angeben.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NTP einrichten</title>
|
|
|
|
<indexterm>
|
|
<primary>NTP</primary>
|
|
<secondary>ntp.conf</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Konfiguration von NTP erfolgt über die Datei
|
|
<filename>/etc/ntp.conf</filename>, und wird in der
|
|
Hilfeseite &man.ntp.conf.5; beschrieben. Dazu ein
|
|
einfaches Beispiel:</para>
|
|
|
|
<programlisting>server ntplocal.example.com prefer
|
|
server timeserver.example.org
|
|
server ntp2a.example.net
|
|
|
|
driftfile /var/db/ntp.drift</programlisting>
|
|
|
|
<para>Die Option <literal>server</literal> legt die zu
|
|
verwendenden Server fest, wobei jeder Server in einer eigenen
|
|
Zeile steht. Wenn ein Server mit der Option
|
|
<literal>prefer</literal> versehen ist, wie dies hier bei
|
|
<hostid role="fqdn">ntplocal.example.com</hostid> der Fall
|
|
ist, wird dieser Server bevorzugt verwendet. Eine Antwort von
|
|
einem bevorzugten Server wird nur dann verworfen, wenn sie
|
|
signifikant von denen anderer Server abweicht, ansonsten wird
|
|
sie ohne Abfrage weiterer Server verwendet. Die Option
|
|
<literal>prefer</literal> wird gewöhnlich nur für
|
|
sehr zuverlässige und genaue Server verwendet, die
|
|
über eine spezielle Hardware zur Zeitüberwachung
|
|
verfügen.</para>
|
|
|
|
<para>Die Option <literal>driftfile</literal> legt fest, in
|
|
welcher Datei die Abweichungen der Systemuhr protokolliert
|
|
werden. &man.ntpd.8; verwendet diese Datei, um die Systemzeit
|
|
automatisch anzupassen, selbst wenn kurzzeitig kein NTP-Server
|
|
zur Synchronisation verfügbar ist.</para>
|
|
|
|
<para>Weiterhin legt die Option <literal>driftfile</literal> fest,
|
|
wo Informationen über frühere Antworten des von
|
|
Ihnen verwendeten NTP-Servers gespeichert werden sollen.
|
|
Diese Datei enthält NTP-interne Informationen, sie sollte
|
|
daher von anderen Prozessen nicht verändert werden.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Den Zugang zu Ihrem NTP-Server beschränken</title>
|
|
|
|
<para>In der Voreinstellung ist Ihr NTP-Server für alle
|
|
Rechner im Internet erreichbar. Über die Option
|
|
<literal>restrict</literal> in der Datei
|
|
<filename>/etc/ntp.conf</filename> können Sie den
|
|
Zugang zu Ihrem Server beschränken.</para>
|
|
|
|
<para>Wenn Sie alle Rechner vom Zugriff auf Ihren NTP-Server
|
|
ausschließen wollen, fügen Sie folgende Zeile in
|
|
<filename>/etc/ntp.conf</filename> ein:</para>
|
|
|
|
<programlisting>restrict default ignore</programlisting>
|
|
|
|
<note>
|
|
<para>Durch diesen Eintrag verhindern Sie den Zugriff Ihres
|
|
Servers auf alle auf Ihrem System konfigurierten Server.
|
|
Müssen Sie Ihren NTP-Server mit einem externen
|
|
NTP-Server synchronisieren, müssen Sie dies daher
|
|
dezidiert zulassen. Lesen Sie in diesem Fall die
|
|
Manualpage &man.ntp.conf.5;.</para>
|
|
</note>
|
|
|
|
<para>Wenn Sie nur Rechnern Ihres eigenen Netzwerks die
|
|
Synchronisation mit Ihrem NTP-Server erlauben, gleichzeitig
|
|
aber verhindern wollen, dass diese den NTP-Server
|
|
konfigurieren oder als Server für andere Rechner dienen
|
|
können, fügen Sie folgende Zeile ein:</para>
|
|
|
|
<programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>
|
|
|
|
<para>Bei <hostid role="ipaddr">192.168.1.0</hostid> handelt es
|
|
sich um einen Rechner Ihres Netzwerks.
|
|
<hostid role="netmask">255.255.255.0</hostid> ist die
|
|
Netzmaske Ihres Netzwerks.</para>
|
|
|
|
<para><filename>/etc/ntp.conf</filename> kann verschiedene
|
|
<literal>restrict</literal>-Optionen enthalten.
|
|
Weiteres erfahren Sie im Abschnitt
|
|
<literal>Access Control Support</literal> der
|
|
Hilfeseite &man.ntp.conf.5;.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Den NTP-Server starten</title>
|
|
|
|
<para>Damit der NTP-Server beim Systemstart automatisch gestartet
|
|
wird, fügen Sie den Eintrag
|
|
<literal>ntpd_enable="YES"</literal> in
|
|
<filename>/etc/rc.conf</filename> ein. Wenn Sie weitere
|
|
Argumente an &man.ntpd.8; übergeben wollen, passen Sie
|
|
die Option <varname>ntpd_flags</varname> in der Datei
|
|
<filename>/etc/rc.conf</filename> entsprechend an.</para>
|
|
|
|
<para>Um den NTP-Server ohne einen Systemneustart zu starten,
|
|
rufen Sie <command>ntpd</command> mit den unter
|
|
<varname>ntpd_flags</varname> in
|
|
<filename>/etc/rc.conf</filename> festgelegten Parametern auf.
|
|
Hierzu ein Beispiel:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>ntpd mit einer Einwahlverbindung verwenden</title>
|
|
|
|
<para>&man.ntpd.8; benötigt keine ständige
|
|
Internetverbindung. Wenn Sie sich ins Internet einwählen,
|
|
ist es sinnvoll, zu verhindern, dass NTP-Verkehr eine Verbindung
|
|
aufbauen oder aufrechterhalten kann. Wenn Sie user-PPP
|
|
verwenden, können Sie dies in den
|
|
<literal>filter</literal>-Direktiven von
|
|
<filename>/etc/ppp/ppp.conf</filename> festlegen. Sehen Sie
|
|
sich dazu das folgende Beispiel ein:</para>
|
|
|
|
<programlisting>set filter dial 0 deny udp src eq 123
|
|
# Prevent NTP traffic from initiating dial out
|
|
set filter dial 1 permit 0 0
|
|
set filter alive 0 deny udp src eq 123
|
|
# Prevent incoming NTP traffic from keeping the connection open
|
|
set filter alive 1 deny udp dst eq 123
|
|
# Prevent outgoing NTP traffic from keeping the connection open
|
|
set filter alive 2 permit 0/0 0/0</programlisting>
|
|
|
|
<para>Weitere Informationen finden Sie im Abschnitt
|
|
<literal>PACKET FILTERING</literal> von &man.ppp.8; sowie in den
|
|
Beispielen unter <filename>/usr/share/examples/ppp/</filename>.</para>
|
|
|
|
<note><para>Einige Internetprovider blockieren Ports mit niedrigen
|
|
Nummern. In solchen Fällen funktioniert NTP leider
|
|
nicht, da Antworten eines NTP-Servers Ihren Rechner nicht
|
|
erreichen werden.</para></note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Weitere Informationen</title>
|
|
|
|
<para>Weiterführende Dokumentation (im HTML-Format)
|
|
zum NTP-Server finden Sie unter
|
|
<filename>/usr/share/doc/ntp/</filename>.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="network-syslogd">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Benedict</firstname>
|
|
<surname>Reuschling</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
|
|
<title>Protokollierung von anderen Hosts mittels
|
|
<command>syslogd</command></title>
|
|
|
|
<para>Die Interaktion mit Systemprotokollen ist ein wichtiger Aspekt,
|
|
sowohl was Sicherheit als auch Systemadministration anbelangt.
|
|
Überwachen der Protokolldateien von mehreren Hosts kann sehr
|
|
unhandlich werden, wenn diese Hosts über mittlere oder grosse
|
|
Netze verteilt sind oder wenn sie Teile von unterschiedlichen Netzwerken
|
|
sind. In diesen Fällen macht die Konfiguration der Protokollierung
|
|
von anderen Hosts diesen Prozess wesentlich komfortabler.</para>
|
|
|
|
<para>Die zentralisierte Protokollierung auf einen bestimmten
|
|
Protokollierungshost kann manche der administrativen Belastungen der
|
|
Protokolldateiadministration reduzieren. Protokolldateiaggregation,
|
|
-zusammenführung und -rotation kann an einer zentralen Stelle mit
|
|
den &os;-eigenen Werkzeugen wie &man.syslogd.8; und &man.newsyslog.8;
|
|
konfiguriert werden. In der folgenden Beispielkonfiguration sammelt
|
|
Host <hostid>A</hostid>, genannt <hostid
|
|
role="fqdn">logserv.example.com</hostid>, Protokollinformationen für
|
|
das lokale Netzwerk. Host <hostid>B</hostid>, genannt
|
|
<hostid role="fqdn">logclient.example.com</hostid> wird seine
|
|
Protokollinformationen an den Server weiterleiten. In realen
|
|
Konfigurationen benötigen beide Hosts passende Vorwärts- und
|
|
Umkehr-Einträge im <acronym>DNS</acronym> oder
|
|
in <filename>/etc/hosts</filename>. Andernfalls werden die Daten vom
|
|
Server abgelehnt.</para>
|
|
|
|
<sect2>
|
|
<title>Konfiguration des Protokollierungs-Servers</title>
|
|
|
|
<para>Protokollierungs-Server sind Maschinen, die konfiguriert sind,
|
|
Protokollinformationen von anderen Hosts zu akzeptieren. In den
|
|
meisten Fällen wird dies zur Vereinfachung der Konfiguration
|
|
eingesetzt, in anderen Fällen ist es einfach nur ein Schritt in
|
|
eine bessere Verwaltung. Was auch immer die Gründe sind, ein paar
|
|
Anforderungen müssen vorher erfüllt sein.</para>
|
|
|
|
<para>Ein richtig konfigurierter Protokollierungs-Server muss minimal die
|
|
folgenden Anforderungen erfüllen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Das Regelwerk der Firewall muss <acronym>UDP</acronym> auf
|
|
Port 514 sowohl auf Client- als auch auf Serverseite
|
|
erlauben;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>syslogd wurde so konfiguriert, dass es Nachrichten von anderen
|
|
Clientrechnern akzeptiert;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Der syslogd-Server und alle Clientrechner müssen
|
|
gültige Einträge für sowohl Vorwärts- als auch
|
|
Umkehr-<acronym>DNS</acronym> besitzen, oder in
|
|
<filename>/etc/hosts</filename> korrekt eingetragen sein.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Um den Protokollierungs-Server zu konfigurieren, muss der Client in
|
|
<filename>/etc/syslog.conf</filename> eingetragen sein und der
|
|
Verbindungsweg der Protokollierung muss spezifiziert sein:</para>
|
|
|
|
<programlisting>+logclient.example.com
|
|
*.* /var/log/logclient.log</programlisting>
|
|
|
|
<note>
|
|
<para>Weitere Informationen zu den verschiedenen unterstützten
|
|
und verfügbaren <emphasis>Verbindungswegen</emphasis> finden
|
|
sich in der Manualpage &man.syslog.conf.5;.</para>
|
|
</note>
|
|
|
|
<para>Einmal hinzugefügt, werden alle Nachrichten über
|
|
den <literal>Verbindungsweg</literal> in die zuvor angegebene Datei,
|
|
<filename>/var/log/logclient.log</filename> protokolliert.</para>
|
|
|
|
<para>Der Server benötigt ausserdem die folgenden Zeilen in der
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>syslogd_enable="YES"
|
|
syslogd_flags="-a logclient.example.com -v -v"</programlisting>
|
|
|
|
<para>Die erste Option aktiviert den <command>syslogd</command>-Dienst
|
|
während des Systemstarts und die zweite Option erlaubt es, Daten
|
|
von dem spezifizierten Client auf diesem Server zu akzeptieren. Die
|
|
Verwendung von <option>-v -v</option> im letzten Teil erhöht die
|
|
Anzahl von Protokollnachrichten. Dies ist sehr hilfreich für die
|
|
Feineinstellung der Verbindungspfade, da Administratoren auf diese
|
|
Weise erkennen, welche Arten von Nachrichten unter welchen
|
|
Einstellungen protokolliert werden.</para>
|
|
|
|
<para>Mehrere <option>-a</option>-Optionen können angegeben werden,
|
|
um die Protokollierung von mehreren Clients zu erlauben.
|
|
<acronym>IP</acronym>-Adressen und ganze Netzblöcke können
|
|
ebenfalls spezifiziert werden. Lesen Sie dazu die
|
|
&man.syslog.3;-Manualpage, um eine vollständige Liste von
|
|
möglichen Optionen zu erhalten.</para>
|
|
|
|
<para>Zum Schluss muss noch die Protokolldatei erstellt werden. Auf
|
|
welche Weise dies geschieht ist nicht wichtig, aber in den meisten
|
|
Fällen funktioniert &man.touch.1; grossartig, wie hier
|
|
dargestellt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>touch <filename>/var/log/logclient.log</filename></userinput></screen>
|
|
|
|
<para>Zu diesem Zeitpunkt sollte der <command>syslogd</command>-Dienst
|
|
neu gestartet und überprüft werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
|
|
&prompt.root; <userinput>pgrep syslog</userinput></screen>
|
|
|
|
<para>Wenn eine <acronym>PID</acronym> zurückgegeben wird, wurde
|
|
der Server erfolgreich neu gestartet und die Clientkonfiguration kann
|
|
beginnen. Wenn der Server nicht neu gestartet wurde, suchen Sie im
|
|
<filename>/var/log/messages</filename>-Protokoll nach eventuellen
|
|
Fehlermeldungen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Konfiguration des Protokollierungs-Clients</title>
|
|
|
|
<para>Ein Protokollierungs-Client ist eine Maschine, die
|
|
Protokollinformationen an einen Protokollierungs-Server sendet,
|
|
zusätzlich zu ihren lokalen Kopien.</para>
|
|
|
|
<para>Ähnlich wie Protokollierungs-Server müssen Clients auch
|
|
ein paar minimale Anforderungen erfüllen:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>&man.syslogd.8; muss so konfiguriert sein, dass es Nachrichten
|
|
eines bestimmten Typs an einen Protokollierungs-Server schickt,
|
|
welcher diese akzeptieren muss;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Die Firewall muss <acronym>UDP</acronym>-Pakete durch Port 514
|
|
erlauben;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sowohl Vorwärts- als auch Umkehr-<acronym>DNS</acronym>
|
|
muss konfiguriert sein oder es müssen passende Einträge in
|
|
<filename>/etc/hosts</filename> vorhanden sein.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Die Clientkonfiguration ist ein bisschen entspannter, verglichen mit
|
|
der des Servers. Der Clientrechner muss ebenfalls die folgenden
|
|
Einträge in der <filename>/etc/rc.conf</filename> besitzen:</para>
|
|
|
|
<programlisting>syslogd_enable="YES"
|
|
syslogd_flags="-s -v -v"</programlisting>
|
|
|
|
<para>Wie zuvor aktivieren diese Einträge den
|
|
<command>syslogd</command>-Dienst während des Systemstarts und
|
|
erhöhen die Anzahl der Protokollnachrichten. Die Option
|
|
<option>-s</option> verhindert, dass dieser Client Protokolle von anderen
|
|
Hosts akzeptiert.</para>
|
|
|
|
<para>Verbindungspfade beschreiben den Systemteil, für den eine
|
|
Nachricht generiert wird. Beispielsweise sind <acronym>ftp</acronym> und
|
|
<acronym>ipfw</acronym> beides Verbindungspfade. Wenn
|
|
Protokollnachrichten für diese beiden Dienste generiert werden,
|
|
sind diese beiden Werkzeuge normalerweise in jeder Protokollnachricht
|
|
enthalten. Verbindungspfade sind mit einer Priorität oder Stufe
|
|
verbunden, die dazu verwendet wird, zu markieren, wie wichtig eine
|
|
Nachricht im Protokoll ist. Die Häftigste ist
|
|
<literal>warning</literal> und <literal>info</literal>. Bitte lesen Sie
|
|
die &man.syslog.3; Manualpage, um eine komplette Liste der
|
|
verfügbaren Verbindungspfade und Prioritäten zu
|
|
erhalten.</para>
|
|
|
|
<para>Der Protokollierungs-Server muss in der
|
|
<filename>/etc/syslog.conf</filename> des Clients eingetragen sein. In
|
|
diesem Beispiel wird das <literal>@</literal>-Symbol benutzt, um
|
|
Protokolldaten an einen anderen Server zu senden. Der Eintrag sieht wie
|
|
folgt aus:</para>
|
|
|
|
<programlisting>*.* @logserv.example.com</programlisting>
|
|
|
|
<para>Einmal hinzugefügt, muss <command>syslogd</command> neu
|
|
gestartet werden, damit diese Änderungen wirksam werden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
|
|
|
|
<para>Um zu testen, ob Protokollnachrichten über das Netzwerk
|
|
gesendet werden, kann &man.logger.1; auf dem Client benutzt werden, um
|
|
eine Nachricht an <command>syslogd</command> zu schicken:</para>
|
|
|
|
<screen>&prompt.root; <userinput>logger "<replaceable>Test message from logclient</replaceable>"</userinput></screen>
|
|
|
|
<para>Diese Nachricht sollte jetzt sowohl in
|
|
<filename>/var/log/messages</filename> auf dem Client, als auch in
|
|
<filename>/var/log/logclient.log</filename> auf dem Server vorhanden
|
|
sein.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Fehlerbehebung beim Protokollierungs-Server</title>
|
|
|
|
<para>In bestimmten Fällen ist die Fehlerbehebung notwendig, wenn
|
|
Nachrichten nicht auf dem Protokollierungs-Server empfangen werden. Es
|
|
gibt mehrere Gründe dafür, jedoch treten am häufigsten
|
|
Probleme bei der Netzwerkverbindung und beim <acronym>DNS</acronym> auf.
|
|
Um diese Fälle zu überprüfen, stellen Sie sicher, dass
|
|
beide Hosts in der Lage sind, sich gegenseitig über den Hostnamen zu
|
|
erreichen, der in <filename>/etc/rc.conf</filename> angegeben ist. Wenn
|
|
das funktioniert, ist möglicherweise eine Änderung der
|
|
<literal>syslogd_flags</literal>-Option in
|
|
<filename>/etc/rc.conf</filename> notwendig.</para>
|
|
|
|
<para>Im folgenden Beispiel ist <filename>/var/log/logclient.log</filename>
|
|
leer und die <filename>/var/log/messages</filename>-Dateien enthalten
|
|
keine Gründe für den Fehler. Um die Fehlerausgabe zu
|
|
erhöhen, ändern Sie die <literal>syslogd_flags</literal>-Option
|
|
so, dass diese wie in dem folgenden Beispiel aussieht und initiieren Sie
|
|
dann einen Neustart:</para>
|
|
|
|
<programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
|
|
|
|
<para>Fehlerausgabedaten ähnlich der Folgenden werden sofort nach dem
|
|
Neustart auf dem Bildschirm erscheinen:</para>
|
|
|
|
<screen>logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
|
|
syslogd: restarted
|
|
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
|
|
Logging to FILE /var/log/messages
|
|
syslogd: kernel boot file is /boot/kernel/kernel
|
|
cvthname(192.168.1.10)
|
|
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
|
|
rejected in rule 0 due to name mismatch.</screen>
|
|
|
|
<para>Es scheint klar zu sein, dass die Nachrichten aufgrund eines
|
|
fehlerhaften Namens abgewiesen werden. Nach genauer Untersuchung der
|
|
Konfiguration, kommt ein Tippfehler in der folgenden Zeile der
|
|
<filename>/etc/rc.conf</filename> als Fehler in Betracht:</para>
|
|
|
|
<programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
|
|
|
|
<para>Die Zeile sollte <literal>logclient</literal> und nicht
|
|
<literal>logclien</literal> enthalten. Nachdem die entsprechenden
|
|
Veränderungen gemacht wurden, ist ein Neustart fällig, mit den
|
|
entsprechenden Ergebnissen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
|
|
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
|
|
syslogd: restarted
|
|
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
|
|
syslogd: kernel boot file is /boot/kernel/kernel
|
|
logmsg: pri 166, flags 17, from logserv.example.com,
|
|
msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2
|
|
cvthname(192.168.1.10)
|
|
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
|
|
accepted in rule 0.
|
|
logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2
|
|
Logging to FILE /var/log/logclient.log
|
|
Logging to FILE /var/log/messages</screen>
|
|
|
|
<para>Zu diesem Zeitpunkt werden die Nachrichten korrekt empfangen und in
|
|
die richtige Datei geschrieben.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Sicherheitsbedenken</title>
|
|
|
|
<para>Wie mit jedem Netzwerkdienst, müssen Sicherheitsanforderungen in
|
|
Betracht gezogen werden, bevor diese Konfiguration umgesetzt wird.
|
|
Manchmal enthalten Protokolldateien sensitive Daten über aktivierte
|
|
Dienste auf dem lokalen Rechner, Benutzerkonten und Konfigurationsdaten.
|
|
Daten, die vom Client an den Server geschickt werden, sind weder
|
|
verschlüsselt noch mit einem Passwort geschützt. Wenn ein
|
|
Bedarf für Verschlüsselung besteht, ist es möglich,
|
|
<filename role="package">security/stunnel</filename> zu verwenden,
|
|
welches die Daten über einen verschlüsselten Tunnel
|
|
versendet.</para>
|
|
|
|
<para>Lokale Sicherheit ist ebenfalls ein Thema. Protokolldateien sind
|
|
während der Verwendung oder nach ihrer Rotation nicht
|
|
verschlüsselt. Lokale Benutzer versuchen vielleicht, auf diese
|
|
Dateien zuzugreifen, um zusätzliche Einsichten in die
|
|
Systemkonfiguration zu erlangen. In diesen Fällen ist es absolut
|
|
notwendig, die richtigen Berechtigungen auf diesen Dateien zu setzen.
|
|
Das &man.newsyslog.8;-Werkzeug unterstützt das Setzen von
|
|
Berechtigungen auf gerade erstellte oder rotierte Protokolldateien.
|
|
Protokolldateien mit Zugriffsmodus <literal>600</literal> sollten
|
|
verhindern, dass lokale Benutzer darin herumschnüffeln.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|