Para configurar el redireccionamiento de tarjetas inteligentes en un escritorio Ubuntu, instale las bibliotecas de las que depende la función y el certificado de CA raíz para permitir la autenticación de confianza de las tarjetas inteligentes. Además, debe editar algunos archivos de configuración para completar la configuración de autenticación.

Algunos ejemplos incluidos en el procedimiento utilizan valores de marcador de posición para representar entidades en su configuración de red, como el nombre de DNS de su dominio de AD. Reemplace los valores de marcador de posición con información específica de su configuración, tal y como se describe en la siguiente tabla.

Valor del marcador de posición Descripción
DIRECCIÓN_IP_dns Dirección IP del servidor de nombres DNS
midominio.com Nombre DNS de su dominio de AD
MIDOMINIO.COM Nombre DNS de su dominio de AD, en mayúsculas
MIDOMINIO Nombre DNS del grupo de trabajo o el dominio NT que incluye su servidor Samba, en mayúsculas
nombredehost-ads Nombre de host del servidor de AD
nombredehost-ads.midominio.com Nombre de dominio completo (FQDN) del servidor de AD
miservidordetiempo.miempresa.com Nombre DNS del servidor de tiempo NTP
AdminUser Nombre de usuario del administrador del escritorio Linux

Requisitos previos

Integrar escritorios Ubuntu con Active Directory para el redireccionamiento de tarjetas inteligentes

Procedimiento

  1. Instale las bibliotecas necesarias.
    # apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc
          libengine-pkcs11-openssl libnss3-tools
  2. Instale un certificado de una entidad de certificación (CA) raíz.
    1. Descargue un certificado de CA raíz y guárdelo en su escritorio en /tmp/certificate.cer. Consulte la sección Cómo exportar el certificado raíz firmado por una entidad de certificación.
    2. Busque el certificado de CA raíz que descargó y transfiéralo a un archivo .pem.
      # openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
    3. El comando certutil le permitirá instalar el certificado CA raíz en la base de datos del sistema /etc/pki/nssdb.
      # certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
    4. Copie el certificado de CA raíz en el directorio /etc/pam_pkcs11/cacerts.
      # mkdir -p /etc/pam_pkcs11/cacerts
      
      # cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
  3. Cree un archivo de hash pkcs11.
    # chmod a+r certificate.pem
    # pkcs11_make_hash_link
  4. Copie los controladores requeridos y agregue los archivos de biblioteca necesarios al directorio nssdb.
    1. Ejecute los siguientes comandos.
      # cp libcmP11.so /usr/lib/
      # mkdir -p /etc/pki/nssdb
      # certutil -N -d /etc/pki/nssdb
      # certutil -A -n rootca -i certificate.pem -t "CT,CT,CT" -d /etc/pki/nssdb
      # modutil -dbdir /etc/pki/nssdb/  -add "piv card 2.0" -libfile /usr/lib/libcmP11.so
    2. Compruebe que el certificado esperado se cargó correctamente.
      # certutil -L -d /etc/pki/nssdb
      
      Certificate Nickname
      
      rootca
    3. Compruebe que las bibliotecas esperadas se agregaran correctamente.
      modutil -dbdir /etc/pki/nssdb -list
      
      Listing of PKCS #11 Modules
      –-----------------------------------------------------------
        1. NSS Internal PKCS #11 Module
               slots: 2 slots attached
              status: loaded
      
               slot: NSS Internal Cryptographic Services
              token: NSS Generic Crypto Services
      
               slot: NSS User Private Key and Certificate Services
              token: NSS Certificate DB
      
        2. piv card 2.0
              library name: /usr/lib/libcmP11.so
               slots: There are no slots attached to this module
              status: loaded
      –-----------------------------------------------------------
  5. Configure la biblioteca pam_pkcs11.
    1. Cree un archivo pam_pkcs11.conf con el contenido de ejemplo predeterminado.
      # mkdir /etc/pam_pkcs11
      # zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | 
             tee /etc/pam_pkcs11/pam_pkcs11.conf
    2. Edite el archivo /etc/pam_pkcs11/pam_pkcs11.conf, tal y como se muestra en el siguiente ejemplo.
      use_pkcs11_module = mysc;                            
              
      pkcs11_module mysc {                                 
                    module = /usr/lib/libcmP11.so;         
                    description = "LIBCMP11";               
                    slot_num = 0;                           
                    ca_dir = /etc/pki/cacerts;       
                    nss_dir = /etc/pki/nssdb;        
                    cert_policy = ca;                       
      }                                                    
      ...
      use_mappers = cn, null;                        
      ...
      mapper cn {
            debug = false;
            module = internal;
            # module = /lib/pam_pkcs11/cn_mapper.so;
            ignorecase = true;
            mapfile = file:///etc/pam_pkcs11/cn_map;         
            # mapfile = "none";
      }
    3. Edite el archivo /etc/pam_pkcs11/cn_map para que incluya la siguiente línea.
      nombredehost-ads -> nombredehost-ads
  6. Configure la autenticación de PAM.
    1. Edite el archivo de configuración /etc/pam.d/gdm-password. Coloque la línea de autorización pam_pkcs11.so antes de la línea common-auth, tal y como se muestra en el siguiente ejemplo.
      #%PAM-1.0
      auth    requisite       pam_nologin.so
      auth    required        pam_succeed_if.so user != root quiet_success
      auth sufficient pam_pkcs11.so                                                                               
      @include common-auth
      auth    optional        pam_gnome_keyring.so
      @include common-account
    2. En Ubuntu 16.04, edite el archivo de configuración /etc/pam.d/lightdm. Coloque la línea de autorización pam_pkcs11.so antes de la línea common-auth, tal y como se muestra en el siguiente ejemplo.
      #%PAM-1.0
      auth    requisite       pam_nologin.so debug
      auth    sufficient      pam_succeed_if.so user ingroup nopasswdlogin debug
      auth    [success=3 default=ignore}     pam_pkcs11.so                                   
      @include common-auth
      auth    optional        pam_gnome_keyring.so
      auth    optional        pam_kwallet.so
    3. En Ubuntu 16.04, edite el archivo de configuración /etc/pam.d/unity. Coloque la línea de autorización pam_pkcs11.so antes de la línea common-auth, tal y como se muestra en el siguiente ejemplo.
      auth    [success=3 default=ignore}     pam_pkcs11.so                                   
      @include common-auth
      auth optional pam_gnome_keyring.so
  7. Para verificar el hardware de la tarjeta inteligente y los certificados instalados en ella, ejecute los siguientes comandos.
    # pcsc_scan
    
    # pkcs11_listcerts
    
    # pkcs11_inspect
  8. Configure el protector de protector de GNOME para que se bloquee cuando se extraiga la tarjeta inteligente.
    1. Instale el paquete del protector de pantalla.
      # apt-get install gnome-screensaver
    2. Para configurar el protector de pan, edite el archivo /etc/pam_pkcs11/pkcs11_eventmgr.conf, tal y como se muestra en el siguiente ejemplo.
      pkcs11_eventmgr {
        # Run in background? Implies debug=false if true
        daemon = true;
      
        # show debug messages?
        debug = false;
      
        # polling time in seconds
        polling_time = 1;
      
        # expire time in seconds
        # default = 0 ( no expire )
        expire_time = 0;
      
        # pkcs11 module to use
        pkcs11_module = /usr/lib/libcmP11.so;
      
        #
        # list of events and actions
        # Card inserted
        event card_insert {
          # what to do if an action fail?
          # ignore : continue to next action
          # return : end action sequence
          # quit : end program
          on_error = ignore ;
      
          # You can enter several, comma-separated action entries
          # they will be executed in turn
          action = "gnome-screensaver-command --poke";
        }
      
        # Card has been removed
        event card_remove {
        on_error = ignore;
          action = "gnome-screensaver-command --lock";
        }
      
        # Too much time card removed
          event expire_time {
          on_error = ignore;
          action = "/bin/false";
        }
      }
    3. Ejecute pkcs11_eventmgr.
      # /usr/bin/pkcs11_eventmgr &
  9. Instale el paquete Horizon Agent con el redireccionamiento de tarjetas inteligentes habilitado.
    # sudo ./install_viewagent.sh -m yes
    Nota: Debe instalar Horizon Agent 7.9 o una versión posterior.
  10. Reinicie el sistema y vuelva a iniciar sesión.