Update to r44566:

Editorial review of first part of LDAP chapter.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D6665
This commit is contained in:
Bjoern Heidotting 2016-06-01 15:50:05 +00:00
parent 0a3dfb164f
commit f41cb078ae
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48886

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $
basiert auf: r44430
basiert auf: r44566
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="network-servers">
<!--
@ -2239,8 +2239,10 @@ TWO (,hotel,test-domain)
</sect1>
<sect1 xml:id="network-ldap">
<!--
<info>
<title>Lightweight Access Directory Protocol
(<acronym>LDAP</acronym>)</title>
<authorgroup>
<author>
<personname>
@ -2251,64 +2253,60 @@ TWO (,hotel,test-domain)
</author>
</authorgroup>
</info>
-->
<title>Lightweight Access Directory Protocol
(<acronym>LDAP</acronym>)</title>
<indexterm><primary>LDAP</primary></indexterm>
<para>Das Lightweight Directory Access Protocol
(<acronym>LDAP</acronym>) ist ein Protokoll der
Anwendungsschicht und wird verwendet, um Objekte mithilfe eines
Anwendungsschicht, das verwendet wird um Objekte mithilfe eines
verteilten Verzeichnisdienstes abzurufen, zu verändern und zu
authentifizieren. Betrachten Sie es als ein Telefonbuch, das
homogene Informationen in mehreren hierarchischen Ebenen
speichert. Es wird häufig in Netzwerken genutzt, in denen
Benutzer unter Verwendung eines einzigen Kontos auf diverse
interne Informationen zugreifen müssen. Beispielsweise kann
speichert. Es wird in Active Directory und
<application>OpenLDAP</application>-Netzwerken eingesetzt, in
denen Benutzer unter Verwendung eines einzigen Kontos auf
diverse interne Informationen zugreifen. Beispielsweise kann
E-Mail-Authentifizierung, Abfrage von Kontaktinformationen
und Website-Authentifizierung über ein einzelnes Benutzerkonto
aus der Datenbank des <acronym>LDAP</acronym>-Servers
erfolgen.</para>
<para>Dieser Abschnitt behandelt nicht die Geschichte oder
Details der Implementierung des Protokolls. Diese Abschnitte
wurden verfasst, um einen <acronym>LDAP</acronym>-Server
und/oder -Client sowohl schnell, als auch sicher zu
konfigurieren. Jedoch erfordert jede Informationsbasis
sorgfältige Planung, und dies ist keine Ausnahme.</para>
<para>Bei der Planung sollte bestimmt werden, welche Art von
Informationen gespeichert werden, für was diese Informationen
verwendet werden, wer Zugriff auf die Daten bekommen soll, und
wie diese Daten vor neugierigen Blicken geschützt werden
können.</para>
<para>Dieser Abschnitt enthält eine kompakte Anleitung, um einen
<acronym>LDAP</acronym>-Server auf einem &os;-System zu
konfigurieren. Es wird vorausgesetzt, dass der Administrator
bereits einen Plan erarbeitet hat, der verschiedene Punkte
umfasst, unter anderem die Art der zu speichernden
Informationen, für was die Informationen verwendet
werden, welche Benutzer Zugriff auf die Informationen haben und
wie die Informationen vor unbefugtem Zugriff geschützt
werden.</para>
<sect2>
<title><acronym>LDAP</acronym> Terminologie und Struktur</title>
<para>Da bei der Konfiguration leicht Verwechselungen entstehen,
werden zuvor einige Aspekte von <acronym>LDAP</acronym>
erklärt. Zunächst bestehen alle Verzeichniseinträge aus einer
Gruppe von <emphasis>Attributen</emphasis>. Jede
Attributgruppe enthält einen Namen, also einen eindeutigen
Bezeichner, der als <acronym>DN</acronym> oder
<foreignphrase>distinguished name</foreignphrase> bekannt ist.
Dieser setzt sich normalerweise aus mehreren anderen
Attributen, wie dem <acronym>RDN</acronym> zusammen.
<acronym>RDN</acronym>, oder <foreignphrase>relative
distinguished name</foreignphrase>, ist ein geläufiger
Begriff für ein Attribut. Wie bei Verzeichnissen gibt es auch
hier absolute und relative Pfade. Betrachten Sie
<para><acronym>LDAP</acronym> verwendet mehrere Begriffe die
Sie verstehen sollten bevor Sie die Konfiguration beginnen.
Alle Verzeichniseinträge bestehen aus einer Gruppe von
<emphasis>Attributen</emphasis>. Jede
Attributgruppe enthält einen eindeutigen Bezeichner, der als
<foreignphrase>distinguished name</foreignphrase>
(<acronym>DN</acronym>) bekannt ist. Dieser setzt sich
normalerweise aus mehreren anderen Attributen, wie dem
<foreignphrase>Relative Distinguished Name</foreignphrase>
(<acronym>RDN</acronym>) zusammen. Wie bei Verzeichnissen
gibt es auch hier absolute und relative Pfade. Betrachten Sie
<acronym>DN</acronym> als absoluten Pfad und
<acronym>RDN</acronym> als relativen Pfad.</para>
<para>Beispielsweise könnte ein Eintrag wie folgt
aussehen:</para>
<para>Beispielsweise könnte ein <acronym>LDAP</acronym>-Eintrag
wie folgt aussehen. Dieses Beispiel sucht nach dem Eintrag
für das angegebene Benutzerkonto (<literal>uid</literal>),
Organisationseinheit (<literal>ou</literal> und Organisation
(<literal>o</literal>):</para>
<screen>&prompt.user; ldapsearch -xb "uid=trhodes,ou=users,o=example.com"</screen>
<screen>&prompt.user; <userinput>ldapsearch -xb "uid=<replaceable>trhodes</replaceable>,ou=<replaceable>users</replaceable>,o=<replaceable>example.com</replaceable>"</userinput>
# extended LDIF
<programlisting># extended LDIF
#
# LDAPv3
# base &lt;uid=trhodes,ou=users,o=example.com&gt; with scope subtree
@ -2322,22 +2320,25 @@ dn: uid=trhodes,ou=users,o=example.com
mail: trhodes@example.com
cn: Tom Rhodes
uid: trhodes
telephoneNumber: (xxx) xxx-xxxx
telephoneNumber: (123) 456-7890
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries:1</programlisting>
# numEntries:1</screen>
<para>Obwohl die Bedeutung der einzelnen Attribute in diesem
Beispiel offensichtlich ist, sollte das Attribut
<acronym>cn</acronym> genauer betrachtet werden. Dies ist der
zuvor beschriebene <acronym>RDN</acronym>. Darüber hinaus
gibt es eine eindeutige Benutzer-ID. Es ist gängige Praxis,
in den Einträgen einheitliche uid oder uuids zu haben, um
zukünftige Migrationen zu erleichtern.</para>
<para>Die Einträge in diesem Beispiel zeigen die Werte für die
Attribute <literal>dn</literal>, <literal>mail</literal>,
<literal>cn</literal>, <literal>uid</literal> und
<literal>telephoneNumber</literal>. Das Attribut
<literal>cn</literal> ist der <acronym>RDN</acronym>.</para>
<para>Weitere Informationen über <acronym>LDAP</acronym> und
dessen Terminologie finden Sie unter <link
xlink:href="http://www.openldap.org/doc/admin24/intro.html">
http://www.openldap.org/doc/admin24/intro.html</link>.</para>
</sect2>
<sect2>
@ -2346,83 +2347,70 @@ result: 0 Success
<indexterm><primary>LDAP Server</primary></indexterm>
<para>Um &os; so zu konfigurieren, dass es als
<acronym>LDAP</acronym>-Server fungiert, muss der Port
OpenLDAP installiert werden. Dies kann unter Verwendung von
<command>pkg_add</command>, oder durch Installation von
<package>net/openldap24-server</package> erreicht werden. Der
Bau des Ports wird empfohlen, da der Administrator zu diesem
Zeitpunkt eine Menge Optionen aktivieren und deaktivieren
kann. In den meisten Fällen werden die Standardwerte
ausreichend sein. Sollte jedoch Unterstützung für SQL nötig
sein, ist dies der richtige Zeitpunkt zur Aktivierung.</para>
<para>&os; integriert keinen <acronym>LDAP</acronym>-Server.
Beginnen Sie die Konfiguration durch die Installation des
Ports oder Pakets <package>net/openldap24-server</package>.
Da der Port viele konfigurierbare Optionen hat, ist es
empfehlenswert zu prüfen, ob die Installation des Pakets
ausreichend ist. Wenn Sie irgendwelche Optionen ändern
möchten, ist es besser den Port zu übersetzen. In den meisten
Fällen sollten die Standardwerte ausreichend sein. Wenn
Sie jedoch SQL-Unterstützung benötigen, muss diese Option
aktiviert und der Port nach den Anweisungen in <xref
linkend="ports-using"/> übersetzt werden.</para>
<para>Von nun an werden ein paar Verzeichnisse benötigt. Ein
Verzeichnis für Daten, sowie ein Verzeichnis zum
Speichern der Zertifikate. Erstellen Sie beide Verzeichnisse
mit den folgenden Befehlen:</para>
<para>Als nächstes muss ein Verzeichnis für Daten sowie ein
Verzeichnis für die Zertifikate erstellt werden:</para>
<screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput></screen>
<screen>&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen>
<screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput>
&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen>
<para>Kopieren Sie die Konfigurationsdatei der Datenbank:</para>
<screen>&prompt.root; <userinput>cp /usr/local/etc/openldap/DB_CONFIG.example /var/db/openldap-data/DB_CONFIG</userinput></screen>
<para>Im nächsten Schritt werden die
<acronym>SSL</acronym>-Zertifikate konfiguriert. Das
Erstellen von Zertifikaten wird zwar in <link
linkend="openssl">OpenSSL</link> beschrieben, aber hier
ist eine Zertifizierungsstelle erforderlich, weshalb eine
andere Methode verwendet wird. Es wird empfohlen, diesen Teil
genau zu überprüfen, um sicherzustellen, dass bei der
Erstellung des Zertifikats die richtigen Informationen
eingetragen werden.</para>
<para>Die folgenden Befehle müssen im Verzeichnis
<para>Im nächsten Schritt wird die Zertifizierungsstelle
konfiguriert. Die folgenden Befehle müssen in
<filename>/usr/local/etc/openldap/private</filename>
ausgeführt werden. Dies ist wichtig, da die
Dateiberechtigungen restriktiv gesetzt werden und Benutzer
keinen direkten Zugriff auf diese Daten haben sollten. Geben
Sie folgende Befehle ein, um die Zertifikate zu
erstellen:</para>
Sie folgenden Befehl ein, um die Zertifizierungsstelle zu
erstellen und folgen Sie den Anweisungen:</para>
<screen>&prompt.root; <userinput>openssl req -days 365 -nodes -new -x509 -keyout ca.key -out ../ca.crt</userinput></screen>
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -x509 -keyout ca.key -out ../ca.crt</userinput></screen>
<para>Diese Einträge sind frei wählbar,
<emphasis>mit Ausnahme</emphasis> von
<emphasis>Common Name</emphasis>. Hier muss etwas anderes als
der Hostname des Systems eingetragen werden, ansonsten würde
das System versuchen, den eigenen Hostnamen zu überprüfen.
Wenn wie in diesem Beispiel ein selbstsigniertes Zertifikat
verwendet wird, stellen Sie dem Hostnamen einfach das Präfix
<acronym>CA</acronym> für die Zertifizierungsstelle
voran.</para>
der Hostname des Systems eingetragen werden. Wenn ein
selbstsigniertes Zertifikat verwendet wird, stellen Sie dem
Hostnamen einfach das Präfix <literal>CA</literal> für die
Zertifizierungsstelle voran.</para>
<para>Die nächste Aufgabe besteht darin, einen
Zertifikatsregistrierungsanforderung (<acronym>CSR</acronym>)
sowie einen privaten Schlüssel zu erstellen. Dazu geben Sie
die folgenden Befehle ein:</para>
sowie einen privaten Schlüssel zu erstellen. Geben Sie
folgenden Befehl ein und folgen Sie den Anweisungen:</para>
<screen>&prompt.root; <userinput>openssl req -days 365 -nodes -new -keyout server.key -out server.csr</userinput></screen>
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -keyout server.key -out server.csr</userinput></screen>
<para>Stellen Sie hierbei sicher, dass der
<foreignphrase>common name</foreignphrase> richtig eingetragen
wird. Anschließend muss der Schlüssel signiert werden:</para>
<para>Stellen Sie hierbei sicher, dass
<literal>Common Name</literal> richtig eingetragen wird.
Anschließend muss der Schlüssel signiert werden:</para>
<screen>&prompt.root; <userinput>openssl x509 -req -days 365 -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserial</userinput></screen>
<screen>&prompt.root; <userinput>openssl x509 -req -days <replaceable>365</replaceable> -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserial</userinput></screen>
<para>Der letzte Schritt für die Erstellung der Zertifikate
besteht darin, die Client-Zertifikate zu erstellen und zu
signieren:</para>
<screen>&prompt.root; <userinput>openssl req -days 365 -nodes -new -keyout client.key -out client.csr</userinput></screen>
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -keyout client.key -out client.csr</userinput></screen>
<screen>&prompt.root; <userinput>openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CAkey ca.key</userinput></screen>
<para>Achten Sie wieder auf das Attribut
<foreignphrase>common name</foreignphrase>. Dies sorgt häufig
<literal>Common name</literal>. Dies sorgt häufig
für Verwirrung bei der erstmaligen Konfiguration von
<acronym>LDAP</acronym>. Stellen Sie außerdem sicher, dass
bei diesem Verfahren acht (8) neue Dateien erzeugt worden