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