Problemas para unirse a un dominio de Active Directory

Problemas para unirse a un dominio de Active Directory

Estoy intentando unir un servidor Ubuntu 14.04 a un dominio de Windows 2003 R2. Mi administrador dice que desde el lado del controlador, es parte del dominio. Pero parece que SSSD no puede iniciarse y la actualización de DNS falla.

He estado siguiendo una variedad de guías para intentar que esto funcione, pero no he logrado completar ninguna de ellas sin errores.

Guía del servidor Ubuntu
KiloRoot
Nerds de la red
Guía SSSD de Fedora

Discovery parece estar funcionando bien:

kyle@Server21:~$ realm discover COMPANYNAME.LOCAL
CompanyName.Local
  type: kerberos
  realm-name: COMPANYNAME.LOCAL
  domain-name: companyname.local
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-realm-logins
companyname.local
  type: kerberos
  realm-name: COMPANYNAME.LOCAL
  domain-name: companyname.local
  configured: no

realmddice que también estoy unido al dominio:

kyle@Server21:~$ realm join COMPANYNAME.LOCAL
realm: Already joined to this domain

Kerberos tomó la autenticación de mi administrador:

kyle@Server21:~$ kinit -V administrator
Using default cache: /tmp/krb5cc_0
Using principal: [email protected]
Password for [email protected]:
Authenticated to Kerberos v5

Pero cuando llega el momento de unirse, la actualización de DNS falla:

kyle@Server21:~$ sudo net ads join -k
Using short domain name -- COMPANYNAME
Joined 'SERVER21' to dns domain 'CompanyName.Local'
No DNS domain configured for server21. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

Y SSSD todavía tiene problemas para iniciar:

kyle@Server21:~$ systemctl status sssd.service
● sssd.service - System Security Services Daemon
   Loaded: loaded (/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2016-06-22 09:57:57 EDT; 37min ago
  Process: 16027 ExecStart=/usr/sbin/sssd -D -f (code=exited, status=1/FAILURE)

Jun 22 09:57:55 Server21 sssd[16038]: Starting up
Jun 22 09:57:55 Server21 sssd[16041]: Starting up
Jun 22 09:57:55 Server21 sssd[16042]: Starting up
Jun 22 09:57:56 Server21 sssd[be[16043]: Starting up
Jun 22 09:57:57 Server21 sssd[be[16043]: Failed to read keytab [default]: No such file or directory
Jun 22 09:57:57 Server21 sssd[16031]: Exiting the SSSD. Could not restart critical service [COMPANYNAME.LOCAL].
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Control process exited, code=exited status=1
Jun 22 09:57:57 Server21 systemd[1]: Failed to start System Security Services Daemon.
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Unit entered failed state.
Jun 22 09:57:57 Server21 systemd[1]: sssd.service: Failed with result 'exit-code'.

La única parte de krb5.confeso que es específica para mí es [libdefaults]:

kyle@Server21:~$ cat /etc/krb5.conf
[libdefaults]
        default_realm = COMAPNYNAME.LOCAL

Aunque en una instalación anterior pensé que había algo más, [realms]pero no recuerdo qué. La guía de Fedora habla sobre agregar algo allí cuando las búsquedas de DNS no funcionan, pero no detalla lo suficiente como para que yo sepa exactamente qué se supone que debe haber allí.

Mis modificaciones a smb.conf:

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = COMPANYNAME
   client signing = yes
   client use spnego = yes
   kerberos method = secrets and keytab
   realm = COMPANYNAME.LOCAL
   security = ads

Misssd.conf

kyle@Server21:~$ sudo cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = COMPANYNAME.LOCAL

[domain/COMPANYNAME.LOCAL]
id_provider = ad
access_provider = ad
override_homedir = /home/%d/%u

Y dado que la guía de Ubuntu dice que la propiedad y los permisos son importantes:

kyle@Server21:~$ sudo ls -la /etc/sssd
total 12
drwx--x--x   2 sssd sssd 4096 Jun 21 14:34 .
drwxr-xr-x 103 root root 4096 Jun 22 10:21 ..
-rw-------   1 root root  172 Jun 21 14:22 sssd.conf

La guía de Ubuntu también menciona que el hostsarchivo podría causar problemas con la actualización de DNS, pero creo que seguí su ejemplo correctamente:

kyle@Server21:~$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       Server21
192.168.XXX.XXX Server21 Server21.COMPANYNAME.LOCAL

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Entonces, ¿dónde me equivoco aquí? El controlador de dominio dice que es parte del dominio. Tengo Apache y OpenSSH activos y accesibles. Pero hay mucho más que este servidor va a hacer y por eso quiero asegurarme de que todo esté configurado correctamente antes de seguir adelante.


Editar:

Cambié mi hostsarchivo según el consejo deesta páginapara que quede así ahora:

kyle@Server21:~$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       Server21.COMPANYNAME.LOCAL Server21
192.168.11.11   Server21.COMPANYNAME.LOCAL Server21

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ahora getentregresa:

kyle@Server21:~$ sudo getent hosts Server21
127.0.1.1       Server21.COMPANYNAME.LOCAL Server21 Server21
192.168.11.11   Server21.COMPANYNAME.LOCAL Server21 Server21

Y net ads joinahora tiene un mensaje de error diferente:

kyle@Server21:~$ sudo net ads join -k
Failed to join domain: failed to lookup DC info for domain 'COMPANYNAME.LOCAL' over rpc: An internal error occurred.

Hasta ahora, el único consejo que he encontrado sobre este error es asegurarse de que el servidor AD esté activado resolv.confy que su IP sea la única entrada.

kyle@Server21:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.XXX.XXX

Para responder un comentario:

kyle@Server21:~$ nslookup -type=SRV _ldap._tcp.companyname.local
Server:         192.168.XXX.XXX
Address:        192.168.XXX.XXX#53

_ldap._tcp.companyname.local      service = 0 100 389 companynamedc.companyname.local.

En algún momento del camino SSSD pudo comenzar y ahora está activo. Aunque no estoy seguro de qué hice para solucionarlo.

Respuesta1

El problema parece haber sido que mi administrador había creado una entrada en el controlador de dominio para este servidor. Aparentemente, esto provocó un conflicto que provocó que Kerberos encontrara el siguiente error al intentar unirse:

kyle@Server21:~$ sudo net ads join -k
Failed to join domain: failed to lookup DC info for domain 'COMPANYNAME.LOCAL' over rpc: An internal error occurred.

No estoy seguro de que este error fuera completamente exacto ya que mi administrador dijo que el servidor estaba unido al dominio de su parte e realmdindicó que yo también estaba unido:

kyle@Server21:~$ realm join COMPANYNAME.LOCAL
realm: Already joined to this domain

Los pasos que seguí para unirme exitosamente a Kerberos fueron los siguientes:

  1. El administrador eliminó la entrada en el controlador de dominio.
  2. Vuelva a ejecutar la configuración de Kerberos usando:sudo dpkg-reconfigure krb5-config
  3. Elija las opciones en la configuración para agregar el controlador de dominio explícitamente a la [realms]sección dekrb5.conf
  4. Se cambió el nombre de host para garantizar que se creara un nuevo registro.
  5. Saqué un nuevo ticket usandokinit
  6. Se unió al dominio usandosudo net ads join -k

Resultado final:

kyle@SERV21:~$ sudo net ads join -k  
Using short domain name -- COMPANYNAME  
Joined 'SERV21' to dns domain 'CompanyName.Local'

Respuesta2

prueba esto en Server21:

realm leave -v -U [your admin username] COMPANYNAME.LOCAL

entonces

realm join -v -U [your admin username] COMPANYNAME.LOCAL

información relacionada