HELIOS Authentication Server LDAP

Einleitung Den OpenLDAP-Server manuell einrichten
Voraussetzungen Konfiguration und Benutzerverwaltung des LDAP-Servers
Was ist LDAP? Deinstallation
Installation Versionen/Feedback
LDAP-Clientkonfiguration mit „authsrv“
Die LDAP-Verbindung prüfen



Einleitung

Der HELIOS Autorisierungsserver („authsrv“) unterstützt jetzt auch eine Autorisierung über LDAP gegen folgende LDAP-Server:

  • Mac OS X Server („Open Directory“ / Kennwortserver)
  • Univention Corporate Server (LDAP-Server)
  • OpenLDAP (LDAP-Server; auf SUSE 10.2 getestet) 

„authsrv“ ist auf dem HELIOS Server installiert und fungiert als LDAP-Client, der auf die LDAP-Datenbank mit Lesezugriff zugreift.
In diesem Artikel beschreiben wir Installation und Konfiguration von „authsrv“ für die drei LDAP-Serversysteme Mac OS X Server, Univention und OpenLDAP. Beachten Sie bitte, dass die Konfiguration, insbesondere für OpenLDAP, besondere Kenntnisse erfordert und daher nur von erfahrenen Systemintegratoren durchgeführt werden sollte.

Hinweis: Kunden, die bereits AD/PDC verwenden, benötigen LDAP nicht. Stattdessen können sie das existierende AD/PDC nutzen.


Voraussetzungen

Was ist LDAP?
  • LDAP (Lightweight Directory Access Protocol) ist ein Netzwerkprotokoll zum Abfragen und Ändern von Verzeichnisdiensten, das über TCP/IP läuft
  • Sämtliche Benutzer und Gruppen werden in der LDAP-Datenbank gespeichert
  • Die von HELIOS unterstützte Version von LDAP ist LDAPv3
  • SASL (Simple Authentication and Security Layer) ist ein Protokoll zur Auswahl der Verschlüsselung, das in Kombination mit LDAP verwendet werden kann. Dieses Protokoll wird benötigt, um mit dem Apple Kennwortserver zu kommunizieren.

Überprüfung des Kennworts

  • Auf Mac OS X Server werden Kennwörter mit dem Apple „Workgroup Manager“ erzeugt und gegen den Apple Kennwortserver geprüft
  • Auf dem Univention Corporate Server werden Kennwörter gegen das NTLM-Kennwort geprüft
  • Auf OpenLDAP muss das HELIOS Kenwort manuell eingerichtet werden

Werden Kennwörter in LDAP gespeichert, können verschieden Verschlüsselungsmethoden verwendet werden (HELIOS benötigt das NTLM- oder HELIOS Kennwort):

Kennwortverschlüsselung Erklärung
Verschlüsseltes UNIX-Kennwort Von UNIX-Anwendungen verwendet (nicht empfohlen)
NTLMv1-Kennwort Von HELIOS und Samba verwendet
HELIOS Kennwort Von HELIOS verwendet

Verschiedene UNIX-Plattformen enthalten verschieden LDAP-Implementierungen. Teilweise sind diese älter oder inkompatibel. Deshalb liefert HELIOS aktuelle und kompatible LDAP-Bibliotheken für alle Plattformen mit:

LDAP-Libraries in der HELIOS Software Erklärung
libldap_s.so1 LDAP-Bibliothek
libsasl2_s.so1 SASL-Bibliothek
sasl2/ Verzeichnis, welches die von SASL verwendeten Verschlüsselungen enthält

1 Mac OS X: „ibldap_s.dylib“ und „libsasl2_s.dylib“; RS/6000: „libldap_s.a“ und „libsasl2_s.a“


Installation

Der HELIOS Autorisierungsserver unterstützt LDAP, wenn er von HELIOS CD023 oder neuer installiert wurde.

Setzen Sie die Aurorisierungsserver-Präferenz NameServices gemäß den verwendeten LDAP-Systemen, d. h. für Univention und OpenLDAP müssen Sie „LDAP“ zu der Liste hinzufügen, für Mac OS X Server „MACOSX“ (aber NIEMALS beide Werte zusammen!).

Sind dieselben Benutzer sowohl lokal als auch über LDAP verfügbar, möchten Sie vielleicht, dass die Autorisierung des Benutzers bevorzugt über die LDAP-Datenbank als über die lokale Benutzerdatenbank erfolgt. Geben Sie in diesem Fall „+LDAP“ statt „LDAP“ in der Liste für NameServices an.

Falls das System selbst die Autorisierung des Benutzers gegen LDAP vornimmt, ist „+LDAP“ obligatorisch.

Die Option LDAP bevorzugen in HELIOS Admin entspricht dem Wert „+LDAP“.

Beispiele: prefvalue -k 'Programs/authsrv/NameServices' -t str "local,NIS,LDAP" (für Univention- und OpenLDAP-Systeme)
prefvalue -k 'Programs/authsrv/NameServices' -t str "local,NIS,MACOSX" (für Mac OS X Server)


LDAP-Clientkonfiguration mit „authsrv“

Folgende Präferenzen und Attribute sollten über die mitgelieferten Perl-Skripte gesetzt werden:

Skript Erklärung
ldapMacosxPrefs.pl  LDAP-Konfigurationsskript für Mac OS X Server
ldapUniventionPrefs.pl LDAP-Konfigurationsskript für Univention Corporate Server
ldapOpenLDAPPrefs.pl LDAP-Konfigurationsskript für OpenLDAP

Diese Skripte sind nur Beispiele, die vor der Verwendung erst noch angepasst werden müssen. Die anzugebenden Werte hängen vom verwendeten LDAP-Serversystem ab, z. B.:

  • Servername (Mac OS X)
  • Servername, Name des Binds / Kennwort (Univention)
  • Servername, Benutzer- / Gruppenbasis, Name des Binds / Kennwort (OpenLDAP)
LDAP-Filterpräferenzen

Diese Präferenzen, mit Ausnahme von LDAP_Port, müssen mit dem Befehl angegeben werden:
prefvalue -k 'Programs/authsrv/<preference>' -t str <value>

Für LDAP_Port geben Sie Folgendes ein:
prefvalue -k 'Programs/authsrv/LDAP_Port' -t int <value>

Präferenz Beispielwert Erklärung
LDAP_Server localhost LDAP-Servername oder IP-Adresse
LDAP_Port 389 LDAP-Serverport
LDAP_UserBase dc=HELIOS,dc=de Base Pointer in Datenbank
LDAP_GroupBase dc=HELIOS,dc=de Base Pointer in Datenbank
LDAP_BindDN uid=Administrator,cn=users,
dc=univention,dc=local
Name des LDAP-Binds
LDAP_BindPassword secret Kennwort des LDAP-Binds
LDAP_LongUserFilter longName=%s LDAP-Benutzereintrag über Langnamen
LDAP_UserFilter cn=%s LDAP-Benutzereintrag über Kurznamen
LDAP_UserIDFilter longName=%d LDAP-Benutzereintrag über Benutzer-ID
LDAP_GroupFilter cn=%s LDAP-Benutzereintrag über Namen
LDAP_GroupIDFilter gid=%d LDAP-Benutzereintrag über ID
LDAP_GroupMemberFilter user=%s LDAP-Benutzereintrag über Gruppenzugehörigkeit
LDAP-Attribute
Präferenz Beispielname Erklärung
LDAP_UATTR_HeliosPassword heliosPassword HELIOS Kennwort (mit HELIOS „authutil“-Tool erzeugt)
LDAP_UATTR_ClearPassword clearPassword Klartext-Kennwort (nicht empfohlen)
LDAP_UATTR_NTPassword sambaNTPassword NT-Hash
LDAP_UATTR_Name uid Benutzername (z. B. UNIX short name)
LDAP_UATTR_LongName cn Langname des Benutzers (z. B. UNIX GECOS)
LDAP_UATTR_UID uidNumber Benutzer-ID
LDAP_UATTR_PGID gidNumber ID der Primärgruppe
LDAP_UATTR_HomeDirectory homeDirectory Pfad zum Benutzerverzeichnis des Benutzers
LDAP_UATTR_AppleID authAuthority Apple-ID zur Benutzeridentifikation am Apple Kennwortserver (nur Mac OS X Server)
LDAP_GATTR_GID gidNumber Gruppen-ID
LDAP_GATTR_NAME cn Gruppenname
LDAP_GATTR_AppleID authAuthority Apple-ID zur Benutzeridentifikation am Apple Kennwortserver (nur Mac OS X Server)

LDAP-Verbindung prüfen

Nach Installation von „authsrv“ können Sie die LDAP-Verbindung folgendermaßen prüfen:

1. Bauen Sie eine Verbindung mit dem LDAP-Server auf

# socket -v <LDAP_Server> <LDAP_Port>

Gibt der Server die Meldung Successfully connected to server. Going into interactive mode.zurück, ist alles in Ordnung. Konnte die Serververbindung jedoch nicht in angemessener Zeit erfolgreich aufgebaut werden, erhalten Sie die Fehlermeldung Connection timed out oder, falls auf diesem Host oder Port kein LDAP-Dienst läuft, die Meldung Connection refused.

Beispiel:
# cd /usr/local/helios
# bin/socket -v ldaphost 389
socket 1.0.0 (c) 2005 by HELIOS Software Garbsen
Trying to connect to ldaphost port 389 ...
Resolving ip address ...
Address is 172.16.3.228.
Opening socket ...
Done.
Connecting to server ...
Done.
Local port is 44590, remote port is 389.
Successfully connected to server.
Going into interactive mode.

2. Sie können mit dem Befehl „ldapsearch“ die LDAP-Serververbindung prüfen. Dieser Befehl steht üblicherweise auf allen UNIX-Systemen zur Verfügung

Die Parameter können je nach verwendeter Plattform variieren. Genaueres erfahren Sie in den jeweiligen manpages. Die Ausgabe hängt vom verwendete Host ab, d. h. sie wird von der Option -h festgelegt (in den folgenden Beispielen ist das „ldaphost“). 
# ldapsearch -h <Host Name>

Aufrufbeispiel (OpenLDAP für Mac OS X, Linux, Univention):
# ldapsearch -h ldaphost -x -s base -b "" "(objectclass=*)" +

Aufrufbeispiel (IBM AIX, Solaris):
# ldapsearch -h ldaphost -s base -b "" "(objectclass=*)" +

Ausgabebeispiel:
structuralObjectClass=OpenLDAProotDSE
configContext=cn=config
namingContexts=dc=my-domain,dc=com
supportedControl=1.3.6.1.4.1.4203.1.9.1.1
supportedControl=2.16.840.1.113730.3.4.18
supportedControl=2.16.840.1.113730.3.4.2
supportedControl=1.3.6.1.4.1.4203.1.10.1
supportedControl=1.2.840.113556.1.4.319
supportedControl=1.2.826.0.1.334810.2.3
supportedControl=1.2.826.0.1.3344810.2.3
supportedControl=1.3.6.1.1.13.2
supportedControl=1.3.6.1.1.13.1
supportedControl=1.3.6.1.1.12
supportedExtension=1.3.6.1.4.1.4203.1.11.1
supportedExtension=1.3.6.1.4.1.4203.1.11.3
supportedFeatures=1.3.6.1.1.14
supportedFeatures=1.3.6.1.4.1.4203.1.5.1
supportedFeatures=1.3.6.1.4.1.4203.1.5.2
supportedFeatures=1.3.6.1.4.1.4203.1.5.3
supportedFeatures=1.3.6.1.4.1.4203.1.5.4
supportedFeatures=1.3.6.1.4.1.4203.1.5.5
supportedLDAPVersion=3
supportedSASLMechanisms=DIGEST-MD5
supportedSASLMechanisms=CRAM-MD5
entryDN=
subschemaSubentry=cn=Subschema

Sie sollten nur dann mit den nächsten Schritten fortfahren, wenn der Aufruf von „ldapsearch“ erfolgreich war.

3. Starten Sie den HELIOS Autorisierungsserver mit dem Befehl „ldapcheck“

Hinweis: Bei der Durchführung dieses Schritts dürfen keine HELIOS Dienste laufen!

Durch diesen Aufruf versucht „authsrv“, unter Berücksichtigung der gesetzten Präferenzen, sämtliche Attribute für<User Name> abzurufen. Der angegebene Benutzer muss ein vollständiger und gültiger LDAP-Benutzer sein.
# authsrv ldapcheck <User_Name>

Beispiel:
# cd /usr/local/helios
# sbin/authsrv ldapcheck ldapuser
ldap preliminary check starting...
preference ldap server - 'LDAP_Server':'ldaphost.helios.de' OK
preference using port - 'LDAP_Port':'389' OK
* connected
* got version 2
* set to version 3
* using anonymous bind
* bind OK, now requesting user info for 'ldapuser'
preference user filter - 'LDAP_UserFilter':'uid=%s' OK
preference user base - 'LDAP_UserBase':'cn=users,dc=ldaphost,dc=helios,dc=de' OK
* filter: 'uid=ldapuser'
* user found, now requesting basic attributes
preference user name - 'LDAP_UATTR_Name':'uid' OK
preference user long name - 'LDAP_UATTR_LongName':'cn' OK
preference home dir - 'LDAP_UATTR_HomeDirectory':'homeDirectory' OK
preference uid - 'LDAP_UATTR_UID':'uidNumber' OK
preference pgid - 'LDAP_UATTR_PGID':'gidNumber' OK
* (attribute 'objectClass' detected)
* attribute UID detected
* (attribute 'apple-generateduid' detected)
* (attribute 'apple-mcxflags' detected)
* (attribute 'loginShell' detected)
* attribute PGID detected
* (attribute 'authAuthority' detected)
* clear text password detected
* attribute name detected
* attribute long name detected
* (attribute 'sn' detected)
* attribute homedir detected
* 12 attributes detected


Manuelle Einrichtung des OpenLDAP-Servers (am Beispiel SUSE 10.2)

Hinweis: Das folgende Beispiel ist vereinfacht. Für gewöhnlich sollten Struktur und Zugriffsrechte komplexer sein.
Führen Sie „yast“ aus und installieren Sie die Pakete „openldap2“, „openldap2-client“ sowie optional „yast2-ldap-server“. Starten Sie aber den OpenLDAP-Server keinesfalls sofort.

Passen Sie die Datei „/etc/openldap/slapd.conf“ an Ihre Bedürfnisse an, inkludieren Sie dann die Datei helios.schema direkt nach „yast.schema“ und vergewissern Sie sich, dass die Einträge für „rootdn“ und „rootpw“ mit denen ür den HELIOS Autorisierungsserver übereinstimmen („LDAP_BindDN“ und „LDAP_BindPassword“). Eventuell müssen Sie zum Anlegen von Gruppen „nis.schema“ anstelle von „rfc2307bis.schema“ inkludieren.

Anlegen von Nodes für root und für Benutzer / Gruppen:

Passen Sie die Datei root_node.ldif an Ihre Bedürfnisse an und geben Sie folgenden Befehl ein:
# slapadd -v -l root_node.ldif

Starten Sie den OpenLDAP-Server und achten Sie auf Fehlermeldungen.
# /etc/rc.d/ldap start

Einrichten eines Beispiel-Benutzers bzw. einer Beispiel-Gruppe:

Erzeugen Sie mit dem Befehl authutil passwd -H -X -p <HELIOS_password> ein HELIOS Kennwort an.

Passen Sie mit dem soeben erzeugten Kennwort sample_user.ldif an Ihre Bedürfnisse an.
# ldapadd -v -f sample_user.ldif -x -D "cn=Manager,dc=my-domain,dc=com" -w secret

Passen Sie sample_group.ldif an Ihre Bedürfnisse an.
# ldapadd -v -f sample_group.ldif -x -D "cn=Manager,dc=my-domain,dc=com" -w secret

Geben Sie auf der Kommandozeile als Benutzer root den Befehl „slapcat“ ein und vergewissern Sie sich, dass der soeben erzeugte Beispiel-Benutzer aufgeführt ist.

Konfiguration und Benutzerverwaltung des LDAP-Servers

Mac OS X Server: Administration von Benutzern und Gruppen mit dem Programm „Workgroup Manager“
Univention Corporate Server:
Administration von Benutzern und Gruppen über „Univention Admin“
OpenLDAP:
Manuelle Administration von Benutzern und Gruppen in Konfigurationsdateien oder über Tools von Drittanbietern.

Konfigurationsdateien können sein:

  • ldap.conf (LDAP-Basiseinstellungen für Clients)
  • ldapfilter.conf (LDAP-Filterkonfiguration)
  • ldapsearchprefs.conf (LDAP-Sucheinstellungen)
  • ldaptemplates.conf (LDAP-Ausgabeeinstellungen)

Deinstallation

Zum Dektivieren von LDAP reicht folgender Schritt aus:

  • Entfernen Sie den Eintrag „LDAP“ (Univention, OpenLDAP) bzw. „MACOSX“ (Mac OS X Server) aus der Präferenz NameServices:
    # prefvalue -k 'Programs/authsrv/NameServices' -t str "local,NIS"

Versionen/Feedback

Bitte helfen Sie uns dabei, unsere Produkte zu verbessern, indem Sie uns Fehler oder Vorschläge mitteilen: support (at) helios.de.

  • Finale Version mit HELIOS UB+ (Dezember 2007)
  • Preview 2 (13. Juli 2007)
  • NTLM für Vista verfügbar
  • Benutzereinträge werden aus dem Cache gelöscht, falls das Kennwort geändert wurde
  • Fehlerbehebung für HP IA-64
  • Fehlerbehebung bei der Anmeldung an Mac OS X LDAP- und Kennwortserver