Unterabschnitte

Das LDAPserver-Paket

Dieses Paket ist eine Weiterentwicklung des openldap-Paketes von Jens Vehlhaber (E-MAIL jvehlhaber@buchenwald.de). Es enthält einzig die LDAP-Server-Programme, die LDAP-Client-Programme wurden in ein eigenständiges Paket mit Namen 'LDAPclient' ausgelagert.

Die Einleitung

In diesem Paket wurden die für den Betrieb eines LDAP-Servers (Lightweight Directory Access Protocol) benötigten Programme zusammengefasst.

Die Funktionen

Das LDAPserver-Paket besteht aus folgenden Komponenten:

Die Voraussetzungen

Dieses Paket benötigt zur korrekten Funktion die folgenden Pakete: certs (bei Aktivierung der Verschlüsselung), ldapclient, libdb4, libkrb5-1-4, libldap, libsasl, libssl und libwrap7-6.

Die Installation

Das LDAPserver-Paket wird über das Setup-Menü installiert. Wird eine ältere Paketversion vorgefunden, so wird diese deinstalliert bevor die neuen Programmdateien installiert werden. Nach dem Installieren der Programmdateien wird direkt der Konfigurations-Editor gestartet um die Konfiguration anzupassen. Nach Beendigung dieses Schrittes werden die Konfigurationsdateien generiert und alle benötigten Programme gestartet.

Das Menü im Setup-Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

Die Menüpunkte dürften selbsterklärend sein, da sie keinerlei weitere Eingaben erwarten. Aus diesem Grund wird auf deren Funktion nicht weiter eingegangen.

Die Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt 'Edit configuration' geändert werden. Standardmäßig wird der Editor aufgerufen, der in der Environment- Konfiguration über die Variable 'EDITOR' festgelegt wurde. Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, werden über ein Skript die Anpassungen umgehend wirksam gemacht.

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will findet sie unter /etc/config.d/ldapserver.

Die Parameter

START_LDAPSERVER

Zur Aktivierung des LDAP-Serverprogramms muss dieser Parameter lediglich auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert das Programm.

Gültige Werte: yes, no

Standardeinstellung: START_LDAPSERVER='no'

LDAPSERVER_LDAP_BASEDC

Dieser Parameter zeigt die Basisdomain des LDAP-Verzeichnisbaums an und kann einmalig nur beim Anlegen eines neuen LDAP-Verzeichnisbaums festgelegt werden. Falls noch kein LDAP-Verzeichnis existiert, wird dieser Parameter initial während des Konfigurationsprozesses abgefragt.

Gültige Werte: Base Domain Component

Standardeinstellung: LDAPSERVER_LDAP_BASEDC='privatnet'

LDAPSERVER_LDAP_BASEDN

Dieser Parameter zeigt den Base Distinguished Name des LDAP-Verzeichnisses an und kann einmalig nur beim Anlegen eines neuen LDAP-Verzeichnisbaums festgelegt werden. Falls noch kein LDAP-Verzeichnis existiert, wird dieser Parameter initial während des Konfigurationsprozesses abgefragt.

Gültige Werte: Base Distinguished Name

Standardeinstellung: LDAPSERVER_LDAP_BASEDN='dc=privatnet,dc=lan'

LDAPSERVER_LDAP_ADMIN_NAME

Dieser Parameter zeigt den Namen des LDAP-Administrators an und kann einmalig nur beim Anlegen eines neuen LDAP-Verzeichnisbaums festgelegt werden. Falls noch kein LDAP-Verzeichnis existiert, wird dieser Parameter initial während des Konfigurationsprozesses abgefragt.

Gültige Werte: LDAP-Accountname

Standardeinstellung: LDAPSERVER_LDAP_ADMIN_NAME='ldapadmin'

LDAPSERVER_LDAP_ADMIN_PASS

Über diesen Parameter kann das Kennwort des LDAP-Administratorkontos festgelegt werden.

Gültige Werte: gültiges Kennwort

Standardeinstellung: LDAPSERVER_LDAP_ADMIN_PASS=

LDAPSERVER_TRANSPORT

Über diesen Parameter kann ausgewählt werden über welchen Transport der LDAP-Server angesprochen werden kann. Es kann zwischen dem Standardtransport über Port 389/tcp, dem verschlüsselten Transport über Port 636/tcp oder der Aktivierung beider Varianten gewählt werden.
ACHTUNG
Um den verschlüsselten Transport auswählen zu können muss ein gültiges Zertifikat mit Namen 'slapd.pem' oder ein symbolischer Link gleichen Namens, welcher auf ein gültiges Zertifikat verweist, existieren.


Gültige Werte: default, tls or both

Standardeinstellung: LDAPSERVER_TRANSPORT='default'

LDAPSERVER_TLS_PROTOCOL

Über diesen Parameter kann festgelegt werden welches TLS-Protokoll für die verschlüsselte Kommunikation verwendet werden soll.

Gültige Werte: none, auto, tls1, ssl3 oder ssl2

Standardeinstellung: LDAPSERVER_TLS_PROTOCOL='none'

LDAPSERVER_CLIENT_FORCE_TLS

Über diesen Parameter kann festgelegt werden, ob ein Client-Zertifikat abgefragt werden soll und wie dieses geprüft werden soll.

ignore - Ein Client-Zertifikat wird nicht abgefragt oder ausgewertet.

yes - Ein Client-Zertifikat wird abgefragt. Wird kein Zertifikat zur Verfügung gestellt oder ein ungültiges Zertifikat zur Verfügung gestellt, so wird eine Verbindung umgehend beendet.

no - Ein Client-Zertifikat wird abgefragt. Wird kein Zertifikat zur Verfügung gestellt, so wird eine Verbindung aufrecht erhalten. Wird ein ungültiges Zertifikat zur Verfügung zur Verfügung gestellt, so wird eine Verbindung umgehend beendet.

Gültige Werte: ignore, yes, no

Standardeinstellung: LDAPSERVER_CLIENT_FORCE_TLS='ignore'

LDAPSERVER_MONITOR_ENABLED

Über diesen Parameter kann man festlegen, ob die Monitoring-Funktion des LDAP-Servers aktiviert werden soll oder nicht. Mit welchen Befehlen diese Monitordaten abgefragt werden können wird später noch weiter eingegangen.

Gültige Werte: yes, no

Standardeinstellung: LDAPSERVER_MONITOR_ENABLED='no'

LDAPSERVER_BACKUP

Über diesen Parameter kann die regelmäßige Sicherung der LDAP-Datenbank aktiviert werden. Wird der Parameter auf `yes' gesetzt, so wird zum festgelegten Zeitpunkt der LDAP-Server gestoppt, die Datensicherung durchgeführt und dann der LDAP-Server wieder gestartet. Die Einstellung 'no' deaktiviert die Sicherungsfunktion.

Gültige Werte: yes, no

Standardeinstellung: LDAPSERVER_BACKUP='no'

LDAPSERVER_BACKUP_PATH

Über diesen Parameter wird der absolute Pfad festgelegt in welchem die LDAP-Datenbank gesichert werden soll. Im angegebenen Verzeichnis wird dann zum festgelegten Zeitpunkt eine Sicherungsdatei abgelegt, deren Dateiname sich wie folgt zusammensetzt: <LDAPSERVER_LDAP_BASEDN>-<DATE>-<TIME>.ldif

Gültige Werte: Absoluter Verzeichnispfad

Standardeinstellung: LDAPSERVER_BACKUP_PATH='/backup'

LDAPSERVER_BACKUP_CRON_SCHEDULE

Über diesen Parameter wird festgelegt zu welchem Zeitpunkt bzw. in welchem Intervall die LDAP-Datenbank gesichert werden soll. Die fünf Teilparameter haben dabei folgende Bedeutung:
1 - Minuten, 2 - Stunden, 3 - Tag des Monats, 4 - Monat, 5 - Wochentag.

D.h. bei Verwendung der Standardeinstellung wird jeden Sonntag um 02:03h eine Sicherung der LDAP-Datenbank durchgeführt. Wer Näheres über die verwendete Befehlssyntax erfahren möchte, sollte über eine Internet-Suchmaschine nach `man' und `crontab' suchen.

Gültige Werte: Crontab-spezifischer Parametereintrag

Standardeinstellung: LDAPSERVER_BACKUP_CRON_SCHEDULE='3 2 * * 0'

Verschiedenes

Neuen LDAP-Verzeichnisbaum anlegen (Create new LDAP tree)

Nach der Installation des Paketes wird automatisch ein initialer LDAP-Verzeichnisbaum angelegt. Will man die grundlegende Struktur des Verzeichnisbaums jedoch modifizieren, so kann man über diesen Menüpunkt eine bestehende LDAP-Datenbank löschen und mittels einer LDIF-Datei neu anlegen.

LDAP-Monitorinformationen abfragen

Hat man den Parameter LDAPSERVER_MONITOR_ENABLED='yes' gesetzt, so ist es möglich Statusinformationen vom LDAP-Server abzufragen. Eine Abfrage kann z.B. wie folgt aussehen (Natürlich sind die Parameter entsprechend der eigenen Konfiguration anzupassen):

ldapsearch -h localhost -x -D cn=ldapadmin,dc=privatnet,dc=lan -b 'cn=Monitor' -W -s base '(objectClass=*)' '*' '+'

Will man z.B. die verfügbaren Backends anzeigen, so gibt man den folgenden Befehl ein:

ldapsearch -h localhost -x -D cn=ldapadmin,dc=privatnet,dc=lan -b 'cn=Backends,cn=Monitor' -W -s base '(objectClass=*)' '*' '+'

Verschlüsselte Verbindung testen

Mit Hilfe des Openssl-Programms kann man testen, ob eine verschlüsselte Verbindung zum LDAP-Server aufgebaut werden kann. Hierzu gibt man z.B. an der Konsole folgenden Befehl ein (Natürlich sind die Parameter entsprechend der eigenen Konfiguration anzupassen):

openssl s_client -connect localhost:636 -showcerts -state -CAfile /var/certs/ssl/certs/ca.pem

SQL-Fehlermeldungen in der Logdatei

Beim Start des LDAP-Daemon werden unter Umständen folgende Meldungen in die Logdatei /var/log/messages geschrieben:

eis slapd[19429]: sql_select option missing
eis slapd[19429]: auxpropfunc error no mechanism available
eis slapd[19429]: _sasl_plugin_load failed on sasl_auxprop_plug_init
                  for plugin: sql

Diese Meldungen werden durch die im Verzeichnis /usr/lib/sasl2 befindlichen SQL-Include-Dateien 'libsql.so*' verursacht, welche bei der Initialisierung der SASL2-Funktionen geladen werden. Diese Meldungen haben keinen Einfluss auf die Funktionen des LDAP-Servers und können ignoriert werden. Alternativ können auch die genannten Include-Dateien umbenannt bzw. gelöscht werden, was unter Umständen jedoch die Funktion anderer Pakete beeinflussen kann.

LDAP-Client-Programme/-Editoren

Hier ein paar Client-Programme über welche ich bei der Paketerstellung gestolpert bin:

LDAP-Länderformat

Die standardmäßig ausgelieferten LDAP-Schemata legen fest, dass die Felder 'c', 'countryName' und 'mozillaHomeCountryName' einen zweistelligen Länderkode nach ISO-3166 enthalten dürfen. Da das ursprüngliche openldap-Paket eine solche Einschränkung nicht vorgenommen hat, werden aus Gründen der Kompatibilität modifizierte Schemata mitgeliefert. Diese Dateien werden verwendet, wenn bei der Installation ein installiertes openldap-Paket gefunden wird. Bei einer Neuinstallation werden die Standarddateien verwendet.

Beispiel:

Belgien -> BE Deutschland -> DE Liechtenstein -> LI Luxemburg -> LU Niederlande -> NL Österreich -> AT Schweiz -> CH

Weitere LDAP-Befehle

Exportieren des LDAP-Verzeichnisbaums:

ldapsearch -x -D cn=ldapadmin,dc=privatnet,dc=lanW > output.ldif

Importieren einer LDIF-Datei in das LDAP-Verzeichnis:

ldapadd -x -D cn=ldapadmin,dc=privatnet,dc=lanW -f input.ldif

Die unterstützten LDAP-Backends

Der LDAP-Server unterstützt verschiedene Wege, um mit seiner Umgebung zu kommunizieren. Diese Schnittstellen werden 'Backend' genannt.

config - Diese Schnittstelle gewährt den Zugriff auf die Konfiguration eines LDAP-Servers.

bdb - Die Oracle Berkeley Datenbank wird standardmäßig für das Speichern der LDAP-Daten verwendet.

hdb - Die Hierarchical Oracle Berkeley Datenbank ist größtenteils identisch mit der 'bdb', unterstützt jedoch zusätzlich einen hierarchisches Datenbankaufbau und und erlaubt das Umbenennen von Datenbankzweigen.

ldap - Die LDAP-Schnittstelle leitet Anfragen an einen entfernten LDAP-Server weiter und agiert als eine Art Forwarding Proxy für LDAP-Anfragen.

ldif - Die LDIF-Schnittstelle speichert LDAP-Daten im LDIF-Dateiformat.

meta - Diese Schnittstelle ist größtenteils identisch mit der 'ldap', dient aber hauptsächlich dazu Anfragen an mehrere entfernte LDAP-Server weiter zu leiten und erlaubt zusätzlich die Maskierung von Datenbankzweigen.

monitor - Diese Schnittstelle gewährt den Zugriff auf Statusdaten eines LDAP-Servers.

relay - Diese Schnittstelle erlaubt es in der gleichen LDAP-Instanz Datenbankzweige umzubenennen und in virtuelle Zweige umzuleiten. Dabei können Attribut- und Objekteigenschaften manipuliert werden.

Regelmäßige LDAP-Anfragen von Windows Klienten

Bei der Prüfung der LDAP Log-Einträge stellte ich fest, dass alle 15min eine LDAP-Suchanfrage von meinen Windows-Klienten erfolgte, die ich mir nicht erklären konnte.
Eine Analyse mittels des MS Network Monitors ergab, dass diese von dem Prozess LSASS.EXE veranlasst wurden. Die anschließende Suche im Internet ergab, dass diese Anfragen Teil des Sicherheitsprozesses eines Windows- Rechners ist, der versucht einen Active Directory Server zu befragen. Mir ist kein Weg bekannt wie diese Anfragen eventuell unterbunden werden können, sodass man wohl damit leben muss.

Die Details dieses Prozesses werden hier erklärt: http://blogs.technet.com/b/askds/archive/2009/09/21/understanding-ldap-security-processing.aspx

Das Glossar