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
Info! Las ip de el servidor de nuestra casa puede variar segun nuesta compañia.

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:~$