Buenos dias | tardes | noches, en esta entrega realizaremos la tarea de integrar máquinas GNU/Linux, en este caso Debian Jessie, para su autenticación mediante usuarios creados en Directorios Activos en Windows 2012 con perfil fijo y montaje de su home al vuelo.
Escenario montado:
- Windows 2012:
- hostname: Burns
- dominio: SPOTYPE.COM
- Roles ya instalados:
- Active Directory
- DNS
- Dirección ip: 10.0.0.10
- Cliente Windows:
- hostname: cliente-windows
- Cliente sin configurar.
- Dirección ip: 10.0.0.11
Partimos del punto en el que tenemos ya instalado y configurado AD y DNS en Burns y un cliente con el sistema recién instalado.
1.- Configuración de Burns
En dicha máquina, necesitaremos habilitar la característica llamada Administración de identidades para Unix.
Para habilitar dicha característica en Windows 2012, deberemos ejecutar las siguientes instrucciones en Powershell:
dism.exe /online /enable-feature /featurename:adminui /all dism.exe /online /enable-feature /featurename:nis /all dism.exe /online /enable-feature /featurename:psync /all
Después de terminar de habilitar las características, nos preguntará si queremos reiniciar el equipo, decimos Y en la última característica que habilitamos.
Una vez hayamos reiniciado el servidor, procedemos a realizar la configuración del DNS.
1.1.- Configuración del DNS
Necesitaremos agregar dos registros, uno en la zona de resolución directa y otro en la inversa.
Para ello, nos vamos al Administrador del Servidor > Herramientas > DNS > Navegamos hasta SPOTYPE.com:
Añadimos un nuevo registro en la zona de resolución directa con el host del cliente y su ip y marcamos la opción Create associated pointer (PRT) record que será para añadir un registro en la zona de resolución inversa asociado a nuestro cliente.
Nos aparecerá de la siguiente forma:
Si vemos la zona de resolución inversa (deberemos actualizar la vista):
1.2.- Configuración del usuario y grupo
Nos vamos al Administrador del servidor > Herramientas > Usuarios y equipos de Active Directory.
Desplegamos spotype.com y nos creamos un nuevo usuario llamado usuariodebian haciendo click derecho sobre Users > New > User:
Le establecemos una contraseña con las politicas que tiene Windows y finalizamos la creación.
Ahora creamos el grupo haciendo click derecho sobre la carpeta Users > New > Group:
Una vez creado, verificamos que se han creado bien:
En cada uno de ellos, pulsamos click derecho > propiedades > elegimos la pestaña llamada Unix Attributes y seleccionamos nuestro dominio:
-Grupodebian
-Usuariodebian
2.- Configuración del cliente
2.1.- Instalación y configuración de libnss-ldapd
En el cliente linux, instalamos el paquete libnss-ldapd:
apt update && apt upgrade -y apt install libnss-ldapd
Durante la instalación nos pedirá configurar ciertos parámetros, los dejamos por defecto ya que después lo configuraremos manualmente.
Editamos el fichero /etc/nslcd.conf verificando las siguientes lineas:
uri ldap://10.0.0.10 base dc=spotype,dc=com binddn cn=administrator,cn=Users,dc=spotype,dc=com bindpw Administrador1
Ahora agregamos el mapeo de los siguientes atributos al fichero:
filter passwd (objectClass=User) filter group (objectClass=Group) map passwd homeDirectory unixHomeDirectory map passwd gecos name map group memberUid member
Guardamos y procedemos a editar el fichero /etc/ldap/ldap.conf descomentanto y definiendo las lineas correspondientes a la URI y BASE:
BASE dc=spotype,dc=com URI ldap://10.0.0.10/
Guardamos y por último, verificamos el fichero /etc/nsswitch.conf confirmando la configuración ldap correspondiente a passwd y group:
passwd: compat ldap group: compat ldap
Editamos el fichero /etc/resolv.conf y hacemos servidor DNS principal a Burns:
domain spotype.com nameserver 10.0.0.10
2.2.- Instalación y configuración de Kerberos
Instalamos los paquetes necesarios:
apt update && apt upgrade -y apt install krb5-config krb5-user
Durante la instalación nos preguntará por el Realm por defecto para Kerberos 5, especificamos el dominio de burns (SPOTYPE.COM)
Editamos el fichero /etc/krb5.conf, verificando la sección libdefaults y editando la sección realms:
[libdefaults] default_realm = SPOTYPE.COM ... [realms] SPOTYPE.COM = { kdc = burns.spotype.com admin_server = burns.spotype.com }
Probamos la autenticación del directorio activo con Kerberos:
root@cliente-windows:/home/debian# kinit usuariodebian Password for usuariodebian@SPOTYPE.COM: root@cliente-windows:/home/debian#
2.3.- Configuración de PAM Kerberos
Instalamos libpam-krb5 para que el sistema utilice Kerberos del AD para la autenticación de usuarios:
apt update && apt upgrade -y apt install libpam-krb5
Editamos el fichero /etc/pam.d/common-session y añadimos la siguiente linea para crear el directorio home al vuelo:
session optional pam_mkhomedir.so
3.- Pruebas de funcionamiento
Probamos a hacer un login:
root@cliente-windows:/home/debian# login cliente-windows login: usuariodebian Password: Last login: Tue Mar 7 16:51:20 UTC 2017 on pts/0 Linux cliente-windows 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Creating directory '/home/usuariodebian'. $
Podemos realizar una búsqueda en Ldap, pero para ello deberemos de instalar los dos siguientes paquetes:
apt install ldap-utils libsasl2-modules-gssapi-mit -y
Procedemos a realizar una búsqueda:
root@cliente-windows:/home/debian# ldapsearch "uid=usuariodebian" SASL/GSSAPI authentication started SASL username: usuariodebian@SPOTYPE.COM SASL SSF: 56 SASL data security layer installed. # extended LDIF # # LDAPv3 # base <dc=spotype,dc=com> (default) with scope subtree # filter: uid=usuariodebian # requesting: ALL # # usuariodebian, Users, spotype.com dn: CN=usuariodebian,CN=Users,DC=spotype,DC=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: usuariodebian givenName: usuariodebian distinguishedName: CN=usuariodebian,CN=Users,DC=spotype,DC=com instanceType: 4 whenCreated: 20170307160125.0Z whenChanged: 20170307164045.0Z displayName: usuariodebian uSNCreated: 16660 uSNChanged: 16678 name: usuariodebian objectGUID:: xIqPg+unAEeGytk3+L3Gpw== userAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 lastLogon: 131333792753960516 pwdLastSet: 131333760858960939 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAA3pAZDl2LjX30QeivVAQAAA== accountExpires: 9223372036854775807 logonCount: 14 sAMAccountName: usuariodebian sAMAccountType: 805306368 userPrincipalName: usuariodebian@spotype.com objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=spotype,DC=com dSCorePropagationData: 16010101000000.0Z lastLogonTimestamp: 131333784455368047 uid: usuariodebian msSFU30Name: usuariodebian msSFU30NisDomain: spotype uidNumber: 10000 uidNumber: 10000 unixHomeDirectory: /home/usuariodebian loginShell: /bin/sh # search reference ref: ldap://ForestDnsZones.spotype.com/DC=ForestDnsZones,DC=spotype,DC=com # search reference ref: ldap://DomainDnsZones.spotype.com/DC=DomainDnsZones,DC=spotype,DC=com # search reference ref: ldap://spotype.com/CN=Configuration,DC=spotype,DC=com # search result search: 5 result: 0 Success # numResponses: 5 # numEntries: 1 # numReferences: 3