Después de haber tenido una larga experiencia tratando de instalar equipos Linux bajo Active Directory puedo pasar en blanco todas las anotaciones mentales que me permitieron hacerlo posible.
Les comento que hay dos técnicas famosas, una de ellas es utilizando los servicios de autenticación de LDAP que posee Linux y la otra Winbind yo me volqué por Winbind ya que no requiere que se toque Servidor mientras que LDAP necesita que configuremos nuestro Servidor para que comparta el arbol de LDAP utilizando la herramienta de Microsoft denominada ADAM … como ven ADS es simplemente un LDAP enmascarado que no cumple con ninguna ESTANDAR, si ya se…Que LADRONES estos de MS!!.
Estos apuntes les pueden ayudar a trabajar en distintas distros…. Probados están Ubuntu 7.10 , 8.04 y 8.10.
Primeros pasos
Instalamos los paquetes:
apt-get install krb5-user samba winbind
Previo Backup de todo:
tar -cvzf etc.tar.gz /etc
Capitulo I: Preparando a Kerberos.
Les comento que Kerberos es el encargado de sincronizar las conexiones entre el servidor y cliente, cuando hablamos de sincronizar nos referimos a que cada parte entienda de que se habla y que solo estas dos lo hagan y nadie más interfiera en ella.
Editamos el archivo de configuración /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5.log
[libdefaults]
default_realm = MIDOMINIO.SFNET
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
[realms]
EXAMPLE.COM = {
kdc = servidor.MIDOMINIO.SFNET
admin_server = servidor.MIDOMINIO.SFNET
default_domain = MIDOMINIO.SFNET
}
[domain_realm]
.midominio.sfnet = MIDOMINIO.SFNET
midominio.sfnet = MIDOMINIO.SFNET
Capitulo II: Relojes en posición
Sincronizamos el reloj de nuestro puesto al del servidor ya que la hora en Kerberos tiene un papel fundamental.
Editamos el archivo /etc/default/ntpdate
NTPSERVERS=»servidor.midominio.com»
NTPOPTIONS=»-u»
Capitulo III: Sabemos nuestros nombres?
Para evitar errores en la registración del nombre del host en el arbol DNS es recomendable que hagamos lo siguiente:
Editamos el archivo /etc/hosts
127.0.0.1 pc100.midominio.sfnet localhost pc100
10.1.1.1 servidor.midominio.sfnet servidor
Editamos el archivo /etc/resol.conf
nameserver 10.1.1.1
domain MIDOMINIO.SFNET
Capitulo IV: Configurando SAMBA como cliente de ADS
Bueno esto es el nudo principal de nuestra configuración samba, por lo que es importante que prestemos atención a cada linea y que sepamos bien cada función de las mismas.
Algunas de las caracteristicas que yo usé son las siguientes:
-En mi caso yo prefiero que WINBIND me muestre los usuarios de dominio de la misma manera que un usuario regular de passwd, con esto me refiero a no mostrarlos de las siguiente forma «MIDOMINIO\pepito» sino «pepito», ya que esto me trajo muchos menos dolores de cabeza, esto lo logramos con la linea winbind use default domain = yes.
Ahora nos toca modificar el archivo de /etc/smb.conf
[global]
security = ads
realm = MIDOMINIO.SFNET
password server = servidor.midominio.sfnet
workgroup = MIDOMINIO
# Personalmente es mejor evitar separadores extraños en los nombres
# de usuario pero eso queda a tu criterio
# winbind separator = +
winbind use default domain = yes
winbind refresh tickets = yes
winbind enum users = yes
winbind enum groups = yes
winbind offline logon = yes
idmap backend = rid:MIDOMINIO=70000-1000000
idmap uid = 70000-1000000
idmap gid = 70000-1000000
# No te olvides de crear un directorio /home/MIDOMINIO
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
restrict anonymous = 2
Capitulo V: Prueba de motores previa
Iniciando sistemas
Con todas esta chorrera de lineas nos disponemos a probar si las configuraciones que modificamos están funcionando.
Probemos Kerberos:
Ingresemos el comando
kinit Administrador@MIDOMINIO.SFNET
Que nos pedirá las password de administrador y no nos debe retornar ningun mensaje, generalmente los errores causados por diferencias horarias entre servidor y estación son reportados por este comando.
Con el comando klist podemos visualizar los tickets kerberos almacenados, si todo va bien alguno debe figurar en lista.
Hagamos parte del dominio a nuestro linux
net ads join -U administrador%miclavesupersecreta
si es un dominio NT
net domain join -U administrador%miclavesupersecreta
Si todo va bien nos tiene que avisar que nuestra estación ya es parte del dominio, en este momento pueden aparecer errores de sincronización del servidor DNS, estos errores son muy frecuentes cuando el servidor DNS no está incluido en el servidor ADS o por ejemplo es otro tipo de SO como Linux, o incluso si nuestro archivo de hosts esta mal armado. En la mayoría de los casos salvo este último los equipos son aceptados en el Directorio sin ningún problema, si bien se avisa de la dificultad a nivel DNS.
Luego tratemos de listar nuestros usuarios del directorio con el siguientes comando
wbinfo -u
Tambien podemos hacer lo mismo con nuestros grupos
wbinfo -g
Capitulo 6: Preparando PAM
PAM es el sistema de modular donde se autentican los usuarios, si algo entra a nuestro sistemas lo hace por PA, ya sea: LOGIN, SUDO, SSH, etc. Por eso hay que tener mucho cuidado al modificarlo porque los efectos son inmediatos y si algo sale mal es probable que NINGUN USUARIO PUEDA INGRESAR EN NUESTRO EQUIPO NUNCA MAS… si tocas la cerradura y luego cierras y te das cuanta que la rompiste, simplemente te quedas afuera!!!, por lo que recomiendo es que despertemos a nuestro root del letargo eterno al que es sometido por la gente de UBUNTU y entremos con varias consolas mientras modificamos los archivos de PAM y si por alguna casualidad de la vida algo sale mal tenemos con que editamos los archivos para volverlos como antes.
Editamos /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat
Editamos /etc/pam.d/common-account
account sufficient pam_winbind.so
account required pam_unix.so
Editamos /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth required pam_deny.so
Editamos /etc/pam.d/common-session
session required pam_unix.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
Probemos los siguientes comandos:
getent passwd
El cual no va a devolver una lista de usuarios ya con el formato UNIX
al igual que el comando
getent groups
Por último hagamos la prueba intentando ingresar por consola un usuario de dominio si todo va bien… pues a disfrutar.
Referencias:
https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto