Czy możesz podać swojemu użytkownikowi wiele haseł?

21

Chcę przypisać 2 hasła do jednego konta. Chcę wiedzieć, 1) czy jest to możliwe, i 2) jakie są tego konsekwencje dla bezpieczeństwa?

Powodem, dla którego chcę to zrobić, jest to, że jestem obecnie zajęty lokalnymi testami i pomyślałem, że będzie to wygodne w niektórych szczególnych sytuacjach. Po kilku badaniach znalazłem coś o nazwie PAM , ale staram się znaleźć informacje o tym, jak działa instalacja / konfiguracja.

Używam Ubuntu 12.04.

aggregate1166877
źródło
1
Prawdopodobnie po prostu skonfigurowałbym, sudoaby użytkownik1 mógł uruchamiać polecenia jako użytkownik2. ( sudonie służy tylko do uruchamiania poleceń jako root; może uruchamiać polecenia jak każdy użytkownik.)
cjm 15.09.13

Odpowiedzi:

16

Tak, choć dość rzadkie, jest to zdecydowanie wykonalne.

Zamiast próbować wdrożyć go samodzielnie, ponieważ domyślna /etc/password /etc/shadowmetoda uwierzytelniania nie ma takiej konfiguracji, prostszym sposobem jest przekazanie uwierzytelnienia do zaplecza, które już obsługuje wiele haseł dla użytkownika.

Dobrze znanym jest LDAP którego userPasswordatrybut jest wielowartościowy zgodnie z RFC4519 :

Przykładem potrzeby wielu wartości w atrybucie „userPassword” jest środowisko, w którym co miesiąc użytkownik powinien używać innego hasła generowanego przez jakiś zautomatyzowany system. W okresach przejściowych, takich jak ostatni i pierwszy dzień okresów, konieczne może być zezwolenie na stosowanie dwóch haseł dla dwóch kolejnych okresów w systemie.

Pomimo tego RFC, prawdopodobnie będziesz musiał zmienić konfigurację zasad haseł w większości implementacji serwera katalogów, aby to ustawienie zostało faktycznie zaakceptowane.

Po stronie Linuksa nic nie zabrania tego (tutaj podano nazwę konta testuserzarówno jako, jak pass1i pass2jako userPasswordwartość atrybutu):

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

Oto niektóre implikacje techniczne i związane z bezpieczeństwem tego rodzaju konfiguracji:

  • konto użytkownika będzie oczywiście bardziej narażone na ataki, chociaż tak naprawdę liczy się jakość i ochrona haseł bardziej niż ich liczba.
  • większość narzędzi zakłada, że ​​użytkownik ma jedno hasło, więc nie pozwoli użytkownikowi na indywidualną aktualizację jednego z haseł. Zmiana hasła prawdopodobnie spowoduje powstanie pojedynczego atrybutu hasła dla użytkownika.
  • jeśli celem jest umożliwienie wielu osobom współużytkowania tego samego konta przy użyciu każdego z nich własnego hasła, nie ma mechanizmu identyfikującego, kto faktycznie się loguje na podstawie użytego hasła.
jlliagre
źródło
1
Czy możesz wyjaśnić, dlaczego nie ma to wpływu na bezpieczeństwo? Moje pierwsze wrażenie było takie, że zwiększyłoby to ryzyko naruszenia bezpieczeństwa konta, szczególnie jeśli jedno hasło jest znacznie słabsze od drugiego.
Joseph R.
1
@JosephR. Masz rację. Właśnie zaktualizowałem swoją odpowiedź po wdrożeniu tego, co zasugerowałem i doświadczeniu z tym.
jlliagre
Doskonała odpowiedź, działa teraz jak urok. Dzięki :)
aggregate1166877,
7

Właśnie próbowałem utworzyć 2 wpisy dla użytkownika w /etc/shadowpliku i to nie zadziałało. To, co kiedykolwiek było pierwsze, było hasłem, które zostało użyte.

Przykład

Utworzono użytkownika testowego.

$ useradd -d /home/newuser newuser

Ustaw hasło na „super123”:

$ passwd newuser

Ręcznie edytuj /etc/shadowplik i dokonaj drugiego wpisu:

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

Następnie spróbuj zalogować się na konto przy użyciu 2 haseł.

su - newuser

Pierwszy wpis w /etc/shadowtym, co zostanie użyte, wpis na drugiej pozycji nigdy nie działa, jeśli odwrócisz je w ten sposób:

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

Następnie drugie hasło działa, a pierwsze nie.

Użyj sudo

To podejście jest całkowitym hackem, chciałbym po prostu użyć sudo, to częściowo dlategosudo istnieje.

Możesz dodać ten wpis do pliku sudoers ( /etc/sudoers), który pozwoliłby użytkownikowi na uprawnienie Joe do robienia czegokolwiek, gdy:

joe ALL=(yourusername) ALL
slm
źródło
Właściwie to zapomniałem, że sudomogę to zrobić. +1
agregacja
4

Jeśli możesz to zrobić, prawdopodobnie nie powinieneś.

Konfiguracja PAM jest dość złożona i istnieje jeden truizm dotyczący mechanizmów uwierzytelniania: istnieje skończony zestaw poprawnych konfiguracji, ale nieskończony zestaw niepewnych konfiguracji. To prawie pewne, że jeśli spróbujesz coś zmienić i nie wiesz dokładnie, co robisz, to wszystko spieprzysz.

Jeśli istnieje wybór między bezpieczeństwem a „wygodą w określonych sytuacjach”, wybierz to pierwsze.

msw
źródło
+1 za „bezpieczeństwo nad wygodą” (z czym w pełni się zgadzam), ale jestem typem osoby, która chce wszystko przetestować, nawet jeśli tylko pod kątem wrażeń, więc nie w 100% szukam odpowiedzi.
aggregate1166877,
2

Możesz ustawić dwa różne nazwy użytkowników, każdy z hasłem, dla tego samego konta. Uruchom, vipwaby edytować /etc/passwdręcznie, zduplikuj istniejący wiersz dla konta, którym jesteś zainteresowany, i zmień nazwę użytkownika (i jeśli podoba ci się pole Gecos , katalog domowy i powłoka). Uruchom vipw -si zduplikuj wiersz dla tego użytkownika w /etc/shadow. Zaloguj się pod nową nazwą użytkownika i uruchom, passwdaby zmienić hasło dla nowej nazwy użytkownika. Masz teraz dwie różne nazwy użytkownika, z różnymi hasłami, dla tego samego konta (identyfikator użytkownika określa konto).

To chyba nie jest dobry pomysł. W zależności od tego, co próbujesz zrobić, bardziej odpowiednie mogą być inne podejścia:

  • Utwórz kolejne konto i udostępnij pliki, zatwierdzając i sprawdzając kontrolę wersji.
  • Utwórz inne konto, utwórz grupę, do której należą oba konta użytkowników, i zapewnij grupie dostęp do zapisu do plików, które chcesz udostępnić.
  • Utwórz kolejne konto i daj pierwszemu prawu do uruchamiania poleceń jak to konto w sudo:

    user1 ALL = (user2) ALL
    
  • Utwórz klucz SSH dla konta, który pozwala na uruchomienie tylko jednego określonego polecenia .
Gilles „SO- przestań być zły”
źródło
czy mógłbyś skopiować to tutaj tutaj: //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind