비밀번호를 사용하지 않고 서버에서 sudo 인증을 설정하는 가장 좋은 방법은 무엇입니까?

비밀번호를 사용하지 않고 서버에서 sudo 인증을 설정하는 가장 좋은 방법은 무엇입니까?

sudo를 사용하면 비밀번호를 요구할지 여부를 설정할 수 있습니다.

역사적으로 모든 것이 비밀번호로 보호되어 있었는데, 이것이 제가 익숙한 모델입니다. 그러나 요즘에는 암호화가 점점 공개/개인 키 인증을 선호하는 것 같습니다.

이는 GCP, AWS 또는 DigitalOcean에서 서버를 시작할 때 비밀번호를 받지 못한다는 사실에서 분명합니다. 대신에 로그인할 수 있는 키를 받았습니다.

이제 로그인했을 때 작업을 수행하려는 경우 sudo비밀번호를 묻지 않습니다. 이것은 분명히 나에게 비밀번호는 주어지지 않았고 단지 열쇠만 주어졌기 때문인 것 같습니다. sudo는 다음 규칙에 따라 비밀번호를 묻지 않습니다 /etc/sudoers.d/90-cloud-init-users.

우분투 ALL=(모두) NOPASSWD:모두

이는 사용자에게는 괜찮습니다. 그러나 서버에 3~4명의 사용자가 있고 모두 sudo 액세스가 필요하며 모두 비밀번호 대신 키를 사용하여 로그인하는 경우 어떻게 될까요? 사용자가 이 작업을 수행할 수 없도록 하고 싶습니다.

sudo su - <someone else's username>
sudo <command>

sudoSSHD에 연결할 때 비밀번호 인증을 허용하지 않고 대신 모든 사용자에게 인증용 비밀번호를 제공하는 것이 권장됩니까 ? 아니면 pam_ssh_agent_auth를 사용하여 sudo가 비밀번호와 함께 다른 개인/공개 키 세트를 사용하여 인증하도록 허용하시겠습니까? 아니면 또 해야 할 일이 있나요?

답변1

sudo에 액세스하기 위한 비밀번호 인증은 실행할 수 있는 명령을 제한하지 않습니다.

예를 들어

myuser ALL=(ALL) NOPASSWD: ALL
youruser ALL=(ALL) ALL

비밀번호를 입력해야 하는데 저는 입력하지 않는다는 점을 제외하면 두 사용자 모두가 정확히 동일한 명령을 실행하도록 합니다.

대신, "모든" 명령이 아닌 사용자에게 필요한 권한 있는 명령만 부여하는 것이 아이디어입니다. 따라서 user1이 서버를 다시 시작해야 하는 경우에는 다음을 제공할 수 있습니다.

user1 ALL=(root) NOPASSWD: /usr/sbin/reboot

이제 그들이 할 수 있는 일은 서버를 다시 시작하는 것뿐입니다.

이는 사람들에게 필요한 명령만 제공하는 최소 권한의 원칙을 따릅니다.

추가 자료: https://www.sweharris.org/post/2018-08-26-minimal-sudo/

관련 정보