Linux: Usuaris d'Active Directory
Requeriments
- Un domini amb Active Directory ja funcionant ;)
- Kerberos
- Winbind (de Samba)
Configuració
Samba i Winbind
Al fitxer /etc/samba/smb.conf
, configurem les propietats de samba i, especialment els paràmetres del winbind. Important posar a password server diversos servidors (primari i secundari) si disposem d'ells.
[global] workgroup = DOMAIN realm = w2k.realm.com netbios name = hostlinux winbind use default domain = yes dns proxy = no security = ads encrypt passwords = true obey pam restrictions = yes invalid users = root auth methods = winbind update encrypted = yes password server = servidorsAD winbind separator = / winbind enum users = yes winbind enum groups = yes winbind uid = 10000-20000 winbind gid = 10000-20000
Cal tenir especial atenció a les 4 últimes línies. winbind enum
serveix per enumerar 'llistar' els usuaris i grups, si n'hi ha molts pot ser un mètode ineficient i enlentir el sistema.
D'interès especial els últims 2, referents als uid i gids. Windows utilitza un únic SID tant per usuaris com per grups (un únic espai d'adreçament), mentre que unix separa usuaris i grups en dos espais d'adreçament.
Hi ha moltes maneres d'abarcar al problema, en la configuració d'exemple d'aquí l'únic que fa és assignar-los dinàmicament a mesura que es conectin els usuaris entre els valors especificats. Això vol dir que el mateix usuari de l'Active Directory que entri en un altres host Linux configurat així pot ser que obtingui un uid/gid diferents.
Per unificar-ho (cosa que no entra en aquest document) podem usar diversos mètodes: Afegir informació (atributs) extra al directori LDAP i fer que winbind obtingui l'uid i gid de l'LDAP, o usar un idmap RID, que mapeja uid de forma determinista (algun tipus de hash) i per tant assegura l'unificació de uids i gids.
Per més informació, consultar la pàgina de manual de smb.conf
(buscar idmap backend) o el capitol 14 de la documentació Identity Mapping
Configurem Kerberos
Fitxer /etc/krb5.conf
:
[libdefaults] default_realm = w2k.realm.com [realms] w2k.realm.com = { kdc = servidorAD1 kdc = servidorAD2 admin_server = servidorAD1 } [logging] kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log default = SYSLOG:NOTICE:DAEMON
Configurem PAM i autentificació dels usuaris
Al fitxer /etc/nsswitch.conf
:
passwd: compat winbind group: compat winbind
I a /etc/security/pam_unix2.conf
:
auth: call_modules=winbind account: call_modules=winbind
Proves i extres
Winbind
Algun software que vol autentificar amb NTLM contra winbind (com ara l'Squid) necessita tenir accés al winbind. En aquest cas cal donar permisos al software per
llegir i escriure sota /var/lib/samba/winbindd_privileged/
Kerberos
El primer que cal recordar és que per a què els tiquets kerberos tinguin validesa, hem de tenir l'hora el màxim de sincronitzada amb el servidor de tiquets, això vol dir utilitzar ntp.
# kinit usuari Password for usuari@w2k.realm.com: # klist -e Ticket cache: FILE:/tmp/krb5cc_0 Default principal: usuari@w2k.realm.com Valid starting Expires Service principal 08/18/08 09:29:08 08/18/08 19:32:53 krbtgt/w2k.realm.com@w2k.realm.com renew until 08/19/08 09:29:08, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 Kerberos 4 ticket cache: /tmp/tkt0 klist: You have no tickets cached
Afegim Linux al domini
Amb la comanda net afegim la màquina al domini
# net ads join -U Administrator Administrator's password: Using short domain name -- DOMAIN Joined 'hostlinux' to realm 'w2k.realm.com'
Comprovem si les coses estan bé.
# wbinfo -t checking the trust secret via RPC calls succeeded