Product Documentation

Integrieren von NIS in Active Directory

Jul 06, 2017

In diesem Artikel wird beschrieben, wie NIS in Windows Active Directory (AD) auf dem Linux VDA mithilfe von SSSD integriert wird. Der Linux VDA ist eine Komponente von Citrix XenApp und XenDesktop. Daher passt er eng in die Windows AD-Umgebung.

Zur Verwendung von NIS statt AD als UID- und GID-Anbieter müssen die Kontoinformationen (Benutzernamen/Kennwortkombinationen) in AD und NIS identisch sein.

Hinweis

Die Authentifizierung findet weiterhin auf dem Active Directory-Server statt. NIS+ wird nicht unterstützt. Wenn Sie NIS als UID- und GID-Anbieter verwenden, werden die POSIX-Attribute des Windows-Servers nicht mehr verwendet.

Tipp

Diese Methode ist eine veraltete Methode zum Bereitstellen des Linux VDA und sollte nur in besonderen Fällen verwendet werden. Für RHEL-/CentOS-Distributionen folgen Sie den Anweisungen hier. Für Ubuntu-Distributionen folgen Sie den Anweisungen hier.

Was ist SSSD?

SSSD ist ein System-Daemon. Seine primäre Funktion ist die Bereitstellung des Zugriffs zur Identifizierung und Authentifizierung von Remoteressourcen über ein gemeinsames Framework, das Zwischenspeicherung und Offlineunterstützung für das System liefert. Es bietet PAM- und NSS-Module und soll künftig D-BUS-Schnittstellen für erweiterte Benutzerinformationen unterstützen. Es bietet zudem eine bessere Datenbank für lokale Benutzerkonten und erweiterte Benutzerdaten.

Erforderliche Software

Der AD-Anbieter wurde mit SSSD Version 1.9.0 eingeführt. Wenn Sie eine ältere Version verwenden, folgen Sie den Anweisungen unter Configuring the LDAP provider with Active Directory.

Die folgenden Umgebungen wurden gemäß den Anweisungen in diesem Artikel getestet:

  • RHEL 7.2 oder höher/CentOS 7.2 oder höher
  • Linux VDA-Version 1.3 oder höher

Integrieren von NIS in Active Directory

Hinzufügen des Linux VDA als NIS-Client

Konfigurieren Sie den NIS-Client:

command Kopieren

yum –y install ypbind rpcbind oddjob-mkhomedir

Legen Sie die NIS-Domäne fest:

command Kopieren

ypdomainname nis.domain

echo "NISDOMAIN=nis.domain" >> /etc/sysconfig/network

Fügen Sie die IP-Adresse des NIS-Servers/-Clients zu /etc/Hosts hinzu:

command Kopieren

{NIS server IP address}   server.nis.domain nis.domain

Konfigurieren Sie NIS über authconfig:

command Kopieren

sudo authconfig --enablenis --nisdomain=nis.domain --nisserver=server.nis.domain --enablemkhomedir --update

nis.domain ist der Name der NIS-Serverdomäne und server.nis.domain der Hostname des NIS-Servers (bzw. dessen IP-Adresse).

Konfigurieren Sie die NIS-Dienste:

command Kopieren

sudo systemctl start rpcbind ypbind

sudo systemctl enable rpcbind ypbind 

Vergewissern Sie sich, dass die NIS-Konfiguration richtig ist:

command Kopieren

ypwhich

Prüfen Sie, ob die Kontoinformationen über den NIS-Server zur Verfügung stehen:

command Kopieren

getent passwd nisaccount

Hinweis

nisaccount ist das tatsächliche NIS-Konto auf dem NIS-Server. Stellen Sie sicher, dass UID-/GID-Homeverzeichnis und Anmeldeshell richtig konfiguriert sind.

Domänenbeitritt und Erstellen einer Hostschlüsseltabelle mit Samba

SSSD bietet keine AD-Clientfunktionen für den Domänenbeitritt und die Verwaltung der Systemschlüsseltabelle. Es gibt hierfür mehrere Methoden:

  • adcli
  • realmd
  • winbind
  • samba

Die Informationen in diesem Abschnitt basieren auf der Verwendung von Samba. Informationen über realmd finden Sie in der Dokumentation über RHEL oder CentOS. Diese Schritte müssen vor der Konfiguration von SSSD ausgeführt werden.

Domänenbeitritt und Erstellen einer Hostschlüsseltabelle mit Samba

Auf dem Linux-Client mit ordnungsgemäß konfigurierten Dateien:

  • /etc/krb5.conf
  • /etc/samba/smb.conf:

Konfigurieren Sie die Maschine für die Authentifizierung mit Samba und Kerberos:

command Kopieren

sudo authconfig --smbsecurity=ads --smbworkgroup=domain --smbrealm=REALM --krb5realm=REALM --krb5kdc=fqdn-of-domain-controller --update

REALM ist der Kerberos-Bereichsname in Großbuchstaben und domain ist der kurze NetBIOS-Name der Active Directory-Domäne.

Wenn DNS-basierte Suchvorgänge nach dem KDC-Server und -Bereichsname erforderlich sind, fügen Sie dem oben aufgeführten Befehl die folgenden beiden Optionen hinzu:

command Kopieren

--enablekrb5kdcdns --enablekrb5realmdns

Öffnen Sie die Datei /etc/samba/smb.conf und fügen Sie im Abschnitt [Global] nach dem von dem Tool authconfig erstellten Abschnitt die folgenden Einträge hinzu.

command Kopieren

kerberos method = secrets and  keytab

Zum Beitritt zur Windows-Domäne muss der Domänencontroller erreichbar sein und Sie müssen ein Active Directory-Benutzerkonto mit Berechtigungen zum Hinzufügen von Computern zu der Domäne haben:

command Kopieren

sudo net ads join REALM -U user

REALM ist der Kerberos-Bereichsname in Großbuchstaben und user ist ein Domänenbenutzer mit Berechtigungen zum Hinzufügen von Computern zur Domäne.

Einrichten von SSSD

Die Einrichtung von SSSD umfasst die folgenden Schritte:

  • Installieren der Pakete sssd-ad und sssd-proxy auf der Linux-Clientmaschine
  • Ändern der Konfiguration verschiedener Dateien (z. B. sssd.conf)
  • Starten des Diensts sssd

/etc/sssd/sssd.conf

Muster einer sssd.conf-Konfiguration (zusätzliche Optionen können bei Bedarf hinzugefügt werden):

Konfig. Kopieren

 

[sssd]

config_file_version = 2

domains = example

services = nss, pam

 

[domain/example]

# Uncomment if you need offline logins

# cache_credentials = true

re_expression = (((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$))

id_provider = proxy

proxy_lib_name = nis

auth_provider = ad

access_provider = ad

 

# Should be specified as the lower-case version of the long version of the Active Directory domain.

ad_domain = ad.example.com

 

# Kerberos settings

krb5_ccachedir = /tmp

krb5_ccname_template = FILE:%d/krb5cc_%U

 

# Uncomment if service discovery is not working

# ad_server = server.ad.example.com

 

# Comment out if the users have the shell and home dir set on the AD side

default_shell = /bin/bash

fallback_homedir = /home/%d/%u

 

# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available

# ldap_sasl_authid = host/client.ad.example.com@AD.EXAMPLE.COM

 

Ersetzen Sie ad.domain.com und server.ad.example.com durch den jeweils gültigen Wert. Weitere Informationen finden Sie unter sssd-ad(5) - Linux man page.

Legen Sie Dateieigentümer und Berechtigungen für sssd.conf fest:

command Kopieren

chown root:root /etc/sssd/sssd.conf

chmod 0600 /etc/sssd/sssd.conf

restorecon /etc/sssd/sssd.conf

Konfigurieren von NSS/PAM

RHEL/CentOS

Aktiveren Sie SSSD mit authconfig und installieren Sie oddjob-mkhomedir, damit die Erstellung des Homeverzeichnisses mit SELinux funktioniert:

command Kopieren

authconfig --enablesssd --enablesssdauth --enablemkhomedir --update

sudo systemctl start sssd

sudo systemctl enable sssd

Tipp

Berücksichtigen Sie bei der Konfiguration der Linux VDA-Einstellungen, dass es für SSSD keine besonderen Einstellungen für den Linux VDA-Client gibt. Verwenden Sie als weitere Lösung im Skript ctxsetup.sh den Standardwert.

Überprüfen der Kerberos-Konfiguration

Überprüfen Sie, ob Kerberos zur Verwendung mit dem Linux VDA ordnungsgemäß konfiguriert ist, indem Sie sicherstellen, dass die Systemdatei für die Schlüsseltabelle erstellt wurde und gültige Schlüssel enthält:

command Kopieren

sudo klist -ke

Daraufhin sollte die Liste der Schlüssel angezeigt werden, die für die verschiedenen Kombinationen aus Prinzipalnamen und Verschlüsselungssammlungen verfügbar sind. Führen Sie den Kerberos-Befehl kinit aus, um die Maschine bei dem Domänencontroller mit diesen Schlüsseln zu authentifizieren:

command Kopieren

sudo kinit –k MACHINE\$@REALM

Maschinen- und Bereichsname müssen in Großbuchstaben angegeben werden und das Dollarzeichen ($) muss durch einen umgekehrten Schrägstrich (\) geschützt werden, um die Ersetzung in der Shell zu verhindern. In einigen Umgebungen sind DNS-Domänenname und Kerberos-Bereichsname unterschiedlich. Stellen Sie sicher, dass der Bereichsname verwendet wird. Wenn dieser Befehl erfolgreich ist, wird keine Ausgabe angezeigt.

Stellen Sie mit folgendem Befehl sicher, dass das TGT-Ticket für das Maschinenkonto zwischengespeichert wurde:

command Kopieren

sudo klist -ke

Überprüfen der Benutzerauthentifizierung

Prüfen Sie mit dem Befehl getent, ob das Anmeldeformat unterstützt wird und ob NSS funktioniert:

command Kopieren

sudo getent passwd DOMAIN\\username

Der Parameter DOMAIN muss die kurze Version des Domänennamens sein. Wenn ein anderes Anmeldeformat von Citrix Receiver erforderlich ist, überprüfen Sie dies zunächst mit dem Befehl getent.

Unterstützte Anmeldeformate:

  • Down-Level-Anmeldename: DOMÄNE\Benutzername
  • UPN: Benutzername@Domäne.com
  • Format mit NetBIOS-Suffix: Benutzername@DOMÄNE

Um sich zu vergewissern, dass das SSSD-PAM-Modul richtig konfiguriert ist, melden Sie sich lokal mit einem Domänenbenutzerkonto an, mit dem noch nie eine Anmeldung an der Maschine vorgenommen wurde.

command Kopieren

sudo localhost –l DOMAIN\\username

id -u

Stellen Sie sicher, dass eine entsprechende Cachedatei mit Kerberos-Anmeldeinformationen für die mit dem Befehl uid zurückgegebene UID erstellt wurde:

command Kopieren

ls /tmp/krb5cc_{uid}

Stellen Sie sicher, dass die Tickets im Kerberos-Anmeldeinformationscache des Benutzers gültig und nicht abgelaufen sind:

command Kopieren

klist