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