Active Directory Client Authentifikation

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte hilf mit, indem du diesen Artikel testest. Wiki/FAQ - häufig gestellte Fragen (Abschnitt „Wikiartikel-testen“).

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

  4. Bearbeiten von Paketquellen

  5. https://help.ubuntu.com/community/LDAPClientAuthentication

  6. Befehle als Root ausführen

Dieser Artikel beschreibt, wie sich Linux am Active Directory authentifizieren kann.

Inhaltsverzeichnis
  1. Voraussetzungen auf dem Active Directory S...
  2. Linux-Client
    1. Installation der LDAP-Zugriffspakete
    2. Vorbereiten des Zugriffs
    3. Anpassung des PAM
    4. Benutzung von useradd und groupadd
    5. Abschluss
  3. Links

Voraussetzungen auf dem Active Directory Server

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.

Linux-Client

Als nächstes werden einige Hilfsmittel installiert [1], um den LDAP Zugriff auf Active Directory zu testen:

Wiki/Vorlagen/Installbutton/button.png 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.

Installation der LDAP-Zugriffspakete

Bei der Installation [1] von

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libnss-ldap 

sudo aptitude install libnss-ldap 

werden mehrere Angaben abgefragt:

Das Ergebnis ist unter anderem eine Konfigurationsdatei: /etc/ldap.conf, die manuell zu ergänzen ist (siehe unten).

Bei der Installation [1] von

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libpam-ldap 

sudo aptitude install libpam-ldap 

werden wieder mehrere Angaben abgefragt:

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

Hinweis:

Es können mehrere Zeilen der Art nss_base_password und nss_base_shadow angegeben werden!

Vorbereiten des Zugriffs

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 

getent group 

Achtung!

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.

Anpassung des PAM

Zunächst müssen folgende Pakete installiert sein:

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.).

Benutzung von useradd und groupadd

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>

Abschluss

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.

Achtung!

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.

Hinweis:

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.

Achtung!

Wenn die Anmeldung nicht funktioniert, muss man die Änderungen in der /etc/nsswitch.conf wieder unbedingt rückgängig machen, bevor man sich abmeldet!

Achtung!

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

Achtung!

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).

Achtung!

Bei manchen Systemen 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).