Можете ли вы дать учетной записи пользователя несколько паролей?


21

Я хочу назначить 2 пароля для одной учетной записи. Я хочу знать, 1) возможно ли это и 2) каковы последствия этого для безопасности?

Причина, по которой я хочу это сделать, заключается в том, что в настоящее время я занят местным тестированием, и я подумал, что это будет удобно в некоторых конкретных ситуациях. После некоторых исследований я нашел что-то под названием PAM , но я изо всех сил пытаюсь найти информацию о том, как работает установка / настройка.

Я использую Ubuntu 12.04.


1
Вероятно, я бы просто настроил так, sudoчтобы user1 мог запускать команды от имени user2. ( sudoне только для запуска команд от имени пользователя root; он может запускать команды от имени любого пользователя.)
cjm

Ответы:


16

Да, хотя это довольно редко, это определенно выполнимо.

Вместо того чтобы пытаться реализовать его самостоятельно, так как /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.

Вот некоторые технические и связанные с безопасностью последствия такой конфигурации:

  • учетная запись пользователя, очевидно, будет более уязвимой для атак, хотя здесь важнее качество и защита паролей, а не их количество.
  • большинство утилит предполагают, что у пользователя один пароль, поэтому не позволяют пользователю самостоятельно обновить один из паролей. Смена пароля, вероятно, приведет к единственному атрибуту пароля для пользователя.
  • если цель состоит в том, чтобы позволить нескольким людям использовать одну и ту же учетную запись, используя для каждого свой собственный пароль, не существует механизма, позволяющего определить, кто на самом деле выполняет вход в систему на основе используемого пароля.

1
Не могли бы вы пояснить, почему это не имеет последствий для безопасности? Мое первое впечатление заключалось в том, что это увеличило бы вероятность взлома учетной записи, особенно если один пароль значительно слабее другого.
Джозеф Р.

1
@JosephR. Ты прав. Я только что обновил свой ответ после того, как реализовал то, что предложил, и испытал его.
Jlliagre

Отличный ответ, работает как шарм сейчас. Спасибо :)
aggregate1166877

7

Я просто попытался создать 2 записи для пользователя в /etc/shadowфайле, и это не сработало. Какая когда-либо запись была первой - это была введенная пароль.

пример

Создан тестовый пользователь.

$ useradd -d /home/newuser newuser

Установите пароль на «super123»:

$ passwd newuser

Вручную отредактируйте /etc/shadowфайл и сделайте вторую запись:

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

Затем попытайтесь войти с учетной записью, используя 2 пароля.

su - newuser

Первая запись в /etc/shadowтом, что используется get, запись во второй позиции никогда не работает, если вы переверните это так:

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

Тогда второй пароль работает, а первый нет.

Используйте sudo

Этот подход является полным взломом, я бы просто использовал sudo, это частично, почему sudoсуществует.

Вы можете добавить эту запись в ваш файл sudoers ( /etc/sudoers), который позволит пользователю joe делать что-либо от вас:

joe ALL=(yourusername) ALL

Я на самом деле забыл, что sudoможно сделать это. +1
aggregate1166877

4

Если вы можете сделать это, вы, вероятно, не должны.

Конфигурация PAM несколько сложна, и в механизмах аутентификации есть одна истина: существует ограниченный набор правильных конфигураций, но бесконечный набор небезопасных конфигураций. Это делает почти уверенность в том, что если вы попытаетесь что-то изменить и не будете точно знать, что делаете, вы все испортите.

Если выбор между безопасностью и «удобством в некоторых конкретных ситуациях», выберите первый.


+1 за «безопасность за удобство» (с чем я полностью согласен), но я из тех людей, которые хотят проверить все, даже если только для опыта, поэтому не 100% ответ, который я ищу.
aggregate1166877

2

Вы можете установить два разных имени пользователя, каждое со своим паролем, для одной и той же учетной записи. Запустите vipwредактирование /etc/passwdвручную, продублируйте существующую строку для интересующей вас учетной записи и измените имя пользователя (а также, если вам нравится поле Gecos , домашний каталог и оболочка). Запустите vipw -sи продублируйте строку для этого пользователя в /etc/shadow. Войдите под новым именем пользователя и запустите, passwdчтобы изменить пароль для нового имени пользователя. Теперь у вас есть два разных имени пользователя с разными паролями для одной и той же учетной записи (идентификатор пользователя определяет учетную запись).

Это, вероятно, не очень хорошая идея. В зависимости от того, что вы пытаетесь сделать, другие подходы могут быть более подходящими:

  • Создайте другую учетную запись и предоставьте доступ к файлам, зафиксировав и подтвердив управление версиями.
  • Создайте другую учетную запись, создайте группу, к которой принадлежат обе учетные записи пользователей, и предоставьте группе доступ на запись к файлам, которыми вы хотите поделиться.
  • Создайте другую учетную запись и дайте первой учетной записи право запускать команды с учетной записью sudo:

    user1 ALL = (user2) ALL
    
  • Создайте ключ SSH для учетной записи, которая позволяет выполнять только одну конкретную команду .

Не могли бы вы скопировать это сюда? //askubuntu.com/questions/567139/2-password-1-account-login?
Rinzwind
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.