PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : openSuSE10.3, User aus AD via LDAP+Kerberos - PAM: User account has expired



tmy
18.10.07, 16:41
Hallo,

ich versuche gerade die User aus unserem Windows 2003 Server Active Directory auf Linux zu übernehmen.
Dazu habe ich (gemäß den reichlichen Anleitungen im Netz - z.B. hier (http://blog.scottlowe.org/2007/01/15/linux-ad-integration-version-4/)) das ldap und kerberos aufgesetzt.

Na gut, nicht ganz so wie angegeben, weil ich wo möglich die yast-utilities genutzt habe.

Es scheint auch schon alles ganz ordentlich zu klappen, aber wenn ich versuche, mich per ssh anzumelden bekomme ich immer:



Oct 18 16:14:25 linux sshd[7820]: pam_krb5[7820]: authentication succeeds for 'tobias' (tobias@[Hier steht die domain])
Oct 18 16:14:25 linux sshd[7818]: error: PAM: User account has expired for tobias from localhost



Wenn ich als root versuche, einen su zu machen, bekomme ich


# su - tobias
su: incorrect password


und in den logs:


Oct 18 16:32:16 auryn su: FAILED SU (to tobias) root on /dev/pts/1


"getent passwd tobias" liefert
tobias:*:10000:10000:Tobias:/home/tobias:/bin/bash

und
"getent shadow tobias" liefert
tobias:*:::::::0

kinit tobias@[domain hier]
klappt auch ohne Fehler.

Irgendwer eine Idee wo ich suchen kann?

Schöne Grüße,
Tobias

tmy
23.10.07, 12:10
Nachdem ich den blöden Fehler ewig gesucht habe, poste ich hier kurz ein "mini-howto", in der Hoffnung, dass es vielleicht jemand anderem hilft, der den thread über die Suche findet...

Das gotcha war für mich dass in der ldap.conf sowohl die parameter für die ldap tools als auch die parameter fürs pam_ldap stehen und


pam_filter objectclass=posixAccount

war. Es muss für Windows-AD aber objectclass=user sein.
Deswegen hat das getent funktioniert, die PAM authentifikation ist aber fehlgeschlagen...

Hier jetzt im kurzen was ich gemacht habe:

Linux Authentifizierung gegen das Windows 2003 Server AD mit Kerberos und LDAP Mini-Howto:

Windows:
wie hier (http://blog.scottlowe.org/2007/01/15/linux-ad-integration-version-4/) beschrieben.
Wenn man das Active directory lokal vom Client (z.B. XP) administriert, erfülllt das idmu aus dem Windows Server 2003 R2 Administration Tools Pack (x86) (http://www.microsoft.com/downloads/details.aspx?FamilyID=9bfb44f5-232a-4fb5-bc14-45bfd81b7ac1&DisplayLang=en) wohl diesen Zweck.

Einen User im Active Directory anlegen (z.B. LDAP_BIND) und zuerst in die Gruppe Domänen-Gäste hinzufügen, speichern, die Default-Gruppe ändern, und dann aus der Gruppe "Domänen-Benutzer" herausnehmen (aus Sicherheitsgründen)

Linux:
Im openSuSE 10.3 im Yast unter
Security and Users -> User Management -> Expert Options -> Authentication and User Sources (kommt auch schon mal irgendwo während der Installation) folgende Einstellungen zur Authentifizierung (Details unten):

NIS -> Nein
LDAP -> Ja
Kerberos -> Ja
Samba -> Nein

LDAP Details:
(x) Use LDAP
Addresses of LDAP Servers: IP-Adresse des AD-Servers
LDAP Base DN: DC=example,DC=com

(Nachher gleich noch ein paar änderungen an der /etc/ldap.conf)

Kerberos Details:
(x) Use Kerberos
Default Domain: example
Default Realm: EXAMPLE.COM
KDC Server Address: IP des AD-Servers

Advanced eigentlich alles auf SuSE default. ( entgegen der Anweisung aus dem Link oben: nur Forwardable an, Proxiable und Retained aus - macht aber auch nichts glaube ich)

in der /etc/ldap.conf sollten folgede Dinge stehen (einige sind schon drin, andere müssen hinzugefügt werden)


host [IP des AD-Servers]
base DC=example,DC=com
binddn cn=LDAP_BIND,cn=Users,dc=example,dc=com
bindpw [PASSWORT_DES_LDAP_BIND_USERS]
bind_policy soft
pam_lookup_policy yes
pam_password exop
nss_initgroups_ignoreusers root,ldap
nss_schema rfc2307bis
nss_map_attribute uniqueMember member
nss_map_attribute gecos cn
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
ssl no
ldap_version 3
pam_filter objectclass=user
nss_base_passwd OU=LocalOrg,DC=example,DC=com?sub?&(objectCategory=user)(gidnumber=*)
nss_base_shadow OU=LocalOrg,DC=example,DC=com?sub?&(objectCategory=user)(gidnumber=*)
nss_base_group OU=LocalOrg,DC=example,DC=com?sub?&(objectCategory=group)(gidnumber=*)
tls_checkpeer no


ACHTUNG: der LDAP_BIND user ist in diesem Beispiel in der CN "Users", die eigentlichen User und Gruppen sind in der OU "LocalOrg", da gewaltig aufpassen, und eventuell mal mit der adsiedit.msc die Struktur vom AD ansehen, damit man die OU und CN und DC bestimmt richtig hat.

Weil diese Datei Readable für alle sein muss und das Passwort vom LDAP_BIND im Klartext drinsteht (sonst geht die Namensauflösung nicht und man ist der "unknown user" wenn man sich anmeldet) darf der User auch keine Rechte ausser "Gast" haben.

Was ich nicht hinbekommen habe ist SSL zwischen dem Linux und Windows für LDAP, was aber hoffentlich nicht so schlimm ist, weil ja die Passworte nur über das Kerberos gehen, und das ist verschlüsselt.

Für High-Security ist dieses Setup also nicht das beste, aber für unsere Anforderungen im internen Netz langt's.