Muchas gracias al autor de este post http://www.esdebian.org/articulos/24000/unir-debian-dominio-active-directory por haber creado este gran tutorial que acto seguido voy a adaptar a la semántica de Ubuntu.
1.- Información con la que contamos
Contamos con los siguientes datos:
- Dominio: pruebas.local - Nombre del Server AD: ad = ad.pruebas.local - IP del Server AD: 192.168.1.254 - Nombre del Cliente Linux: ubuntu - Ip del Cliente Linux: 192.168.1.20
NOTA: En los archivos de configuración utilizaremos estos datos por lo que usted deberá sustituirlos por los apropiados.
2.- Configurar parámetros de red
Antes de continuar asegúrese de que el equipo con Linux cuente con la siguiente configuración:
- IP del mismo rango que el Server Active Directory
- DNS utilizado por el Server Active Directory
- Debe responder el ping a ad.pruebas.local
3.- Instalar la paquetería necesaria
# sudo apt-get install samba smbclient winbind krb5-user krb5-config
4.- Resolver equipos de la red
Agregar la IP de nuestro equipo Linux y la del Server Active Directory a “/etc/hosts”:
192.168.1.20 ubuntu.pruebas.local ubuntu 192.168.1.254 ad.pruebas.local ad
5.- Configurar el cliente kerberos
Para configurar el cliente kerberos agregamos/modificamos las siguientes lineas a “/etc/krb5.conf”:
[libdefaults]
default_realm = PRUEBAS.LOCAL
clockskew = 300
[realms]
PRUEBAS.LOCAL = {
kdc = 192.168.1.254
default_domain = pruebas.local
admin_server = 192.168.1.254
}
pruebas.local = {
kdc = 192.168.1.254
default_domain = pruebas.local
admin_server = 192.168.1.254
}
pruebas = {
kdc = 192.168.1.254
default_domain = pruebas
admin_server = 192.168.1.254
}
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.pruebas = pruebas
.pruebas.local = PRUEBAS.LOCAL
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}
6.- Crear tickets Kerberos
Para crear los tickets kerberos ejecutamos el siguiente comando:
# sudo kinit administrador@pruebas.local
Nos pedirá el password de la cuenta administrador del dominio. Puede utilizarse cualquier cuenta con permisos administrativos en el dominio.
7.- Configurar samba
Editamos “/etc/samba/smb.conf” quedando algo parecido a lo siguiente:
[global] security = ADS netbios name = ubuntu realm = PRUEBAS.LOCAL password server = ad.pruebas.local workgroup = pruebas log level = 1 syslog = 0 idmap uid = 10000-29999 idmap gid = 10000-29999 winbind separator = + winbind enum users = yes winbind enum groups = yes winbind use default domain = yes template homedir = /home/%D/%U template shell = /bin/bash client use spnego = yes domain master = no server string = linux como cliente de AD encrypt passwords = yes ##compartir el home del usuario solo para él cuando se encuentre en otro equipo de la red [homes] comment = Home Directories valid users = %S browseable = No read only = No inherit acls = Yes [profiles] comment = Network Profiles Service path = %H read only = No store dos attributes = Yes create mask = 0600 directory mask = 0700 ##compartir una carpeta para todos los usuarios [users] comment = All users path = /alguna/carpeta read only = No inherit acls = Yes veto files = /aquota.user/groups/shares/ ##compartir carpeta solo para el usuario spruebas [UnUsuario] comment = prueba con usuario del dominio inherit acls = Yes path = /ruta/de/alguna/carpeta/ read only = No available = Yes browseable = Yes valid users = pruebas+spruebas
8.- Reiniciamos samba:
# sudo testparm # sudo /etc/init.d/samba restart
9.- Agregar Linux al dominio:
# sudo net ads join -S ad.pruebas.local -U administrador
Nos deberá mostrar un mensaje como el siguiente:
Using short domain name -- pruebas Joined 'UBUNTU' to realm 'PRUEBAS.LOCAL'
Si nos llega a mostrar un error como el siguiente:
Administrador's password: [2007/08/25 16:58:33, 0] libsmb/cliconnect.c:cli_session_setup_spnego(785) Kinit failed: Clock skew too great Failed to join domain!
El problema puede ser que la hora del equipo con Linux no este configurada correctamente. Kerberos es muy estricto con la hora. Para solucionarlo, corregimos la hora manualmente o ejecutamos el siguiente comando:
# ntpdate pool.ntp.org
Después de hacer esto ya se debería de poder unir al dominio.
10.- Resolver nombres de usuarios y grupos de dominio
Editar “/etc/nsswitch.conf” y modificar las siguientes lineas dejándolas así:
passwd: files winbind o bien compat winbind group: files winbind o bien compat winbind shadow: files winbind o bien compat winbind hosts: files dns winbind
Gracias a las lineas anteriores los usuarios y grupos del dominio pueden ser resueltos.
11.- Reiniciamos winbind:
# sudo /etc/init.d/winbind restart
12.0- Hacer tests para ver si todo salio bien
12.1.- Verificar la integración del dominio:
- “sudo net rpc testjoin” muestra si esta correctamente integrada al dominio:
Join to 'pruebas' is OK
- “sudo net ads info” muestra información del dominio:
LDAP server: 192.168.1.254 LDAP server name: ad.pruebas.local Realm: PRUEBAS.LOCAL Bind Path: dc=pruebas,dc=LOCAL LDAP port: 389 Server time: dom, 26 ago 2007 14:57:04 MDT KDC server: 192.168.1.254 Server time offset: 11
- “sudo net rpc info -U Usuario_de_dominio” muestra el dominio al que pertenece, numero de usuarios, grupos, etc:
Domain Name: pruebas Domain SID: x-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx Sequence number: xx Num users: xx Num domain groups: xx Num local groups: xx
12.2.- Verificar que winbind este funcionando:
- "sudo wbinfo -u" lista usuarios del dominio. - "sudo wbinfo -g" lista grupos del dominio. - "sudo getent passwd" muestra usuarios locales y del dominio. - "sudo getent group" muestra grupos locales y del dominio. - "sudo -U usuario-de-dominio -s" nos convertimos en usuario-de-dominio.
Para este último comando no hace falta poner ningun prefijo ni sufijo de dominio, tan solo el alias de usuario
Si todo lo anterior funciona vamos por buen camino.
13.- Configurar la autenticación
Para configurar el acceso a usuarios del dominio a nuestro Linux mediante el entorno gráfico hay que configurar pam. Para ello editamos los siguientes archivos y agregamos/modificamos las siguientes lineas:
/etc/pam.d/common-account account sufficient pam_winbind.so account required pam_unix.so try_first_pass /etc/pam.d/common-auth auth sufficient pam_winbind.so auth required pam_unix.so nullok_secure try_first_pass /etc/pam.d/common-password password sufficient pam_winbind.so password required pam_unix.so nullok obscure min=4 max=8 md5 try_first_pass /etc/pam.d/common-session session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session sufficient pam_winbind.so session required pam_unix.so try_first_pass
El modulo “pam_winbind.so” le indica a pam que los usuarios y grupos los obtenga mediante winbind. El modulo “pam_mkhomedir.so” nos crea el directorio home del usuario en caso de no existir.
14.- Creamos el directorio “/home/PRUEBAS” (Nombre del dominio en MAYÚSCULA) que es donde tendrán sus home los usuarios:
# mkdir /home/PRUEBAS
15.- Usuarios de Active Directory administrando el servidor
Para realizar esto, yo he optado por crear un grupo en el dominio llamado LinuxAdmins donde añadir a quien deseemos que tenga permisos de administrador y añadir ese grupo al fichero /etc/sudoers
%LinuxAdmins ALL=(ALL) ALL
