Pour configurer la redirection de carte à puce sur un poste de travail Ubuntu, installez les bibliothèques dont dépend la fonctionnalité et le certificat d'autorité de certification racine pour prendre en charge l'authentification approuvée des cartes à puce. En outre, vous devez modifier certains fichiers de configuration pour terminer la configuration de l'authentification.

Certains exemples de la procédure utilisent des valeurs d'espace réservé pour représenter des entités dans votre configuration réseau, telles que le nom DNS de votre domaine AD. Remplacez les valeurs d'espace réservé par des informations spécifiques à votre configuration, comme décrit dans le tableau suivant.

Valeur d'espace réservé Description
dns_IP_ADDRESS Adresse IP de votre serveur de nom DNS
mydomain.com Nom DNS de votre domaine AD
MYDOMAIN.COM Nom DNS de votre domaine AD en majuscules
MYDOMAIN Nom DNS du groupe de travail ou domaine NT qui inclut votre serveur Samba, en majuscules
ads-hostname Nom d'hôte de votre serveur AD
ads-hostname.mydomain.com Nom de domaine complet (FQDN) de votre serveur AD
mytimeserver.mycompany.com Nom DNS de votre serveur de temps NTP
AdminUser Nom d'utilisateur de l'administrateur de poste de travail Linux

Conditions préalables

Intégrer un poste de travail Ubuntu à Active Directory pour la redirection de carte à puce

Procédure

  1. Installez les bibliothèques requises.
    # apt-get install -y pcscd pcsc-tools pkg-config libpam-pkcs11 opensc
          libengine-pkcs11-openssl libnss3-tools
  2. Installez un certificat d'autorité de certification racine (CA).
    1. Téléchargez un certificat d'autorité de certification racine et enregistrez-le dans /tmp/certificate.cer sur votre poste de travail. Reportez-vous à Exportation du certificat d'autorité de certification de racine.
    2. Localisez le certificat d'autorité de certification racine que vous avez téléchargé et transférez-le vers un fichier .pem.
      # openssl x509 -inform der -in /tmp/certificate.cer -out /tmp/certificate.pem
    3. Utilisez la commande certutil pour installer le certificat d'autorité de certification racine dans la base de données système /etc/pki/nssdb.
      # certutil -A -d /etc/pki/nssdb -n "root CA cert" -t "CT,C,C" -i /tmp/certificate.pem
    4. Copiez le certificat d'autorité de certification racine dans le répertoire /etc/pam_pkcs11/cacerts.
      # mkdir -p /etc/pam_pkcs11/cacerts
      
      # cp /tmp/certificate.pem /etc/pam_pkcs11/cacerts
  3. Créez un fichier de hachage pkcs11.
    # chmod a+r certificate.pem
    # pkcs11_make_hash_link
  4. Copiez les pilotes requis et ajoutez les fichiers de bibliothèque nécessaires au répertoire nssdb.
    1. Exécutez les commandes suivantes.
      # 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. Vérifiez que le certificat attendu est correctement chargé.
      # certutil -L -d /etc/pki/nssdb
      
      Certificate Nickname
      
      rootca
    3. Vérifiez que les bibliothèques attendues ont été ajoutées.
      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. Configurez la bibliothèque pam_pkcs11.
    1. Créez un fichier pam_pkcs11.conf à l'aide de l'exemple de contenu par défaut.
      # mkdir /etc/pam_pkcs11
      # zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | 
             tee /etc/pam_pkcs11/pam_pkcs11.conf
    2. Modifiez le fichier /etc/pam_pkcs11/pam_pkcs11.conf, comme indiqué dans l'exemple suivant.
      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. Modifiez le fichier /etc/pam_pkcs11/cn_map de sorte qu'il comprenne la ligne suivante.
      ads-hostname -> ads-hostname
  6. Configurez l'authentification PAM.
    1. Modifiez le fichier de configuration /etc/pam.d/gdm-password. Placez la ligne d'autorisation pam_pkcs11.so avant la ligne common-auth, comme indiqué dans l'exemple suivant.
      #%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. Pour Ubuntu 16.04, modifiez le fichier de configuration /etc/pam.d/lightdm. Placez la ligne d'autorisation pam_pkcs11.so avant la ligne common-auth, comme indiqué dans l'exemple suivant.
      #%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. Pour Ubuntu 16.04, modifiez le fichier de configuration /etc/pam.d/unity. Placez la ligne d'autorisation pam_pkcs11.so avant la ligne common-auth, comme indiqué dans l'exemple suivant.
      auth    [success=3 default=ignore}     pam_pkcs11.so                                   
      @include common-auth
      auth optional pam_gnome_keyring.so
  7. Pour vérifier le matériel de la carte à puce et les certificats installés sur la carte à puce, exécutez les commandes suivantes.
    # pcsc_scan
    
    # pkcs11_listcerts
    
    # pkcs11_inspect
  8. Configurez l'économiseur d'écran Gnome de sorte qu'il se verrouille lorsque la carte à puce est retirée.
    1. Installez le module de l'économiseur d'écran.
      # apt-get install gnome-screensaver
    2. Pour configurer l'économiseur d'écran, modifiez le fichier /etc/pam_pkcs11/pkcs11_eventmgr.conf, comme indiqué dans l'exemple suivant.
      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. Exécutez pkcs11_eventmgr.
      # /usr/bin/pkcs11_eventmgr &
  9. Installez le module Horizon Agent, avec la redirection de carte à puce activée.
    # sudo ./install_viewagent.sh -m yes
    Note : Vous devez installer Horizon Agent 7.9 ou version ultérieure.
  10. Redémarrez votre système et reconnectez-vous.