cesnet.yubikeys

cesnet.yubikeys

El rol de Ansible Galaxy cesnet.yubikeys que configura la autenticación de segundo factor para sudo utilizando tokens USB de hardware Yubikeys.

Agrega un módulo PAM para sudo que llama a los servidores de Yubico para validar el código de un solo uso ingresado.

Utilice "--tags config" para ejecutar solo la configuración.

Requisitos

Variables del rol

  • yubikey_id y yubikey_key - valores únicos obtenidos de https://upgrade.yubico.com/getapikey/
  • yubikey_users - mapeo de nombres de inicio de sesión a hashes con nombre, código de yubikey y clave ssh, ver ejemplo abajo
  • yubikey_lognames - lista de nombres de inicio de sesión a utilizar del hash yubikey_users, por defecto está vacío
  • sudo_root_lognames - lista de nombres de inicio de sesión que pueden usar sudo para root, por defecto está vacío
  • other_sudo_user - otro nombre de inicio de sesión que no sea root al que los usuarios seleccionados pueden usar sudo, por defecto es "perun"
  • sudo_other_lognames - lista de nombres de inicio de sesión que pueden usar sudo al otro usuario definido por other_sudo_user

Ejemplo de Playbook

En el siguiente ejemplo, se definen 4 usuarios, pero solo se crearán 3 de ellos. Los usuarios tesla y einstein podrán usar sudo para root, el usuario volta podrá usar sudo para el usuario cthulhu.

- hosts: all
  roles:
    - role: cesnet.yubikeys
      vars:
        yubikey_id: "48695"
        yubikey_key: "jGAqANjXDwthsKp0dnboFGmZ5ag="
        yubikey_lognames: [ 'tesla', 'einstein', 'volta' ]
        # lista de nombres de inicio de sesión que pueden usar sudo para root
        sudo_root_lognames: "{{ yubikey_lognames }}"
        # otro nombre de inicio de sesión que no sea root al que los usuarios seleccionados pueden usar sudo
        other_sudo_user: "cthulhu"
        # lista de nombres de inicio de sesión que pueden usar sudo al otro usuario definido por other_sudo_user
        sudo_other_lognames: ['volta' ]
        
        # lista de usuarios
        ## logname - nombre de inicio de sesión de unix
        ## name - nombre completo que se pondrá en /etc/passwd
        ## yubikeys - lista de ids de yubikey (los primeros 12 caracteres de cualquier código generado por la yubikey del usuario, se pondrán en /etc/yubico/authorized_yubikeys)
        ## sshkeys - lista de partes públicas de claves ssh que se pondrán en $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

En el siguiente ejemplo, el módulo PAM está instalado, pero no se crean usuarios. Úselo si los usuarios son gestionados por Perun.

- hosts: all
  roles:
    - role: cesnet.yubikeys
      vars:
        yubikey_id: "48695"
        yubikey_key: "jGAqANjXDwthsKp0dnboFGmZ5ag="
Acerca del proyecto

Managing access to root by yubikeys.

Instalar
ansible-galaxy install cesnet.yubikeys
Licencia
bsd-2-clause
Descargas
123
Propietario
Czech Educational and Research Network