Fedora Directory Server

Dieses Howto soll es Ihnen ermöglichen, ohne Vorkenntnisse einen oder mehrere Fedora Directory Servers zu installieren und in Betrieb zu nehmen. Ferner soll es als Referenz dienen, sollte mal eben schnell eine kleine Information von Nöten sein.

Nachfolgend finden Sie eine kleine Aufstellung dessen, was bei der Erstellung dieses Howtos zum Einsatz kam. Ferner wird auf dieser Seite eine Übersicht über weiter Softwarekonstelationen geführt, unter welchen dieses Howto erfolgreich umgesetzt werden konnte.

Software Version
OS Fedora Core 5
Kernel 2.6.17-1.2187_FC5
Fedora Directory Server 1.0.2-1
Apache 2.2.2-1.2


Grundlegendes

Bitte beachten Sie bei der Verwendung dieses Howtos die folgenden Punkte:

  1. Lesen Sie den Abschnitt, welchen Sie grade bearbeiten erste zu ende, bevor Sie die darin aufgeführten Kommandos ausführen. Es kommt vor, dass nach dem Kommando selbst nocht wichtige Informationen zu diesem angegeben werden, welche Sie bei der Ausführung des jeweiligen Kommandos berücksichtigen müssen.
  2. Arbeiten Sie langsam und bedacht, Eile führt nicht selten zu Fehlern.


Abkürzungen

In diesem Howto kommen die folgenden Abkürzungen zum Einsatz:

Kürzel Bedeutung
CA Certification Authority
Fedora AS Fedora Administration Server
Fedora DS Fedora Directory Server


Voraussetzungen

Apache

Fedora DS benötigt einen installierten Apache HTTP Daemon für den Administation Server, welcher mit Fedora DS ausgeliefert wird.

Arbeitsverzeichnis

Es ist ratsam, alle für die Installation notwendigen Schritte in einem speziell hierfür vorgesehenen Verzeichnis durchzuführen. Dies aus mehreren Gründen. Installieren Sie beispielsweise anhand der Sourcen, so benötigen Sie ein Build-Verzeichnis. Ferner sind auf diese Art und Weise alle bei der Installation verwendeten Daten und Dateien unter einem Verzeichnis verfügbar. Zu guter letzt ist es aber auch einfach Geschmacksache und somit etwas, was ich persönlich mir angeeignet habe.
So verhält es sich bei mir so, dass ich mir das Verzeichnis /root/build angelegt habe, unter welchem ich für die Applikationen, welche ich installiere, jeweils ein separates Verzeichnis erstelle, was in diesem Falle fedora-ds ist.

-bash-3.1# mkdir -p /root/build/fedora-ds
-bash-3.1# cd /root/build/fedora-ds

User und Group

Da wir unseren Server unter der Verwendung sowohl eines gesonderten Benutzers, als auch einer spezielle Gruppe ausgeführt sehen wollen, müssen wir bei zunächst einmal anlegen. Dies können wir beispielsweise mit den folgenden Kommandos tun, wobei zu beachten ist, dass die Zahl 4711 entsprechend die zu verwendende Gruppen, bzw. User-ID darstellt. Sie könne hier natürlich eigene Werte verwenden. Ebenso können Sie auch für die Namen des Benutzers und der Gruppe eigen Werte verwenden.

-bash-3.1# groupadd -g 4711 fedora-ds
-bash-3.1# useradd -g fedora-ds -M -u 4711 fedora-ds

Softwarepakete

Um den Fedora DS dazu in die Lage zu versetzen, uns die Möglichkeit zur Authentifizierung via SASL anzubieten, müssen folgende Pakete installiert werden.

  • cyrus-sasl
  • cyrus-sasl-lib
  • cyrus-sasl-md5
  • cyrus-sasl-gssapi
  • cyrus-sasl-plain

Optionale Systemanpassungen

Um eine möglichst optimale Systemperformance zu erzielen, steht es uns an dieser Stelle frei, weitere Schräubchen an unserem System zu verdrehen. Diese sind rein optional und solange Sie nicht planen, die aktuelle Installation in einer produktieven und stark genutzten Umgebung zu betreiben, können Sie diese ruhigen Gewissens überspringen. Einen Blick jedoch sind sie alle Male wert.

TCP Keepalive Time

Per default wird in Ihrem System eine TCP Keepalive Time von etwas um die 7200000 Millisekunden eingestellt sein. Sie können dies herausfinden, indem Sie das folgende Kommando ausführen.

-bash-3.1# cat /proc/sys/net/ipv4/tcp_keepalive_time
Dies wird Ihnen die aktuell auf Ihrem System für TCP-Verbindungen verwendete Keepalive Time in Sekunden ausgeben. Auf dem vorliegenden Testsystem lautet die Ausgabe 7200, was 120 Minuten enspricht.

Ändern können Sie diese, indem Sie den Inhalt der Datei /proc/sys/net/ipv4/tcp_keep mit dem gewünschten Wert überschreiben. Dies bewirkt jedoch nur eine temporäre Veränderung und wird beim nächsten Neustart des Systems überschrieben. Wollten Sie den Wert dauerhaft anpassen, so müssen Sie dies durch eine Ergänzung in der Datei /etc/sysctl.conf vornehmen. Hierzu fügen Sie den nachfolgend abgebildeten Inhalt an das Ende dieser Datein an.
# Controls the TCP Keepalive time in seconds
net.ipv4.tcp_keepalive_time = 600
Mit dem vorliegenden Beispiel würde die TCP Keepalive Time auf 10 Minuten gesetzt werden, was einen akzeptablen Wert darstellen sollten. Bei Systemen mit sehr hohem Verkehrsaufkommen ist es sogar eine Überlegung wert, ob dieser Wert nicht nur 300 gesetzt wird, was genau fünf Minuten entspricht.

Diese Änderung wirkt sich auf alle TCP-Verbindungen aus.

TCP Local Port Range

Für den Heimgebrauch nicht wirklich wichtig, kann es bei grossen Produktievsystemen schon einmal vorkommen, dass dem System die Ports für ausgehende Verbindungen ausgehen. Die Folge ist, dass das System nicht mehr in der Lage ist, neue Verbindungen zu anderen Systemen über das Netzwerk zu initiieren. Unter Fedora Core 6 beispielsweise ist per Default ein Portbereich von 32768 bis 61000 eingestellt.
Um zu erfahren, wie der Wert auf Ihrem System lautet, geben Sie einfach das folgende Kommando ein und bestätigen mit der Enter-Taste.

-bash-3.1# cat /proc/sys/net/ipv4/ip_local_port_range
Möchte man auf Nummer sicher gehen, so kann man diesen Portbereich beeinflussen, indem man ihn mit dem folgenden Kommando neu definiert.
-bash-3.1# echo "1024   65000" > /proc/sys/net/ipv4/ip_local_port_range
Soll die Änderung hingegen dauerhaft erfolgen, so ist es notwendig, dass Sie den folgenden Inhalt an die Datei /etc/sysctl.conf anfügen.
# Define the ip port range to use for outgoing connections.
net.ipv4.ip_local_port_range = 1024 65000
Von nun an wird Ihr System immer alle Ports von 1024 bis hin zu 65000 für ausgehende Verbindungen verwenden.

File Descriptors

Die Anzahl maximal zulässiger Dateideskriptoren, welche vom System verwendet werden können, limitiert die Anzahl von maximal möglichen, gleichzeitig geöffneten Netzwerkverbindungen zum System. In grossen Umgebungen ist es jedoch sehr ärgerlich, wenn der sogenannte Flaschenhals nicht die Performance des Systems, noch die der Serveranwendung, sondern lediglich die gleichzeitig möglichen Netzwerkverbindungen sind. Um diese mögliche Einschränkung zu beseitigen, sollten Sie der Datei /etc/sysctl.conf den folgenden Inhalt anfügen.

# Define the maximum amount of file descriptors.
fs.file-max = 64000
Durch das Anfügen dieses Inhalts teilen Sie Linux beim Starten mit, dass Sie maximal 64000 Dateideskriptoren wünschen und sich nicht mit den 48850 zufrieden geben, die beispielsweise unter Fedora Core 6 per Default verfügbar sind.
Sie können diese Einstellung auch temporär ändern, diese wird jedoch nach dem nächten Neustart des Systems wieder überschrieben werden. Führen Sie hierzu das folgende Kommando aus.
-bash-3.1# echo "64000" > /proc/sys/fs/file-max

Download

Beginnen wir nun also die Installation des Fedora DS, indem wir die Installationsdatei herunterladen. Beachten Sie bitte, dass Sie die für Ihr Betriebssystem zutreffende Architektur der Installationsdatei wählen. Sollten Sie kein 64Bit OS installiert haben, verwenden Sie bitte .i386. an Stelle von der unten verwendeten .x86_64..

-bash-3.1# wget http://directory.fedora.redhat.com/download/fedora-ds-1.0.2-1.FC5.x86_64.opt.rpm

Eine evtl. aktuellere Version oder eine Version für ein anderes Betriebssystem, eine andere Architektur oder einfach die Sourcen finden Sie hier.

Installation

Nun wollen wir die Software installieren und tun dies mit:

Sources

Rpm

-bash-3.1# rpm -ivH ./fedora-ds-1.0.2-1.FC5.x86_64.opt.rpm

Konfiguration

Nun, da Fedora DS und Administration Server installiert sind, müssen diese noch für den ersten Start vorbereitet werden. Hierzu wechsel wir in das Installationsverzeichnis und rufen das Setup-Utility auf.

-bash-3.1# cd /opt/fedora-ds/setup
-bash-3.1# ./setup
Für eine Standardinstallation sollten Sie eigentlich alle vorgeschlagenen Werte übernehmen können. Bei zweien jedoch sollten Sie hiervon abweichen. Sie werden gefragt werden, unter welchem Benutzer und unter welcher Grupper der Server ausgeführt werden soll. Hier geben Sie bitte die entsprechenden Namen an, welche Sie zuvor beim Anlegen dieser verwendet haben.

  1. Notieren Sie sich den Port, welche Sie angeben/akzeptieren, an welchem der Administration Server lauschen soll.
  2. Rufen Sie das Setup mittel ./setup -k auf, so wird unter /opt/fedora-ds/setup/setup.inf eine Datei angelegt, welche Sie in einer weiteren Installation als Konfigurationsdatei einer Stillen Installation verwenden können. Werfen Sie zuvor jedoch einen Blick in die Datei und nehmen Sie allenfalls notwendige Änderungen vor.

Nach erfolgter Konfiguration werden sowohl Directory Server, als auch Administation Server gestartet.
Zu guter Letzt wird Ihnen noch angezeigt werde, wie Sie mit der Admin Console auf den Server zugreifen können.

Dies sieht in etwa wie folgt aus:
Your new directory server has been started.
Created new Directory Server
Start Slapd Starting Slapd server configuration.
Success Slapd Added Directory Server information to Configuration Server.
Configuring Administration Server...
Setting up Administration Server Instance...
Configuring Administration Tasks in Directory Server...
Configuring Global Parameters in Directory Server...

You can now use the console.  Here is the command to use to start the console:
cd /opt/fedora-ds
./startconsole -u admin -a http://dnshostname.domain.tld:XXXXX/

INFO Finished with setup, logfile is setup/setup.log
Wobei die XXXXX für den Port stehen, den Sie für den Administation Server angegeben und dnshostname.domain.tld für den Hostnamen, welchen Sie für den Server im Setup vergeben haben.

Notieren Sie sich unbedingt diese Zeile:
./startconsole -u admin -a http://dnshostname.domain.tld:XXXXX/
Diese zeigt Ihnen, wie Sie mittels der Admin Console auf Ihren neu installierten Server zugreifen können.

SysInit

Fedora DS

fedora-ds.sh ist eine Kopie des von mir unter Fedora Core 5 erfolgreich eingesetzten Start-, bzw. Stop-Scripts. Um es unter einer anderen Distribution zu verwenden, sind wahrscheinlich kleinere Anpassungen notwendig. Prinzipiell jedoch zeigt es, was zu tun ist und wie es getan werden sollte…

Laden Sie sich diese Datei herunter und speicher Sie diese als fedora-ds unter /etc/init.d ab. Bevor unser Linux-Host das Script beim nächsten mal Starten, bzw. Herunterfahren berücksichtigt und somit ausführt, müssen wir noch die richtigen Zugriffsberechtigungen auf dieses setzen und es in den SysInit-Prozess integrieren.

Die folgenden Kommandos zeigen Ihnen, was hierfür notwendig ist.

-bash-3.1# chmod 755 /etc/init.d/fedora-ds
-bash-3.1# chkconfig --add fedora-ds
-bash-3.1# chkconfig fedora-ds on

Sollte der Befehl chkconfig unter Ihrer Distribution nicht verfügbar sein, so erkundigen Sie sich bitte nach dem Kommandozeilentool, welches für diesen Zweck in der von Ihnen verwendeten Distribution angedacht ist.

Administration Server

Schema

Der Fedora DS eröffnet gegenüber beispielsweise dem OpenLDAP Server ganz neu Möglichkeiten was den Umgang mit dem zugrundeliegenden Schema anbelangt. So stellt es beispielsweise kein Problem dar, dieses im laufenden Betrieb zu manipulieren.

Wichtig zu erwähnen ist es sicherlich, wo der Fedora DS seine Schema-Dateien speichert. Sie finden diese unter /opt/fedora-ds/slapd-%{DIRECTORY_INSTANCE_NAME}/config/schema, wobei %{DIRECTORY_INSTANCE_NAME} den Namen der Directory Server Instanz repräsentiert, welchen Sie während der Installation des Directory Servers für diesen vergeben haben. Alle sich darin befindenden Schema-Dateien werden durch den Fedora DS beim Starten eingelsen und stehen sodann zur Verfügung. Wirft man einen Blick in dieses Verzeichnis hinein, so fällt auf, dass der Name aller Schema-Dateien mit einer Nummer beginnt. Dies hat die einfache Bewandniss, dass es hierdurch möglich ist, dafür zu sorgen, dass bestimmte Schematas vor, bzw. nach anderen geladen werden. Dies ist manchmal notwendig, wenn Schematas auf anderen Schematas beruhen.

  1. Wenn Sie unter dem oben genannten Verzeichnis eine neue Schema-Datei hinzufügen, müssen Sie den Fedora DS neu starten, damit dieser das neue Schema einliest.
  2. Schemadateien werden unter Fedora DS nicht repliziert. Verwenden Sie eigen Schemadateien und haben Sie mehrere Server in Betrieb, so müssen Sie die Dateien selbst auf jedem Server installieren.

OpenLDAP Schema

Leider verhält es so, dass wir die guten alten Schemadateien, wie wir sie von OpenLDAP kennen und dort einsetzen, so für den Fedora DS nicht verwenden können, da sich der Fedora DS auch bei den Schemadateien strikt an das Ldif Format hält.

ol-schema-migrate.pl ist ein Perl Script, mit dessen Hilfe es uns möglich ist, bestehende OpenLDAP-Schema-Dateien in ein Ldif-konformes, Fedora DS verträgliches Format zu transformieren.

Laden Sie sich das Script herunter, ändern Sie die Zugriffsrechte darauf und führen Sie es gegen die Schemadatei Ihrer Wahl aus, wobei das folgende Beispiel davon ausgeht, dass sowohl das Script, als auch die zu migrierende Schemadatei unter /root abgelegt sind.

-bash-3.1# cd /root
-bash-3.1# chmod 775 ./ol-schema-migrate.pl
-bash-3.1# ./ol-schema-migrate.pl -b ./XXX.schema > ./XXX.ldif
Ersetzen Sie bitte die XXX im gezeigten Kommando durch den Namen der Schemadatei, welche Sie migrieren möchten.

ol-schema-migrate.pl wurde unter der GPL veröffentlicht. Eine History über die Entwicklung des Scripts und der jeweiligen Authoren findet sich am Anfang der Datei im einleitenden Kommentar.

Fertige Schema Ldifs

An dieser Stelle möchte ich Ihnen natürlich nicht die Schema Ldifs vorenthalten, welche ich bereits erstellt habe, bzw. welche ich bereits migrierte. Besonders die samba3.schema war dabei recht zeitaufwendig und so kann ich Ihnen nur empfehlen, die hier aufgeführten zu verwenden, wollen Sie sich ein wenig Zeit sparen.


SSL/TLS

Dieser Abschnitt wird Ihnen zeigen, wie Sie den Fedora DS dazu bewegen können, sowohl SSL-, wie auch TLS-geschützte Verbindungen zu unterstützen, wobei ich Ihnen auch zeigen möchte, wie dies für ein- und ausgehende Verbindungen eingerichtet wird.

Bevor jedoch die SSL-, bzw. TLS-Unterstützung aktiviert werden kann, muss der Fedora DS mit entsprechenden Zertifikaten ausgestattet werden, welche daraufhin von ihm verwendet werden können. Somit beschäftige ich mich im Folgenden zunächst hiermit.

Eingränzung

Ich werde mich bei meinen Ausführungen zum Thema SSL/TLS unter Fedora DS auf die Verwendung von mittels OpenSSL erstellten Zertifikaten konzentrieren!

Dies hat zwei Gründe:

  1. Für die standardmässige Verwendung einer auf NSS basierenden CA existiert hier ein mehr als ausreichendes Howto.
  2. Ihre eigene CA dürfte wahrscheinlich auf OpenSSL basieren und dies werden Sie mit ziemlicher Sicherheit nicht ändern wollen.


Zertifikatsdatenbank

Der Fedora DS verwendet die NSS Security Library, welche Zertifikate und zugehörige Keys in kleinen Datenbankdateien speichert. Diese sind cert8.db, ke3.db, sowie secmod.db und der erste Schritt ist daher, diese NSS-Zertifikat-Datenbankdateien zu erstellen.

Adminkonsole

Um dies über die Adminkonsole zu erledigen, sind die folgenden Schritte notwendig:

  1. Melden Sie sich an der Adminkonsole an und wählen Sie die entsprechende Directory Server Instanz aus
  2. Unter dem Menüpunkt Task wählen Sie Manage Certificates
  3. Geben Sie im sich öffnenden Dialog ein Passwort Ihrer Wahl ein und bestätigen Sie mit einem Klick auf OK

  • Vergessen Sie diese Passwort nicht, Sie werden es noch benötigen!
  • Sollten Sie nicht zur Eingabe eines Passworts aufgefordert werden, so bedeutet dies, dass die Zertifikatsdatenbank bereits initialisiert wurde.

Kommandozeile

Sollten Ihnen die Adminkonsole nicht zur Verfügung stehen, so können Sie dies dennoch tun. Allerdings müssen Sie hierzu über die Kommandozeile arbeiten.

Zunächst ist es wichtig, den Namen Ihrer Directory Server Instanz ausfindig zu machen. Lassen Sie sich hierzu den Inhalt des Ordners /opt/fedora-ds auflisten. Sie werden dort einen Ordner mit dem Namen slapd-MY_INSTANCE finden, wobei MY_INSTANCE durch den Directory Server Namen zu ersetzen ist, den Sie bei der Installation angegeben haben. Dieser Name ist äusserst wichtig, da der Fedora DS anhand dessen weiss, welche Datenbank zu öffnen ist.

Um die Datenbank in der Kommandozeile zu kreieren, genügen einige wenige Kommandos. Da es es jedoch notwendig ist, noch die ein oder andere Datei zu erstellen, habe ich ein kleines Scriptchen gebastelt. Alles was Sie tun müssen, ist das Script init-nssdb.sh in Ihrem Arbeitsverzeichnis zu speichern und es nach zwei kleinen Anpassungen ausführen.

Die folgende Tabelle gibt eine Übersicht über alle Parameter:

Parameter Bedeutung
NSS_DB_PASSWORD Das Passwort, welches als Schlüssel für die NSS Security Library Zertifikatsdatenbank verwendet werden soll.
FDS_SERVER_CERT_PWD Das Passwort, welches zur Schlüsselerzeugung bei der Erstellung des Zertifikats verwendet wurde, dass durch den Fedora DS angewendet werden soll.
FDS_INSTANCE Der Name der Fedora Directory Instanz, für welche die Zertifikatsdatenbankdatei angelegt werden soll. Dieser Name muss in Kleinbuchstaben angegeben werden!
FDS_USER Der Name des Benutzers, welchen Sie für den Betrieb des Fedora DS eingerichtet haben.
FDS_GROUP Der Name der Gruppe, welche Sie für den Betrieb des Fedora DS eingerichtet haben.
FDS_ROOT Das Root-Verzeichnis der Fedora DS Installation
FDS_INIT_SCRIPT Das Init-Script, welches zum Starten und Stoppen des Fedora DS verwendet wird. Der Standardwert sollte in Ordnung sein, wenn Sie sich an dieses Howto gehalten haben. Wird nur benötigt, wenn entweder in FDS_CMD_START oder FDS_CMD_STOP verwendet.
FDS_CMD_START Das Kommando, welches zum Starten des Fedora DS verwendet werden soll.
FDS_CMD_STOP Das Kommando, welches zum Stoppen des Fedora DS verwendet werden soll.

Bevor Sie das init-nssdb.sh Script ausführen, beachten Sie bitte das Folgende:

  1. Passen Sie mindestens die Parameter SS_DB_PASSWORD, FDS_SERVER_CERT_PWD und FDS_INSTANCE an Ihre Umgebung an.
  2. Achten Sie darauf, dass Sie Ihre MY_INSTANCE in jedem Fall in Kleinbuchstaben eingeben.
  3. Sollten Sie bereits Zertifikatsdaten gespeichert haben, erstellen Sie bitte eine Sicherungskopie, da diese gelöscht werden.

Führen Sie, nachdem Sie das Script in Ihrem Arbeitsverzeichnis gespeichert und wie beschrieben die notwendigen Anpassungen an den Parametern vorgenommen haben, die folgenden Kommandos aus:
-bash-3.1# chmod 775 ./init-nssdb.sh
-bash-3.1# ./init-nssdb.sh

Dies kann sowohl dann gemacht werden, wenn der Fedora DS ausgeführt wird, als auch wenn er beendet, bzw. noch nicht gestartet wurde.

Nachdem Sie das Script erfolgreich ausgeführt haben, werden im Verzeichnis /opt/fedora-ds/alias diverse Dateien angelegt worden sein. Die wichtigsten von ihnen erläutert die nachfolgende Tabelle:

Datei/Kommando Bedeutung/Verwendung
noise.txt Wir erstellen auf diese Weise eine Datei mit einer möglichst zufälligen, extrem schwer zu eratenden Zeichenkette. Die NSS Security Library verwendet diese bei der Erstellung von Zertifikaten.
pwdfile.txt Wird von der NSS Security Library verwendet, wenn Zertifikate zu erstellen sind.
secmod.db NSS Security Module Datenbankdatei
slapd-MY_INSTANCE-cert8.db Datenbank der Zertifikate
slapd-MY_INSTANCE-key3.db Datenbank der Zertifikatsschlüssel
slapd-MY_INSTANCE-pin.txt Der Fedora DS liest das für die Initialisierung von SSL/TLS notwendige Passwort beim Starten aus dieser Datein, wenn sie vorhanden ist. Anderenfalls unterbricht er den Startvorgang und wartet auf die Eingabe dieses Passworts


OpenSSL-Zertifikate

Wie einleitend zum Thema SSL/TLS bereits erwähnt, verwendet der Fedora DS die NSS Security Library, wodurch die Verwendung von standard OpenSSL Zertifikaten nicht so ohne weiteres umgesetzt werden kann. Hierzu ist es notwendig, dass das OpenSSL-Zertifikat in ein Format umgewandelt wird, welches vom Fedora DS verwendet werden kann.

  1. Sie sollten an dieser Stelle über eine eingerichtete Zertifikatsdatenbank verfügen, bevor Sie damit beginnen, die folgenden Schritte durch zu gehen.
  2. Die folgenden Beispiele gehen davon aus, dass das zu konvergierende Zertifikat und der zugehörige Schlüssel in zwei von einander getrennten Dateien vorliegen.
  3. In den folgenden Kommandos sollten Sie „Server-Cert“ jeweils durch den CN-Wert des zu konvergierenden Zertifikats ersetzen, z.B. „ldap.my.domain.tld“.
  4. Der abschliessende - am Ende von slapd-MY_INSTANCE--Parameterwerten ist bei allen hier verwendeten NSS Cert-Utils sehr wichtig. Das -P Flag ist der Datenbank-Präfix-Name. Normalerweise benennt NSS seine Datenbanken lediglich cert8db, usw. Der Präfix erlaubt es Ihnen, mehrere Datenbankdateien in ein und dem selben Verzeichnis zu speichern. Dies wird beispielsweise dann notwendig, wenn Sie mehrere Directory Server Instanzen betreiben. Hierbei hat jede Instanz ihre eigen Security-Datenbank.

OpenSSL CA-Root-Zertifikat

Zunächst muss das normaler Weise im PEM Format vorliegende CA-Root-Zertifikat in ein PKCS#12-formatiertes Zertifikat konvergiert werden. Hierzu führen Sie bitte das folgende Kommando aus, wobei Sie „My Main CA“ durch den Common Name ersetzen, welchen Sie bei der Erstellung des Zertifikats angegeben haben:

-bash-3.1# /opt/fedora-ds/shared/bin/certutil -P slapd-MY_INSTANCE- -d /opt/fedora-ds/alias -A -t "CT,," -a -i /path/to/cacert.pem -n "My Main CA"
Wenn Sie über mehrere CA-Root-Zertifikate verfügen, wiederholen Sie diesen Schritt einfach ensprechend oft unter Verwendung des jeweils nächsten Zertifikats. Achten Sie dabei darauf, dass Sie auch für jedes CA-Root-Zertifikat einen eindeutigen Namen vergeben → -n „My Main CA“

OpenSSL Server-Zertifikat

Beginnen wir damit, das zu konvergierende OpenSSL-Zertifikat in ein passendes Format umzuwandeln - PKCS#12 - welches in die NSS Datenbank importiert werden kann.

-bash-3.1# cd /opt/fedora-ds
-bash-3.1# openssl pkcs12 -export -in /path/to/ssl-cert.pem -inkey /path/to/ssl-key.pem -out ssl-cert.p12 -name "Server-Cert"
Jetzt haben Sie mit der Datei /opt/fedora-ds/ssl-cert.p12 ein PKCS#12-formatiertes Zertifikat vorliegen, welches Sie lediglich noch über ein NSS-Tool in die Zertifikatsdatenbank zu importieren brauchen.
-bash-3.1# /opt/fedora-ds/shared/bin/pk12util -i ssl-cert.p12 -d /opt/fedora-ds/alias -P slapd-MY_INSTANCE-

Zertifikate exportieren

Stellen Sie sich vor, Sie betreiben mehr als nur einen Fedora DS, was beispielweise dann der Fall sein dürfte, wenn Sie eine der möglichen Varianten der Replikation implementieren möchten. Sollen dann auch noch alle Server SSL-aktiviert betrieben werden, so ist es notwendig, dass die weiter oben beschriebenen Schritte auf allen Servern wiederholt werden. Glüglicherweise ist es jedoch auch möglich, Zertifikate aus der NSS Zertifikatsdatenbank eines Fedora DS zu exportieren, um sie dann in einer weiteren Instanz oder einem separaten Server zu importieren.

Ferner müssen LDAP-Clients, welche über SSL/TLS mit dem Fedora DS kommunizieren sollen, über das Root-Zertifikat der CA verfügen, welche das durch den Server verwendeten Zertifikate gezeichnet hat. Normalerweise verwenden man hierfür einfach des CA-Root-Zertifikat der normalerweise verwendeten OpenSSL CA. Hat man jedoch eine eigene, auf NSS basierende CA eingerichtet und verwendet oder das OpenSSL CA-Root-Zertifikat nicht zu Stelle (was eigentlich nicht wirklich passieren sollte), dann kann es schon recht nützlich sein, von dieser Möglichkeit gebrauch machen zu können.

Ein LDAP-Client kann auch der Fedora DS selbst sein, was z.B. dann der Fall ist, wenn er zum Zwecke der Replikation die Verbindung zu einem weiteren Server aufnimmt und dies über eine SSL/TLS-gesicherte Leitung geschehen soll.

CA-Root-Zertifikat

Da wir primär für jeden Fedora DS ein eigenes Zertifikat benötigen, ist das Exportieren von Zertifikaten besonders für das verwendete CA-Root-Zertifikat interessant. Hierzu ist der Aufruf des folgenden Kommandos bereits ausreichend, wobei Sie „My Main CA“ durch den Namen ersetzen müssen, unter dem das Zertifikat in der Zertifikatsdatenbank gespeichert ist:

-bash-3.1# /opt/fedora-ds/shared/bin/certutil -L -d /opt/fedora-ds/alias -P slapd-MY_INSTANCE- -n "My Main CA" -a > ./cacert.asc

Der Parameter -a bestimmt, dass Sie das zu exportierende Zertifikat im ASCII 1113 Format wünschen. Benötigen Sie hingegen ein binäres DER-kodiertes Zertifikat, so verwenden Sie statt dessen den -r Parameter.
Wenn Sie weder -a nocht -r angeben, wird das zu exportierende Zertifikat einfach in einem durch Menschen lesbaren Format ausgegeben.

Zertifikate importieren

Wenn Sie wie zuvor beschrieben, ein CA-Root-Zertifikat auf einem Fedora DS exportiert haben, somit also (nach diesem Howto) die Datei cacert.asc vorliegen haben, können Sie dieses nun auf weitern Fedora DS importieren. Natürlich setzt dies voraus, dass Sie die weiter oben beschriebenen Schritte zur Initialisierung der NSS-Library auf diesem bereits ausgeführt haben.

Import in einen weiteren Fedora DS

Um das exportierte CA-Root-Zertifikat in einem weiteren Fedora DS zu importieren, genügt der Aufruf des folgenden Kommandos, wobei Sie „My Main CA“ durch den Namen ersetzen müssen, den Sie beim Exportieren des Zertifikats angegeben haben und unter welchem das Zertifikat in der Zertifikatsdatenbank gespeichert werden soll:

-bash-3.1# /opt/fedora-ds/shared/bin/certutil -A -d /opt/fedora-ds/alias -P slapd-MY_INSTANCE- -n "My Main CA" -t "CT,," -a -i /path/to/cacert.asc

Import in den Administration Server

Entsprechend dem Import des CA-Root-Zertifikats in einen weiteren Fedora DS, kann das Zertifikat nun auch noch in den Administartion Server importiert werden. Dies ist dann notwendig, wenn Sie den Administration Server dazu bewegen wollen, seine Kommunikation mit dem Directory Server ebenfalls über SSL/TLS zu verschlüsseln. Um dies zu ermöglichen ist es notwendig, dass der Administration Server das Root-Zertifikat der CA in seiner Zertifikatsdatenbank aufgenommen hat, welche das durch den Directory Server verwendete Zertifikat gezeichnet hat, mit dem über SSL/TLS kommuniziert werden soll.

Der Administration Server such nach seine Schlüssel- und Zertifikatsdatenbanken ebenfalls im Verzeichnis /opt/fedora-ds/alias. Anders jedoch als der Directory Server, verwendet er den Präfix admin-serv-hostname- wobei hostname mit dem Hostname der Maschine zu ersetzen ist, auf welcher der Administration Server betrieben wird. Lautet der Hostname des Rechners beispielsweise ldap1, so lautet der Adminstration Server Datenbankdatei-Präfix admin-serv-ldap1-.

Das Importieren des zuvor exportierten CA-Root-Zertifikats in die Zertifikatsdatenbank des Administration Server läuft analog zum Importieren des Zertifikats in die Datenbank des Directory Server. Einziger Unterschied ist hierbei der Datenbankdateipräfix. Führen Sie hierzu das folgende Kommando aus, wobei Sie darauf achten, auch hier den Wert des Namens My Main CA anzupassen und den richtigen Hostname (in Kleinbuchstaben) zu verwenden:

-bash-3.1# /opt/fedora-ds/shared/bin/certutil -A -d /opt/fedora-ds/alias -P admin-serv-hostname- -n "My Main CA" -t "CT,," -a -i /path/to/cacert.asc

Sollten Sie beim Exportieren des Zertifikats statt des ASCII-, das DER-Format gewählt haben, so lassen Sie bitte den -a Parameter weg!

Es kann sein, dass Sie nach dem Passwort gefragt werden, welches zur Absicherung der Datenbankdateien des Administration Server verwendet wird. Wenn Sie bis anhin noch keines vergeben hatten, so geben Sie bitte ein starkes Passwort an, welches Sie nicht vergessen sollten!

Da der Fedora AS ebenso wie der Fedora DS nicht nur lesend, sondern auch schreibend auf die Daten der NSS-Library zugreifft, müssen Sie nun noch Besitz- und Zugriffsrechte entsprechend setzen.
-bash-3.1# chown fedora-ds:fedora-ds /opt/fedora-ds/alias/admin-serv-*
-bash-3.1# chmod 600 /opt/fedora-ds/alias/admin-serv-*
Sie müssen den Administration Server nach erfolgreichem Import des CA-Root-Zertifikats neu starten, damit dieser das neue Zertifikat kennt.
-bash-3.1# /opt/fedora-ds/restart-admin

SSL aktivieren

An dieser Stelle nun sollten Sie erfolgreich Ihre CA-Root-Zertifikate, sowie das durch den Fedora DS zu verwendende Zertifikat importiert haben. Somit ist es nun an der Zeit, den Fedora DS mit aktiviertem SSL neu zu starten.

Hierzu legen Sie zunächst die Datei /root/build/fedora-ds/ssl_enable.ldif an und fügen den folgenden Inhalt ein:

dn: cn=encryption,cn=config
changetype: modify
replace: nsSSL3
nsSSL3: on
-
replace: nsSSLClientAuth
nsSSLClientAuth: allowed
-
add: nsSSL3Ciphers
nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,
 +rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,
 +fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,
 +tls_rsa_export1024_with_des_cbc_sha
-
add: nsKeyfile
nsKeyfile: alias/slapd-MY_INSTANCE-key3.db
-
add: nsCertfile
nsCertfile: alias/slapd-MY_INSTANCE-cert8.db

dn: cn=config
changetype: modify
add: nsslapd-security
nsslapd-security: on
-
replace: nsslapd-ssl-check-hostname
nsslapd-ssl-check-hostname: off

Stellen Sie sicher, dass Sie MY_INSTANCE mit dem auf Ihre Umgebung zutreffenden Wert in Kleinbuchstaben ersetzt haben.

Anschiessend verwenden Sie ldapmodify um dies in Ihrem Directory Server eintragen zu lassen:
-bash-3.1# /opt/fedora-ds/shared/bin/ldapmodify -x -D "cn=directory manager" -w - -f /root/build/fedora-ds/ssl_enable.ldif

  1. Sollten Sie eine Fehlermeldung wie diese erhalten /opt/fedora-ds/shared/bin/ldapmodify: error while loading shared libraries: libssldap60.so: cannot open shared object file: No such file or directory, wechseln Sie bitte zunächst in das Verzeichnis /opt/fedora-ds/shared/bin
  2. Sollten Sie in das Verzeichnis /opt/fedora-ds/shared/bin gewechselt haben, also ./ldapmodify aufrufen, lassen Sie den -x-Parameter weg.

Weiter benötigen Sie noch die Datei /root/build/fedora-ds/addRSA.ldif
dn: cn=RSA,cn=encryption,cn=config
objectclass: top
objectclass: nsEncryptionModule
cn: RSA
nsSSLPersonalitySSL: Server-Cert
nsSSLToken: internal (software)
nsSSLActivation: on

Stellen Sie sicher, dass Sie Server-Cert mit dem auf Ihre Umgebung zutreffenden Wert ersetzt haben, z.B. ldap.my.domain.tld.

Auch hierfür verwenden Sie weider ldapmodify, um dies in den Directory Server eintragen zu lassen:
-bash-3.1# /opt/fedora-ds/shared/bin/ldapmodify -x -D "cn=directory manager" -w - -a -f /root/build/fedora-ds/addRSA.ldif

  1. Sollten Sie eine Fehlermeldung wie diese erhalten /opt/fedora-ds/shared/bin/ldapmodify: error while loading shared libraries: libssldap60.so: cannot open shared object file: No such file or directory, wechseln Sie bitte zunächst in das Verzeichnis /opt/fedora-ds/shared/bin
  2. Sollten Sie in das Verzeichnis /opt/fedora-ds/shared/bin gewechselt haben, also ./ldapmodify aufrufen, lassen Sie den -x-Parameter weg.

Zu guter letzt nun noch den Fedora DS neu starten:
-bash-3.1# /etc/init.d/fedora-ds restart
oder
-bash-3.1# /opt/fedora-ds/slapd-MY_INSTANCE/restart-slapd

Das init-nssdb.sh Script legt bei seiner Ausführung eine …-pin.txt Datein an, welche das Passwort für das zu verwendende Zertifikat beinhaltet. Sollte beim Starten des Fedora DS diese Datei nicht vorhanden sein, werden Sie nach dem Passwort für das zu verwendende Zertifikat gefragt. Wenn das Starten also einfach stehen bleibt, geben Sie das Passwort ein und bestätigen mit der Entertaste.

Replication

Der Fedora DS ist in der Lage, seine Directory Trees mit beliebig vielen weiteren Directory Servern zu replizieren, wobei er sogar die Multi-Master-Replikation beherscht.

Im folgenden werden wir uns nun mit den unterschiedlichen Arten der durch den Fedora DS implementierten Replikation beschäftigen.

Single Master Replication

Hub Replication

Multi Master Replication

Via Script

Das mmr.pl Perl Script ermöglicht es uns, eine Multi Master Replication einrichten zu lassen, ohne dass wir uns darum kümmern müssen, was hierzu alles notwendig ist. Allerdings setzt die Verwendung dieses Scripts voraus, dass das Perl-Modul Net::LDAP installiert ist. Unter Fedora sollte dieser Abhängigkeit mittels des Aufrufs des folgenden Kommandos genüge getan sein:

-bash-3.1# yum -y install perl-LDAP
Nun laden Sie sich die Datei herunter, ändern Sie die Zugriffsrechte darauf und führen Sie sie aus, wobei ich davon ausgehe, dass Sie sie unter /root speichern.
-bash-3.1# cd /root
-bash-3.1# chmod 775 ./mmr.pl
-bash-3.1# ./mmr.pl --host1 mm01.domain.tld --host2 mm02.domain.tld --host1_id 1 --host2_id 2 --bindpw XXX --repmanpw YYY --create
XXX steht hier für das von Ihnen verwendete Passwort des Benutzers cn=Directory Manager und YYY für dasjenige Passwort, welches für den Benutzer repman angelegt werden wird. Letzterer wird vom Script selbst angelegt werden, wenn er noch nicht existiert. Der genaue DN lautet cn=repman,cn=config. Dieser Benutzer wird von den an der Replikation beteiligten Server zur Herstellung der Verbindung untereinander und Durchführung der eigentlichen Replikation verwendet werden.

  1. Sollten Sie bereits SSL/TLS auf den an der Replikation beteiligten Servern aktiviert haben, dann empfiehlt es sich, die Verwendung von SSL für die Replikation ebenfalls zu aktivieren. Hierzu fügen Sie einfach den Parameter –with-ssl zum oben genannten Kommando hinzu.
  2. Um die Replication wieder zu entfernen, wenden Sie einfach das folgende Kommando an:
    -bash-3.1# # mmr.pl --host1 mm01.domain.tld --host2 mm02.domain.tld --bindpw XXX --remove

Via GUI

Host 1
Host 2

Deinstallation

Um den Fedora DS zu deinstallieren, wenden wir die folgenden Kommandos an. Dies setzt jedoch voraus, dass sowohl der Directory Server selbst, als auch der Administation Server gestoppt wurden und die ursprüngliche Installation mittels eines Rpm-Packetes statt fand.

-bash-3.1# rpm -e fedora-ds
-bash-3.1# rm -Rfv /opt/fedora-ds

Tipps

Pfad zu den globalen Konfigurationsdateien:

/opt/fedora-ds/shared/config/

Directory Server

Wird der Server ausgeführt?

-bash-3.1# ps -eaf | grep ns-slapd
4711      1897     1  0 00:45 ?        00:00:02 ./ns-slapd -D /opt/fedora-ds/slapd-lcm01tgb -i /opt/fedora-ds/slapd-lcm01tgb/logs/pid -w /opt/fedora-ds/slapd-lcm01tgb/logs/startpid
root      4069  3679  0 22:34 pts/0    00:00:00 grep ns-slapd

Administration Server

Pfad zur Konfigurationsdate in welcher die Angabe bezüglich der IP Adresse, an welcher der Admin Server läuschen soll, zu finden ist:

/opt/fedora-ds/admin-serv/config/local.conf