Autenticación PassThrough usando 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 característica 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 característica. Para obtener más información, consulte 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.4.
  • Se usa SSSD para la integración AD.
  • Se usan tarjetas inteligentes que admite CoolKey.
  • Se usa Citrix Receiver para Windows.

Nota:

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

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 Smart Card Support in 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 localizada

Si su organización necesita una tarjeta inteligente más avanzada, prepare una máquina física con RHEL 7.4 y el paquete CoolKey instalado. Para obtener información sobre la instalación de CoolKey, consulte Instalar 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 localizada

Configuración

Configurar el entorno de 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 Citrix Receivers. Para obtener información sobre la configuración basada en la tarjeta inteligente Yubikey 4, consulte el artículo CTX206156 de Citrix.

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 utilizando 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_pkcs11, pam_krb5 y krb5-pkinit.

yum install pam_pkcs11 pam_krb5 krb5-pkinit

El módulo pam_pkcs11 es un módulo de autenticación conectable que permite la autenticación del usuario basada en un certificado X.509. 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 usando una clave privada y un certificado.

Instalar el software de Linux VDA en RHEL 7.4

Instale el software de Linux VDA desde el Administrador de paquetes RPM o Easy Install; consulte la sección Información general de la instalación. Compruebe que SSSD está seleccionado como el método de integración de Active Directory (AD).

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.

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 pam_pkcs11 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 localizada

  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 localizada

    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
    

Configurar el módulo pam_pkcs11

El módulo pam_pkcs11 se basa en la configuración local (del VDA) para verificar los certificados del 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.

mkdir /etc/pam_pkcs11/cacerts/

cp certnew.pem /etc/pam_pkcs11/cacerts/

cacertdir_rehash /etc/pam_pkcs11/cacerts

Configurar el módulo pam_krb5

El módulo pam_krb5 interactúa con el centro KDC para obtener tíquets Kerberos utilizando los certificados ubicados en la tarjeta inteligente.

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

       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 localizada

Configurar la autenticación PAM

Los archivos de configuración PAM indican los módulos que se usan para la autenticación PAM. Para la autenticación con tarjeta inteligente, agregue las siguientes líneas al archivo /etc/pam.d/smartcard-auth para agregar los módulos pam_pkcs11 y pam_krb5.

     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

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

Imagen localizada

(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 SSO con Linux VDA, configure Citrix Receiver. La configuración es la misma que para Windows VDA. 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 Receiver.

Imagen localizada

Uso

Iniciar sesión en Linux VDA usando 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 localizada

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 localizada

Reconectarse a una sesión usando 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 localizada

Limitaciones

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.

Limitaciones en plantillas de certificado

Debido a la limitación de los módulos de asignación en pam_pkcs11, existen limitaciones en las plantillas de certificado que ayudan a pam_pkcs11 a asignar un certificado al nombre de usuario de dominio correcto.

Por ejemplo, cuando un usuario se llama “prueba” (SamAccountName), la asignación de certificados solo funciona en los dos casos siguientes:

  • El usuario “test” aparece como un campo CN en el Asunto del certificado.

    Imagen localizada

  • El usuario “test” se muestra en el Nombre principal de usuario del certificado.

    Imagen localizada

En el segundo caso, ejecute el siguiente comando para cambiar a la asignación de Nombre principal de usuario (UPN):

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

Además, cambie el archivo de configuración pam_pkcs11, ubicado en /etc/pam_pkcs11/pam_pkcs11.conf, como se indica a continuación:

Imagen localizada

Autenticación PassThrough usando tarjetas inteligentes