Integrar un equipo Linux a Active Directory


El propósito del siguiente es integrar un equipo Linux con Active Directory, para realizar esto debemos cumplir con los siguientes requerimientos:

1- Se debe tener instalado correctamente Active Directory.
2- En el equipo Linux debe de tener instalado el demonio Samba (mas actual).
3- Se debe contar con conexión a Internet, si para llegar a la nube primero se debe pasar
por un Firewall, verificar que este no bloquee el puerto 123 de NTP.

La configuración con la que contamos es la siguiente:
Obviamente debe de existir comunicación entre el Windows y Linux, el A.D debe resolverle al
Linux las zonas del DNS.

Ahora descargamos los siguientes paquetes, con:

#apt-get install samba smbclient winbind krb5-user krb5-config

Luego nos ubicamos en /etc/hosts y agregamos esto:

127.0.1.1 ad.prueba.local ad
192.168.159.130 linux.prueba.local linux

Ojo, agregamos estas líneas pues me sirvieron, recordemos que prueba.local es el dominio y
que la dirección IP 192.168.159.131 es la dirección IP del equipo que tiene instalado Active
Directory.

[libdefaults]
default_realm = PRUEBA.LOCAL
clockskew = 300

[realms]
PRUEBA.LOCAL = {
kdc = 192.168.159.131
default_domain = prueba.local
admin_server = 192.168.159.131
}
prueba.local = {
kdc = 192.168.159.131
default_domain = prueba.local
admin_server = 192.168.159.131
}
prueba = {
kdc = 192.168.159.131
default_domain = prueba
admin_server = 192.168.159.131
}

[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON

[domain realm]
.prueba = prueba
.prueba.local = PRUEBA.LOCAL

[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}
Ahora creamos un ticket de Kerberos, ejecutando lo siguiente, acá nos pedirá la contraseña del
administrador del dominio:

#Kinit Administrador@prueba.local

Ahora sigue Samba, otra vez recomiendo, hacer el backup del archivo original, luego borramos
el contenido del archivo smb.conf y agregamos estas líneas:

[global]
security = ADS
netbios name = debian
realm = PRUEBA.LOCAL
password server = ad.prueba.local
workgroup = PRUEBA
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 = /home/samba/
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/

##compartir carpeta solo para el usuario
[PEPE]
comment = Prueba con usuario del dominio PEPE
inherit acls = Yes
path = /home/pepe/
read only = No
available = Yes
browseable = Yes
valid users = prueba*pepe

¡Creo que no hay que explicar nada de cómo se comparte archivos con Samba… y las opciones
nuevas no es si no leerlas son fáciles de comprender!.

Después se reinicia Samba y se ejecuta el comando testparm, el cual no da un resumen de la
configuración de Samba y el rol que este cumple (PDC, Grupo de trabajo, miembro de dominio
etc.)

#/etc/init.d/samba restart && testparm

Ahora agregamos el Linux al dominio, con:

#net ads join -S ad.pruebas.local -U administrador

Nos apareció esto cierto!! Fallamos.

Administrador's password:
[2009/05/31 16:58:33, 0]
libsmb/cliconnect.c:cli_session_setup_spnego(785)
Kinit failed: Clock skew too great
Failed to join domain!

Lo que pasa es que Kerberos es muy exigente con la hora lo cal de nuestro Linux si no nos
apareció esto no hay por qué preocuparse, para arreglar esto digitamos.

#ntpdate pool.ntp.org

Esta línea significa que para poder gestionar la fecha y hora en el servidor de manera correcta
con respecto a los servidores de hora en Internet, debemos de tener instalado el demonio
NTP.

Después de hacer esto nos debería unir el Linux al dominio, y si no es porque algo fallo en la
configuración de Kerberos.

Para poder resolver nombres de usuarios y grupos del dominio editamos “/etc/nsswitch.conf”,
nos debe de quedar igual a esto:

passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files dns winbind

Con estas líneas los usuarios y los grupos pueden ser resueltos.
Reiniciamos Winbind.

#/etc/init.d/winbind restart

Para ver si nuestro Linux está bien integrado al dominio, escribimos.

#net rpc testjoin
---------
Join to 'PRUEBA' is OK

Ahora par ver información del dominio.

#net ads info
-----------
LDAP server: 192.168.159.131
LDAP server name: ad.prueba.local
Realm: PRUEBA.LOCAL
Bind Path: dc=PRUEBA,dc=LOCAL
LDAP port: 389
Server time: dom, 5 may 2009 16:59:04 MDT
KDC server: 192.168.1.254
Server time offset: 11

Ahora si queremos ver las características del usuario como grupo a que pertenece, SID,
Dominio a que pertenece etc.

#net rpc info -U Administrador
-----------
Password:
Domain Name: PRUEBAS
Domain SID: S-1-5-21-4-405764553-56874023-5698031759
Sequence number: 96
Num users: 10
Num domain groups: 9
Num local groups: 21

¡Obviamente no nos tiene que aparecer estos mismos resultados!
Para verificar que el demonio Winbind esté funcionando correctamente digitamos.

#wbinfo -u" Lista usuarios del dominio.
#wbinfo -g" Lista grupos del dominio.
#getent passwd" Muestra usuarios locales y del dominio.
#getent group" Muestra grupos locales y del dominio.

Si todo esto está funcionando estamos por buen camino.
Aun mejor si queremos que los usuarios de Active Directory, se logueen en la maquina Linux,
no es si modificar el PAM, ¡ojo si no se configura bien no podremos ingresar al Linux!,
acuérdense del Mandriva Directory Server…… Lo que haremos es lo siguiente comentamos las
líneas que no lo están en los siguientes archivos.

1- Editamos /etc/pam.d/common-account

Account sufficient pam_winbind.so
account required pam_unix.so try_first_pass

2- Editamos /etc/pam.d/common-auth

auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure try_first_pass

3- Editamos /etc/pam.d/common-password

password sufficient pam_winbind.so
password required pam_unix.so nullok obscure min=4 max=8 md5try_first_pass

4- Editamos /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 obtenga los usuarios y grupos de Winbind. Y
el modulo pam_mkhomedir.so nos crea el directorio home del usuario en caso de no existir.

Creamos el directorio /home/PRUEBA (En mayúscula y recuerden este se crea con el nombre NetBIOS del dominio), acá se alojaran el home de los usuarios.

Ahora las pruebas!
Recordemos que habíamos creado una sesión en Samba que decía:

[PEPE]
comment = Prueba con usuario del dominio PEPE
inherit acls = Yes
path = /home/pepe/
read only = No
available = Yes
browseable = Yes
valid users = prueba*pepe

1-Entonces debe existir este directorio /home/pepe/ y /home/samba/
2-En el Active Directory debe existir el usuario pepe.
3-Ahora nos logueamos con pepe en la maquina Linux, nos saldrá algo como esto:
1- Desmontamos las unidades de los clientes Windows con el siguiente comando desde CMD.
2- Accedemos al recurso compartido por este usuario (pepe), digitando en ejecutar o en el
Explorador de Windows \\linux o \\192.168.159.130.
3- Como vemos solo podemos ingresar al directorio del usuario.

Si tratamos de ingresar a otro directorio de otro usuario saldrá una ventana de login.

0 comments

Publicar un comentario

 
|  Esdebian Foro El que sabe sabe, no como el que quiere aprender!