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:
parent
0a3dfb164f
commit
f41cb078ae
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48886
1 changed files with 81 additions and 93 deletions
|
@ -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 <uid=trhodes,ou=users,o=example.com> 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
|
||||
|
|
Loading…
Reference in a new issue