Unterabschnitte
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.
In diesem Paket wurden die für den Betrieb eines LDAP-Servers
(Lightweight Directory Access Protocol) benötigten Programme
zusammengefasst.
Das LDAPserver-Paket besteht aus folgenden Komponenten:
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.
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 ist wie folgt aufgebaut:
- OpenLDAP Server Administration
- View documentation: Anzeigen der Dokumentation
- Edit configuration: Bearbeiten der Konfiguration
- Advanced configuration file handling: Konfigurationen verwalten
- Show status: Status des LDAP-Daemon anzeigen
- Start service: Starten des LDAP-Daemon
- Stop service: Stoppen LDAP-Daemon
- Restart service: Neustarten des LDAP-Daemon
- Create new LDAP tree: Neuen LDAP-Verzeichnisbaum anlegen
- Backup LDAP database: LDAP-Verzeichnisbaum sichern
- Restore LDAP database: LDAP-Verzeichnisbaum wiederherstellen
- Return: Untermenü verlassen
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 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.
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.
-
- 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'
-
- 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
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.
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
- BaseDN - Base Distinguished Name
- DN - Distinguished Name
- LDAP - Lightweight Directory Access Protocol
- RDN - Relative Distinguished Name