Der HELIOS Autorisierungsserver („authsrv“) unterstützt jetzt auch eine Autorisierung über LDAP gegen folgende LDAP-Server:
„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.
Überprüfung des Kennworts
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“
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)
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.:
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 |
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) |
Nach Installation von „authsrv“ können Sie die LDAP-Verbindung folgendermaßen prüfen:
# 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.
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.
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
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.
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
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.
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:
Zum Dektivieren von LDAP reicht folgender Schritt aus:
NameServices
:# prefvalue -k 'Programs/authsrv/NameServices' -t str "local,NIS"
Bitte helfen Sie uns dabei, unsere Produkte zu verbessern, indem Sie uns Fehler oder Vorschläge mitteilen: support (at) helios.de.