Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Dieser Artikel beschreibt, wie sich Linux am Active Directory authentifizieren kann.
Wenn eine zentrale Authentifizierung aller Nutzer über Microsoft Active Directory Server erfolgen soll (ohne Kerberos in diesem Fall) so wird dafür letztendlich das LDAP-Protokoll benutzt. Im Vergleich mit einer reinen LDAP Client Authentifizierung sind aber noch einige zusätzliche Arbeiten erforderlich.
Zunächst muss am Active Directory die "SFU" (Services for Unix) und die Komponente "Server for NIS" installiert werden. Nach einem Neustart kann mit dem Windows-Tool adsiedit die Schema-Erweiterung überprüft werden.
Für die Linux-Gruppen empfiehlt es sich, eine organizationalUnit
als Container anzulegen. Jede Gruppe sollte dort als group
angelegt werden. Dann wird auf dem letzten Reiter die NIS-Anmeldung aktiviert.
Mit dem gleichen Windows Tool (adsiedit) werden die Linux-Nutzer verwaltet. Die Nutzer werden ausgewählt und deren Eigenschaften verändert. Es öffnet sich ein Fenster mit mehreren Reitern. Über dem Reiter "UNIX-Attribute" wird die NIS-Anmeldung aktiviert (NIS-Domäne ausgewählt). Weiterhin werden die Linux-Gruppen-Mitgliedschaften eingetragen (default-Gruppe und sekundäre Gruppen). Über den Reiter "Konto" wird für das Passwort die "reverse"-Speicherung vorgesehen.
Als nächstes werden einige Hilfsmittel installiert [1], um den LDAP Zugriff auf Active Directory zu testen:
ldap-utils
openssl
nscd (universe [4] )
portmap
lat (universe )
libpam-foreground (universe )
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ldap-utils openssl nscd portmap lat libpam-foreground
sudo aptitude install ldap-utils openssl nscd portmap lat libpam-foreground
Nun sollte erst einmal ein Test erfolgen, ob der LDAP-Zugriff funktioniert:
ldapsearch -x -h <host-ip_des_Active_Directory_Servers> -b '<base-DN>' \ -D '<Bind-DN_oder_root-DN>' -w Passwort '(cn=<Name_eines_Accounts>)'
Das System sollte eine erfolgreiche Antwort liefern.
Mit lat steht ein graphisches Tool zur Arbeit mit der LDAP (Active Directory) Datenbasis bereit.
Bei der Installation [1] von
libnss-ldap
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libnss-ldap
sudo aptitude install libnss-ldap
werden mehrere Angaben abgefragt:
URI (Uniform Resource Identifier) des LDAP-Servers
Basis-DN
LDAP-Version: 3
Root-DN
Root-PW
es wird ein Hinweis für die Änderung der /etc/nsswitch.conf ausgegeben
Das Ergebnis ist unter anderem eine Konfigurationsdatei: /etc/ldap.conf, die manuell zu ergänzen ist (siehe unten).
Bei der Installation [1] von
libpam-ldap
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libpam-ldap
sudo aptitude install libpam-ldap
werden wieder mehrere Angaben abgefragt:
Lokalen root zum Datenbank-Administrator machen: Yes
Benötigt die LDAP-Datenbank eine Anmeldung?: Yes
Root-DN
Root Passwort
Bind-DN
Bind-Passwort
Das Ergebnis ist auch die Konfigurationsdatei: /etc/ldap.conf.
Nun muss noch die Konfigurationsdatei /etc/ldap.conf ergänzt werden, damit die Active Directory Attribute korrekt genutzt werden können:
# ADS scope sub timelimit 5 bind_timelimit 5 idle_timelimit 3600 pam_login_attribute uid pam_login_attribute sAMAccountName pam_password ad nss_base_passwd <DN_User_Container> nss_base_shadow <DN_User_Container> ... nss_base_group <DN_Group_Container> nss_map_objectclass posixAccount user nss_map_objectclass shadowAccount user nss_map_attribute uid sAMAccountName nss_map_attribute uidNumber msSFU30UidNumber nss_map_attribute gidNumber msSFU30GidNumber nss_map_attribute cn sAMAccountName nss_map_attribute posixGroup memberOf nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attribute loginShell msSFU30LoginShell nss_map_attribute gecos name nss_map_objectclass posixGroup group nss_map_attribute uniqueMember member pam_filter objectclass=user ssl no bind_policy soft
Es können mehrere Zeilen der Art nss_base_password
und nss_base_shadow
angegeben werden!
Nun müssen noch drei Dateien am Ende wie folgt ergänzt [3] werden:
/etc/passwd
+::::::
/etc/group
+:::
/etc/nsswitch.conf
passwd_compat: ldap group_compat: ldap shadow_compat: ldap
Eine Alternative ist in https://help.ubuntu.com/community/LDAPClientAuthentication beschrieben. Mit dem Kommando:
sudo auth-client-config -t nss -p lac_ldap
kann auch die Modifikation erfolgen, die allerdings anders ausfällt. Nicht jede Variante muss immer funktionieren.
Danach sollten die Befehle:
getent passwd
und
getent group
gegebenenfals muss der Service nscd neu gestartet werden (mit service nscd restart), damit dies funktioniert.
neben den lokalen Nutzern und Gruppen die neuen ADS-Nutzer und -Gruppen anzeigen. Funktioniert dies nicht, so muss die Änderung in /etc/nsswitch.conf auskommentiert werden. Danach funktioniert wieder der normale Login. Dann kann der Fehler gesucht werden (möglicherweise Schreibfehler in den Konfigurationsdateien; siehe auch die Log-Dateien: /var/log/auth.log, /var/log/syslog, /var/log/messages!)
Achtung: Wenn der Befehl getent ...
funktioniert, sollte man sich nicht mehr abmelden, bis auch das PAM angepasst und getestet ist. Wenn es nicht funktioniert, so sind unbedingt die Änderungen in /etc/nsswitch.conf auszukommentieren und es ist zu testen, ob in einem anderen Fenster die Anmeldung wieder funktioniert, bevor man sich abmeldet!
Wenn die Ausgabe des Kommandos getent ...
sehr zäh ist, so kann es sein, dass verschiedene Einträge in /etc/nsswitch.conf nicht dem Stand der Zugriffsmöglichkeiten entsprechen. Die Einträge für hosts
und network
sollten korrekt sein. Notfalls sind sie manuell anzupassen.
Zunächst müssen folgende Pakete installiert sein:
libpam-cap
libpam-gnome-keyring
Die Anpassungen fallen vergleichsmäßig gering aus.
In den Konfigurationsfiles /etc/pam.d/common-auth, /etc/pam.d/common-account. /etc/pam.d/common-session und /etc/pam.d/common-password ist in den Zeilen mit pam_ldap.so' der Parameter minimum_uid=10000 zu ergänzen (10000 ersetzen durch Begin-UID der LDAP-Auth.).
Die Linux-Kommandos useradd
und groupadd
werden gelegentlich beim Installieren von zusätzlichen Paketen aufgerufen. Dabei vergeben sie neue GID und UID. Damit diese in einem Bereich außerhalb des von Active Directory verwalteten Bereichs bleiben, sollten zwei kleine Anpassungen in /etc/login.defs vorgenommen werden:
/etc/login.defs
# UID_MAX 60000 UID_MAX <maximal zu vergebende UID> ... # GID_MAX 60000 GID_MAX <maximal zu vergebende GID>
Jetzt sollte der nscd neu gestartet werden mit dem Befehl:
sudo /etc/init.d/nscd restart
Schließlich kann man sich an einem anderen Fenster am Login-Prompt anmelden. Die Anmeldung sollte mit den System-Accounts, die nicht Bestandteil des Active Directories sind, genauso funktionieren wie mit den Active Directory-Accounts. Voraussetzung ist aber möglicherweise die Existenz des Homeverzeichnisses des neuen Nutzers.
Nach mehreren Wochen problemlosen Betriebs mit der Authentifizierung kann es vorkommen, dass keine Authentifikation mehr möglich ist. Weiterarbeit ist nur nach einem Reboot möglich.
Im Log-File /vat/log/auth.log wurde beim Authentifizieren ein Problem gemeldet:
... nscd: nss_ldap: reconnected to LDAP server ... ... sshd[...]: fatal: Privilege separation user sshd does not exist ... sshd[...]: fatal: Privilege separation user sshd does not exist ... sshd[...]: fatal: Privilege separation user sshd does not exist
Fehlerursache kann hier ein Fehler im nscd sein. Nach der Deinstallation des nscd ist der Fehler nicht mehr aufgetreten.
Bei Ubuntu Precise (Unity) kam es vor, dass trotz vorhandenem Home-Verzeichnis eine grafische Anmeldung nicht möglich war. Nachdem sich an einer virtuellen Konsole einmal angemeldet wurde war die grafische Anmeldung allerdings auf wundersame Art und weise möglich. Womöglich muss auf diese Art und Weise der LDM überredet werden, den neuen Nutzer als Nutzer zu akzeptieren.
Wenn die Anmeldung nicht funktioniert, muss man die Änderungen in der /etc/nsswitch.conf wieder unbedingt rückgängig machen, bevor man sich abmeldet!
Bei größeren Zeitverzögerungen mit dem Authentifizieren muss die /etc/ldap.conf möglicherweise manuell angepasst werden. Sie sollte folgendermaßen beginnen:
host <host-ip> <host-ip> base <dn> ldap_version 3 binddn <Bind-DN> bindpw <bind-pw> port 389 scope sub
Mit Gutsy wurde ein Skript /usr/sbin/nssldap-update-ignoreusers als Bestandteil des Paketes libnss-ldap neu eingeführt. Dies führt dazu, dass das Konfigurationsfile /etc/ldap.conf um eine Zeile nss_initgroups_ignoreusers ...
erweitert wird. Dieser Vorgang wiederum kann zu erheblichen Verzögerungen beim Anmelden führen. In diesem Fall wird empfohlen, das Skript /usr/sbin/nssldap-update-ignoreusers durch eine Anweisung exit 0
am Anfang auszuhebeln (und die Zeile aus /etc/ldap.conf zu entfernen).
Bei manchen Systemen insbesondere bei Trusty, kann es dazu kommen, dass der Boot beim Mounten hängen bleibt. Dann kann folgendes Abhilfe schaffen: mit dem Kommando sysv-rc-conf (möglicherweise vorher apt-get install sysv-rc-conf) kann networking im Service Level 1, 2, 3, 4, 5 aktiviert werden (und im Service Level 0 und 6 deaktiviert werden).
Diese Revision wurde am 28. November 2016 13:05 von wtb erstellt.