cesnet.yubikeys

cesnet.yubikeys

Un rôle Ansible Galaxy cesnet.yubikeys qui met en place l'authentification à deux facteurs pour sudo en utilisant des jetons matériels USB Yubikeys.

Ajoute un module PAM pour sudo qui appelle les serveurs Yubico pour valider le code à usage unique saisi.

Utilisez "--tags config" pour exécuter uniquement la configuration.

Exigences

Variables de rôle

  • yubikey_id et yubikey_key - valeurs uniques obtenues sur https://upgrade.yubico.com/getapikey/
  • yubikey_users - correspondance entre les noms de connexion et les hachages contenant le nom, le code Yubikey et la clé SSH, voir l'exemple ci-dessous
  • yubikey_lognames - liste des noms de connexion à utiliser à partir du hachage yubikey_users, par défaut vide
  • sudo_root_lognames - liste des noms de connexion pouvant utiliser sudo pour devenir root, par défaut vide
  • other_sudo_user - un autre nom de connexion que root vers lequel les utilisateurs sélectionnés peuvent utiliser sudo, par défaut "perun"
  • sudo_other_lognames - liste des noms de connexion pouvant utiliser sudo pour l'autre utilisateur défini par other_sudo_user

Exemple de Playbook

Dans l'exemple suivant, 4 utilisateurs sont définis, mais seuls 3 d'entre eux seront créés. Les utilisateurs tesla et einstein pourront utiliser sudo pour devenir root, l'utilisateur volta pourra utiliser sudo pour l'utilisateur cthulhu.

- hosts: all
  roles:
    - role: cesnet.yubikeys
      vars:
        yubikey_id: "48695"
        yubikey_key: "jGAqANjXDwthsKp0dnboFGmZ5ag="
        yubikey_lognames: [ 'tesla', 'einstein', 'volta' ]
        # liste des noms de connexion qui peuvent utiliser sudo pour devenir root
        sudo_root_lognames: "{{ yubikey_lognames }}"
        # un autre nom de connexion que root vers lequel les utilisateurs sélectionnés peuvent utiliser sudo
        other_sudo_user: "cthulhu"
        # liste des noms de connexion pouvant utiliser sudo pour l'autre utilisateur défini par other_sudo_user
        sudo_other_lognames: ['volta' ]
        
        # liste des utilisateurs
        ## logname - nom de connexion unix
        ## name - le nom complet sera inscrit dans /etc/passwd
        ## yubikeys - Liste des id des yubikeys (12 premiers caractères de tout code généré par la yubikey de l'utilisateur, sera inscrit dans /etc/yubico/authorized_yubikeys)
        ## sshkeys - Liste des parties publiques des clés SSH qui seront inscrites dans $HOME/.ssh/authorized_keys
        yubikey_users:
          tesla:
            name: Nikola Tesla
            yubikeys: 
              - ccccccefghij
            sshkeys: 
              - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe9Rb2N5aq5qYAi8OCeQKlpOBJi/Ll2tlxqiD7Gan7wJrFBbrZIj8a5tOpHKTm61ldihxG7hnXkyEvbAX5vx/6lLagKaLFL3ysh3iH3ZxiXFYXfLklqrrCK2kuwdCIasMF4kJYzS/goLEGeqBkeJN8SvTj2THvzWcvsTZXIgXygzqiiSKlJao2v62EZv3Pi0eP8KhLrdYW2EcePBOKclLGYxdAX0k9KMJHJRecQhS2BtDLDL1rGoCCrw3Pd8689xovzYKC/ATnTZ89slA9HlrKyQjkjVeBX7WbRsjrgYKEDeqWZbdzjT9Nhg/Ftewbqh2V6p8OFQTftKUOmmPXlwAr
          einstein:
            name: Albert Einstein
            yubikeys: 
              - ccccccghijkl
            sshkeys: 
              - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQiusTXxPGdXXzhHyU9wEb1i5PAdN/qBX8lVw90/yZo6LKBl+fO2QuRTQUxxRgk05puXYwWMF4IheoVBmWFzwClyH/Ox88Yq+WM4nGxIpzvoyUZQ0rRM7a0LfaLvDsJpkoMOr53LFfQtdTY7ZiKXsaTI1EmhHXVmfgFXDTu4IE2EBGUrKPj28+yD/5UuyybA/TfZJ6wW51M0QAaQy3n2xWY+K+aFfTJv2vQin2cIjIPMWfUoUCR2eYNbtZ/uHwXgJxK1W3PeeJhLjW8RXdfLiSOA3+8X5NCHGBs5BLdvieQjB0SYb0NqCc7scAlJV14MGlWdBYuczV2gvn2mnT4q3F
          volta:
            name: Alessandro Volta
            yubikeys: 
              - ccccccfghijk
            sshkeys: 
              - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnkDzzBfCAgjxv4lZKZ744lPiIRbGhfnQFbSEmeU7ZlRn5zPK2r7Ur+T7I89YHly1nEVPoQ0O8elA7eDaHZ2jIUyYXbzVrYr+7dNSvoO+tqXoG1r5VuZM8jv9m55IFClV0NONqbrgDLRl771ZVqdMah10xPA9X5hv5O17LlDYWyP0j5tJ6M1Ua3t1oI+Gsx28xicJYuLSA5ixpb0b5vftlSvdz7OCC1ojKdTESV3dGifgmJ+B4OZu3ha/Ti6K+pIOYHNtg/yriI6AZNZyLG/L/x5EtE28XRBOr2auXuIlBwK1IWI9MtoSB6L8WjhHl+7WPQej50eL9keK22diIJen9
          gauss:
            name: Carl Friedrich Gauss
            yubikeys: 
              - cccccclkjihg
            sshkeys: 
              - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgdleNFp+4o849ZNts1cluRtE8VPJCDgo9dllcScw/z3alhhmxXT8oQWG0XXzx3r0rfzfDIC0Lqw5xPEsX8yDLl4SeQzHyHycwM5773IBuN5EYrul+34aGHHawqFIksKpbS3ADMwHEd25tzHr1SzAX2vLt3a6RqFhfaW6YnVcMU3ZFOZGfyLmsFjCsIJ2XsIVhzhX8s13vy2jwC2uQ+rTzMMtIgXkx/UQ1mjr9dj/XtDNT3bPwvjVd7/N0BT6PL0H4hNH4jBAby9mRYGfON/LNTLyrUD280w4A5Zu1JGPl+VBxMjN83m1l5k9i5w6vDLU/7TRzAXATINlLIYwWH+1J

Dans l'exemple suivant, le module PAM est installé, mais aucun utilisateur n'est créé. Utilisez cette méthode si les utilisateurs sont gérés par Perun.

- hosts: all
  roles:
    - role: cesnet.yubikeys
      vars:
        yubikey_id: "48695"
        yubikey_key: "jGAqANjXDwthsKp0dnboFGmZ5ag="
À propos du projet

Managing access to root by yubikeys.

Installer
ansible-galaxy install cesnet.yubikeys
Licence
bsd-2-clause
Téléchargements
123
Propriétaire
Czech Educational and Research Network