Integrieren von NIS in Active Directory

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 wird nur in besonderen Fällen verwendet Für eine RHEL/CentOS-Distribution folgen Sie den Anweisungen unter Install Linux Virtual Delivery Agent for RHEL/CentOS. Für eine Ubuntu-Distribution folgen Sie den Anweisungen unter Install Linux Virtual Delivery Agent for Ubuntu.

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.

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

  • RHEL 7.3 oder höher
  • CentOS 7.3 oder höher

Integrieren von NIS in Active Directory

Um NIS mit AD zu integrieren, gehen Sie wie folgt vor:

  1. Hinzufügen des Linux VDA als NIS-Client
  2. Domänenbeitritt und Erstellen einer Hostschlüsseltabelle mit Samba
  3. Einrichten von SSSD
  4. Konfigurieren von NSS/PAM
  5. Überprüfen der Kerberos-Konfiguration
  6. Überprüfen der Benutzerauthentifizierung

Hinzufügen des Linux VDA als NIS-Client

Konfigurieren Sie den NIS-Client:

yum –y install ypbind rpcbind oddjob-mkhomedir

Legen Sie die NIS-Domäne fest:

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

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

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

Konfigurieren Sie NIS über authconfig:

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

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

Konfigurieren Sie die NIS-Dienste:

sudo systemctl start rpcbind ypbind
sudo systemctl enable rpcbind ypbind

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

ypwhich

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

getent passwd nisaccount

Hinweis:

nisaccountist 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. Zum Ausführen dieser Funktionen gibt es 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.

Treten Sie der Domäne bei und erstellen Sie eine 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:

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 eine DNS-basierte Suche nach dem KDC-Server und -Bereichsnamen erforderlich ist, fügen Sie dem vorherigen Befehl die folgenden beiden Optionen hinzu:

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

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:

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 (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 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 von ad.domain.com, 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:

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

Konfigurieren von NSS/PAM

RHEL/CentOS:

Aktivieren Sie SSSD mit authconfig. Installieren Sie oddjob-mkhomedir, damit die Erstellung des Homeverzeichnisses mit SELinux kompatibel ist:

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

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

sudo klist -ke

Mit diesem Befehl wird die Liste der Schlüssel angezeigt, 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 mit dem Domänencontroller zu authentifizieren, die diese Schlüssel verwendet:

sudo kinit –k MACHINE\$@REALM

Maschinen- und Bereichsname müssen in Großbuchstaben angegeben werden. 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:

sudo klist -ke

Überprüfen der Benutzerauthentifizierung

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

sudo getent passwd DOMAIN\\username

Der Parameter DOMAIN ist die kurze Version des Domänennamens. 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: DOMAIN\username
  • UPN: username@domain.com
  • NetBIOS-Suffix-Format: username@DOMAIN

Um sich zu vergewissern, dass das SSSD-PAM-Modul fehlerfrei konfiguriert wurde, melden Sie sich mit einem Domänenbenutzerkonto am Linux VDA an. Das Domänenbenutzerkonto wurde zuvor noch nicht verwendet.

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:

ls /tmp/krb5cc_{uid}

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

klist

Integrieren von NIS in Active Directory