Pouvez-vous donner à un compte utilisateur plusieurs mots de passe?

21

Je veux attribuer 2 mots de passe à un seul compte. Ce que je veux savoir, c'est 1) est-ce possible et 2) quelles sont les implications en termes de sécurité?

La raison pour laquelle je veux le faire est que je suis actuellement occupé par des tests locaux et que je pensais que ce serait pratique dans certaines situations spécifiques. Après quelques recherches, j'ai trouvé quelque chose appelé PAM , mais j'ai du mal à trouver des informations sur le fonctionnement de l'installation / configuration.

J'utilise Ubuntu 12.04.

agrégat1166877
la source
1
Je configurerais probablement juste sudopour permettre à user1 d'exécuter des commandes en tant qu'utilisateur2. ( sudon'est pas seulement pour exécuter des commandes en tant que root; il peut exécuter des commandes comme n'importe quel utilisateur.)
cjm

Réponses:

16

Oui, bien que ce soit assez rare, c'est certainement faisable.

Au lieu d'essayer de l'implémenter vous-même, car la /etc/password /etc/shadowméthode d'authentification basée par défaut ne prévoit pas une telle configuration, la manière la plus simple consiste à déléguer l'authentification à un serveur principal qui prend déjà en charge plusieurs mots de passe pour un utilisateur.

A est une bien connue LDAP qui userPasswordattribut est multivalent selon la RFC4519 :

Un exemple de besoin de plusieurs valeurs dans l'attribut 'userPassword' est un environnement dans lequel chaque mois, l'utilisateur est censé utiliser un mot de passe différent généré par un système automatisé. Pendant les périodes de transition, comme le dernier et le premier jour des périodes, il peut être nécessaire d'autoriser deux mots de passe pour les deux périodes consécutives pour être valides dans le système.

Malgré cette RFC, vous devrez probablement modifier la configuration de la politique de mot de passe sur la plupart des implémentations de serveur d'annuaire pour que ce paramètre soit réellement accepté.

Côté Linux, rien n'interdit de le faire (ici un compte nommé a testuserété donné à la fois pass1et pass2comme userPasswordvaleurs d'attribut):

$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf 
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.

Voici quelques implications techniques et liées à la sécurité de ce type de configuration:

  • le compte utilisateur sera évidemment plus vulnérable aux attaques bien que ce qui compte vraiment ici soit la qualité et la protection des mots de passe plus que leur nombre.
  • la plupart des utilitaires supposent que l'utilisateur a un seul mot de passe et ne permettra donc pas à un utilisateur de mettre à jour individuellement l'un des mots de passe. Le changement de mot de passe entraînera alors probablement un seul attribut de mot de passe pour l'utilisateur.
  • si l'objectif est de permettre à plusieurs personnes de partager le même compte en utilisant chacune leur propre mot de passe, il n'y a pas de mécanisme pour identifier qui se connecte réellement en fonction du mot de passe utilisé.
jlliagre
la source
1
Pouvez-vous expliquer pourquoi cela n'a aucune incidence sur la sécurité? Ma première impression était que cela augmenterait les chances qu'un compte soit compromis, surtout si un mot de passe est nettement plus faible que l'autre.
Joseph R.
1
@JosephR. Vous avez raison. Je viens de mettre à jour ma réponse après avoir mis en œuvre ce que j'ai suggéré et expérimenté avec.
jlliagre
Excellente réponse, fonctionne comme un charme maintenant. Merci :)
aggregate1166877
7

J'ai juste essayé de créer 2 entrées pour un utilisateur dans le /etc/shadowfichier et cela n'a pas fonctionné. Quelle que soit la première entrée, c'était l'entrée de mot de passe utilisée.

Exemple

Création d'un utilisateur de test.

$ useradd -d /home/newuser newuser

Définissez le mot de passe sur "super123":

$ passwd newuser

Modifiez manuellement le /etc/shadowfichier et faites une deuxième entrée:

newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::

Essayez ensuite de vous connecter avec le compte en utilisant les 2 mots de passe.

su - newuser

La première entrée /etc/shadowest ce qui est utilisé, l'entrée en deuxième position ne fonctionne jamais, si vous les retournez comme ceci:

newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::

Ensuite, le deuxième mot de passe fonctionne et le premier ne fonctionne pas.

Utilisez sudo

Cette approche est un hack total, je voudrais simplement l'utiliser sudo, c'est en partie pourquoi elle sudoexiste.

Vous pouvez ajouter cette entrée à votre fichier sudoers ( /etc/sudoers) qui autoriserait l'utilisateur joe à faire n'importe quoi comme vous:

joe ALL=(yourusername) ALL
slm
la source
J'ai oublié en fait que sudopeut le faire .. 1
aggregate1166877
4

Si vous pouvez le faire, vous ne devriez probablement pas.

La configuration PAM est quelque peu complexe et il existe un truisme concernant les mécanismes d'authentification: il existe un ensemble fini de configurations correctes mais un ensemble infini de configurations non sécurisées. Il est donc presque certain que si vous essayez de changer les choses et que vous ne savez pas exactement ce que vous faites, vous allez tout gâcher.

Si vous avez le choix entre la sécurité et "pratique dans certaines situations spécifiques", optez pour la première.

msw
la source
+1 pour "la sécurité plutôt que la commodité" (avec laquelle je suis entièrement d'accord), mais je suis le type de personne qui veut tout tester, ne serait-ce que pour l'expérience, donc pas à 100% la réponse que je recherche.
aggregate1166877
2

Vous pouvez définir deux noms d'utilisateur différents, chacun avec leur mot de passe, pour le même compte. Exécutez vipwpour modifier /etc/passwdmanuellement, dupliquez la ligne existante pour le compte qui vous intéresse et modifiez le nom d'utilisateur (et si vous aimez le champ Gecos , le répertoire personnel et le shell). Exécutez vipw -set dupliquez la ligne pour cet utilisateur dans /etc/shadow. Connectez-vous sous le nouveau nom d'utilisateur et exécutez passwdpour changer le mot de passe du nouveau nom d'utilisateur. Vous avez maintenant deux noms d'utilisateur différents, avec des mots de passe différents, pour le même compte (l'ID utilisateur est ce qui détermine le compte).

Ce n'est probablement pas une bonne idée. Selon ce que vous essayez de faire, d'autres approches peuvent être plus appropriées:

  • Créez un autre compte et partagez des fichiers en validant et en retirant le contrôle de version.
  • Créez un autre compte, créez un groupe auquel appartiennent les deux comptes d'utilisateur et accordez un accès en écriture au groupe aux fichiers que vous souhaitez partager.
  • Créez un autre compte et donnez au premier compte le droit d'exécuter des commandes comme ce compte avec sudo:

    user1 ALL = (user2) ALL
    
  • Créez une clé SSH pour le compte qui ne permet d'exécuter qu'une seule commande spécifique .
Gilles 'SO- arrête d'être méchant'
la source
Pourriez-vous copier ceci sur herehttp: //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind