Configurar Debian (fins versió 7) i Ubuntu (fins 12.04) per a logar-se contra un domini d'Active Directory

Última actualització: juliol 2013

Els exemples funcionen segur amb un domini suportat per controladors de domini (DC) Windows Server 2003 SP3 o 2008 R2.

Provat amb Debian 6 i 7 (wheezy) i Ubuntu 9.10, 10.04,10.10 i 12.04 com a clients. El exemple es centra en la configuració per Ubuntu, però tot és vàlid per Debian.

Escenari:

-Domini de Active Directory: mydomain.local

-Adreça de la xarxa: 10.0.0.0/24

-Algun dels Domains controlers: en aquest exemple agafarem un DC del domini: srvdc1.mydomain.local amb IP 10.0.0.1

-Client Ubuntu: el seu hostname serà clientubuntu amb IP 10.0.0.239. Haurà de tenir una IP fixa.

A la feina:

Primer de tot: crearem un usuari amb drets d'administrador a l'Ubuntu, p.e. admin. Aquest usuari també el donarem d'alta al domini mydomain.local. Un cop tinguem la màquina enllaçada al domini, si la màquina no te connexió de xarxa o presenta algun problema per logar-se al domini, podrem logar-nos amb aquest usuari local admin. En canvi si la màquina està enllaçada al domini de manera correcta, quan ens loguem amb admin ens validarà contra els servidors DC, per tant hem de comprovar que aquest compte no estigui bloquejat al domini, p.e. si veiem que no ens deixa accedir.

Necessitem instal.lar:

    • krb5-user: Basic programs to authenticate using MIT Kerberos.
    • libpam-krb5: PAM module for MIT Kerberos. (aquest no ens farà falta si no hem d'obtenir un tiquet Kerberos al login)
    • krb5-config: Configuration files for Kerberos Version 5.
    • libkadm55: MIT Kerberos administration runtime libraries.
  • I també: winbind samba smbclient smbfs

NOTA per Ubuntu 10.10: en cas de problemes es pot provar de instal·lar winbind -en comptes de winbind4 que instal·la per defecte-. I sembla que per a la 10.10 el paquet libkadm55 no és necessari.

NOTA per Debian 6: És un tema més de samba que de Debian. El cas és que amb la última actualització de wheezy he tingut problemes, que s'han solucionat fent un:

apt-get install libnss-winbind

Això és deu a un canvi a samba (2:3.6.5-2): "NSS modules have been split out from libpam-winbind to libnss-winbind

Per a estalviar problemes primer de tot donarem d'alta al DNS (registre A) del domini la nova màquina que volem incorporar (ho podem fer ja que tindrà una IP fixa). Si no ho fem ens podem trobar que quan intentem afegir el compte de màquina al domini amb el "net ads join..." obtinguem un error ja que el servidor intenta trobar l'equip que s'intenta afegir consultant al DNS.

Com ja hem dit abans la màquina linux es diu clientubuntu i ha de tenir IP fixa. És molt important que la configuració de xarxa sigui correcta al equip client Ubuntu. Comprovar que el servidor DNS és el correcte pel domini a etc/resolv.conf i mirar que /etc/hosts estigui impecable:

/etc/hosts

127.0.0.1 localhost 127.0.1.1 clientubuntu # les dues línies següents no son necessàries si tenim DNS funcionant correctament 10.0.0.239 clientubuntu clientubuntu.mydomain.local 10.0.0.1 srvdc1.mydomain.local srvdc1 srvdc1.MYDOMAIN.LOCAL # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

Important, a l'hora de configurar la xarxa hem d'assegurar-nos de tenir marcat el check "Disponible per a tots els usuaris". Si no ho fem així l'ordinador no agafarà IP fins que no entrem en sessió i sense xarxa seria impossible poder logar-nos al domini.

També MOLT important es configurar el client de temps per tal que l'equip Linux es sincronitzi amb el servidor de domini. Ho podem fer des de la mateixa interfície gràfica d'Ubuntu (Sistema / administració / Data i Hora) o des del terminal si simplement instal·lem ntp: apt-get install ntp

Més fitxers a modificar:

/etc/samba/smb.conf

[global]

security = ads

realm = MYDOMAIN.LOCAL

password server = 10.0.0.1

# note that workgroup is the 'short' domain name (o el nom del domini netbios si és diferent al nom del domini DNS)

workgroup = MYDOMAIN

# winbind separator = +

idmap uid = 10000-20000

idmap gid = 10000-20000

winbind enum users = yes

winbind enum groups = yes

template homedir = /home/%D/%U

template shell = /bin/bash

client use spnego = yes

client ntlmv2 auth = yes

encrypt passwords = yes

winbind use default domain = yes

restrict anonymous = 2

/etc/krb5.conf

[logging]

default = FILE:/var/log/krb5.log

[libdefaults]

default_realm = MYDOMAIN.LOCAL

kdc_timesync = 1

ccache_type = 4

forwardable = true

proxiable = true

[realms]

MYDOMAIN.LOCAL = {

kdc = srvdc1.mydomain.local

admin_server = srvdc1.mydomain.local

default_domain = MYDOMAIN.LOCAL

}

[domain_realm]

.mydomain.local = MYDOMAIN.LOCAL

mydomain.local = MYDOMAIN.LOCAL

Un altre possible opció (amb 3 controladors de domini) de fitxer /etc/krb5.conf:

[logging] default = FILE:/var/log/krb5.log [libdefaults] default_realm = MYDOMAIN.LOCAL kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true [realms] MYDOMAIN.LOCAL = { kdc = srvdc1.MYDOMAIN.local:88 master_kdc = srvdc1.MYDOMAIN.local:88 kpasswd = srvdc1.MYDOMAIN.local:464 kpasswd_server = srvdc1.MYDOMAIN.local:464 kdc = srvdc2.MYDOMAIN.local:88 master_kdc = srvdc2.MYDOMAIN.local:88 kpasswd = srvdc2.MYDOMAIN.local:464 kpasswd_server = srvdc2.MYDOMAIN.local:464 kdc = srvdc3.MYDOMAIN.local:88 master_kdc = srvdc3.MYDOMAIN.local:88 kpasswd = srvdc3.MYDOMAIN.local:464 kpasswd_server = srvdc3.MYDOMAIN.local:464 } [domain_realm] .MYDOMAIN.local = MYDOMAIN.LOCAL MYDOMAIN.local = MYDOMAIN.LOCAL srvdc1.MYDOMAIN.local = MYDOMAIN.LOCAL srvdc2.MYDOMAIN.local = MYDOMAIN.LOCAL srvdc3.MYDOMAIN.local = MYDOMAIN.LOCAL # si o no? [login] krb4_convert = true krb4_get_tickets = false

Comprovem ara que funciona Kerberos:

kinit usuari@MYDOMAIN.LOCAL (com a root i important les majúscules)

Demana password. Si li fiquem i no dona cap error, vol dir que està tot ok.

Podem fer un klist per a veure el tiquet que ens han concedit.

Afegir l'equip al domini

Millor fer-ho contra un GC. Considerem que srvdc1 es Global Catalog del nostre domini. Llavors:

net ads join -S srvdc1 -U administrador

Més fitxers a modificar:

/etc/nsswitch.conf

passwd: compat winbind

group: compat winbind

shadow: compat

hosts: files dns wins [NOTFOUND=return]

networks: files

protocols: db files

services: db files

ethers: db files

rpc: db files

netgroup: nis

Per tal que es creïn automàticament els homes dels usuaris en logar-se el primer cop hem d'afegir aquesta línia a:

/etc/pam.d/common-session

session required pam_mkhomedir.so umask=0022 skel=/etc/skel

Crear el pre-home dels usuaris

mkdir /home/MYDOMAIN

Logar-se com a usuari del domini

Ho hem de fer amb usuari@mydomain.local (com a mínim per a la versió 10.10)

Si tenim problemes, podem mirar si es solucionen reiniciant els serveis:

/etc/init.d/samba stop

/etc/init.d/winbind stop

/etc/init.d/samba start

/etc/init.d/winbind start

Doncs ja està. Si vols alguna cosa semblant als logon scripts per a connectar les unitats de xarxa als usuaris, pots mirar aquí

-Problemes per a logar-nos al domini (bàsicament que no ens deixa).

Hauriem de comprovar:

-Que tenim marcat "Disponible per a tots els usuaris" a la configuració de xarxa.

-Que tenim accés a la xarxa. Fer un ping a srvdc1 i/o a d'altres equips per a comprovar-ho. Amb màquines virtuals es comú que davant d'algun canvi o actualització a l'hipervisor es desactivi la xarxa.

-Que l'hora del sistema de la Ubuntu és correcta: Mirem abans de logar-nos a l'Ubuntu que és el que marca el rellotge; hem de tenir en compte que aquest rellotge ha d'estar sincronitzat amb els dels controladors de domini.

-La IP de l'equip és la correcta i que el registre al nostre DNS coincideix en nom i IP amb el de la màquina. Revisar els possibles registres dinàmics generats automàticament al DNS si la màquina en algun moment ha obtingut una IP amb l'DHCP del domini

Tags: Active Directory, AD, Directorio Activo, dominio windows, Ubuntu, linux, cliente, directorio, activo, windows 2003