Linux 사용자는 현재 비밀번호를 몰라도 비밀번호를 변경할 수 있습니까?

Linux 사용자는 현재 비밀번호를 몰라도 비밀번호를 변경할 수 있습니까?

ubuntu몇 개의 상자를 설정 하고 opscode를 chef구성 도구로 사용하고 있습니다. 각 사용자에 대해 각 서버에 공개 키를 설치하고 비밀번호 인증을 비활성화하는 것은 매우 쉽습니다.

그러나 사용자에게는 sudo기본적으로 비밀번호가 필요한 권한도 있어야 합니다.

사용자의 공개 키 를 액세스 관리 방법으로 사용하고 사용자 sudo권한을 허용하려는 경우 NOPASSWD: ALL또는visduo공개 키 인증만 있는 경우 사용자가 비밀번호를 변경할 수 있는 방법이 있습니까?

답변1

가장 일반적인 구성에서 Sudo는 사용자에게 비밀번호를 입력하도록 요구합니다. 일반적으로 사용자는 계정을 인증하기 위해 이미 비밀번호를 사용했으며, 비밀번호를 다시 입력하는 것은 합법적인 사용자가 콘솔을 포기하고 하이재킹된 것이 아님을 확인하는 방법입니다.

설정에서 사용자의 비밀번호는 sudo 인증에만 사용됩니다. 특히, 사용자의 SSH 키가 손상된 경우 공격자는 서버에서 루트 권한으로 상승할 수 없습니다. 공격자는 계정에 키로거를 심을 수 있지만 다른 사용자는 키로거를 감지하고 자동으로 모니터링할 수도 있습니다.

일반적으로 사용자는 현재 비밀번호를 알아야 다른 비밀번호로 변경할 수 있습니다. 프로그램은 passwd이를 확인합니다(확인하지 않도록 구성할 수도 있지만 이는 유용하지 않거나 시나리오에서 단순히 필요하지 않음). 그러나 루트는 이전 비밀번호를 몰라도 모든 사용자의 비밀번호를 변경할 수 있습니다. 따라서 sudo 권한이 있는 사용자는 passwd프롬프트에서 비밀번호를 입력하지 않고도 실행하여 자신의 비밀번호를 변경할 수 있습니다 sudo passwd $USER. 사용자 비밀번호를 요구하도록 구성된 경우 sudo에도 사용자는 비밀번호를 입력해야 합니다 sudo.

비밀번호 확인을 선택적으로 비활성화할 수 있습니다. 귀하의 경우 SSH 및 기타 서비스에서 비밀번호 인증을 비활성화합니다. 대부분의 최신 unice(Ubuntu 포함)에서 대부분의 서비스는폴리아크릴아미드인증 방법을 구성합니다. Ubuntu에서 PAM 구성 파일은 에 있습니다 . /etc/pam.d비밀번호 인증을 비활성화하려면 auth … pam_unix.so. 또한 sshd의 내장 비밀번호 인증을 비활성화 /etc/pam.d/common-auth했는지 확인하십시오 .PasswordAuthentication no/etc/ssh/sshd_config

특정 관리 사용자가 비밀번호로 로그인하도록 허용하거나 콘솔에서 비밀번호 인증을 허용할 수 있습니다. 이는 PAM을 통해 달성할 수 있지만(매우 유연함), 방법을 직접적으로 알려드릴 수는 없습니다. 도움이 필요한 경우 별도의 질문을 해주세요.

답변2

예, 매우 안전하지 않으며 사용자가 다른 사용자의 비밀번호에 액세스할 수도 있지만 sudo가 있기 때문에 할 수 있는 일이 많지 않습니다.

기본적으로 다음을 수행합니다.

$ sudo -i

이제 우리는 뿌리입니다. 우리는 모든 것에 접근할 수 있습니다.

# passwd $username

$username은 모든 사람의 사용자 이름이 될 수 있습니다.

새 UNIX 비밀번호를 입력하세요.

새 UNIX 비밀번호를 다시 입력하세요. passwd: 비밀번호 업데이트 성공

붐, 비밀번호가 변경되었습니다. 다시 말하지만, 누구라도 바꿀 수 있기 때문에 매우 안전하지 않지만 작동하지만 작동합니다. 권장하지는 않지만 이 답변을 예시로 제공하세요.아니요해.

답변3

당신은 그것을 사용할 수 있습니다pam_ssh_agent_auth기준 치수. 컴파일하고 항목을 추가하기만 하면 쉽습니다.

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

앞으로의 기타 auth(또는 include) 항목/etc/pam.d/sudo

그리고

Defaults    env_keep += "SSH_AUTH_SOCK"

넘기기 /etc/sudoers) visudo.

이제 모든 사용자는 sudo(전달 또는 로컬) SSH 에이전트를 통해 인증 할 수 있습니다.또는그들의 비밀번호. ssh-add -c모든 통화에 최소한 어느 정도 확인이 필요하도록 사용자에게 이를 사용하도록 요청하는 것이 현명합니다 sudo.

답변4

짧은 답변

모든 사용자가 sudo비밀번호 없이 사용할 수 있도록 허용해야 합니다. sudo배포판에서 기본 그룹을 변경하지 않으려면 예를 들어 다른 그룹을 만들고 sudoers_without_password이 새 그룹을 말하면 이 그룹만 비밀번호 없이 sudo를 수행할 수 있습니다. 그러나 어쨌든 비밀번호가 없고 비밀번호를 사용할 수 있는 사용자를 생성하려면 sudo비밀번호 없이 비밀번호를 사용할 수 있어야 합니다.

긴 대답

Chef, ansible, puppet 등의 도구를 사용하여 SSH 공개 키로만 로그인할 수 있는 비밀번호 없이 사용자를 생성하는 것은 오늘날 일반적인 관행이며 여러 가지 이유로 매우 좋은 관행으로 간주될 수 있습니다(특히 SSH 키는 매우 안전하고 비밀번호 관리는 힘들고 안전하지 않습니다.

이제 모든 사용자를 생성했으므로 약간의 문제에 봉착했습니다. 그들 중 일부는 최소한 sudo를 사용할 수 있어야 하고, 많은 배포판에서는 sudo를 사용하기 위한 비밀번호를 권장합니다... 그러나 사용자는 그런 권한이 없습니다. 비밀번호!

완벽한 세상에서~해야 한다사용자는 SSH 키를 사용하여 안전하게 로그인한 다음 비밀번호를 정의하고(표준 passwd명령이 있음) sudo 명령을 사용할 수 있습니다.

불행하게도 우리는 완벽한 세상에 살고 있지 않으며 사용자가 새 비밀번호를 설정하려고 하면 passwd작동하지 않습니다.

실제로는이 경우 명령을 작동시키는 것이 가능 passwd하지만 그 의미가 매우 나쁜 생각이 됩니다.

비밀번호 없이 사용자를 생성하고 해당 사용자가 자신의 비밀번호를 변경하도록 허용하는 것은 완벽하게 가능합니다. 정답은이 매뉴얼 페이지. (어쨌든 하면 안 되기 때문에 완전히 설명하지는 않겠습니다.)

Linux 시스템에는 두 가지 유형의 "암호가 없는" 사용자가 있습니다.

  • 장애인 사용자. 이러한 사용자의 !대기열에는 일반적으로 또는 이 있습니다 . 어떤 이유로 인해 비활성화된 사용자*/etc/shadow아직도개인 키 인증으로 SSH를 사용하는 등의 방법으로 로그인하십시오(적어도 대부분의 기본 SSH 서버 구성의 경우). 장애인 사용자허용되지 않음비밀번호를 설정하세요.
  • 비밀번호가 없는 사용자입니다. 사용자 행 /etc/shadow에 비밀번호가 없습니다 . 이러한 사용자는 자신의 비밀번호를 변경할 수 있습니다.

문제는 비밀번호가 없는 사용자입니다.아주 아주때문에 낙담누구나그들로 로그인할 수 있습니다. 일반적으로 OpenSSH는 이러한 사용자 중 하나로 로그인하는 것을 거부하지만(여전히 문제가 됨) 다음과 같습니다.

  • 다른 사용자는 su이 명령을 사용하여 이 사용자로 전환 할 수 있습니다.루트가 아니거나 sudo 그룹에 속하지 않더라도.
  • 컴퓨터에 물리적으로 접근할 수 있는 사람은 누구나 암호 없이 사용자로 로그인할 수 있습니다(컴퓨터에 화면, 키보드 및 마우스가 있다고 가정).

그렇기 때문에 비밀번호 없는 사용자 계정을 만드는 것은 권장되지 않으며 일반적으로 대부분의 자동화 도구에 의해 차단됩니다. 그렇기 때문에 Chef를 사용하여 사용자를 생성하면 암호가 없는 사용자 대신 비활성화된 사용자가 생성됩니다. 대부분의 다른 유사한 도구(ansible, puppet 등)도 동일한 작업을 수행합니다. 제작자가 사용자의 발에 총을 쏘는 것을 원하지 않기 때문입니다.

따라서 사용자가 공개 키를 사용하여 SSH를 사용하여 로그인할 수 있도록 하려면 여전히 모범 사례는장애가 있는사용자는 나중에 스스로 비밀번호를 만들 수 없게 되더라도 마찬가지입니다.

이제 "Sudo에서 비밀번호를 사용해야 할까요?"라는 질문으로 돌아가면 이 경우 두 가지 상충되는 모범 사례가 있습니다.

  • 한편으로 이러한 사용자는장애가 있는비활성화된 사용자는 비밀번호를 변경할 수 없으므로 비밀번호를 변경할 수 없습니다. 우리를할 수 있다대신, 비밀번호가 없는 사용자를 생성하십시오. 그러나 이는 이전에 살펴본 것처럼 심각한 보안 문제를 야기합니다.
  • 반면, 대부분의 사람들은 sudo사용자가 비밀번호를 입력하지 않고 사용할 수 있도록 허용하는 것은 나쁜 습관이라고 생각합니다(구성에 따라 sudo에서는 비밀번호가 있거나 없이 이를 허용할 수 있습니다). 이는 부주의한 관리자가 실수로 sudo를 사용하여 명령을 입력하여 바람직하지 않은 결과를 초래할 수 있기 때문입니다.

이 두 가지 모범 사례는 동시에 따를 수 없으므로 선택을 해야 합니다. 그러나 여기에는 강력한 승자가 있습니다. 즉, 비밀번호 없는 사용자를 허용하는 것이 비밀번호 없는 sudo를 허용하는 것보다 더 위험합니다.

따라서 이 경우에는 sudo비밀번호 없는 명령을 허용하도록 그룹을 구성하면 됩니다. 이는 제가 아는 한 다른 해결 방법이 없기 때문에 어쨌든 가장 좋은 방법입니다.

관련 정보