Sudo

你可以給一個使用者帳戶多個密碼嗎?

  • September 22, 2021

我想為一個帳戶分配 2 個密碼。我想知道的是 1)這可能嗎,以及 2)這對安全有什麼影響?

我之所以要這樣做是因為我目前正忙於一些本地測試,並且我認為在某些特定情況下會很方便。經過一番研究,我發現了一種叫做PAM的東西,但我很難找到有關安裝/配置如何工作的資訊。

我正在執行 Ubuntu 12.04。

是的,雖然很少見,但這絕對是可行的。

與其嘗試自己實現它,因為基於預設/etc/password /etc/shadow的身份驗證方法沒有提供這樣的配置,更簡單的方法是將身份驗證委託給已經支持使用者多個密碼的後端。

一個眾所周知的是LDAP,它的userPassword屬性根據RFC4519是多值的:

‘userPassword’ 屬性中需要多個值的一個範例是這樣一種環境,其中每個月使用者都需要使用某個自動化系統生成的不同密碼。在過渡期間,如期間的最後一天和第一天,可能需要允許兩個連續期間的兩個密碼在系統中有效。

儘管有此 RFC,但您可能需要更改大多數目錄伺服器實現的密碼策略配置,才能實際接受此設置。

在 Linux 方面,沒有什麼禁止這樣做的(這裡有一個名為的帳戶,testuser同時作為屬性值給出):pass1``pass2``userPassword

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

以下是這種配置的一些技術和安全相關影響:

  • 使用者帳戶顯然更容易受到攻擊,儘管這裡真正重要的是密碼的質量和保護而不是其數量。
  • 大多數實用程序假定使用者只有一個密碼,因此不允許使用者單獨更新其中一個密碼。密碼更改可能會導致使用者的單個密碼屬性。
  • 如果目標是允許多人使用各自的密碼共享同一個帳戶,則沒有機制可以根據所使用的密碼來辨識實際登錄的人。

引用自:https://unix.stackexchange.com/questions/90684