Inhaltsverzeichnis
LDAP-Server
Der LDAP-Server wird so eingerichtet, daß er zur Namensauflösung verwendet werden kann, als Ersatz/Erweiterung der /etc/hosts.
LDAP-Browser Empfehlungen
Eclipse Directory Studio
Wohl der beste kostenfreie LDAP-Browser (Java wird benötigt): Eclipse Directory Studio (von Apache.org)
JXplorer
Guter kostenfreier LDAP-Browser (Java nötig): JXplorer
Softerra LDAP Administartor
Kostenpflichtig, aber verdammt gut (nur für Windows).
LDAP-Server einrichten
ACHTUNG:
Diese Beispiele beinhalten keine SSL/TLS-verschlüsselung. Mehr zum Thema Verschlüsselung im OpenLDAP Reference Manual.
Benötigte Pakete
> aptitude install slapd ldap-utils
Weitere Schemata
Um Hostnamen über LDAP auflösen zu können, werden folgende zusätzliche Schemata benötigt.
> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif > ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Weiterführendes dazu hier: Ubuntu OpenLDAP Wiki
Administrativer Account für cn=config
Damit man nicht nur als root, sondern auch per LDAP-Browser die Konfigurationen des LDAP-Servers administrieren kann, wird mit folgendem LDIF (admin.ldif) ein entsprechender Account im LDAP angelegt.
Zugangsdaten
Bind DN: cn=admin,cn=config Passwort: x (kleines x) Base DN: cn=config
admin.ldif
###########################################################
# REMOTE CONFIGURATION DEFAULTS
###########################################################
# Some defaults need to be added in order to allow remote
# access by DN cn=admin,cn=config to the LDAP config
# database. Otherwise only local root will
# administrative access.
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}8UADnwyNyz8s+PHr+HCiX98tZC2LzvrS
> ldapadd -Y EXTERNAL -H ldapi:/// -f admin.ldif
Passwort-Hash erzeugen
Den o.g. PW-Hash kann man per slappasswd ändern.
> slappasswd
New password: 1234 (Bleibt bei der Eingabe verborgen)
Re-enter new password: 1234
{SSHA}+TGx82Jc7Mp5TgWJVnpOSFHaLaEHUBoq
Alternativ kann man Klartext-Passwörter verwenden → unsicher!
Base DN anlegen
Um Daten im LDAP zu speichern muß eine Base DN angelegt werden, unterhalb derer sich die Daten dann befinden.
Dazu weist man den LDAP-Server an das entsprechende Modul für das gewünschte Backend einzubinden und erzeugt innerhalb dieses Backends seine Base DN.
Als Backend soll HDB (Hierarchical Berkeley DB) verwendet werden.
back_hdb.ldif
# increase loglevel
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
# load hdb module
dn: cn=module,cn=config
objectClass: olcModuleList
objectClass: olcConfig
objectClass: top
cn: module
olcModuleLoad: /usr/lib/ldap/back_hdb.la
# initialize base dn
dn: olcDatabase=hdb,cn=config
objectClass: olcHdbConfig
objectClass: olcDatabaseConfig
objectClass: olcConfig
objectClass: top
olcDatabase: hdb
olcSuffix: dc=domain,dc=de
olcAccess: to * by * write
olcRootDN: cn=admin,dc=domain,dc=de
olcDbDirectory: /var/lib/ldap/
olcDbIndex: objectClass eq
olcDbIndex: cn,sn,uid pres,eq,approx,sub
olcRootPW: {SSHA}8UADnwyNyz8s+PHr+HCiX98tZC2LzvrS
> ldapadd -Y EXTERNAL -H ldapi:/// -f back_hdb.ldif
ACHTUNG:
Die verwerndete ACL olcAccess: to * by * write ist unsicher, da jeder LDAP-Benutzer Schreibrechte auf alles hat und sollte den Gegebenheiten entsprechend modifiziert werden. Eine Abhandlung über ACLs würde den Rahmen dieses Wiki-Eintrags sprengen. Mehr zum Thema ACLs im OpenLDAP Reference Manual.
Zugangsdaten Admin
Bind DN: cn=admin,dc=domain,dc=de Passwort: x (kleines x) Base DN: dc=domain,dc=de
Base DN initialisieren
Damit man den LDAP-Server sinnvoll nutzen kann, müssen Daten rein.
init.ldif*
dn: dc=domain,dc=de objectclass: dcObject objectclass: organization o: b2c.de GmbH dc: domain dn: ou=hosts,dc=domain,dc=de changetype: add objectclass: organizationalUnit ou: hosts dn: cn=mx.domain.de,ou=hosts,dc=domain,dc=de cn: mx.domain.de cn: mx1.domain.de ipHostNumber: 192.168.0.148 objectClass: ipHost objectClass: device
Die IP 192.168.0.148 ist die IP des Mailservers mx.domain.de.
> ldapadd -Y EXTERNAL -H ldapi:/// -f init.ldif
Die Base DN wird mit einem eintrag versehen (dn: dc=domain,dc=de - Typ dcObject und oragnization). Das ist zwingend nötig, da beim Anlegen der Base DN diese anfangs nur "virtuell" existiert und erst "betankt" werden kann, wenn man sie LDAP-konform (wie oben) anlegt.
Des Weiteren werden ein Knoten für Hosts (ou=hosts), sowie ein exemplarischer Eintrag für eine Host ↔ IP Zuordnung angelegt.
Linux Client einrichten
Benötigte Pakete
> aptitude install libnss-ldap
nsswitch.conf
> vi /etc/nsswitch.conf
Die Zeile für die Namensauflösung wie folgt anpassen.
hosts: files ldap dns
Man beachte das Wörtchen ldap ;)
ldap.conf
> vi /etc/ldap.conf
Folgende Zeilen anpassen bzw. auskommentieren.
base dc=domain,dc=de uri ldap://192.168.0.232/ nss_base_hosts ou=hosts,dc=domain,dc=de?one
Beim URI beachten, daß dort die richtige IP des LDAP-Servers steht. Es können mehrere Server angegeben werden, z.B.
uri ldap://10.0.0.1/ ldap://10.0.0.2/
