사용자 계정에 여러 개의 비밀번호를 제공 할 수 있습니까?


21

단일 계정에 2 개의 암호를 할당하고 싶습니다. 내가 알고 싶은 것은 1) 이것이 가능하며 2) 이것의 보안 영향은 무엇입니까?

내가하고 싶은 이유는 현재 현지 테스트에 바쁘기 때문에 특정 상황에서 편리하다고 생각했기 때문입니다. 약간의 연구 끝에 PAM 이라는 것을 발견 했지만 설치 / 구성 작동 방법에 대한 정보를 찾기 위해 고심하고 있습니다.

우분투 12.04를 실행 중입니다.


1
아마도 sudouser1이 user2로 명령을 실행할 수 있도록 설정했을 것입니다 . ( sudo루트로 명령을 실행하기위한 것이 아니라 모든 사용자로 명령을 실행할 수 있습니다.)
cjm

답변:


16

그렇습니다. 아주 드물기는하지만 확실히 가능합니다.

기본 /etc/password /etc/shadow기반 인증 방법에 이러한 구성을 제공 할 수 없기 때문에 직접 구현하려고 시도하는 대신 가장 간단한 방법은 사용자에 대해 이미 여러 암호를 지원하는 백엔드에 인증을 위임하는 것입니다.

잘 알려진 것은 LDAP 이며 RFC4519userPassword 에 따라 속성이 여러 값을 갖습니다 .

'userPassword'속성에 여러 값이 필요한 예는 매월 사용자가 일부 자동 시스템에 의해 생성 된 다른 비밀번호를 사용해야하는 환경입니다. 기간의 마지막 날과 첫날과 같은 과도기 기간 동안 두 연속 기간 동안 두 개의 암호를 시스템에서 유효하게해야 할 수도 있습니다.

이 RFC에도 불구하고이 설정이 실제로 적용 되려면 대부분의 디렉토리 서버 구현에서 비밀번호 정책 구성을 변경해야합니다.

리눅스 측면에서 아무것도를 금지 그것을 할 (여기라는 이름의 계정이 testuser모두 주어졌다 pass1pass2같은 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
이것이 보안에 영향을 미치지 않는 이유를 자세히 설명해 주시겠습니까? 나의 첫인상은, 특히 하나의 암호가 다른 암호보다 상당히 약한 경우 계정이 손상 될 가능성이 높아진다는 것입니다.
Joseph R.

1
@JosephR. 당신이 올바른지. 제안한 내용을 구현하고 경험 한 후에 답변을 업데이트했습니다.
jlliagre

훌륭한 답변, 지금은 매력처럼 작동합니다. 감사합니다 :)
집합

7

/etc/shadow파일 에서 사용자에 대해 2 개의 항목을 만들려고 시도했지만 작동하지 않았습니다. 가장 먼저 입력 된 항목은 사용 된 비밀번호 항목입니다.

테스트 사용자를 작성했습니다.

$ 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사용되는 항목이며 두 번째 위치의 항목은 다음과 같이 뒤집 으면 작동하지 않습니다.

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 %는 아닙니다.
집합

2

동일한 계정에 대해 각각 비밀번호가있는 두 개의 다른 사용자 이름을 설정할 수 있습니다. 실행 vipw편집에 /etc/passwd수동으로, 관심있는 계정의 기존 행을 복제하고 이름을 변경 (그리고 경우 등 GECOS 필드 , 홈 디렉토리 및 쉘). vipw -s에서 해당 사용자의 행을 실행 하고 복제하십시오 /etc/shadow. 새 사용자 이름으로 로그인하고 실행하여 새 사용자 이름 passwd의 비밀번호를 변경하십시오. 이제 동일한 계정에 대해 서로 다른 암호를 가진 두 개의 다른 사용자 이름이 있습니다 (사용자 ID는 계정을 결정하는 것입니다).

이것은 아마도 좋은 생각이 아닙니다. 수행하려는 작업에 따라 다른 접근 방식이 더 적합 할 수 있습니다.

  • 버전 관리에서 커밋하고 체크 아웃하여 다른 계정을 만들고 파일을 공유하십시오.
  • 다른 계정을 만들고 두 사용자 계정이 모두 속한 그룹을 만들고 공유하려는 파일에 그룹 쓰기 권한을 부여하십시오.
  • 다른 계정을 만들고 첫 번째 계정에 sudo를 사용하여 해당 계정으로 명령을 실행할 수있는 권한을 부여하십시오.

    user1 ALL = (user2) ALL
    
  • 하나의 특정 명령 만 실행할 수 있는 계정의 SSH 키를 만듭니다 .

이것을 http://askubuntu.com/questions/567139/2-password-1-account-login에 복사 하시겠습니까?
Rinzwind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.