Agente de entrega virtual de Linux 2109

Compatibilidad con tarjetas inteligentes

Puedes usar una tarjeta inteligente conectada al dispositivo cliente para la autenticación al iniciar sesión en una sesión de escritorio virtual de Linux. Esta función se implementa mediante la redirección de tarjetas inteligentes a través del canal virtual de tarjetas inteligentes ICA®. También puedes usar la tarjeta inteligente dentro de la sesión. Los casos de uso incluyen agregar una firma digital a un documento, cifrar o descifrar un correo electrónico y autenticarte en un sitio web que requiera autenticación con tarjeta inteligente.

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

Nota:

  • El uso de una tarjeta inteligente asignada dentro de una sesión de VDA de Linux para iniciar sesión en Citrix Gateway no es compatible oficialmente.

Requisitos previos

-  La disponibilidad de la autenticación de paso de tarjeta inteligente depende de las siguientes condiciones:

-  Tu VDA de Linux está instalado en una de las siguientes distribuciones:

-  RHEL 8/CentOS 8
-  RHEL 7/CentOS 7
-  Ubuntu 20.04
-  Ubuntu 18.04
-  Ubuntu 16.04
-  Debian 10.9

 Una vez completada la instalación del VDA, verifica que tu VDA pueda registrarse en Delivery Controller™ y que las sesiones de escritorio de Linux publicadas puedan iniciarse correctamente con credenciales de Windows.

Asegúrate de que OpenSC sea compatible con tu tarjeta inteligente

OpenSC es un controlador de tarjetas inteligentes muy utilizado en RHEL 7.4+. Como reemplazo totalmente compatible de CoolKey, OpenSC es compatible con muchos tipos de tarjetas inteligentes (consulta Smart Card Support in Red Hat Enterprise Linux).

En este artículo, la tarjeta inteligente YubiKey 4 se usa como ejemplo para ilustrar la configuración. YubiKey 4 es un dispositivo USB CCID PIV todo en uno que se puede adquirir fácilmente en Amazon u otros proveedores minoristas. El controlador OpenSC es compatible con YubiKey 4.

Yubikey4

Si tu organización requiere alguna otra tarjeta inteligente más avanzada, prepara 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, consulta Instalar el controlador de tarjetas inteligentes. Inserta tu tarjeta inteligente y ejecuta el siguiente comando para verificar que OpenSC sea compatible con tu tarjeta inteligente:

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

Configuración

Preparar un certificado raíz

Se usa un certificado raíz para verificar el certificado de la tarjeta inteligente. Completa los siguientes pasos para descargar e instalar un certificado raíz.

  1. Obtén un certificado raíz en formato PEM, normalmente de tu servidor de CA.

    Puedes 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. Instala 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 para instalar el certificado raíz, ejecuta sudo mdkir -p <ruta donde instalas el certificado raíz>.

Compilar el módulo pam_krb5 en RHEL 8/CentOS 8

La autenticación con tarjeta inteligente depende del módulo pam_krb5, que está obsoleto en RHEL 8/CentOS 8. Para usar la autenticación con tarjeta inteligente en RHEL 8/CentOS 8, compila el módulo pam_krb5 de la siguiente manera:

  1. Descarga 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. Compila e instala el módulo pam_krb5 en RHEL 8/CentOS 8.

    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. Verifica que pam_krb5.so exista en /usr/lib64/security/.

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

Configurar el entorno de tarjetas inteligentes

Puedes usar el script ctxsmartlogon.sh para configurar el entorno de tarjetas inteligentes o completar la configuración manualmente.

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

Nota:

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

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

Sugerencia:

Si has usado SSSD para unirte a un dominio, reinicia el servicio SSSD después de ejecutar ctxsmartlogon.sh.

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

Los resultados son similares a los siguientes:

Ejecutar el script ctxsmartlogon.sh y seleccionar sí

También puedes deshabilitar las tarjetas inteligentes ejecutando el script ctxsmartlogon.sh:

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

Los resultados son similares a los siguientes:

Ejecutar el script ctxsmartlogon.sh y seleccionar no

(Opción 2) Configurar el entorno de tarjetas inteligentes manualmente

El VDA de Linux usa el mismo entorno de tarjetas inteligentes que el VDA de Windows. En este entorno, se deben configurar varios componentes, incluidos el controlador de dominio, la entidad de certificación (CA) de Microsoft, los servicios de Internet Information Services, Citrix StoreFront y la aplicación Citrix Workspace. Para obtener información sobre la configuración basada en la tarjeta inteligente YubiKey 4, consulta el artículo del Centro de conocimientos CTX206156.

Antes de continuar con el siguiente paso, asegúrate de que todos los componentes estén configurados correctamente, de que la clave privada y el certificado de usuario estén descargados en la tarjeta inteligente y de que puedas iniciar sesión correctamente en el VDA de Windows con la tarjeta inteligente.

Instalar los paquetes PC/SC Lite

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

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

RHEL 7/CentOS 7, RHEL 8/CentOS 8:

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

Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Debian 10.9:

apt-get install -y libpcsclite1 libccid
<!--NeedCopy-->
Instalar el controlador de tarjetas inteligentes

OpenSC es un controlador de tarjetas inteligentes muy utilizado. Si OpenSC no está instalado, ejecuta el siguiente comando para instalarlo:

RHEL 7/CentOS 7, RHEL 8/CentOS 8:

yum install opensc
<!--NeedCopy-->

Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Debian 10.9:

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

Ejecuta 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 8/CentOS 8:

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

Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04:

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

Debian 10.9:

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

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

Configurar el módulo pam_krb5

El módulo pam_krb5 interactúa con el KDC para obtener tickets Kerberos mediante certificados en la tarjeta inteligente. Para habilitar la autenticación pam_krb5 en PAM, ejecuta el siguiente comando:

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

En el archivo de configuración /etc/krb5.conf, agrega la información de PKINIT según el dominio real.

Nota:

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

[relation-operator] component-rule …

donde relation-operator puede ser &&, lo que significa que todas las reglas de componentes deben coincidir, o ||, lo que significa que solo una regla de componente debe coincidir.

Aquí tienes 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 al siguiente después de agregar la información de PKINIT.

Información de PKINIT agregada

Configurar la autenticación PAM

Los archivos de configuración de PAM indican qué módulos se usan para la autenticación PAM. Para agregar pam_krb5 como módulo de autenticación, agrega 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 usa SSSD.

Archivo de configuración modificado si se usa SSSD

(Opcional) Inicio de sesión único mediante tarjetas inteligentes

El inicio de sesión único (SSO) es una función de Citrix que implementa la autenticación de paso a través con inicios de escritorios virtuales y aplicaciones. Esta función reduce el número de veces que los usuarios escriben su PIN. Para usar SSO con Linux VDA, configura la aplicación Citrix Workspace. La configuración es la misma que con Windows VDA. Para obtener más información, consulta el artículo del Centro de conocimientos CTX133982.

Habilita la autenticación con tarjeta inteligente de la siguiente manera al configurar la directiva de grupo en la aplicación Citrix Workspace.

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

Inicio de sesión rápido con tarjeta inteligente

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

Linux VDA admite el inicio de sesión rápido con tarjeta inteligente en las siguientes versiones de la aplicación Citrix Workspace:

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

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

El inicio de sesión rápido con tarjeta inteligente está habilitado de forma predeterminada en el VDA y deshabilitado de forma predeterminada en el cliente. En el cliente, para habilitar el inicio de sesión rápido con tarjeta inteligente, incluye el siguiente parámetro en el archivo default.ica del sitio de StoreFront asociado:

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

Deshabilitar el inicio de sesión rápido con tarjeta inteligente en el cliente

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

Uso

Iniciar sesión en Linux VDA mediante una tarjeta inteligente

Puedes usar una tarjeta inteligente para iniciar sesión en Linux VDA tanto en escenarios SSO como no SSO.

  • En el escenario SSO, inicias sesión en StoreFront™ automáticamente mediante el certificado de tarjeta inteligente y el PIN almacenados en caché. Cuando inicias una sesión de escritorio virtual Linux en StoreFront, el PIN se pasa a Linux VDA para la autenticación con tarjeta inteligente.
  • En el escenario no SSO, se te pide que selecciones un certificado y escribas un PIN para iniciar sesión en StoreFront.

    Escribir un PIN para iniciar sesión en StoreFront

Cuando inicias una sesión de escritorio virtual Linux en StoreFront, aparece un cuadro de diálogo para iniciar sesión en Linux VDA como se muestra a continuación. El nombre de usuario se extrae del certificado de la tarjeta inteligente y debes escribir el PIN de nuevo para la autenticación de inicio de sesión.

Este comportamiento es el mismo que con Windows VDA.

Autenticación de inicio de sesión

Volver a conectar a una sesión mediante una tarjeta inteligente

Para volver a conectar a una sesión, asegúrate de que la tarjeta inteligente esté conectada al dispositivo cliente. De lo contrario, aparecerá una ventana de caché gris en el lado de Linux VDA y se cerrará rápidamente porque la reautenticación falla sin la tarjeta inteligente conectada. En este caso, no se proporciona ninguna otra indicación para recordarte que conectes la tarjeta inteligente.

En el lado de StoreFront, sin embargo, si no hay una tarjeta inteligente conectada cuando intentas volver a conectar a una sesión, la web de StoreFront podría mostrar una alerta como la siguiente.

Imagen de insertar una tarjeta inteligente

Limitación

Política de extracción de tarjetas inteligentes

Actualmente, Linux VDA solo usa el comportamiento predeterminado para la extracción de tarjetas inteligentes. Cuando quitas la tarjeta inteligente después de iniciar sesión correctamente en Linux VDA, la sesión permanece conectada y la pantalla de la sesión no se bloquea.

Asistencia para otras tarjetas inteligentes y la biblioteca PKCS#11

Aunque solo la tarjeta inteligente OpenSC aparece en nuestra lista de asistencia, puedes intentar usar otras tarjetas inteligentes y la biblioteca PKCS#11 porque Citrix proporciona una solución genérica de redirección de tarjetas inteligentes. Para cambiar a tu tarjeta inteligente específica o a la biblioteca PKCS#11:

  1. Reemplaza todas las instancias de opensc-pkcs11.so por tu biblioteca PKCS#11.

  2. Para establecer la ruta de tu biblioteca PKCS#11 en el registro, ejecuta 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 tu biblioteca PKCS#11, como /usr/lib64/pkcs11/opensc-pkcs11.so

  3. Deshabilita el inicio de sesión rápido con tarjeta inteligente en el cliente.

Compatibilidad con tarjetas inteligentes