En el siguiente post vamos a integrar un cliente Linux en un dominio Windows, el cual, utiliza el directorio activo como un conjunto de servicios, en el cual tenemos un sistema centralizado de usuarios grupos etc. utilizaremos los servicios que utiliza windows en el directorio activo que son LDAP, Kerberos, NSS y DNS.
Primero vamos a promover nuestro controlador de dominio podemos verlo explicado Administración remota PowerShell una vez configurado procedemos a realizar las configuraciones.
Escenario
Tenemos dos maquinas un cliente Windows con IP 192.168.1.53
y un cliente linux con IP conectados en la misma red.
Configuraciones Windows
Primero vamos a instalar los siguientes paquetes:
Dism.exe /online /enable-feature /featurename:adminui /all Dism.exe /online /enable-feature /featurename:nis /all Dism.exe /online /enable-feature /featurename:psync /all
Con dichos paquetes podemos agregar usuarios, grupos y equipos linux a nuestro dominio.
Creamos grupo y usuario en el dominio
El siguiente paso es crear un grupo y un usuario para autenticarnos desde el cliente linux
Grupo
Para crear el grupo nos dirigimos a Herramientas - usuarios y equipos de Active Directory - DOMA.local - Users - Nuevo - Grupo
Y asignamos un nombre al grupo
Usuario
Para crear el usuario nos dirigimos a Herramientas - usuarios y equipos de Active Directory - DOMA.local - Users - Nuevo - Usuario
Y damos nombre al usuario
Configuramos UNIX Attributes para el grupo y el usuario
El ultimo paso es configurar las propiedades del usuario y del grupo para poder acceder desde un cliente linux.
Usuario
Grupo
Configuración cliente Linux
Instalamos el paquete apt install ldap-utils
, para poder consultar al directorio activo.
root@debian:~# ldapsearch -x -LLL -D "cn=Administrador,cn=Users,dc=DOMA,dc=LOCAL" -W -h 192.168.1.251 -b dc=DOMA,dc=LOCAL "sAMAccountName=juanlu" Enter LDAP Password: dn: CN=juanlu ramirez,CN=Users,DC=DOMA,DC=local objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: juanlu ramirez sn: ramirez givenName: juanlu distinguishedName: CN=juanlu ramirez,CN=Users,DC=DOMA,DC=local instanceType: 4 whenCreated: 20170306124727.0Z whenChanged: 20170306124858.0Z displayName: juanlu ramirez uSNCreated: 20528 uSNChanged: 20538 name: juanlu ramirez objectGUID:: w4MsIrslxECnnAzF9SBlSQ== userAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 lastLogon: 0 pwdLastSet: 0 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAAiQTVbl0TtzGrFfyuUQQAAA== accountExpires: 9223372036854775807 logonCount: 0 sAMAccountName: juanlu sAMAccountType: 805306368 userPrincipalName: juanlu@DOMA.local objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=DOMA,DC=local dSCorePropagationData: 16010101000000.0Z unixUserPassword: ABCD!efgh12345$67890 uid: juanlu msSFU30Name: juanlu msSFU30NisDomain: DOMA msSFU30PosixMemberOf: CN=linux1,CN=Users,DC=DOMA,DC=local uidNumber: 2000 gidNumber: 2000 unixHomeDirectory: /home/juanlu loginShell: /bin/bash # refldap://ForestDnsZones.DOMA.local/DC=ForestDnsZones,DC=DOMA,DC=local # refldap://DomainDnsZones.DOMA.local/DC=DomainDnsZones,DC=DOMA,DC=local # refldap://DOMA.local/CN=Configuration,DC=DOMA,DC=local
Modificamos /etc/resolv.conf
Ahora modificamos el /etc/resolv.conf
para que quede asi:
domain DOMA.local search DOMA.local nameserver 62.81.16.148 nameserver 62.81.16.213 nameserver 192.168.1.251
Instalamos libnss-ldapd
A continuación instalamos apt --no-install-recommends install libnss-ldapd
, es importante que ignore los parámetros de configuración para poder nosotros meter los nuestros
#Uri LDAP ldap://[IP_Servidor] #Base de búsqueda en el servidor LDAP: dc=DOMA, dc=local #Modificaciones en fichero /etc/nsswitch.conf passwd y group
El fichero nano /etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap
Editamos fichero de configuración nslcd.conf
El siguiente paso es modificar el fichero /etc/nslcd.conf
Las lineas destacadas, son las lineas añadidas o modificadas
# /etc/nslcd.conf# /etc/nslcd.conf # nslcd configuration file. See nslcd.conf(5) # for details. # The user and group nslcd should run as. uid nslcd gid nslcd # The location at which the LDAP server(s) should be reachable. uri ldap://192.168.1.253 # The search base that will be used for all queries. base dc=DOMA,dc=local # The LDAP protocol version to use. #ldap_version 3 # The DN to bind with for normal lookups. binddn cn=Administrador,cn=Users,dc=DOMA,dc=local bindpw asd.123 # The DN used for password modifications by root. #rootpwmoddn cn=admin,dc=example,dc=com # SSL options #ssl off #tls_reqcert never tls_cacertfile /etc/ssl/certs/ca-certificates.crt # The search scope. #scope sub filter passwd (objectClass=User) filter group (objectClass=Group) map passwd homeDirectory unixHomeDirectory map passwd gecos name map group memberUid member
Modificamos el fichero ldap.conf
Por ultimo vamos a modificar el fichero /etc/ldap/ldap.conf
el cual apuntara a nuestro dominio creado anteriormente, para que quede así:
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=DOMA,dc=local URI ldap://192.168.1.251 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Reiniciamos el servicio systemctl restart nslcd.service
y comprobamos que obtenemos el usuario getent passwd [Nombre_Usuario]
root@debian:~# getent passwd juanlu juanlu:*:2000:2000:juanlu ramirez:/home/juanlu:/bin/bash
Instalar cliente kerberos en linux
Para la autenticacion vamos a instalar kerberos en nuestra maquina linux apt install krb5-config krb5-user
Al instalar nos solicitara una serie de datos que serán los siguientes:
#Configurando la autenticación de Kerberos DOMA.LOCAL #Reino predeterminado de la versión 5 de Kerberos: 192.168.1.251 #Servidor administrativo para su reino de Kerberos: 192.168.1.251
Y comprobamos que el fichero /etc/krb5.conf
esta asi:
[libdefaults] default_realm = DOMA.LOCAL [realms] DOMA.LOCAL = { kdc = 192.168.1.251 admin_server = 192.168.1.251 }
Generamos un ticket para kerberos
Vamos a generar un ticket para kerberos, en mi caso al crear el usuario he especificado que el usuario debe poner una nueva contraseña, por lo cual, le especificamos una nueva y ya tendremos nuestro ticket.
root@debian:~# kinit juanlu Password for juanlu@DOMA.LOCAL: Password expired. You must change it now. Enter new password: Enter it again: root@debian:~# klist -5 Ticket cache: FILE:/tmp/krb5cc_0 Default principal: juanlu@DOMA.LOCAL Valid starting Expires Service principal 06/03/17 18:02:43 07/03/17 04:02:43 krbtgt/DOMA.LOCAL@DOMA.LOCAL renew until 07/03/17 18:02:43
Instalamos libpam-krb5 para poder loguearnos
Para poder loguearnos con el usuario del dominio instalaremos en el cliente apt install libpam-krb5
Y modificamos el fichero /etc/pam.d/common-session
para que cree al vuelo el directorio home:
session optional pam_mkhomedir.so
Comprobamos inicio de sesión desde linux
root@debian:/home/usuario# login debian login: juanlu Password: Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) 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/juanlu'. juanlu@debian:~$
No se han encontrado comentarios