@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Linux - Integración CentOS-RedHat 6 con active directory Windows 2008 R2 (LDAP+Kerberos+SSSD)

Integración CentOS-RedHat 6 con active directory Windows 2008 R2 (LDAP+Kerberos+SSSD)

 

Os muestro como integrar vuestros servidores Centos o Redhat versión 6 con un active directory con servidores Windows 2008 R2.

Comenzamos haciendo copia de seguridad de todos los ficheros que vamos a modificar:

cp /etc/krb5.conf /etc/krb5.conf.old
cp /etc/samba/smb.conf /etc/samba/smb.conf.old
cp /etc/nsswitch.conf /etc/nsswitch.conf.old
cp /etc/sssd/sssd.conf /etc/sssd/sssd.conf.old
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.old

Modificaremos el fichero de configuración de kerberos:

vi /etc/krb5.conf

[logging] default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults] default_realm = ELBLOGDENEGU.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
default_tgs_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
default_tkt_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
permitted_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96

[realms] ELBLOGDENEGU.COM = {
kdc = dc01.elblogdenegu.com
kdc = dc02.elblogdenegu.com
admin_server = dc01.elblogdenegu.com:749
admin_server = dc02.elblogdenegu.com:749
default_domain = elblogdenegu.com
}

[domain_realm] elblogdenegu.com = ELBLOGDENEGU.COM
.elblogdenegu.com = ELBLOGDENEGU.COM

[appdefaults] pam = {
debug = true
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Hay que modificar la sección global (el fichero original tiene muchos comentarios, borrar toda la sección global y cambiarla por ésta)

vi /etc/samba/smb.conf

#================= Global Settings====================

[global] workgroup = ELBLOGDENEGU
server string = RHEL6 Linux Server
netbios name = RHEL6
log file = /var/log/samba/log.%m
max log size = 50
security = ads
dedicated keytab file = /etc/krb5.keytab
kerberos method = system keytab
realm = elblogdenegu.com
passdb backend = tdbsam

Unimos la máquina al dominio:

net ads join osName=RHEL osVer=6 -U adminuserdomain

Nos pedirá la contraseña

Enter adminuserdomain's password:
Using short domain name -- ELBLOGDENEGU
Joined 'RHEL6' to realm 'elblogdenegu.com'
No DNS domain configured for rhel6. Unable to perform DNS Update.
DNS update failed!

Si tenéis las herramientas de administración de windows veréis la máquina en el dominio:

Se nos habrá generado una entrada krb5.keytab Podemos ver las entradas que contiene con el comando klist -ke

Keytab name: WRFILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
4 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (des-cbc-crc)
4 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (des-cbc-md5)
4 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (arcfour-hmac)
4 host/rhel6@ELBLOGDENEGU.COM (des-cbc-crc)
4 host/rhel6@ELBLOGDENEGU.COM (des-cbc-md5)
4 host/rhel6@ELBLOGDENEGU.COM (arcfour-hmac)
4 RHEL6$@ELBLOGDENEGU.COM (des-cbc-crc)
4 RHEL6$@ELBLOGDENEGU.COM (des-cbc-md5)
4 RHEL6$@ELBLOGDENEGU.COM (arcfour-hmac)
3 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (des-cbc-crc)
3 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (des-cbc-md5)
3 host/rhel6.elblogdenegu.com@ELBLOGDENEGU.COM (arcfour-hmac)
3 host/rhel6@ELBLOGDENEGU.COM (des-cbc-crc)
3 host/rhel6@ELBLOGDENEGU.COM (des-cbc-md5)
3 host/rhel6@ELBLOGDENEGU.COM (arcfour-hmac)
3 RHEL6$@ELBLOGDENEGU.COM (des-cbc-crc)
3 RHEL6$@ELBLOGDENEGU.COM (des-cbc-md5)
3 RHEL6$@ELBLOGDENEGU.COM (arcfour-hmac)

Hacemos una prueba de las keys de kerberos (no debería mostrar error):

kinit -k RHEL6$

Ahora deberemos editar vi /etc/nsswitch.conf y añadimos sss a passwd y group:

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files sss
shadow:     files
group:      files sss

Ahora editamos /etc/sssd/sssd.conf :

[sssd] config_file_version = 2
services = nss, pam
domain = default
# SSSD will not start if you do not configure any domains.
# Add new domain configurations as [domain/<NAME>] sections, and
# then add the list of domains (in the order you want them to be
# queried) to the "domains" attribute below and uncomment it.
# domains = LDAP

domains = default
[nss]

[pam]

[domain/default] debug_level = 5
enumerate = True
id_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://elblogdenegu.com/
ldap_search_base = dc=elblogdenegu,dc=com
ldap_id_use_start_tls = False
ldap_user_search_base = dc=elblogdenegu,dc=com
ldap_group_search_base = dc=elblogdenegu,dc=com
ldap_schema = rfc2307bis
ldap_sasl_mech = GSSAPI
ldap_force_upper_case_realm = True
ldap_krb5_keytab = /etc/krb5.keytab
ldap_sasl_authid = RHEL6$@ELBLOGDENEGU.COM

auth_provider = ldap
cache_credentials = True
krb5_server = dc01.elblogdenegu.com
krb5_server = dc02.elblogdenegu.com
krb5_realm = ELBLOGDENEGU.COM
krb5_auth_timeout = 15

ldap_user_object_class = person
ldap_user_modify_timestamp = whenChanged
ldap_user_home_directory = unixHomeDirectory
ldap_user_shell = loginShell
ldap_user_principal = userPrincipalName
ldap_user_name = sAMAccountName
ldap_user_uid_number = uidNumber
ldap_user_gid_number = gidNumber
ldap_user_home_directory = unixHomeDirectory
ldap_user_shell = loginShell
ldap_user_principal = userPrincipalName
ldap_group_object_class = group
ldap_group_modify_timestamp = whenChanged
ldap_group_object_class = group
ldap_group_name = sAMAccountName
ldap_group_gid_number = gidNumber
ldap_force_upper_case_realm = True

Reiniciamos el servicio sssd:

service sssd restart

Si os genera errores lanzar este comando:

authconfig --enableldap --enableldapauth --ldapserver=elblogdenegu.com --ldapbasedn="dc=elblogdenegu,dc=com" --update

Ahora editamos /etc/pam.d/system-auth y añadimos pam_sss.so a la última línea:

#%PAM-1.0M-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so

account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so

password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
session required pam_mkhomedir.so umask=0022 skel=/etc/skel/

Ya nos podremos validar con nuestros usuarios de Directorio Activo y tendremos integrada la máquina en directorio.

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales, linuxero y entusiasta de la tecnología.

Compruebe también

Fecha-expiracion-usuario-Linux

Fecha expiracion usuario Linux

Fecha expiración usuario Linux Hoy os quiero mostrar un comando interesante que os ayudará con …

5 comentarios

  1. Buen día

    Con esta configuración puedo compartir carpetas de mi servidor Centos
    y que mis usuarios con Windows en la red tengan o no permisos logeados con el servidor de active directory?
    Bueno incluyendo el Samba

    Muchas gracias

    • Hola David,

      La idea es poder usar la validación de active directory con tus servidores linux.
      Para samba tendrás que configurar ciertos parámetros, y a su vez modificar los usuarios en directorio activo para que trabajen con la integración.
      ¿Necesitas que no les pida validación? Salu2

      • Buen día

        Tengo una red completa que funciona con active directory
        pero quiero montar un servidor de almacenamiento en CentOS
        donde asigne carpetas con permisos únicos de entrada según el grupo predefinido en el active directory y configurado en el samba
        ejemplo
        [TREASURY]
        comment = TREASURY
        path = /media/Backup1/treasury
        browseable = yes
        guest ok = no
        public = yes
        writable = yes
        create mask = 0777
        directory mask = 0777
        valid users = @MIDOMINIO\175365^grp,@MIDOMINIO\108293^grp

        Muchas gracias por la ayuda

  2. Buenas,

    estoy intentando integrar con un AD un Red Hat, pero algo me falla y no se muy bien como comprobar el que. Tengo los tickets, el servidor registrado y lo unico que veo es este fallo

    [sdap_get_generic_done] (0x0100): sdap_get_generic_ext_recv failed [110]: Expiró el tiempo de conexión

    ¿Me puedes ayudar a ver?

    Gracias

  3. Marcelo Martinez

    Si solo quiero usar el ldap de AD no debería bastar con configurar sssd.conf?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

3 − 1 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales