NIS in Active Directory integrieren

Dieser Artikel beschreibt, wie NIS mit Windows Active Directory (AD) auf dem Linux VDA mithilfe von SSSD integriert wird. Der Linux VDA wird als Komponente von Citrix Virtual Apps and Desktops betrachtet. Daher fügt er sich nahtlos in die Windows AD-Umgebung ein.

Die Verwendung von NIS anstelle von AD als UID- und GID-Anbieter erfordert, dass die Kontoinformationen (Benutzername und Kennwortkombinationen) in AD und NIS identisch sind.

Hinweis:

Die Authentifizierung wird weiterhin vom AD-Server durchgeführt. NIS+ wird nicht unterstützt. Wenn Sie NIS als UID- und GID-Anbieter verwenden, werden die POSIX-Attribute vom Windows-Server nicht mehr verwendet.

Tipp:

Diese Methode stellt eine veraltete Art der Bereitstellung des Linux VDA dar, die nur für spezielle Anwendungsfälle verwendet wird. Für eine RHEL-Distribution befolgen Sie die Anweisungen unter Installieren des Linux VDA unter RHEL und Rocky Linux manuell. Für eine Ubuntu-Distribution befolgen Sie die Anweisungen unter Installieren des Linux VDA unter Ubuntu manuell.

Was ist SSSD?

SSSD ist ein System-Daemon. Seine Hauptfunktion besteht darin, den Zugriff auf die Identifizierung und Authentifizierung entfernter Ressourcen über ein gemeinsames Framework bereitzustellen, das Caching und Offline-Unterstützung für das System bieten kann. Es bietet sowohl PAM- als auch NSS-Module und kann zukünftig D-BUS-basierte Schnittstellen für erweiterte Benutzerinformationen unterstützen. Es bietet auch eine bessere Datenbank zum Speichern lokaler Benutzerkonten und erweiterter Benutzerdaten.

NIS in AD integrieren

Führen Sie die folgenden Schritte aus, um NIS in AD zu integrieren:

Schritt 1: Linux VDA als NIS-Client hinzufügen

Konfigurieren Sie den NIS-Client:

yum –y install ypbind rpcbind oddjob-mkhomedir
<!--NeedCopy-->

Legen Sie die NIS-Domäne fest:

ypdomainname nis.domain
echo "NISDOMAIN=nis.domain" >> /etc/sysconfig/network
<!--NeedCopy-->

Fügen Sie die IP-Adresse für den NIS-Server und -Client in /etc/hosts hinzu:

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

Konfigurieren Sie NIS mit authconfig:

sudo authconfig --enablenis --nisdomain=nis.domain --nisserver=server.nis.domain --enablemkhomedir --update
<!--NeedCopy-->

Die nis.domain stellt den Domänennamen des NIS-Servers dar. Die server.nis.domain ist der Hostname des NIS-Servers, der auch die IP-Adresse des NIS-Servers sein kann.

Konfigurieren Sie die NIS-Dienste:

sudo systemctl start rpcbind ypbind

sudo systemctl enable rpcbind ypbind
<!--NeedCopy-->

Stellen Sie sicher, dass die NIS-Konfiguration korrekt ist:

ypwhich
<!--NeedCopy-->

Überprüfen Sie, ob die Kontoinformationen vom NIS-Server verfügbar sind:

getent passwd nisaccount
<!--NeedCopy-->

Hinweis:

Das nisaccount stellt das echte NIS-Konto auf dem NIS-Server dar. Stellen Sie sicher, dass UID, GID, Home-Verzeichnis und Anmelde-Shell korrekt konfiguriert sind.

Schritt 2: Domäne beitreten und einen Host-Keytab mit Samba erstellen

SSSD bietet keine AD-Client-Funktionen zum Beitreten der Domäne und zur Verwaltung der System-Keytab-Datei. Es gibt verschiedene Methoden, um diese Funktionen zu erreichen, darunter:

  • adcli
  • realmd
  • Winbind
  • Samba

Die Informationen in diesem Abschnitt beschreiben nur den Samba-Ansatz. Für realmd lesen Sie die Dokumentation des RHEL- oder CentOS-Anbieters. Diese Schritte müssen vor der Konfiguration von SSSD befolgt werden.

Der Domäne beitreten und Host-Keytab mit Samba erstellen:

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

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

Konfigurieren Sie den Computer für Samba- und Kerberos-Authentifizierung:

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

Wobei REALM der Kerberos-Realm-Name in Großbuchstaben und domain der NetBIOS-Name der Domäne ist.

Wenn eine DNS-basierte Suche des KDC-Servers und des Realm-Namens erforderlich ist, fügen Sie die folgenden zwei Optionen zum vorhergehenden Befehl hinzu:

--enablekrb5kdcdns --enablekrb5realmdns

Öffnen Sie /etc/samba/smb.conf und fügen Sie die folgenden Einträge unter dem Abschnitt [Global] hinzu, aber nach dem Abschnitt, der vom Tool authconfig generiert wurde:

kerberos method = secrets and keytab winbind offline logon = no

Der Beitritt zur Windows-Domäne erfordert, dass Ihr Domänencontroller erreichbar ist und Sie ein AD-Benutzerkonto mit Berechtigungen zum Hinzufügen von Computern zur Domäne besitzen:

sudo net ads join REALM -U user
<!--NeedCopy-->

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

Schritt 3: SSSD einrichten

Hinweis

Die Verwendung von SSSD mit dem Name Service Cache Daemon (NSCD) kann zu unerwartetem Verhalten führen. Weitere Informationen finden Sie unter Using NSCD with SSSD.

Die Einrichtung von SSSD umfasst die folgenden Schritte:

  • Installieren Sie die Pakete sssd-ad und sssd-proxy auf dem Linux-Clientcomputer.
  • Nehmen Sie Konfigurationsänderungen an verschiedenen Dateien vor (z. B. sssd.conf).
  • Starten Sie den sssd-Dienst.

/etc/sssd/sssd.conf

Eine Beispielkonfiguration für sssd.conf (weitere Optionen können bei Bedarf hinzugefügt werden):

[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 long version of the Active Directory domain.
ad_domain = 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
<!--NeedCopy-->

Ersetzen Sie ad.domain.com, server.ad.example.com durch den entsprechenden Wert. Weitere Informationen finden Sie auf der sssd-ad(5) - Linux-Manpage.

Legen Sie die Dateiberechtigungen und den Besitz für sssd.conf fest:

chown root:root /etc/sssd/sssd.conf chmod 0600 /etc/sssd/sssd.conf restorecon /etc/sssd/sssd.conf

Schritt 4: NSS/PAM konfigurieren

RHEL/CentOS:

Verwenden Sie authconfig, um SSSD zu aktivieren. Installieren Sie oddjob-mkhomedir, um sicherzustellen, dass die Erstellung des Home-Verzeichnisses mit SELinux kompatibel ist:

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

sudo systemctl start sssd

sudo systemctl enable sssd
<!--NeedCopy-->

Tipp:

Beachten Sie bei der Konfiguration der Linux VDA-Einstellungen, dass es für SSSD keine speziellen Einstellungen für den Linux VDA-Client gibt. Verwenden Sie für zusätzliche Lösungen im Skript ctxsetup.sh den Standardwert.

Schritt 5: Kerberos-Konfiguration überprüfen

Um sicherzustellen, dass Kerberos für die Verwendung mit dem Linux VDA korrekt konfiguriert ist, überprüfen Sie, ob die System-keytab-Datei erstellt wurde und gültige Schlüssel enthält:

sudo klist -ke
<!--NeedCopy-->

Dieser Befehl zeigt die Liste der verfügbaren Schlüssel für die verschiedenen Kombinationen von Prinzipalnamen und Chiffriersuiten an. Führen Sie den Kerberos-Befehl kinit aus, um den Computer mit diesen Schlüsseln beim Domänencontroller zu authentifizieren:

sudo kinit –k MACHINE\$@REALM
<!--NeedCopy-->

Der Computer- und Realm-Name müssen in Großbuchstaben angegeben werden. Das Dollarzeichen ($) muss mit einem Backslash (\) maskiert werden, um eine Shell-Substitution zu verhindern. In einigen Umgebungen unterscheidet sich der DNS-Domänenname vom Kerberos-Realm-Namen. Stellen Sie sicher, dass der Realm-Name verwendet wird. Wenn dieser Befehl erfolgreich ist, wird keine Ausgabe angezeigt.

Überprüfen Sie, ob das TGT-Ticket für das Computerkonto mit folgendem Befehl zwischengespeichert wurde:

sudo klist -ke
<!--NeedCopy-->

Schritt 6: Benutzerauthentifizierung überprüfen

Verwenden Sie den Befehl getent, um zu überprüfen, ob das Anmeldeformat unterstützt wird und ob der NSS funktioniert:

sudo getent passwd DOMAIN\\username
<!--NeedCopy-->

Der Parameter DOMAIN gibt den Kurznamen der Domäne an. Wenn ein anderes Anmeldeformat benötigt wird, überprüfen Sie dies zuerst mit dem Befehl getent.

Die unterstützten Anmeldeformate sind:

  • Down-level Anmeldename: DOMAIN\username
  • UPN: username@domain.com
  • NetBIOS-Suffix-Format: username@DOMAIN

Um zu überprüfen, ob das SSSD PAM-Modul korrekt konfiguriert ist, melden Sie sich mit einem Domänenbenutzerkonto am Linux VDA an. Das Domänenbenutzerkonto wurde zuvor noch nicht verwendet.

sudo ssh localhost –l DOMAIN\\username

id -u
<!--NeedCopy-->

Überprüfen Sie, ob eine entsprechende Kerberos-Anmeldeinformations-Cache-Datei für die vom Befehl zurückgegebene uid erstellt wurde:

ls /tmp/krb5cc_{uid}
<!--NeedCopy-->

Überprüfen Sie, ob die Tickets im Kerberos-Anmeldeinformations-Cache des Benutzers gültig und nicht abgelaufen sind:

klist
<!--NeedCopy-->