ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Active Directory Client Authentifikation

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

Artikel für fortgeschrittene Anwender

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.

Voraussetzungen auf dem Active Directory Server

Wenn eine zentrale Authentifizierung aller Nutzer über Microsoft Active Directory Server erfolgen soll (ohne Kerberos in diesem Fall, besonders siehe auch Samba Client/ADAUTH), 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:

  • ldap-utils

  • openssl

  • nscd (universe [4] )

  • portmap

  • lat (universe )

  • libpam-foreground (universe )

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

  • libnss-ldap

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:

  • 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

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:

  • 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

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

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!

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 (hardy, lucid)

Nun sind einige PAM-Module anzupassen. Dafür mit einem Editor [3] und Root-Rechten [6] folgende Dateien bearbeiten:

/etc/pam.d/common-auth

auth sufficient pam_ldap.so
auth required pam_unix.so use_first_pass nullok_secure

/etc/pam.d/common-account

account sufficient pam_ldap.so
account required pam_unix.so use_first_pass

/etc/pam.d/common-password

Wenn nur mit des ADS-Authentifizierung gearbeitet wird, dann genügen die folgenden Einstellungen:

password sufficient pam_ldap.so
password required pam_unix.so use_first_pass nullok obscure min=4 max=8 md5

Bei Passwort-Änderung wird hier immer versucht, die Änderung über einen LDAP-Ruf abzusetzen. Wenn man auch noch im System lokale Passworte verwaltet, zum Beispiel für die Systemnutzer, dann gelingt für diese Nutzer die Passwortänderung nicht mehr. Man muss zusätzlich das Paket

  • libpam-cracklib

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libpam-cracklib 

sudo aptitude install libpam-cracklib 

installieren [1] und die Datei /etc/pam.d/common-password wie folgt ändern:

password sufficient pam_ldap.so
password required  pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so use_first_pass nullok obscure min=4 max=8 md5

Wenn es allerdings lokale Nutzer gibt, die unter gleichem Namen im ADS verwaltet werden, dann sollte das Kommando

sudo passwd 

nur die lokalen Nutzer modifizieren. In diesem Fall muss die Änderung der Passwörter des ADS mit anderen Mitteln erfolgen, nicht mit diesem Kommando. Die Konfigurationsdatei hat dann folgenden Inhalt:

password required  pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so use_first_pass nullok obscure min=4 max=8 md5

/etc/pam.d/common-session

session required pam_unix.so
session optional pam_foreground.so

Anpassung des PAM (precise)

Zunächst müssen folgende Pakete installiert sein:

  • libpam-cap

  • libpam-gnome-keyring

Die Anpassungen fallen vergleichsmäßig gering aus.

Dieses File ist lediglich um eine Zeile zu erweitern

/etc/pam.d/common-account

account required pam_unix.so use_first_pass

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.

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