Changeset View
Changeset View
Standalone View
Standalone View
network-servers/chapter.xml
Context not available. | |||||
$FreeBSD$ | $FreeBSD$ | ||||
$FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $ | $FreeBSDde: de-docproj/books/handbook/network-servers/chapter.xml,v 1.103 2011/12/24 15:51:18 bcr Exp $ | ||||
basiert auf: 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"> | <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="network-servers"> | ||||
<!-- | <!-- | ||||
Context not available. | |||||
</sect1> | </sect1> | ||||
<sect1 xml:id="network-ldap"> | <sect1 xml:id="network-ldap"> | ||||
<!-- | |||||
<info> | <info> | ||||
<title>Lightweight Access Directory Protocol | |||||
(<acronym>LDAP</acronym>)</title> | |||||
<authorgroup> | <authorgroup> | ||||
<author> | <author> | ||||
<personname> | <personname> | ||||
Context not available. | |||||
</author> | </author> | ||||
</authorgroup> | </authorgroup> | ||||
</info> | </info> | ||||
--> | |||||
<title>Lightweight Access Directory Protocol | |||||
(<acronym>LDAP</acronym>)</title> | |||||
<indexterm><primary>LDAP</primary></indexterm> | <indexterm><primary>LDAP</primary></indexterm> | ||||
<para>Das Lightweight Directory Access Protocol | <para>Das Lightweight Directory Access Protocol | ||||
(<acronym>LDAP</acronym>) ist ein Protokoll der | (<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 | verteilten Verzeichnisdienstes abzurufen, zu verändern und zu | ||||
authentifizieren. Betrachten Sie es als ein Telefonbuch, das | authentifizieren. Betrachten Sie es als ein Telefonbuch, das | ||||
homogene Informationen in mehreren hierarchischen Ebenen | homogene Informationen in mehreren hierarchischen Ebenen | ||||
speichert. Es wird häufig in Netzwerken genutzt, in denen | speichert. Es wird in Active Directory und | ||||
Benutzer unter Verwendung eines einzigen Kontos auf diverse | <application>OpenLDAP</application>-Netzwerken eingesetzt, in | ||||
interne Informationen zugreifen müssen. Beispielsweise kann | denen Benutzer unter Verwendung eines einzigen Kontos auf | ||||
diverse interne Informationen zugreifen. Beispielsweise kann | |||||
bcr: Zwei Leerzeichen nach den Punkt an dieser Stelle? Nicht wirklich nötig, nur als Rückfrage. | |||||
E-Mail-Authentifizierung, Abfrage von Kontaktinformationen | E-Mail-Authentifizierung, Abfrage von Kontaktinformationen | ||||
und Website-Authentifizierung über ein einzelnes Benutzerkonto | und Website-Authentifizierung über ein einzelnes Benutzerkonto | ||||
aus der Datenbank des <acronym>LDAP</acronym>-Servers | aus der Datenbank des <acronym>LDAP</acronym>-Servers | ||||
erfolgen.</para> | erfolgen.</para> | ||||
<para>Dieser Abschnitt behandelt nicht die Geschichte oder | <para>Dieser Abschnitt enthält eine kompakte Anleitung, um einen | ||||
Details der Implementierung des Protokolls. Diese Abschnitte | <acronym>LDAP</acronym>-Server auf einem &os;-System zu | ||||
wurden verfasst, um einen <acronym>LDAP</acronym>-Server | konfigurieren. Es wird vorausgesetzt, dass der Administrator | ||||
und/oder -Client sowohl schnell, als auch sicher zu | bereits ein Plan erarbeitet hat, der verschiedene Punkte | ||||
bcrUnsubmitted Done Inline Actionss/ein/einen/ bcr: s/ein/einen/ | |||||
konfigurieren. Jedoch erfordert jede Informationsbasis | umfasst, unter anderem die Art der zu speichernden | ||||
sorgfältige Planung, und dies ist keine Ausnahme.</para> | 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> | |||||
<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> | |||||
<sect2> | <sect2> | ||||
<title><acronym>LDAP</acronym> Terminologie und Struktur</title> | <title><acronym>LDAP</acronym> Terminologie und Struktur</title> | ||||
<para>Da bei der Konfiguration leicht Verwechselungen entstehen, | <para><acronym>LDAP</acronym> verwendet mehrere Begriffe die | ||||
werden zuvor einige Aspekte von <acronym>LDAP</acronym> | Sie verstehen sollten bevor Sie die Konfiguration beginnen. | ||||
erklärt. Zunächst bestehen alle Verzeichniseinträge aus einer | Alle Verzeichniseinträge bestehen aus einer Gruppe von | ||||
Gruppe von <emphasis>Attributen</emphasis>. Jede | <emphasis>Attributen</emphasis>. Jede | ||||
Attributgruppe enthält einen Namen, also einen eindeutigen | Attributgruppe enthält einen eindeutigen Bezeichner, der als | ||||
Bezeichner, der als <acronym>DN</acronym> oder | <foreignphrase>distinguished name</foreignphrase> | ||||
<foreignphrase>distinguished name</foreignphrase> bekannt ist. | (<acronym>DN</acronym>) bekannt ist. Dieser setzt sich | ||||
Dieser setzt sich normalerweise aus mehreren anderen | normalerweise aus mehreren anderen Attributen, wie dem | ||||
Attributen, wie dem <acronym>RDN</acronym> zusammen. | <foreignphrase>Relative Distinguished Name</foreignphrase> | ||||
<acronym>RDN</acronym>, oder <foreignphrase>relative | (<acronym>RDN</acronym>) zusammen. Wie bei Verzeichnissen | ||||
distinguished name</foreignphrase>, ist ein geläufiger | gibt es auch hier absolute und relative Pfade. Betrachten Sie | ||||
Begriff für ein Attribut. Wie bei Verzeichnissen gibt es auch | |||||
hier absolute und relative Pfade. Betrachten Sie | |||||
<acronym>DN</acronym> als absoluten Pfad und | <acronym>DN</acronym> als absoluten Pfad und | ||||
<acronym>RDN</acronym> als relativen Pfad.</para> | <acronym>RDN</acronym> als relativen Pfad.</para> | ||||
<para>Beispielsweise könnte ein Eintrag wie folgt | <para>Beispielsweise könnte ein <acronym>LDAP</acronym>-Eintrag | ||||
aussehen:</para> | 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 | # LDAPv3 | ||||
# base <uid=trhodes,ou=users,o=example.com> with scope subtree | # base <uid=trhodes,ou=users,o=example.com> with scope subtree | ||||
Context not available. | |||||
mail: trhodes@example.com | mail: trhodes@example.com | ||||
cn: Tom Rhodes | cn: Tom Rhodes | ||||
uid: trhodes | uid: trhodes | ||||
telephoneNumber: (xxx) xxx-xxxx | telephoneNumber: (123) 456-7890 | ||||
# search result | # search result | ||||
search: 2 | search: 2 | ||||
Context not available. | |||||
result: 0 Success | result: 0 Success | ||||
# numResponses: 2 | # numResponses: 2 | ||||
# numEntries:1</programlisting> | # numEntries:1</screen> | ||||
<para>Obwohl die Bedeutung der einzelnen Attribute in diesem | <para>Die Einträge in diesem Beispiel zeigen die Werte für die | ||||
Beispiel offensichtlich ist, sollte das Attribut | Attribute <literal>dn</literal>, <literal>mail</literal>, | ||||
<acronym>cn</acronym> genauer betrachtet werden. Dies ist der | <literal>cn</literal>, <literal>uid</literal> und | ||||
zuvor beschriebene <acronym>RDN</acronym>. Darüber hinaus | <literal>telephoneNumber</literal>. Das Attribut | ||||
gibt es eine eindeutige Benutzer-ID. Es ist gängige Praxis, | <literal>cn</literal> ist der <acronym>RDN</acronym>.</para> | ||||
in den Einträgen einheitliche uid oder uuids zu haben, um | |||||
zukünftige Migrationen zu erleichtern.</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> | ||||
<sect2> | <sect2> | ||||
Context not available. | |||||
<indexterm><primary>LDAP Server</primary></indexterm> | <indexterm><primary>LDAP Server</primary></indexterm> | ||||
<para>Um &os; so zu konfigurieren, dass es als | <para>&os; integriert keinen <acronym>LDAP</acronym>-Server. | ||||
<acronym>LDAP</acronym>-Server fungiert, muss der Port | Beginnen Sie die Konfiguration durch die Installation des | ||||
OpenLDAP installiert werden. Dies kann unter Verwendung von | Ports oder Pakets <package>net/openldap24-server</package>. | ||||
<command>pkg_add</command>, oder durch Installation von | Da der Port viele konfigurierbare Optionen hat, ist es | ||||
<package>net/openldap24-server</package> erreicht werden. Der | empfehlenswert zu prüfen, ob die Installation des Pakets | ||||
Bau des Ports wird empfohlen, da der Administrator zu diesem | ausreichend ist. Wenn Sie irgendwelche Optionen ändern | ||||
Zeitpunkt eine Menge Optionen aktivieren und deaktivieren | möchten, ist es besser den Port zu übersetzen. In den meisten | ||||
kann. In den meisten Fällen werden die Standardwerte | Fällen sollten die Standardwerte ausreichend sein. Wenn | ||||
ausreichend sein. Sollte jedoch Unterstützung für SQL nötig | Sie jedoch SQL-Unterstützung benötigen, muss diese Option | ||||
sein, ist dies der richtige Zeitpunkt zur Aktivierung.</para> | 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 | <para>Als nächstes muss ein Verzeichnis für Daten sowie ein | ||||
Verzeichnis für Daten, sowie ein Verzeichnis zum | Verzeichnis für die Zertifikate erstellt werden:</para> | ||||
Speichern der Zertifikate. Erstellen Sie beide Verzeichnisse | |||||
mit den folgenden Befehlen:</para> | |||||
<screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput></screen> | <screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput> | ||||
&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen> | |||||
<screen>&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen> | |||||
<para>Kopieren Sie die Konfigurationsdatei der Datenbank:</para> | <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> | <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 | <para>Im nächsten Schritt wird die Zertifizierungsstelle | ||||
<acronym>SSL</acronym>-Zertifikate konfiguriert. Das | konfiguriert. Die folgenden Befehle müssen in | ||||
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 | |||||
<filename>/usr/local/etc/openldap/private</filename> | <filename>/usr/local/etc/openldap/private</filename> | ||||
ausgeführt werden. Dies ist wichtig, da die | ausgeführt werden. Dies ist wichtig, da die | ||||
Dateiberechtigungen restriktiv gesetzt werden und Benutzer | Dateiberechtigungen restriktiv gesetzt werden und Benutzer | ||||
keinen direkten Zugriff auf diese Daten haben sollten. Geben | keinen direkten Zugriff auf diese Daten haben sollten. Geben | ||||
Sie folgende Befehle ein, um die Zertifikate zu | Sie folgenden Befehl ein, um die Zertifizierungsstelle zu | ||||
erstellen:</para> | 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, | <para>Diese Einträge sind frei wählbar, | ||||
<emphasis>mit Ausnahme</emphasis> von | <emphasis>mit Ausnahme</emphasis> von | ||||
<emphasis>Common Name</emphasis>. Hier muss etwas anderes als | <emphasis>Common Name</emphasis>. Hier muss etwas anderes als | ||||
der Hostname des Systems eingetragen werden, ansonsten würde | der Hostname des Systems eingetragen werden. Wenn ein | ||||
das System versuchen, den eigenen Hostnamen zu überprüfen. | selbstsigniertes Zertifikat verwendet wird, stellen Sie dem | ||||
Wenn wie in diesem Beispiel ein selbstsigniertes Zertifikat | Hostnamen einfach das Präfix <literal>CA</literal> für die | ||||
verwendet wird, stellen Sie dem Hostnamen einfach das Präfix | Zertifizierungsstelle voran.</para> | ||||
<acronym>CA</acronym> für die Zertifizierungsstelle | |||||
voran.</para> | |||||
<para>Die nächste Aufgabe besteht darin, einen | <para>Die nächste Aufgabe besteht darin, einen | ||||
Zertifikatsregistrierungsanforderung (<acronym>CSR</acronym>) | Zertifikatsregistrierungsanforderung (<acronym>CSR</acronym>) | ||||
sowie einen privaten Schlüssel zu erstellen. Dazu geben Sie | sowie einen privaten Schlüssel zu erstellen. Geben Sie | ||||
die folgenden Befehle ein:</para> | 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 | <para>Stellen Sie hierbei sicher, dass | ||||
<foreignphrase>common name</foreignphrase> richtig eingetragen | <literal>Common Name</literal> richtig eingetragen wird. | ||||
wird. Anschließend muss der Schlüssel signiert werden:</para> | 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 | <para>Der letzte Schritt für die Erstellung der Zertifikate | ||||
besteht darin, die Client-Zertifikate zu erstellen und zu | besteht darin, die Client-Zertifikate zu erstellen und zu | ||||
signieren:</para> | 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> | <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 | <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 | für Verwirrung bei der erstmaligen Konfiguration von | ||||
<acronym>LDAP</acronym>. Stellen Sie außerdem sicher, dass | <acronym>LDAP</acronym>. Stellen Sie außerdem sicher, dass | ||||
bei diesem Verfahren acht (8) neue Dateien erzeugt worden | bei diesem Verfahren acht (8) neue Dateien erzeugt worden | ||||
Context not available. |
Zwei Leerzeichen nach den Punkt an dieser Stelle? Nicht wirklich nötig, nur als Rückfrage.