0x1b - ESCAPE
HTML PDF Postscript
 Linux am AD 
Computer Geschrieben von Beat Rubischon (Link) am Montag, 3. April 2006, 21:15
aus dem anschluss-an-das-böse dept.

Dank Samba und dem winbindd kann man sich die Benutzer, Gruppen und gar Hostnamen aus einem Active Directory ziehen. Doch ganz so einfach ist die Sache nicht - vor allem dann, wenn man Debian benutzt und ganz auf sich selbst gestellt ist.

Als erstes installiert man sich winbind, smbclient und krb5-user. Die Dependencies sollten damit ausreichen, um alle benötigten Pakete nachzuziehen.

Dann wird man ein paar Löcher in den Bauch gefragt, die möglichst wahrheitsgetreu beantwortet werden sollen. Daraufhin funkioniert - nichts. Handarbeit ist gefragt.

Erst /etc/krb5.conf (ich bin mir nicht sicher, ob es das wirklich braucht - aber die Dokumentationen im Netz setzen dieses File voraus - bei der richtigen Beantwortung der Fragen von Debconf stimmen die Werte):

[libdefaults]
   default_realm = EXAMPLE.COM

[realms]
EXAMPLE.COM = {
   kdc = AD.EXAMPLE.COM
   admin_server = AD.EXAMPLE.COM
}


Diese Einstellungen kann man mit kinit Administrator@EXAMPLE.COM testen. Lieferte bei mir immer eine Fehlermeldung - jedoch unterschiedliche, je nach dem ob der Benutzer oder das Passwort falsch oder eben alles richtig war :-)

Dann die /etc/samba/smb.conf (nur das nötigste daraus):

[global]
   workgroup = EXAMPLE
   realm = EXAMPLE.COM
   security = ADS
   password server = ad.example.com
   idmap uid = 10000-20000
   idmap gid = 10000-20000
   template primary group = users
   template shell = /bin/bash
   winbind separator = +
   winbind use default domain = Yes


Um in den Genuss eines Domänenzuganges zu kommen, muss man erst die Domäne joinen. Das geht mit net ads join EXAMPLE.COM net ads join -U Administrator.

Jetzt kommt der grosse Augenblick. Wir starten /etc/init.d/winbind start. Tut es? wbinfo -u oder wbinfo -g sollten Output bringen.

Nun kommt der nächste Schritt. Wir möchten diese Informationen dem System zugänglich machen. Dazu editieren wir /etc/nssswitch.conf /etc/nsswitch.conf:

passwd:         compat winbind
group:          compat winbind
shadow:         compat

hosts:          files wins dns
networks:       files


Die Zeile shadow habe ich bewusst nicht editiert. ssh kann Aerger machen, wenn er eine shadow-Zeile erwartet aber keine bekommt. Die braucht er letztendlich auch nicht, da wir über PAM autorisieren. Nun testen wir auch diese Einstellungen - am einfachsten mit einem getent passwd und einem getent group.

Jetzt geht es an das Eingemachte. Nämlich PAM. Wir editieren dazu drei Files:

/etc/pam.d/common-account

account  sufficient      pam_unix.so
account  required        pam_winbind.so use_first_pass

/etc/pam.d/common-auth

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

/etc/pam.d/common-password

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

/etc/pam.d/common-session

session  sufficient      pam_unix.so use_first_pass
session  required        pam_winbind.so use_first_pass


Wirklich debuggen lässt sich PAM leider nicht. Es bleibt uns nichts anderes übrig als tail -f /var/log/auth.log zu starten und in einer root-Shell login zu benutzen. Klappt das, so sollte erst der sshd neu gestartet und danach auch ein Login über diesen Weg getestet werden. Es sollten jeweils Benutzer aus der Domäne, aber auch lokale getestet werden. Wenigstens root sollte sich lokal einloggen können ;-)

Stolpersteine sind vor allem Tippfehler. Vor allem in der PAM-Konfiguration - da sind die Fehlermeldungen miserabel und man kann nicht wirklich debuggen. Weiterhin muss auch die Zeit stimmen. Im Zweifelsfalle synchronisiert man den lokalen ntpd auf den Domänenkontroller, auch wenn dessen Zeit danebengeht.

In diesem Fall liegt das Home lokal - man guckt sich für den richtigen Platz am Besten getent passwd an. Mittels geeigneter PAM-Module sollte es an und für sich auch möglich sein, direkt das Home ab dem Windows-Server zu mounten.

Permalink

Das Kleingedruckte: Der Besitzer der folgenden Kommentare ist wer immer sie eingeschickt hat. Wir sind in keiner Weise für sie verantwortlich.

  • beat@0x1b.ch Re: Linux am AD
    Geschrieben von Beat Rubischon (Link) am Dienstag, 18. Dezember 2007, 15:21

    Feedback aus der letzten Installation - net ads join sollte mit dem Administratoren und nicht mit der Domain gemacht werden, /etc/nsswitch.conf hatte ein "s" zu viel. Text ist entsprechend korrigiert.

    Wenn die Domain entsprechend vorbereitet ist, kann folgende Zeile das User / UID und Gruppe / GID Mapping direkt aus dem AD bezogen werden:

    winbind nss info = sfu