Autenticación PassThrough mediante tarjetas inteligentes

Los usuarios pueden usar una tarjeta inteligente conectada al dispositivo del cliente para autenticarse cuando inicien 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. Los usuarios también pueden usar la tarjeta inteligente dentro de la sesión. Los casos de uso pueden ser: agregar una firma digital a un documento, cifrar o descifrar un correo electrónico, o bien, autenticarse en un sitio Web que requiere la autenticación con tarjeta inteligente.

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.

La disponibilidad de la autenticación PassThrough con tarjeta inteligente depende de los factores siguientes:

  • Linux VDA está instalado en RHEL 7.6.
  • Se usan tarjetas inteligentes que admite CoolKey.
  • Se usa la aplicación Citrix Workspace para Windows.

Nota:

La autenticación con tarjeta inteligente en Citrix Gateway no se respalda oficialmente.

Instalar el software de Linux VDA en RHEL 7.6

Instale el software de Linux VDA mediante el administrador de paquetes RPM o Easy Install; consulte la sección Información general de la instalación.

Una vez completada la instalación del VDA, verifique que el VDA puede registrarse en el Delivery Controller y que las sesiones de escritorio Linux publicadas se pueden iniciar correctamente con la autenticación por contraseña.

Comprobar que CoolKey admite la tarjeta inteligente

CoolKey es un controlador de tarjeta inteligente muy utilizado en RHEL. CoolKey admite cuatro tipos de tarjetas inteligentes: tarjetas CoolKey, CAC, PIV y PKCS#15. Sin embargo, la cantidad de tarjetas que se admiten y se validan formalmente sigue siendo limitada (consulte Soporte para tarjetas inteligentes en Red Hat Enterprise Linux).

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

imagen de yubikey4

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

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

Si CoolKey admite su tarjeta inteligente, el resultado del comando es similar al siguiente, donde se incluye información de la ranura.

Imagen del resultado cuando Coolkey admite su tarjeta electrónica

Configuración

Preparar un certificado raíz

Un certificado raíz se utiliza para verificar el certificado que se encuentra en la tarjeta inteligente. Haga lo siguiente para descargar e instalar un certificado raíz.

  1. Obtenga un certificado raíz en formato PEM, generalmente desde su servidor 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
    
  2. Instale el certificado raíz en el directorio openssl. El archivo certnew.pem se usa como ejemplo.

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

Configurar la base de datos NSS

El módulo de inicio de sesión de Linux VDA se basa en la base de datos NSS para acceder a las tarjetas inteligentes y los certificados. Haga lo siguiente para configurar la base de datos NSS.

  1. Agregue el certificado raíz mencionado a la base de datos NSS.

    certutil -A -n "My Corp Root" -t "CT,C,C" -a -d /etc/pki/nssdb -i  /etc/pki/CA/certs/certnew.pem
    
  2. Ejecute el siguiente comando para verificar que el certificado raíz se haya agregado correctamente a la base de datos NSS.

    certutil -L -d /etc/pki/nssdb
    

    El resultado del comando es similar al siguiente si el certificado raíz se agregó correctamente.

    imagen del resultado del comando cuando el certificado raíz se agrega correctamente

  3. Verifique si CoolKey está instalado en la biblioteca NSS PKCS#11.

    modutil -list -dbdir /etc/pki/nssdb
    

    El resultado del comando es similar al siguiente si el módulo CoolKey está instalado.

    imagen del resultado del comando cuando se instala el módulo coolkey

    Si el módulo CoolKey no está instalado, ejecute el siguiente comando para instalarlo manualmente y verifique la instalación nuevamente.

    modutil -add "CoolKey PKCS #11 Module" -libfile libcoolkeypk11.so -dbdir /etc/pki/nssdb
    
  4. Configure el módulo pam_pkcs11.

    El módulo pam_pkcs11 se basa en la configuración del VDA local para verificar los certificados de usuario. El certificado raíz predeterminado que utiliza pam_pkcs11 se encuentra en /etc/pam_pkcs11/cacerts/. Todos los certificados raíz en esta ruta tienen un enlace hash. Ejecute los siguientes comandos para instalar el certificado raíz preparado y configurar pam_pkcs11.

    yum install pam_pkcs11
    
    mkdir /etc/pam_pkcs11/cacerts/
    
    cp certnew.pem /etc/pam_pkcs11/cacerts/
    
    cacertdir_rehash /etc/pam_pkcs11/cacerts
    

Configurar el entorno de tarjeta inteligente

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

  • Utilice el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes

    Nota:

    El script ctxsmartlogon.sh agrega información de 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.

     sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
    

    Los resultados se asemejan a lo siguiente:

    imagen de ejecutar el script ctxsmartlogon.sh para habilitar

    Para inhabilitar las tarjetas inteligentes:

     sudo /opt/Citrix/VDA/sbin/ctxsmartlogon.sh
    

    Los resultados se asemejan a lo siguiente:

    imagen de ejecutar el script ctxsmartlogon.sh para inhabilitar

  • Configurar manualmente el entorno de tarjetas inteligentes

    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 4, consulte el artículo de Knowledge Center CTX206156.

    Antes de ir al siguiente paso, compruebe que todos los componentes estén correctamente configurados, la clave privada y el certificado de usuario se hayan descargado en la tarjeta inteligente y usted puede iniciar sesión en Windows VDA mediante 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.

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

Instale el controlador de tarjeta inteligente

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

yum install coolkey

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.

yum install pam_krb5 krb5-pkinit

El módulo pam_krb5 es un módulo de autenticación conectable que las aplicaciones compatibles con PAM pueden utilizar para verificar 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

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

EXAMPLE.COM = {

    kdc = KDC. EXAMPLE.COM

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

    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

 }

El archivo de configuración se parece al siguiente después de agregar la información de pkinit.

imagen de la 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:/usr/lib64/pkcs11/libcoolkeypk11.so

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

Imagen del archivo de configuración modificado si se utiliza SSSD

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

Imagen de configuración modificada. expediente si se usa winbind

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

Imagen del archivo de configuración modificado si se utiliza Centrify

(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.

imagen de habilitación de la autenticación con tarjeta electrónica 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

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.

Uso

Iniciar sesión en Linux VDA mediante una tarjeta inteligente

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

  • En el caso de inicio SSO, los usuarios inician sesión automáticamente en StoreFront con el PIN y el certificado de la tarjeta inteligente guardados en caché. Cuando los usuarios inician 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 solicita a los usuarios que seleccionen un certificado y escriban un PIN para iniciar sesión en StoreFront.

    imagen de la utilización de un código PIN para iniciar sesión en StoreFront

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

Este es el mismo comportamiento que con Windows VDA.

imagen de inicio de sesión de XenDesktop

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 intenta volver a conectarse a una sesión, el sitio Web de StoreFront puede avisarle de la siguiente manera.

Imagen de "Inserte una tarjeta inteligente".

Limitación

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

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

  1. Reemplace todas las libcoolkeypk11.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"
    

    dónde PATH apunta a su biblioteca PKCS#11, como, por ejemplo /usr/lib64/pkcs11/libcoolkeypk11.so

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