Sysadmin Day 2010 Windows & Linux just good friends? friends!!! Ralf Wigand MVP Directory Services KIT (Universität Karlsruhe)
Voraussetzungen Sie haben ein Active Directory Sie haben einen Linux Client Sie wollen ihr Account Management konsolidieren Sie wollen mit einer einfachen Lösung beginnen Passt? Dann bleiben Sie hier
Was brauchen wir? Active Directory LDAP Kerberos
To Do
Schema Check Windows Server 2003 R2 und später Schema Kompatibilität zu Linux ist ausreichend (RfC 2307) Windows Server 2003 und früher Schema Update mit Services for Unix (SfU) 3.5 Domain oder Forest Mode ist uninteressant
To Do
Lesezugriff auf das Active Directory Benutzer anlegen Entweder - Oder Anonymen Lesezugriff aktivieren Mitglied in Domain Guests ausreichend forestweite Einstellung Passwort ist sichtbar in LDAP config file auf LInux Kein neuer Benutzer, kein Passwort Zugriff regeln pro OU
Anonymen Lesezugriff einrichten ADSIEdit (Support Tools) connect to (Naming Context: Configuration) CN=Services CN=Windows NT CN=Directory Services Properties, Attribut dsheuristics 7. Zeichen von links setzen (wenn leer, dann 0000001) Setzt noch keine Rechte, ermöglicht das nur! OU auswählen und Anonymous Leserecht geben Vererbung verwenden!
Anonymen Lesezugriff einrichten (2)
To Do
Attribute füllen Linux braucht UID eines Benutzers Siehe Windows SID, aber weniger komplex 0 (=root) bis 65535 (oder höher) Synchronisieren via Identity Management System oder händisch füllen ADSIEdit Script GUI in ADUC (via NIS Server aus SfU 3.5) GUI in ADUC in Windows Server 2008 und später (via Identity Management for Unix -Rolle)
Attribute mit Script füllen this is vbscript, use whatever you like... sserver = LDAP://dc-01.test.local/ suser = cn=harryp,ou=staff,dc=test,dc=local set ouser = getobject(sserver & suser) ouser.uidnumber = 10001... (set some more attributes here)... ouser.setinfo
To Do
The Linux Side of the show Namesauflösung (Name Service Resolution) Wo kommen die Namen und UIDs her? nsswitch.conf gibt die Reihenfolge vor libnss_ldap.conf (a.k.a. ldap.conf) wo ist der LDAP-Server, wie liest man davon? /etc/nsswitch.conf passwd:compat ldap group: compat ldap
ldap.conf host dc-01.test.local port 389 base ou=staff,dc=test,dc=local scope sub Man kann (und sollte) mehrere Hosts definieren Verwendung von DNS SRV Records teilweise implementiert Suchbasis & Bereich festlegen Attribute zuordnen
ldap.conf (cont ed) nss_map_objectclass posixaccount User nss_map_objectclass posixgroup Group nss_map_attribute uid samaccountname nss_map_attribute uidnumber uidnumber nss_map_attribute gidnumber gidnumber nss_map_attribute cn samaccountname nss_map_attribute homedirectory unixhomedirectory nss_map_attribute loginshell loginshell Definiert Zuordnung (links Unix, rechts Windows) Objekttypen und Attribute Egal was zu was, solange der Typ passt
Namensauflösung fertig Ab jetzt sollte die Namensauflösung funktionieren getent passwd harryp Caveat: Eine Root-Shell offen lassen während dem Testen caching (nscd) ausschalten während der Tests vorsicht bei ls la /home bei vielen Benutzern Wenn LDAP zur Authentifizierung: SSL (Port 636) und in die ldap.conf: pam_login_attribute samaccountname pam_fliter objectclass=user pam_password ad
To Do
Kerberos konfigurieren Meist unter /etc/krb5.conf: [libdefaults] default_realm = TEST.LOCAL default_tgs_enctypes = des-cbc-crc des-cbc-md5 default_tkt_enctypes = des-cbc-crc des-cbc-md5 [realms] TEST.LOCAL = { kdc = dc-01.test.local admin_server = dc-01.test.local default_domain = test.local } [domain_realm].test.local = TEST.LOCAL test.local = TEST.LOCAL
To Do
Bereit für Login, aber wie sag ich s meinem Linux? Pluggable Authentication Modules (PAM) Konfiguration verschieden je nach Distribution Allgemein: 4 Arten von pam-direktiven: auth, account, password, session für login wird auth verwendet Man kann (und sollte!) mehr als ein PAM verwenden Reihenfolge beachten! Auf includes achten und System Defaults immer eine root-shell offenhalten beim Testen Alte Konfig sichern
PAM config auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_unix_auth.so auth required /lib/security/pam_krb5.so use_first_pass Interpretation: 1. Zeile: OK, sonst kein Login 2. Zeile: OK, sonst kein Login 3. Zeile: Wenn OK, dann Login, sonst weiter 4. Zeile: OK, sonst kein Login Nur wenn lokale Authentifizierung (root!) nicht klappt, dann kerberos (das muss allerdings dann funktionieren!)
Geschafft!
Nicht behandelt: Verschlüsselung bei LDAP-Authentifizierung Gruppen, insbesondere verschachtelte Gruppen Applikationen SSH Apache Kerberos Pre-Authentication Aber das sollte ja nur eine einfache Einleitung sein
Mehr Infos? http://interop.blog.de ralf@wigand.de