Linux Virtual Delivery Agent

Tarjetas inteligentes

Puede usar una tarjeta inteligente conectada al dispositivo del cliente para autenticarse cuando inicie sesión en un escritorio virtual Linux. Esta función se implementa a través de la redirección de tarjetas inteligentes por el canal virtual ICA de tarjetas inteligentes. También puede usar la tarjeta inteligente dentro de la sesión. Entre los casos de uso, se incluyen:

  • Agregar una firma digital a un documento
  • Cifrar o descifrar un correo electrónico
  • Autenticarse en un sitio web

Linux VDA usa la misma configuración que Windows VDA para esta función. Para obtener más información, consulte la sección Configurar el entorno de tarjeta inteligente de este artículo.

Nota:

No se admite oficialmente el uso de una tarjeta inteligente asignada dentro de una sesión de Linux VDA para iniciar sesión en Citrix Gateway.

Requisitos previos

La disponibilidad de la autenticación PassThrough con tarjeta inteligente depende de estas condiciones:

  • Linux VDA se instala en una de estas distribuciones:

    • RHEL 9.1/9.0
    • RHEL 8.7/8.6/8.4
    • RHEL 7, CentOS 7
    • Rocky Linux 9.1/9.0
    • Rocky Linux 8.7/8.6
    • Ubuntu 22.04
    • Ubuntu 20.04
    • Ubuntu 18.04
    • Debian 11.3

    Después de completar la instalación del VDA, compruebe que el VDA se puede registrar en el Delivery Controller y que puede abrir las sesiones de escritorio de Linux publicadas con las credenciales de Windows.

  • Se utilizan tarjetas inteligentes compatibles con OpenSC. Para obtener más información, consulte Comprobar que OpenSC admite la tarjeta inteligente.

  • Se usa la aplicación Citrix Workspace para Windows.

Comprobar que OpenSC admite la tarjeta inteligente

OpenSC es un controlador de tarjeta inteligente muy utilizado en RHEL 7.4 y versiones posteriores. Como reemplazo totalmente compatible de CoolKey, OpenSC admite muchos tipos de tarjetas inteligentes (consulte Soporte para tarjetas inteligentes en Red Hat Enterprise Linux).

En este artículo, se usa la tarjeta inteligente YubiKey como ejemplo para ilustrar la configuración. YubiKey es un dispositivo USB CCID PIV todo en uno que se puede comprar fácilmente en Amazon u otros vendedores a particulares. El controlador OpenSC admite YubiKey.

Si su organización necesita una tarjeta inteligente más avanzada, prepare una máquina física con una distribución de Linux compatible y el paquete OpenSC instalado. Para obtener información sobre la instalación de OpenSC, consulte Instalar el controlador de tarjeta inteligente. Inserte su tarjeta inteligente y ejecute el siguiente comando para verificar que OpenSC la admite:

pkcs11-tool --module opensc-pkcs11.so --list-slots
<!--NeedCopy-->

Configuración

Preparar un certificado raíz

Un certificado raíz se utiliza para verificar el certificado que se encuentra en la tarjeta inteligente. Siga estos pasos para descargar e instalar un certificado raíz.

  1. Obtenga un certificado raíz en formato PEM, generalmente desde su servidor de CA.

    Puede ejecutar un comando similar al siguiente para convertir un archivo DER (*.crt, *.cer, *.der) a PEM. En el siguiente ejemplo de comando, certnew.cer es un archivo DER.

    openssl x509 -inform der -in certnew.cer -out certnew.pem
    <!--NeedCopy-->
    
  2. Instale el certificado raíz en el directorio openssl. El archivo certnew.pem se usa como ejemplo.

    cp certnew.pem <path where you install the root certificate>
    <!--NeedCopy-->
    

    Para crear una ruta donde instalar el certificado raíz, ejecute sudo mdkir -p <path where you install the root certificate>.

Generar el módulo pam_krb5 en RHEL 8.x y Rocky Linux 8.x

La autenticación con tarjeta inteligente depende del módulo pam_krb5, que se retiró en RHEL 8.x y Rocky Linux 8.x. Estos pasos son necesarios si quiere utilizar la autenticación con tarjeta inteligente en máquinas con RHEL 8.x y Rocky Linux 8.x que se entregan en modo de SO multisesión. Para la autenticación con tarjeta inteligente en máquinas con RHEL 8.x y Rocky Linux 8.x entregadas en modo de SO de sesión única (VDI), puede omitir estos pasos.

  1. Descargue el código fuente de pam_krb5-2.4.8-6 desde https://centos.pkgs.org/7/centos-x86_64/pam_krb5-2.4.8-6.el7.x86_64.rpm.html.

  2. Compile e instale el módulo pam_krb5 en RHEL 8.x y Rocky Linux 8.x.

    yum install -y opensc pcsc-lite pcsc-lite-libs pcsc-lite-ccid nss-tools
    yum install gcc krb5-devel pam-devel autoconf libtool
    rpm2cpio pam_krb5-2.4.8-6.el7.src.rpm | cpio –div
    tar xvzf pam_krb5-2.4.8.tar.gz
    cd pam_krb5-2.4.8
    ./configure --prefix=/usr
    make
    make install
    <!--NeedCopy-->
    
  3. Compruebe que pam_krb5.so existe en /usr/lib64/security/.

    ls -l /usr/lib64/security | grep pam_krb5
    <!--NeedCopy-->
    

Configurar el entorno de tarjeta inteligente

Puede utilizar el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes o puede completar la configuración manualmente.

(Opción 1) Utilice el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes

Nota:

El script ctxsmartlogon.sh agrega información sobre PKINIT al dominio predeterminado. Puede cambiar esta configuración a través del archivo de configuración /etc/krb5.conf.

Antes de utilizar tarjetas inteligentes por primera vez, ejecute el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes.

Sugerencia:

Si ha utilizado SSSD para unirse a un dominio, reinicie el servicio SSSD después de ejecutar ctxsmartlogon.sh.

sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->

Los resultados se asemejan a esto:

Ejecución del script ctxsmartlogon.sh al seleccionar la opción "yes"

También puede inhabilitar las tarjetas inteligentes ejecutando el script ctxsmartlogon.sh:

sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
<!--NeedCopy-->

Los resultados se asemejan a esto:

Ejecución del script ctxsmartlogon.sh al seleccionar la opción "no"

(Opción 2) Configurar manualmente el entorno de la tarjeta inteligente

Linux VDA utiliza el mismo entorno de tarjeta inteligente que Windows VDA. En el entorno, se deben configurar varios componentes, incluidos el controlador de dominio, la entidad de certificación (CA) de Microsoft, Internet Information Services, Citrix StoreFront y la aplicación Citrix Workspace. Para obtener más información sobre la configuración basada en la tarjeta inteligente YubiKey, consulte el artículo CTX206156 de Knowledge Center.

Antes de ir al siguiente paso, asegúrese de que:

  • Ha configurado todos los componentes correctamente.
  • Ha descargado la clave privada y el certificado de usuario en la tarjeta inteligente.
  • Puede iniciar sesión en el VDA con la tarjeta inteligente.
Instalar los paquetes PC/SC Lite

PC/SC Lite es una implementación de la especificación Personal Computer/Smart Card (PC/SC) en Linux. Ofrece una interfaz de tarjeta inteligente Windows para comunicarse con tarjetas inteligentes y lectores. La redirección de tarjeta inteligente en Linux VDA se implementa en el nivel de PC/SC.

Ejecute el siguiente comando para instalar los paquetes de PC/SC Lite:

RHEL 9.1/9.0/8.x, Rocky Linux 9.1/9.0/8.x, RHEL 7/CentOS 7:

yum install pcsc-lite pcsc-lite-ccid pcsc-lite-libs
<!--NeedCopy-->

Ubuntu 22.04, Ubuntu 20.04, Ubuntu 18.04, Debian 11.3:

apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
Instale el controlador de tarjeta inteligente

OpenSC es un controlador de tarjeta inteligente muy utilizado. Si OpenSC no está instalado, ejecute el siguiente comando para instalarlo:

RHEL 9.1/9.0/8.x, Rocky Linux 9.1/9.0/8.x, RHEL 7/CentOS 7:

yum install opensc
<!--NeedCopy-->

Ubuntu 22.04, Ubuntu 20.04, Ubuntu 18.04, Debian 11.3:

apt-get install -y opensc
<!--NeedCopy-->
Instalar los módulos PAM para la autenticación con tarjeta inteligente

Ejecute el siguiente comando para instalar los módulos pam_krb5 y krb5-pkinit.

RHEL 7/CentOS 7:

yum install pam_krb5 krb5-pkinit
<!--NeedCopy-->

RHEL 9.1/9.0/8.x, Rocky Linux 9.1/9.0/8.x:

yum install krb5-pkinit
<!--NeedCopy-->

Ubuntu 22.04, Ubuntu 20.04, Ubuntu 18.04:

apt-get install libpam-krb5 krb5-pkinit
<!--NeedCopy-->

Debian 11.3:

apt-get install -y libpam-krb5 krb5-pkinit
<!--NeedCopy-->

El módulo pam_krb5 es un módulo de autenticación conectable. Las aplicaciones compatibles con PAM pueden usar pam_krb5 para comprobar las contraseñas y obtener tíquets de concesión de tíquets desde el Centro de distribución de claves (KDC). El módulo krb5-pkinit contiene el plug-in PKINIT, que permite a los clientes obtener credenciales iniciales desde el KDC mediante una clave privada y un certificado.

Configurar el módulo pam_krb5

El módulo pam_krb5 interactúa con el centro KDC para obtener tíquets Kerberos mediante los certificados ubicados en la tarjeta inteligente. Para permitir la autenticación con pam_krb5 en PAM, ejecute el siguiente comando:

authconfig --enablekrb5 --update
<!--NeedCopy-->

En el archivo de configuración /etc/krb5.conf, agregue información sobre PKINIT de acuerdo con el territorio real.

Nota:

La opción pkinit_cert_match especifica reglas que el certificado de cliente debe cumplir antes de que se utilice para intentar la autenticación PKINIT. La sintaxis de dichas reglas es:

[relación-operador] componente-regla…

, donde relación-operador puede ser &&, lo que significa que todas las reglas de los componentes deben coincidir, o bien ||, lo que significa que solo una regla debe coincidir.

He aquí un ejemplo de un archivo krb5.conf genérico:

EXAMPLE.COM = {

    kdc = KDC.EXAMPLE.COM

    auth_to_local = RULE:[1:$1@$0]

    pkinit_anchors = FILE:<path where you install the root certificate>/certnew.pem

    pkinit_kdc_hostname = KDC.EXAMPLE.COM

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

    pkinit_eku_checking = kpServerAuth

 }
<!--NeedCopy-->

El archivo de configuración se parece a esto después de agregar la información sobre PKINIT.

Información PKINIT agregada

Configurar la autenticación PAM

Los archivos de configuración PAM indican los módulos que se usan para la autenticación PAM. Para agregar pam_krb5 como un módulo de autenticación, agregue la siguiente línea al archivo /etc/pam.d/smartcard-auth:

auth [success=done ignore=ignore default=die] pam_krb5.so preauth_options=X509_user_identity=PKCS11:<path to the pkcs11 driver>/opensc-pkcs11.so

El archivo de configuración se parece al siguiente después de la modificación, si se utiliza SSSD.

Archivo de configuración modificado si se utiliza SSSD

(Opcional) Configurar Single Sign-On con tarjetas inteligentes

Single Sign-On es una función de Citrix que implementa la autenticación PassThrough en el inicio de escritorios virtuales y aplicaciones. Esta función reduce la cantidad de veces que los usuarios deben escribir sus números PIN. Para usar el inicio de sesión SSO (Single Sign-On) con el VDA de Linux, configure la aplicación Citrix Workspace. La configuración es la misma para el VDA de Windows. Para obtener más información, consulte el artículo CTX133982 de Knowledge Center.

Habilite la autenticación con tarjeta inteligente de la siguiente manera cuando configure la directiva de grupo en Citrix Workspace.

Habilitar la autenticación con tarjeta inteligente en la aplicación Citrix Workspace

Inicio de sesión con tarjeta inteligente rápida

La tarjeta inteligente rápida es una mejora con respecto a la redirección HDX existente de tarjetas inteligentes basada en PC/SC. Mejora el rendimiento cuando se usan tarjetas inteligentes en entornos WAN con latencia alta. Para obtener más información, consulte Tarjetas inteligentes.

Linux VDA admite las tarjetas inteligentes rápidas en las siguientes versiones de la aplicación Citrix Workspace:

  • Citrix Receiver para Windows 4.12
  • Aplicación Citrix Workspace para Windows 1808 y versiones posteriores

Habilitar el inicio de sesión con tarjeta inteligente rápida en el cliente

El inicio de sesión con tarjeta inteligente rápida se habilita de forma predeterminada en el VDA y se inhabilita de forma predeterminada en el cliente. En el cliente, para habilitar el inicio de sesión con tarjeta inteligente rápida, incluya el siguiente parámetro en el archivo default.ica del sitio StoreFront asociado:

[WFClient]
SmartCardCryptographicRedirection=On
<!--NeedCopy-->

Inhabilitar el inicio de sesión con tarjeta inteligente rápida en el cliente

Para inhabilitar el inicio de sesión con tarjeta inteligente rápida en el cliente, quite el parámetro SmartCardCryptographicRedirection del archivo default.ica del sitio StoreFront asociado.

Ejecutar XDPing

Tras completar los pasos anteriores, puede utilizar la herramienta XDPing de Linux para comprobar si hay problemas de configuración comunes que puedan existir en el entorno de su Linux VDA. Para obtener más información, consulte XDPing.

Uso

Iniciar sesión en Linux VDA mediante una tarjeta inteligente

Puede usar una tarjeta inteligente para iniciar sesión en Linux VDA tanto con SSO como sin SSO.

  • En el caso de inicio SSO, inicia sesión automáticamente en StoreFront con el PIN y el certificado de la tarjeta inteligente guardados en la caché. Al iniciar una sesión de escritorio virtual Linux en StoreFront, el PIN se pasa al Linux VDA para la autenticación con tarjeta inteligente.
  • En el caso de un inicio sin SSO, se le solicita seleccionar un certificado y escribir un PIN para iniciar sesión en StoreFront.

    Introducir un PIN para iniciar sesión en StoreFront

Al iniciar una sesión de escritorio virtual Linux en StoreFront, aparece este cuadro de diálogo para iniciar sesión en Linux VDA. El nombre de usuario se extrae del certificado en la tarjeta inteligente, y debe escribir el PIN nuevamente para la autenticación del inicio de sesión.

Este es el mismo comportamiento que con Windows VDA.

Autenticación de inicio de sesión

Reconectarse a una sesión mediante una tarjeta inteligente

Para volver a conectarse a una sesión, la tarjeta inteligente debe estar conectada al dispositivo cliente. De lo contrario, aparece una ventana gris de almacenamiento en caché en el lado del Linux VDA y se cierra rápidamente porque la reautenticación falla si la tarjeta inteligente no está conectada. No aparece ningún otro aviso en este caso para recordarle que conecte la tarjeta inteligente.

Sin embargo, en el lado de StoreFront, si una tarjeta inteligente no está conectada cuando vuelve a conectarse a una sesión, el sitio Web de StoreFront puede avisarle de la siguiente manera.

Imagen de inserción de una tarjeta inteligente

Limitación

Compatibilidad con distribuciones limitadas de Linux y métodos de integración de AD

  • La autenticación PassThrough con tarjeta inteligente admite distribuciones limitadas de Linux y métodos de integración de AD. Consulte la siguiente matriz:

      Winbind SSSD Centrify
    Debian 11.3
    RHEL 9.1/9.0 No
    RHEL 8.7/8.6/8.4
    RHEL 7.9, CentOS 7.9
    Rocky Linux 9.1/9.0 No
    Rocky Linux 8.7/8.6 No
    Ubuntu 22.04/20.04/18.04

Directiva de extracción de tarjetas inteligentes

Actualmente, Linux VDA solo utiliza el comportamiento predeterminado para la extracción de tarjetas inteligentes. Es decir, cuando extrae la tarjeta inteligente tras haber iniciado sesión correctamente en el Linux VDA, la sesión permanece conectada y la pantalla de sesión no se bloquea.

Compatibilidad con otras tarjetas inteligentes y la biblioteca PKCS#11

Citrix ofrece una solución genérica de redirección de tarjetas inteligentes. Aunque solo figura la tarjeta inteligente OpenSC en nuestra lista de compatibilidad, puede intentar utilizar otras tarjetas inteligentes y la biblioteca PKCS #11. Para cambiar a una tarjeta inteligente en concreto o a su biblioteca PKCS#11:

  1. Reemplace todas las opensc-pkcs11.so instancias con su biblioteca PKCS#11 .

  2. Para establecer la ruta de su biblioteca PKCS#11 al Registro, ejecute el siguiente comando:

    /opt/Citrix/VDA/bin/ctxreg update -k "HKLM\System\CurrentControlSet\Control\Citrix\VirtualChannels\Scard" -v "PKCS11LibPath" -d "PATH"
    <!--NeedCopy-->
    

    donde PATH apunta a su biblioteca PKCS#11, como /usr/lib64/pkcs11/opensc-pkcs11.so

  3. Inhabilite el inicio de sesión con tarjeta inteligente rápida en el cliente.

Tarjetas inteligentes