Können Sie einem Benutzerkonto mehrere Passwörter geben?


21

Ich möchte einem Konto 2 Passwörter zuweisen. Ich möchte wissen, ob 1) dies möglich ist und 2) welche Auswirkungen dies auf die Sicherheit hat.

Der Grund, warum ich dies tun möchte, ist, dass ich momentan mit einigen lokalen Tests beschäftigt bin und dachte, dass dies in bestimmten Situationen nützlich wäre. Nach einigen Recherchen habe ich etwas namens PAM gefunden , aber ich habe Mühe, Informationen darüber zu finden, wie die Installation / Konfiguration funktioniert.

Ich verwende Ubuntu 12.04.


1
Ich würde vermutlich gerade sudogründen, um user1 zu erlauben, Befehle als user2 laufen zu lassen. ( sudoNicht nur zum Ausführen von Befehlen als root, sondern auch zum Ausführen von Befehlen als jeder Benutzer.)
cjm

Antworten:


16

Ja, auch wenn es recht ungewöhnlich ist, ist dies definitiv machbar.

Anstatt zu versuchen, es selbst als standardbasierte /etc/password /etc/shadowAuthentifizierungsmethode zu implementieren , ist eine solche Konfiguration nicht vorgesehen. Die einfachere Möglichkeit besteht darin, die Authentifizierung an ein Back-End zu delegieren, das bereits mehrere Kennwörter für einen Benutzer unterstützt.

Ein bekanntes ist LDAP, dessen userPasswordAttribut gemäß RFC4519 mehrwertig ist :

Ein Beispiel für die Notwendigkeit mehrerer Werte im Attribut 'userPassword' ist eine Umgebung, in der der Benutzer jeden Monat ein anderes Kennwort verwenden muss, das von einem automatisierten System generiert wurde. Während Übergangszeiten, wie dem letzten und dem ersten Tag der Zeiträume, kann es erforderlich sein, zwei Kennwörter für die beiden aufeinander folgenden Zeiträume im System gültig zu machen.

Trotz dieses RFC müssen Sie wahrscheinlich die Konfiguration der Kennwortrichtlinie auf den meisten Directory Server-Implementierungen ändern, damit diese Einstellung tatsächlich akzeptiert wird.

Auf der Linux-Seite verbietet nichts, dies zu tun (hier wurde ein Konto mit dem Namen testusersowohl pass1als auch pass2als userPasswordAttributwerte angegeben):

$ 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.

Hier einige technische und sicherheitsrelevante Auswirkungen dieser Art von Konfiguration:

  • Das Benutzerkonto ist offensichtlich anfälliger für Angriffe, obwohl hier die Qualität und der Schutz der Passwörter wichtiger sind als ihre Nummern.
  • Bei den meisten Dienstprogrammen wird davon ausgegangen, dass der Benutzer ein einzelnes Kennwort hat, sodass er eines der Kennwörter nicht einzeln aktualisieren kann. Eine Kennwortänderung führt dann wahrscheinlich zu einem einzelnen Kennwortattribut für den Benutzer.
  • Wenn das Ziel darin besteht, mehreren Personen zu ermöglichen, dasselbe Konto mit jeweils einem eigenen Kennwort zu verwenden, gibt es keinen Mechanismus, um anhand des verwendeten Kennworts zu identifizieren, wer sich tatsächlich anmeldet.

1
Können Sie bitte erläutern, warum dies keine Auswirkungen auf die Sicherheit hat? Mein erster Eindruck war, dass dies die Wahrscheinlichkeit einer Kontopanne erhöhen würde, insbesondere wenn ein Kennwort erheblich schwächer als das andere ist.
Joseph R.

1
@ JosephR. Du hast Recht. Ich habe gerade meine Antwort aktualisiert, nachdem ich das umgesetzt habe, was ich vorgeschlagen habe und was ich damit erlebt habe.
Juli

Hervorragende Antwort, funktioniert jetzt wie ein Zauber. Danke :)
aggregate1166877

7

Ich habe gerade versucht, 2 Einträge für einen Benutzer in der /etc/shadowDatei zu erstellen , aber es hat nicht funktioniert. Welcher Eintrag zuerst war, war der verwendete Passworteintrag.

Beispiel

Erstellt einen Testbenutzer.

$ useradd -d /home/newuser newuser

Setzen Sie das Passwort auf "super123":

$ passwd newuser

Bearbeiten Sie die /etc/shadowDatei manuell und machen Sie einen zweiten Eintrag:

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

Versuchen Sie dann, sich mit dem Konto mit den 2 Passwörtern anzumelden.

su - newuser

Der erste Eintrag in /etc/shadowwird verwendet, der Eintrag in der zweiten Position funktioniert nie, wenn Sie diese wie folgt umdrehen:

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

Dann funktioniert das zweite Passwort und das erste nicht.

Benutze sudo

Dieser Ansatz ist ein totaler Hack, ich würde ihn nur benutzen sudo, er ist teilweise der Grund sudo, warum er existiert.

Sie können diesen Eintrag zu Ihrer sudoers-Datei ( /etc/sudoers) hinzufügen, um dem Benutzer joe die Erlaubnis zu geben, wie folgt vorzugehen :

joe ALL=(yourusername) ALL

Ich habe eigentlich vergessen, sudodass das geht .. +1
aggregate1166877

4

Wenn du das schaffst, solltest du es wahrscheinlich nicht.

Die PAM-Konfiguration ist etwas komplex, und Authentifizierungsmechanismen haben eine Binsenweisheit: Es gibt eine endliche Menge korrekter Konfigurationen, aber eine unendliche Menge unsicherer Konfigurationen. Das macht es fast zu einer Gewissheit, dass Sie Dinge vermasseln, wenn Sie versuchen, Dinge zu ändern und nicht genau wissen, was Sie tun.

Wenn Sie die Wahl zwischen Sicherheit und "In bestimmten Situationen praktisch" haben, entscheiden Sie sich für die erstere.


+1 für "Sicherheit vor Bequemlichkeit" (dem ich voll und ganz zustimme), aber ich bin der Typ, der alles testen möchte, auch wenn es nur um die Erfahrung geht, also nicht 100% der Antwort, nach der ich suche.
aggregate1166877

2

Sie können zwei verschiedene Benutzernamen mit jeweils einem Kennwort für dasselbe Konto festlegen. Führen Sie vipwzu bearbeiten /etc/passwdmanuell, duplizieren Sie die bestehende Linie für das Konto , das Sie interessiert sind und den Benutzernamen ändern (und wenn Sie das Gecos Feld , Home - Verzeichnis und Shell). Führen Sie vipw -sdie Zeile für diesen Benutzer in aus und duplizieren Sie sie /etc/shadow. Melden Sie sich unter dem neuen Benutzernamen an und führen Sie aus passwd, um das Kennwort für den neuen Benutzernamen zu ändern. Sie haben jetzt zwei unterschiedliche Benutzernamen mit unterschiedlichen Passwörtern für dasselbe Konto (die Benutzer-ID bestimmt das Konto).

Dies ist wahrscheinlich keine gute Idee. Je nachdem, was Sie versuchen, können andere Ansätze geeigneter sein:

  • Erstellen Sie ein anderes Konto und geben Sie Dateien frei, indem Sie die Versionskontrolle übernehmen und auschecken.
  • Erstellen Sie ein anderes Konto, erstellen Sie eine Gruppe, zu der beide Benutzerkonten gehören, und gewähren Sie Gruppenschreibzugriff auf Dateien, die Sie freigeben möchten.
  • Erstellen Sie ein anderes Konto und erteilen Sie dem ersten Konto das Recht, Befehle mit sudo als dieses Konto auszuführen:

    user1 ALL = (user2) ALL
    
  • Erstellen Sie einen SSH-Schlüssel für das Konto, mit dem nur ein bestimmter Befehl ausgeführt werden kann .

Würde es Ihnen etwas ausmachen, dies nach herehttp zu kopieren: //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.