Passthrough-Authentifizierung mit Smartcards

Die Benutzer können eine mit dem Clientgerät verbundene Smartcard zur Anmeldung an einer virtuellen Linux-Desktopsitzung verwenden. Dieses Feature wurde in Form der Smartcardumleitung über den virtuellen ICA-Smartcardkanal implementiert. Benutzer können die Smartcard auch innerhalb der Sitzung verwenden. Anwendungsfälle umfassen das Hinzufügen einer digitalen Signatur zu einem Dokument, das Verschlüsseln oder Entschlüsseln einer E-Mail oder die Authentifizierung bei einer Website, für die eine Smartcard-Authentifizierung erforderlich ist.

Auf dem Linux VDA wird hierfür die gleiche Konfiguration wie auf dem Windows VDA verwendet. Weitere Informationen finden Sie unter Konfigurieren der Smartcardumgebung.

Die Passthrough-Authentifizierung mit Smartcard erfordert die Erfüllung folgender Voraussetzungen:

  • Der Linux VDA ist unter RHEL 7.4 installiert.
  • Für die AD-Integration wird SSSD verwendet.
  • Es werden Smartcards verwendet, die von CoolKey unterstützt werden.
  • Citrix Receiver für Windows wird verwendet.

Hinweis:

Die Smartcardauthentifizierung bei NetScaler Gateway wird nicht offiziell unterstützt.

Überprüfen der Kompatibilität der verwendeten Smartcards mit CoolKey

CoolKey ist ein gebräuchlicher RHEL-Treiber für Smartcards. CoolKey unterstützt vier Smartcardtypen – CoolKey, CAC, PIV und PKCS#15. Die Zahl formal unterstützter und validierter Karten ist jedoch noch immer eingeschränkt (siehe Smart Card Support in Red Hat Enterprise Linux).

In diesem Artikel dient die Yubikey 4-Smartcard als Beispiel zur Veranschaulichung der Konfiguration. Yubikey 4 ist ein im Handel erhältliches und PIV-konformes USB-Gerät mit CCID-Funktion. Yubikey 4 wird vom CoolKey-Treiber unterstützt.

lokalisiertes Bild

Wenn in Ihrer Organisation eine anspruchsvollere Smartcard benötigt wird, stellen Sie eine physische Maschine mit installiertem RHEL 7.4- und CoolKey-Paket bereit. Informationen zur Installation von CoolKey finden Sie unter Installieren des Smartcardtreibers. Führen Sie die Smartcard ein und prüfen Sie mit folgendem Befehl, ob CoolKey Ihre Smartcard unterstützt:

pkcs11-tool --module libcoolkeypk11.so --list-slots

Wenn CoolKey die Smartcard unterstützt, ähnelt die Ausgabe der nachfolgend gezeigten mit Steckplatzinformationen.

lokalisiertes Bild

Konfiguration

Konfigurieren der Smartcardumgebung

Auf dem Linux VDA wird dieselbe Smartcardumgebung verwendet wie auf dem Windows VDA. Es müssen mehrere Komponenten konfiguriert werden: Domänencontroller, Microsoft-Zertifizierungsstelle, Internetinformationsdienste, Citrix StoreFront und Citrix Receiver. Informationen zur Konfiguration am Beispiel der Yubikey 4-Smartcard finden Sie in dem Citrix Artikel CTX206156.

Bevor Sie mit dem nächsten Schritt fortfahren, stellen Sie sicher, dass alle Komponenten ordnungsgemäß konfiguriert sind, dass der private Schlüssel und das Benutzerzertifikat auf die Smartcard heruntergeladen wurden und dass Sie sich mit der Smartcard bei einem Windows VDA anmelden können.

Installieren der PCSC Lite-Pakete

PCSC Lite ist eine Implementierung der PC/SC-Spezifikation (Personal Computer/Smartcard) unter Linux. Sie bietet eine Windows-Smartcardschnittstelle zur Kommunikation mit Smartcards und Lesegeräten. Die Smartcardumleitung des Linux VDAs ist auf PCSC-Ebene implementiert.

Führen Sie den folgenden Befehl aus, um die PCSC Lite-Pakete zu installieren:

yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs

Installieren des Smartcardtreibers

CoolKey ist ein gebräuchlicher RHEL-Treiber für Smartcards. Wenn CoolKey nicht installiert ist, führen Sie den folgenden Befehl aus, um es zu installieren:

yum install coolkey

Installieren der PAM-Module für die Authentifizierung per Smartcard

Führen Sie den folgenden Befehl aus, um die Module pam_pkcs11, pam_krb5 und krb5-pkinit zu installieren:

yum install pam_pkcs11 pam_krb5 krb5-pkinit

pam_pkcs11 ist ein Pluggable Authentication Module für die Benutzerauthentifizierung basierend auf einem X.509-Zertifikat. pam_krb5 ist ein austauschbares Authentifizierungsmodul, mit dem PAM-fähige Anwendungen Kennwörter prüfen und Ticket Granting Tickets vom Schlüsselverteilungscenter (KDC) abrufen können. krb5-pkinit enthält das PKINIT-Plug-In, mit dem Clients mit einem privaten Schlüssel und einem Zertifikat Anfangsanmeldeinformationen vom KDC abrufen können.

Installieren der Linux VDA-Software unter RHEL 7.4

Installieren Sie die Linux VDA-Software mit RPM Package Manager oder easy install (siehe Abschnitt Installationsübersicht). Wählen Sie SSSD als Active Directory-Integrationsmethode.

Stellen Sie nach Abschluss der VDA-Installation sicher, dass sich der VDA beim Delivery Controller registrieren kann und dass die veröffentlichten Linux-Desktopsitzungen mit der Kennwortauthentifizierung gestartet werden können.

Vorbereiten eines Stammzertifikats

Ein Stammzertifikat wird zur Überprüfung des Zertifikats auf der Smartcard verwendet. Führen Sie die folgenden Schritte aus, um ein Stammzertifikat herunterzuladen und zu installieren:

  1. Rufen Sie (normalerweise von einem Zertifizierungsstellenserver) ein Stammzertifikat im PEM-Format ab.

    Sie können eine DER-Datei (*.crt, *.cer, *.der) mithilfe des folgenden Befehls in PEM konvertieren. In dem Beispiel heißt die DER-Datei certnew.cer.

    openssl x509 -inform der -in certnew.cer -out certnew.pem
    
  2. Installieren Sie das Stammzertifikat im Verzeichnis “openssl”. Die Datei certnew.pem gilt hier als Beispiel.

    cp certnew.pem /etc/pki/CA/certs/
    

Konfigurieren der NSS-Datenbank

Das Modul pam_pkcs11 nutzt die NSS-Datenbank für den Zugriff auf Smartcards und Zertifikate. Gehen Sie folgendermaßen vor, um die NSS-Datenbank zu konfigurieren:

  1. Fügen Sie der NSS-Datenbank das oben genannte Stammzertifikat hinzu.

    certutil -A -n "My Corp Root" -t "CT,C,C" -a -d /etc/pki/nssdb -i  /etc/pki/CA/certs/certnew.pem
    
  2. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Stammzertifikat der NSS-Datenbank hinzugefügt wurde:

    certutil -L -d /etc/pki/nssdb
    

    Wurde das Stammzertifikat erfolgreich hinzugefügt, sieht die Befehlsausgabe in etwa folgendermaßen aus:

    lokalisiertes Bild

  3. Überprüfen Sie, ob CoolKey in der NSS-PKCS#11-Bibliothek installiert ist.

    modutil -list -dbdir /etc/pki/nssdb
    

    Wenn das CoolKey-Modul installiert ist, sieht die Befehlsausgabe in etwa folgendermaßen aus:

    lokalisiertes Bild

    Ist das CoolKey-Modul nicht installiert, installieren Sie es mit dem folgenden Befehl manuell und überprüfen Sie die Installation erneut.

    modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb
    

Konfigurieren des pam_pkcs11-Moduls

Die Überprüfung von Benutzerzertifikaten durch das pam_pkcs11-Modul basiert auf der lokalen (VDA-)Konfiguration. Das von pam_pkcs11 verwendete Standardstammzertifikat ist im Ordner /etc/pam_pkcs11/cacerts/. Jedes Stammzertifikat in diesem Pfad besitzt einen Hash-Link. Installieren Sie das vorbereitete Stammzertifikat und konfigurieren Sie pam_pkcs11 über folgende Befehle:

mkdir /etc/pam_pkcs11/cacerts/

cp certnew.pem /etc/pam_pkcs11/cacerts/

cacertdir_rehash /etc/pam_pkcs11/cacerts

Konfigurieren des pam_krb5-Moduls

Das pam_krb5-Modul interagiert mit dem KDC zum Abrufen von Kerberos-Tickets über Zertifikate auf Smartcards.

Fügen Sie der Konfigurationsdatei /etc/krb5.conf pkinit-Informationen entsprechend dem tatsächlichen Bereich hinzu:

     EXAMPLE.COM = {

       kdc = KDC. EXAMPLE.COM

       pkinit_anchors = FILE:/etc/pki/CA/certs/certnew.pem

       pkinit_kdc_hostname = KDC.EXAMPLE.COM

       pkinit_cert_match = ||<EKU>msScLogin,<KU>digitalSignature

       pkinit_eku_checking = kpServerAuth

 }

Die Konfigurationsdatei sieht in etwa folgendermaßen aus, nachdem Sie die pkinit-Informationen hinzugefügt haben:

lokalisiertes Bild

Konfigurieren der PAM-Authentifizierung

PAM-Konfigurationsdateien bestimmen, welche Module für die PAM-Authentifizierung verwendet werden. Fügen Sie für die Authentifizierung per Smartcard der Datei /etc/pam.d/smartcard-auth die folgenden Zeilen hinzu, um die Module pam_pkcs11 und pam_krb5 hinzuzufügen.

     auth        [success=ok ignore=2 default=die] pam_pkcs11.so nodebug wait_for_card

     auth        optional      pam_krb5.so use_first_pass no_subsequent_prompt preauth_options=X509_user_identity=PKCS11:/usr/lib64/pkcs11/libcoolkeypk11.so

     auth        sufficient    pam_permit.so

     account     [default=bad success=ok auth_err=ignore user_unknown=ignore ignore=ignore] pam_krb5.so

     session     optional      pam_krb5.so

Die Konfigurationsdatei sieht in etwa folgendermaßen aus, nachdem Sie sie geändert haben:

lokalisiertes Bild

Optional: Single Sign-On per Smartcard

Single Sign-On ist ein Citrix Feature, mit dem die Passthrough-Authentifizierung in Starts von virtuellen Desktops und Anwendungen implementiert wird. Dadurch müssen Benutzer ihre PIN seltener eingeben. Zur Verwendung von Single Sign-On mit dem Linux VDA konfigurieren Sie Citrix Receiver. Die Konfiguration ist mit der für den Windows VDA identisch. Weitere Informationen finden Sie im Knowledge Center-Artikel CTX133982.

Aktivieren Sie die Smartcardauthentifizierung wie nachfolgend beschrieben, wenn Sie die Gruppenrichtlinie in Citrix Receiver konfigurieren.

lokalisiertes Bild

Verwendung

Anmelden am Linux VDA mit einer Smartcard

Benutzer können sich per Smartcard am Linux VDA in Szenarien mit und ohne Single Sign-On anmelden.

  • Bei Verwendung von Single Sign-On werden die Benutzer automatisch mit dem zwischengespeicherten Smartcardzertifikat und der PIN bei StoreFront angemeldet. Wenn die Benutzer eine virtuelle Linux-Desktopsitzung in StoreFront starten, wird die PIN an den Linux VDA zur Smartcardauthentifizierung weitergeleitet.
  • Wird kein Single Sign-On verwendet, werden die Benutzer aufgefordert, ein Zertifikat auszuwählen und eine PIN einzugeben, um sich bei StoreFront anzumelden.

    lokalisiertes Bild

Wenn Benutzer eine Sitzung mit virtuellem Linux-Desktop in StoreFront starten, wird auf dem Linux VDA das nachfolgende Anmeldedialogfeld angezeigt. Der Benutzername wird aus dem Zertifikat auf der Smartcard extrahiert und Benutzer müssen die PIN zur Anmeldeauthentifizierung erneut eingeben.

Dieses Verhalten ist mit dem des Windows VDA identisch.

lokalisiertes Bild

Wiederherstellen der Verbindung mit einer Sitzung per Smartcard

Stellen Sie sicher, dass die Smartcard mit dem Clientgerät verbunden ist, um die Verbindung zu einer Sitzung wiederherzustellen. Andernfalls wird nur kurz ein graues Caching-Fenster auf dem Linux VDA angezeigt, da die erneute Authentifizierung ohne Smartcard fehlschlägt. In diesem Fall wird keine weitere Aufforderung angezeigt, um Sie daran zu erinnern, die Smartcard anzuschließen.

In StoreFront wird bei dem Versuch, eine Verbindung zu einer Sitzung ohne Smartcard wiederherzustellen, eventuell eine Warnmeldung in folgender Form ausgegeben:

lokalisiertes Bild

Einschränkungen

Richtlinie zum Entfernen der Smartcard

Derzeit wird auf dem Linux VDA nur das Standardverhalten für das Entfernen von Smartcards verwendet. Wenn Sie die Smartcard nach der Anmeldung beim Linux VDA entfernen, bleibt die Sitzung weiterhin verbunden und der Sitzungsbildschirm wird nicht gesperrt.

Einschränkungen für Zertifikatvorlagen

Die Einschränkung von Zuordnungsmodulen in pam_pkcs11 beschränkt auch die Zertifikatvorlagen, mit denen ein Zertifikat dem richtigen Domänenbenutzernamen zugeordnet werden kann.

Bei einem Benutzer mit dem Namen “test” (SamAccountName) funktioniert die Zertifikatzuordnung beispielsweise nur in folgenden zwei Fällen:

  • Der Benutzername “test” wird unter Antragsteller als CN (Allgemeiner Name) im Zertifikat angezeigt.

    lokalisiertes Bild

  • Der Benutzer “test” wird im UPN (Benutzerprinzipalnamen) des Zertifikats angezeigt.

    lokalisiertes Bild

Im zweiten Fall führen Sie den folgenden Befehl aus, um zur Zuordnung “UPN” (Benutzerprinzipalnamen) zu wechseln:

/opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "CertMapMethod" -d "0x00000001"

Ändern Sie auch die pam_pkcs11-Konfigurationsdatei /etc/pam_pkcs11/pam_pkcs11.conf wie folgt:

lokalisiertes Bild

Passthrough-Authentifizierung mit Smartcards