Changeset View
Changeset View
Standalone View
Standalone View
head/de_DE.ISO8859-1/books/handbook/network-servers/chapter.xml
- This file uses an unknown character encoding.
<?xml version="1.0" encoding="iso-8859-1"?> | <?xml version="1.0" encoding="iso-8859-1"?> | ||||
<!-- | <!-- | ||||
The FreeBSD Documentation Project | The FreeBSD Documentation Project | ||||
The FreeBSD German Documentation Project | The FreeBSD German Documentation Project | ||||
$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: r52450 | basiert auf: r52704 | ||||
--> | --> | ||||
<chapter xmlns="http://docbook.org/ns/docbook" | <chapter xmlns="http://docbook.org/ns/docbook" | ||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" | xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" | ||||
xml:id="network-servers"> | xml:id="network-servers"> | ||||
<!-- | <!-- | ||||
<info> | <info> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Überarbeitet von </contrib></author> | <author><personname><firstname>Murray</firstname><surname>Stokely</surname></personname><contrib>Überarbeitet von </contrib></author> | ||||
▲ Show 20 Lines • Show All 2,357 Lines • ▼ Show 20 Lines | # [...more groups to follow]</programlisting> | ||||
(<acronym>LDAP</acronym>)</title> | (<acronym>LDAP</acronym>)</title> | ||||
<authorgroup> | <authorgroup> | ||||
<author> | <author> | ||||
<personname> | <personname> | ||||
<firstname>Tom</firstname> | <firstname>Tom</firstname> | ||||
<surname>Rhodes</surname> | <surname>Rhodes</surname> | ||||
</personname> | </personname> | ||||
<contrib>Geschrieben von </contrib> | <contrib>Ursprünglich beigetragen von </contrib> | ||||
</author> | </author> | ||||
</authorgroup> | </authorgroup> | ||||
<authorgroup> | <authorgroup> | ||||
<author> | <author> | ||||
<personname> | <personname> | ||||
<firstname>Rocky</firstname> | |||||
<surname>Hotas</surname> | |||||
</personname> | |||||
<contrib>Aktualisiert von </contrib> | |||||
</author> | |||||
</authorgroup> | |||||
<authorgroup> | |||||
<author> | |||||
<personname> | |||||
<firstname>Björn</firstname> | <firstname>Björn</firstname> | ||||
<surname>Heidotting</surname> | <surname>Heidotting</surname> | ||||
</personname> | </personname> | ||||
<contrib>Übersetzt von </contrib> | <contrib>Übersetzt von </contrib> | ||||
</author> | </author> | ||||
</authorgroup> | </authorgroup> | ||||
</info> | </info> | ||||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | dessen Terminologie finden Sie unter <link | ||||
<sect2 xml:id="ldap-config"> | <sect2 xml:id="ldap-config"> | ||||
<title>Konfiguration eines | <title>Konfiguration eines | ||||
<acronym>LDAP</acronym>-Servers</title> | <acronym>LDAP</acronym>-Servers</title> | ||||
<indexterm><primary>LDAP Server</primary></indexterm> | <indexterm><primary>LDAP Server</primary></indexterm> | ||||
<para>&os; integriert keinen <acronym>LDAP</acronym>-Server. | <para>&os; integriert keinen <acronym>LDAP</acronym>-Server. | ||||
Beginnen Sie die Konfiguration durch die Installation des | Beginnen Sie die Konfiguration mit der Installation des | ||||
Ports oder Pakets <package>net/openldap24-server</package>. | Ports oder Pakets | ||||
Da der Port viele konfigurierbare Optionen hat, ist es | <package>net/openldap-server</package>:</para> | ||||
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>Als nächstes muss ein Verzeichnis für Daten sowie ein | <screen>&prompt.root; <userinput>pkg install openldap-server</userinput></screen> | ||||
Verzeichnis für die Zertifikate erstellt werden:</para> | |||||
<screen>&prompt.root; <userinput>mkdir /var/db/openldap-data</userinput> | <para>Im <link | ||||
&prompt.root; <userinput>mkdir /usr/local/etc/openldap/private</userinput></screen> | xlink:href="&url.articles.linux-users.en;/software.html"> | ||||
Paket</link> sind eine große Anzahl an Optionen aktiviert. | |||||
Mit dem Befehl <command>pkg info openldap-server</command> | |||||
können diese überprüft werden. Falls die Optionen nicht | |||||
ausreichend sind (weil bspw. SQL-Unterstützung benötigt wird), | |||||
sollten Sie in Betracht ziehen, den Port mit dem | |||||
entsprechenden Framework neu zu übersetzen.</para> | |||||
<para>Kopieren Sie die Konfigurationsdatei der Datenbank:</para> | <para>Während der Installation wird für die Daten das | ||||
Verzeichnis <filename>/var/db/openldap-data</filename> | |||||
erstellt. Das Verzeichnis für die Ablage der Zertifikate | |||||
muss manuell angelegt werden:</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>mkdir /usr/local/etc/openldap/private</userinput></screen> | ||||
<para>Im nächsten Schritt wird die Zertifizierungsstelle | <para>Im nächsten Schritt wird die Zertifizierungsstelle | ||||
konfiguriert. Die folgenden Befehle müssen in | konfiguriert. Die folgenden Befehle müssen in | ||||
<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. | ||||
Sie folgenden Befehl ein, um die Zertifizierungsstelle zu | Weitere Informationen über Zertifikate und deren Parameter | ||||
erstellen und folgen Sie den Anweisungen:</para> | finden Sie im <xref linkend="openssl"/>. Geben Sie folgenden | ||||
Befehl ein, um die Zertifizierungsstelle zu erstellen und | |||||
folgen Sie den Anweisungen:</para> | |||||
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -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. Wenn ein | der Hostname des Systems eingetragen werden. Wenn ein | ||||
selbstsigniertes Zertifikat verwendet wird, stellen Sie dem | selbstsigniertes Zertifikat verwendet wird, stellen Sie dem | ||||
Hostnamen einfach das Präfix <literal>CA</literal> für die | Hostnamen einfach das Präfix <literal>CA</literal> für die | ||||
Zertifizierungsstelle voran.</para> | 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. Geben Sie | sowie einen privaten Schlüssel zu erstellen. Geben Sie | ||||
folgenden Befehl ein und folgen Sie den Anweisungen:</para> | folgenden Befehl ein und folgen Sie den Anweisungen:</para> | ||||
<screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -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 | <para>Stellen Sie hierbei sicher, dass | ||||
<literal>Common Name</literal> richtig eingetragen wird. | <literal>Common Name</literal> richtig eingetragen wird. | ||||
Anschließend muss der Schlüssel signiert werden:</para> | Die Zertifikatsregistrierungsanforderung muss mit dem | ||||
Schlüssel der Zertifizierungsstelle unterschrieben werden, um | |||||
als gültiges Zertifikat verwendet zu werden:</para> | |||||
<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> | <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 <replaceable>365</replaceable> -nodes -new -keyout client.key -out client.csr</userinput> | <screen>&prompt.root; <userinput>openssl req -days <replaceable>365</replaceable> -nodes -new -keyout client.key -out client.csr</userinput> | ||||
&prompt.root; <userinput>openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CAkey ca.key</userinput></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 | ||||
<literal>Common name</literal>. Stellen Sie außerdem sicher, | <literal>Common name</literal>. Stellen Sie außerdem sicher, | ||||
dass bei diesem Verfahren acht (8) neue Dateien erzeugt worden | dass bei diesem Verfahren acht (8) neue Dateien erzeugt worden | ||||
sind. Der nächste Schritt besteht darin, | sind.</para> | ||||
<filename>/usr/local/etc/openldap/slapd.conf</filename> zu | |||||
editieren und folgende Optionen hinzuzufügen:</para> | |||||
<programlisting>TLSCipherSuite HIGH:MEDIUM:+SSLv3 | <para>Der Daemon, auf dem der OpenLDAP-Server läuft, heißt | ||||
TLSCertificateFile /usr/local/etc/openldap/server.crt | <filename>slapd</filename>. Die Konfiguration erfolgt über | ||||
TLSCertificateKeyFile /usr/local/etc/openldap/private/server.key | <filename>slapd.ldif</filename>. Die alte | ||||
TLSCACertificateFile /usr/local/etc/openldap/ca.crt</programlisting> | <filename>slapd.conf</filename> wird von OpenLDAP nicht mehr | ||||
verwendet.</para> | |||||
<para>Danach bearbeiten Sie | <para><link | ||||
<filename>/usr/local/etc/openldap/ldap.conf</filename> und | xlink:href="http://www.openldap.org/doc/admin24/slapdconf2.html">Konfigurationsbeispiele</link> | ||||
fügen folgende Zeilen hinzu:</para> | für <filename>slapd.ldif</filename> finden sich auch in | ||||
<filename>/usr/local/etc/openldap/slapd.ldif.sample</filename>. | |||||
Optionen sind in slapd-config(5) dokumentiert. Jeder | |||||
Abschnitt in <filename>slapd.ldif</filename> wird, wie alle | |||||
anderen LDAP-Attributgruppen, durch einen DN eindeutig | |||||
identifiziert. Achten Sie darauf, dass keine Leerzeilen | |||||
zwischen der Anweisung <literal>dn:</literal> und dem | |||||
gewünschten Ende des Abschnitts verbleiben. Im folgenden | |||||
Beispiel wird TLS verwendet, um einen sicheren Kanal zu | |||||
implementieren. Der erste Abschnitt stellt die globale | |||||
Konfiguration dar:</para> | |||||
<programlisting>TLS_CACERT /usr/local/etc/openldap/ca.crt | <programlisting># | ||||
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv3</programlisting> | # See slapd-config(5) for details on configuration options. | ||||
# This file should NOT be world readable. | |||||
# | |||||
dn: cn=config | |||||
objectClass: olcGlobal | |||||
cn: config | |||||
# | |||||
# | |||||
# Define global ACLs to disable default read access. | |||||
# | |||||
olcArgsFile: /var/run/openldap/slapd.args | |||||
olcPidFile: /var/run/openldap/slapd.pid | |||||
olcTLSCertificateFile: /usr/local/etc/openldap/server.crt | |||||
olcTLSCertificateKeyFile: /usr/local/etc/openldap/private/server.key | |||||
olcTLSCACertificateFile: /usr/local/etc/openldap/ca.crt | |||||
#olcTLSCipherSuite: HIGH | |||||
olcTLSProtocolMin: 3.1 | |||||
olcTLSVerifyClient: never</programlisting> | |||||
<para>Kommentieren Sie die folgenden Einträge aus und setzen Sie | <para>Hier müssen die Zertifizierungsstelle, das | ||||
sie auf die gewünschten Werte: <option>BASE</option>, | Serverzertifikat und die privaten Schlüssel des Servers | ||||
<option>URI</option>, <option>SIZELIMIT</option> und | angegeben werden. Es wird empfohlen, den Clients die Wahl der | ||||
<option>TIMELIMIT</option>. Setzen Sie bei | Sicherheits-Chiffre zu überlassen und die Option | ||||
<option>URI</option> <option>ldap://</option> und | <literal>olcTLSCipherSuite</literal> wegzulassen (inkompatibel | ||||
<option>ldaps://</option> ein. Fügen Sie danach zwei Einträge | mit anderen TLS-Clients als <filename>openssl</filename>). | ||||
ein, die auf die Zertifizierungsstelle verweisen. Wenn Sie | Mit der Option <literal>olcTLSProtocolMin</literal> benötigt | ||||
fertig sind, sollten die Einträge wie folgt aussehen:</para> | der Server nur eine minimale Sicherheitsstufe. | ||||
Diese Option wird empfohlen. Während die Verfizierung für den | |||||
Server verpflichtend ist, ist sie es nicht für den Client: | |||||
<literal>olcTLSVerifyClient: never</literal>.</para> | |||||
<programlisting>BASE dc=example,dc=com | <para>Der zweite Abschnitt behandelt die Backend-Module und | ||||
URI ldap:// ldaps:// | kann wie folgt konfiguriert werden:</para> | ||||
SIZELIMIT 12 | <programlisting># | ||||
TIMELIMIT 15 | # Load dynamic backend modules: | ||||
# | |||||
dn: cn=module,cn=config | |||||
objectClass: olcModuleList | |||||
cn: module | |||||
olcModulepath: /usr/local/libexec/openldap | |||||
olcModuleload: back_mdb.la | |||||
#olcModuleload: back_bdb.la | |||||
#olcModuleload: back_hdb.la | |||||
#olcModuleload: back_ldap.la | |||||
#olcModuleload: back_passwd.la | |||||
#olcModuleload: back_shell.la</programlisting> | |||||
TLS_CACERT /usr/local/etc/openldap/ca.crt | <para>Der dritte Abschnitt widmet sich dem Laden der benötigten | ||||
TLS_CIPHER_SUITE HIGH:MEDIUM:+SSLv3</programlisting> | ldif-Schemata, die von den Datenbanken verwendet werden | ||||
sollen. Diese Dateien sind essentiell.</para> | |||||
<para>Anschließend sollte das Standardpasswort für den Server | <programlisting>dn: cn=schema,cn=config | ||||
geändert werden:</para> | objectClass: olcSchemaConfig | ||||
cn: schema | |||||
<screen>&prompt.root; <userinput>slappasswd -h "{SHA}" >> /usr/local/etc/openldap/slapd.conf</userinput></screen> | include: file:///usr/local/etc/openldap/schema/core.ldif | ||||
include: file:///usr/local/etc/openldap/schema/cosine.ldif | |||||
include: file:///usr/local/etc/openldap/schema/inetorgperson.ldif | |||||
include: file:///usr/local/etc/openldap/schema/nis.ldif</programlisting> | |||||
<para>Dieser Befehl wird nach einem Passwort fragen und, wenn | <para>Als nächstes folgt der Abschnitt zur | ||||
der Prozess nicht fehlschlägt, ein Passwort-Hash an das | Frontend-Konfiguration:</para> | ||||
Ende von <filename>slapd.conf</filename> hinzufügen. Es | |||||
werden verschiedene Hash-Formate unterstützt. Weitere | |||||
Informationen hierzu finden Sie in der Manualpage von | |||||
<command>slappasswd</command>.</para> | |||||
<para>Als nächstes bearbeiten Sie | <programlisting># Frontend settings | ||||
<filename>/usr/local/etc/openldap/slapd.conf</filename> und | # | ||||
fügen folgende Zeilen hinzu:</para> | dn: olcDatabase={-1}frontend,cn=config | ||||
objectClass: olcDatabaseConfig | |||||
objectClass: olcFrontendConfig | |||||
olcDatabase: {-1}frontend | |||||
olcAccess: to * by * read | |||||
# | |||||
# Sample global access control policy: | |||||
# Root DSE: allow anyone to read it | |||||
# Subschema (sub)entry DSE: allow anyone to read it | |||||
# Other DSEs: | |||||
# Allow self write access | |||||
# Allow authenticated users read access | |||||
# Allow anonymous users to authenticate | |||||
# | |||||
#olcAccess: to dn.base="" by * read | |||||
#olcAccess: to dn.base="cn=Subschema" by * read | |||||
#olcAccess: to * | |||||
# by self write | |||||
# by users read | |||||
# by anonymous auth | |||||
# | |||||
# if no access controls are present, the default policy | |||||
# allows anyone and everyone to read anything but restricts | |||||
# updates to rootdn. (e.g., "access to * by * read") | |||||
# | |||||
# rootdn can always read and write EVERYTHING! | |||||
# | |||||
olcPasswordHash: {SSHA} | |||||
# {SSHA} is already the default for olcPasswordHash</programlisting> | |||||
<programlisting>password-hash {sha} | <para>Ein weiterer Abschnitt ist dem Konfigurations-Backend | ||||
allow bind_v2</programlisting> | gewidmet, der einzige Weg, später auf die | ||||
OpenLDAP-Serverkonfiguration zuzugreifen, ist als globaler | |||||
Superuser.</para> | |||||
<para>Das Suffix in dieser Datei muss <option>BASE</option> aus | <programlisting>dn: olcDatabase={0}config,cn=config | ||||
<filename>/usr/local/etc/openldap/ldap.conf</filename> | objectClass: olcDatabaseConfig | ||||
entsprechen. Zudem sollte die Option <option>rootdn</option> | olcDatabase: {0}config | ||||
ebenfalls gesetzt werden. Ein guter Wert ist beispielsweise | olcAccess: to * by * none | ||||
<option>cn=Manager</option>. Bevor die Datei gespeichert | olcRootPW: {SSHA}iae+lrQZILpiUdf16Z9KmDmSwT77Dj4U</programlisting> | ||||
wird, setzen Sie die Passwortausgabe von | |||||
<command>slappasswd</command> hinter die Option | |||||
<option>rootpw</option>. Das Endergebnis sollte in etwa wie | |||||
folgt aussehen:</para> | |||||
<programlisting>TLSCipherSuite HIGH:MEDIUM:+SSLv3 | <para>Der voreingestellte Benutzername für den Administrator | ||||
TLSCertificateFile /usr/local/etc/openldap/server.crt | lautet <literal>cn=config</literal>. Geben Sie | ||||
TLSCertificateKeyFile /usr/local/etc/openldap/private/server.key | <filename>slappasswd</filename> in eine Shell ein, wählen Sie | ||||
TLSCACertificateFile /usr/local/etc/openldap/ca.crt | ein Passwort und verwenden Sie seinen Hash in | ||||
rootpw {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=</programlisting> | <literal>olcRootPW</literal>. Wenn diese Option jetzt nicht | ||||
angegeben ist, kann vor dem Import der | |||||
<filename>slapd.ldif</filename> niemand später den Abschnitt | |||||
<emphasis>global configuration</emphasis> ändern.</para> | |||||
<para>Aktivieren Sie abschließend | <para>Der letzte Abschnitt befasst sich mit dem | ||||
<application>OpenLDAP</application> in | Datenbank-Backend:</para> | ||||
<filename>/etc/rc.conf</filename> und setzen Sie die | |||||
<acronym>URI</acronym>:</para> | |||||
<programlisting>slapd_enable="YES" | <programlisting>####################################################################### | ||||
slapd_flags="-4 -h ldaps:///"</programlisting> | # LMDB database definitions | ||||
####################################################################### | |||||
# | |||||
dn: olcDatabase=mdb,cn=config | |||||
objectClass: olcDatabaseConfig | |||||
objectClass: olcMdbConfig | |||||
olcDatabase: mdb | |||||
olcDbMaxSize: 1073741824 | |||||
olcSuffix: dc=domain,dc=example | |||||
olcRootDN: cn=mdbadmin,dc=domain,dc=example | |||||
# Cleartext passwords, especially for the rootdn, should | |||||
# be avoided. See slappasswd(8) and slapd-config(5) for details. | |||||
# Use of strong authentication encouraged. | |||||
olcRootPW: {SSHA}X2wHvIWDk6G76CQyCMS1vDCvtICWgn0+ | |||||
# The database directory MUST exist prior to running slapd AND | |||||
# should only be accessible by the slapd and slap tools. | |||||
# Mode 700 recommended. | |||||
olcDbDirectory: /var/db/openldap-data | |||||
# Indices to maintain | |||||
olcDbIndex: objectClass eq</programlisting> | |||||
<para>An dieser Stelle kann der Server gestartet und getestet | <para>Diese Datenbank enthält den | ||||
werden:</para> | <emphasis>eigentlichen Inhalt</emphasis> des | ||||
<acronym>LDAP</acronym>-Verzeichnisses. Neben | |||||
<literal>mdb</literal> sind weitere Versionen | |||||
verfügbar. Dessen Superuser, nicht zu verwechseln mit dem | |||||
globalen, wird hier konfiguriert: ein Benutzername in | |||||
<literal>olcRootDN</literal> und der Passworthash in | |||||
<literal>olcRootPW</literal>; <filename>slappasswd</filename> | |||||
kann wie zuvor benutzt werden.</para> | |||||
<screen>&prompt.root; <userinput>service slapd start</userinput></screen> | <para>Dieses <link | ||||
xlink:href="http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=tree;f=tests/data/regressions/its8444;h=8a5e808e63b0de3d2bdaf2cf34fecca8577ca7fd;hb=HEAD">Repository</link> | |||||
enthält vier Beispiele für <filename>slapd.ldif</filename>. | |||||
Lesen Sie diese Seite, um eine bestehende | |||||
<filename>slapd.conf</filename> in | |||||
<filename>slapd.ldif</filename> zu konvertieren. Beachten | |||||
Sie, dass dies einige unbrauchbare Optionen | |||||
einführen kann.</para> | |||||
<para>Wenn alles richtig konfiguriert ist, sollte eine Suche im | <para>Wenn die Konfiguration abgeschlossen ist, muss | ||||
Verzeichnis, wie in diesem Beispiel, eine erfolgreiche | <filename>slapd.ldif</filename> in ein leeres Verzeichnis | ||||
Verbindung mit einer Antwort liefern:</para> | verschoben werden. Folgendes ist die empfohlene | ||||
Vorgehensweise:</para> | |||||
<screen>&prompt.root; <userinput>ldapsearch -Z</userinput> | <screen>&prompt.root; <userinput>mkdir /usr/local/etc/openldap/slapd.d/</userinput></screen> | ||||
# extended LDIF | |||||
<para>Importieren Sie die Konfigurationsdatenbank:</para> | |||||
<screen>&prompt.root; <userinput>/usr/local/sbin/slapadd -n0 -F /usr/local/etc/openldap/slapd.d/ -l /usr/local/etc/openldap/slapd.ldif</userinput></screen> | |||||
<para>Starten Sie den <filename>slapd</filename>-Daemon:</para> | |||||
<screen>&prompt.root; <userinput>/usr/local/libexec/slapd -F /usr/local/etc/openldap/slapd.d/</userinput></screen> | |||||
<para>Die Option <literal>-d</literal> kann, wie in slapd(8) | |||||
beschrieben, zur Fehlersuche benutzt werden. Stellen Sie | |||||
sicher, dass der Server läuft und korrekt arbeitet:</para> | |||||
<screen>&prompt.root; <userinput>ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts</userinput> | |||||
# extended LDIF | |||||
# | # | ||||
# LDAPv3 | # LDAPv3 | ||||
# base <dc=example,dc=com> (default) with scope subtree | # base <> with scope baseObject | ||||
# filter: (objectclass=*) | # filter: (objectclass=*) | ||||
# requesting: ALL | # requesting: namingContexts | ||||
# | |||||
# | |||||
dn: | |||||
namingContexts: dc=domain,dc=example | |||||
# search result | # search result | ||||
search: 3 | search: 2 | ||||
result: 32 No such object | result: 0 Success | ||||
# numResponses: 1</screen> | # numResponses: 2 | ||||
# numEntries: 1</screen> | |||||
<note> | <para>Dem Server muss noch vertraut werden. Wenn dies noch nie | ||||
<para>Wenn der Befehl fehlschlägt, aber die Konfiguration | zuvor geschehen ist, befolgen Sie diese Anweisungen. | ||||
richtig aussieht, stoppen Sie den | Installieren Sie das Paket oder den Port OpenSSL:</para> | ||||
<command>slapd</command>-Dienst. Starten Sie anschließend | |||||
den Dienst mit | |||||
<foreignphrase>Debugging</foreignphrase>-Optionen:</para> | |||||
<screen>&prompt.root; <userinput>service slapd stop</userinput> | <screen>&prompt.root; <userinput>pkg install openssl</userinput></screen> | ||||
&prompt.root; <userinput>/usr/local/libexec/slapd -d -1</userinput></screen> | |||||
</note> | |||||
<para>Sobald der Dienst antwortet, kann das Verzeichnis mit dem | <para>Aus dem Verzeichnis, in dem <filename>ca.crt</filename> | ||||
Befehl <command>ldapadd</command> bestückt werden. In diesem | gespeichert ist (in diesem Beispiel | ||||
Beispiel gibt es eine Datei mit einer Liste von Benutzern, die | <filename>/usr/local/etc/openldap</filename>), starten | ||||
diesem Verzeichnis hinzugefügt werden. Die Einträge sollten | Sie:</para> | ||||
das folgende Format haben:</para> | |||||
<programlisting>dn: dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable> | <screen>&prompt.root; <userinput>c_rehash .</userinput></screen> | ||||
objectclass: dcObject | |||||
objectclass: organization | |||||
o: <replaceable>Example</replaceable> | |||||
dc: <replaceable>Example</replaceable> | |||||
dn: cn=<replaceable>Manager</replaceable>,dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable> | <para>Sowohl die CA als auch das Serverzertifikat werden nun in | ||||
objectclass: organizationalRole | ihren jeweiligen Rollen korrekt erkannt. Um dies zu | ||||
cn: <replaceable>Manager</replaceable></programlisting> | überprüfen, führen die folgenden Befehl aus dem Verzeichnis | ||||
der <filename>server.crt</filename> aus:</para> | |||||
<para>Um diese Datei zu importieren, geben Sie den Dateinamen | <screen>&prompt.root; <userinput>openssl verify -verbose -CApath . server.crt</userinput></screen> | ||||
an. Bei dem folgenden Befehl werden Sie wieder zur Eingabe | |||||
des Passworts aufgefordert, das Sie zuvor eingegeben haben. | |||||
Die Ausgabe sollte wie folgt aussehen:</para> | |||||
<screen>&prompt.root; <userinput>ldapadd -Z -D "cn=<replaceable>Manager</replaceable>,dc=<replaceable>example</replaceable>,dc=<replaceable>com</replaceable>" -W -f <replaceable>import.ldif</replaceable></userinput> | <para>Falls <filename>slapd</filename> ausgeführt wurde, muss | ||||
Enter LDAP Password: | der Daemon neu gestartet werden. Wie in | ||||
adding new entry "dc=example,dc=com" | <filename>/usr/local/etc/rc.d/slapd</filename> angegeben, | ||||
müssen die folgenden Zeilen in | |||||
<filename>/etc/rc.conf</filename> eingefügt werden, um | |||||
<filename>slapd</filename> beim Booten ordnungsgemäß | |||||
auszuführen:</para> | |||||
adding new entry "cn=Manager,dc=example,dc=com"</screen> | <programlisting>lapd_enable="YES" | ||||
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ | |||||
ldap://0.0.0.0/"' | |||||
slapd_sockets="/var/run/openldap/ldapi" | |||||
slapd_cn_config="YES"</programlisting> | |||||
<para>Stellen Sie mit einer Suche auf dem Server sicher, dass | <para><filename>slapd</filename> bietet beim Booten keine | ||||
die Daten importiert wurden. Nutzen Sie dazu | Möglichkeit zur Fehlersuche. Überprüfen Sie dazu | ||||
<command>ldapsearch</command>:</para> | <filename>/var/log/debug.log</filename>, | ||||
<command>dmesg -a</command> und | |||||
<filename>/var/log/messages</filename>.</para> | |||||
<screen>&prompt.user; <userinput>ldapsearch -Z</userinput> | <para>Das folgende Beispiel fügt die Gruppe | ||||
# extended LDIF | <literal>team</literal> und den Benutzer | ||||
# | <literal>john</literal> zur | ||||
# LDAPv3 | <acronym>LDAP</acronym>-Datenbank <systemitem | ||||
# base <dc=example,dc=com> (default) with scope subtree | class="systemname">domain.example</systemitem> | ||||
# filter: (objectclass=*) | hinzu, die bislang leer ist. Erstellen Sie | ||||
# requesting: ALL | zunächst die Datei | ||||
# | <filename>domain.ldif</filename>:</para> | ||||
# example.com | <screen>&prompt.root; <userinput>cat domain.ldif</userinput> | ||||
dn: dc=example,dc=com | dn: dc=domain,dc=example | ||||
objectClass: dcObject | objectClass: dcObject | ||||
objectClass: organization | objectClass: organization | ||||
o: Example | o: domain.example | ||||
dc: Example | dc: domain | ||||
# Manager, example.com | dn: ou=groups,dc=domain,dc=example | ||||
dn: cn=Manager,dc=example,dc=com | objectClass: top | ||||
objectClass: organizationalRole | objectClass: organizationalunit | ||||
cn: Manager | ou: groups | ||||
# search result | dn: ou=users,dc=domain,dc=example | ||||
search: 3 | objectClass: top | ||||
result: 0 Success | objectClass: organizationalunit | ||||
ou: users | |||||
# numResponses: 3 | dn: cn=team,ou=groups,dc=domain,dc=example | ||||
# numEntries: 2</screen> | objectClass: top | ||||
objectClass: posixGroup | |||||
cn: team | |||||
gidNumber: 10001 | |||||
<para>An dieser Stelle sollte der Server konfiguriert sein und | dn: uid=john,ou=users,dc=domain,dc=example | ||||
ordnungsgemäß funktionieren.</para> | objectClass: top | ||||
objectClass: account | |||||
objectClass: posixAccount | |||||
objectClass: shadowAccount | |||||
cn: John McUser | |||||
uid: john | |||||
uidNumber: 10001 | |||||
gidNumber: 10001 | |||||
homeDirectory: /home/john/ | |||||
loginShell: /usr/bin/bash | |||||
userPassword: secret</screen> | |||||
<para>Weitere Informationen finden Sie in der | |||||
OpenLDAP-Dokumentation. Benutzen Sie | |||||
<filename>slappasswd</filename>, um das Passwort | |||||
durch einen Hash in | |||||
<literal>userPassword</literal> zu ersetzen. Der in | |||||
<literal>loginShell</literal> angegebene Pfad muss in | |||||
allen Systemen existieren, in denen | |||||
<literal>john</literal> sich anmelden darf. Benutzen | |||||
Sie schließlich den <literal>mdb</literal>-Administrator, | |||||
um die Datenbank zu ändern:</para> | |||||
<screen>&prompt.root; <userinput>ldapadd -W -D "cn=mdbadmin,dc=domain,dc=example" -f domain.ldif</userinput></screen> | |||||
<para>Änderungen im Bereich | |||||
<emphasis>global configuration</emphasis> können nur vom | |||||
globalen Superuser vorgenommen werden. Angenommen die Option | |||||
<literal>olcTLSCipherSuite: HIGH:MEDIUM:SSLv3</literal> wurde | |||||
ursprünglich definiert und soll nun gelöscht werden. | |||||
Dazu erstellen Sie zunächst eine Datei mit folgendem | |||||
Inhalt:</para> | |||||
<screen>&prompt.root; <userinput>cat <replaceable>global_mod</replaceable></userinput> | |||||
dn: cn=config | |||||
changetype: modify | |||||
delete: olcTLSCipherSuite</screen> | |||||
<para>Übernehmen Sie dann die Änderungen:</para> | |||||
<screen>&prompt.root; <userinput>ldapmodify -f global_mod -x -D "cn=config" -W</userinput></screen> | |||||
<para>Geben Sie bei Aufforderung das im Abschnitt | |||||
<emphasis>configuration backend</emphasis> gewählte | |||||
Passwort ein. Der Benutzername ist nicht erforderlich: | |||||
Hier repräsentiert <literal>cn=config</literal> den DN des zu | |||||
ändernden Datenbankabschnitts. Alternativ können Sie mit | |||||
<literal>ldapmodify</literal> eine einzelne Zeile der | |||||
Datenbank löschen, mit <literal>ldapdelete</literal> einen | |||||
ganzen Eintrag.</para> | |||||
<para>Wenn etwas schief geht oder der globale Superuser nicht | |||||
auf das Konfigurations-Backend zugreifen kann, ist es | |||||
möglich, die gesamte Konfiguration zu löschen und neu zu | |||||
schreiben:</para> | |||||
<screen>&prompt.root; <userinput>rm -rf /usr/local/etc/openldap/slapd.d/</userinput></screen> | |||||
<para><filename>slapd.ldif</filename> kann dann bearbeitet und | |||||
erneut importiert werden. Bitte folgenden Sie dieser | |||||
Vorgehensweise nur, wenn keine andere Lösung verfügbar | |||||
ist.</para> | |||||
<para>Dies ist nur die Konfiguration des Servers. Auf demselben | |||||
Rechner kann auch ein LDAP-Client mit eigener, separater | |||||
Konfiguration betrieben werden.</para> | |||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="network-dhcp"> | <sect1 xml:id="network-dhcp"> | ||||
<!-- | <!-- | ||||
<info> | <info> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Greg</firstname><surname>Sutter</surname></personname><contrib>Geschrieben von </contrib></author> | <author><personname><firstname>Greg</firstname><surname>Sutter</surname></personname><contrib>Geschrieben von </contrib></author> | ||||
▲ Show 20 Lines • Show All 2,069 Lines • Show Last 20 Lines |