낯선 사람도 안전하게 들어갈 수 있게 해주세요

낯선 사람도 안전하게 들어갈 수 있게 해주세요

내 공용 IP 등을 사용하여 집에 매우 작은 Wireguard 서버를 설정했습니다. 나는 가능한 한 나 자신을 보호하고 강력한 비밀번호를 설정하기 위해 NAT를 사용합니다.

친구가 SSH를 통해 이 서버에 액세스하려고 합니다. 그는 친절하지만 그를 완전히 신뢰하고 싶지는 않고 그에게 액세스 권한만 부여하고 싶습니다. 그가 홈 폴더를 어지럽히는 일을 할 수 없도록 하고 "sudo" 또는 "su"를 실행하지 않도록 하고 싶습니다.

어떻게 해야 하나요?

ChatGPT의 제안을 시도하고 visudo를 변경했습니다. 예를 들면 다음과 같습니다.

user ALL=(ALL) ALL, !DISABLE_SU, !DISABLE_SUDO, !/usr/bin/su *,!/usr/bin/sudo *, !/usr/sbin/visudo, !/usr/bin/* *sudoers

그러나 sudo su user세션에서 이 작업을 수행하면 예상했던 "이 명령을 실행할 권한이 없습니다."라는 메시지 대신 "...을 받았습니다."라는 메시지가 표시됩니다.

어떤 아이디어가 있나요?

감사해요

답변1

sudoers줄을 삭제하세요!

이것이 기본값이므로 누군가에게 접근할 수 없다고 말할 필요는 없습니다. 또한 공격 표면이 미미한 주요 보안 허점이 열리고 있습니다. 다음 명령은 친구 계정에서 실행할 수 있습니다 user.

sudo -s

이것조차,

cp /bin/sh mysh
chmod a+x mysh
sudo ./mysh

두 경우 모두 이제 루트 쉘이 있습니다.

또한 무제한 실행 권한이 있는 그룹에 친구의 계정을 추가하지 마세요 . (일반적으로 이는 또는 그룹 sudo입니다 .)sudowheel


그런데, visudo과거에 예상대로 편집했다면 아마도 다음과 같은 경고를 받았을 것입니다./etc/sudoers

Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SU" referenced but not defined
Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SUDO" referenced but not defined

어쩌면 당신은 그것을 정의했지만 당신의 질문에는 언급되지 않았습니다. 이를 수정해도 여기에 설명된 문제가 방지되지는 않습니다.


"라고 언급도 하셨습니다.sudo su user회의에서 이런 일을 할 때 ...". sudo옵션이 없는 명령은 root권한을 부여합니다. 루트가 되면 이 명령을 실행할 수 있으며 su user이를 통해 user친구의 계정에 액세스할 수 있습니다. 계정에서 명령을 실행하는 경우 친구의 계정에 액세스하려면 비밀번호가 필요합니다. 계정이며, 귀하의 계정은 /etc/sudoers파일의 권한을 확인하는 것입니다. 친구의 계정에서 실행하면 해당 계정에 전체 권한을 부여한 것이며 sudo간단히 실행하여 sudo -s루트 쉘을 얻을 수 있습니다.

답변2

아무것도 할 필요가 없습니다. 기본적으로 사용자에게는 sudo액세스 권한이 없으며 su이 사용자를 사용하려면 루트 비밀번호가 필요합니다.

sudo사용자를 추가하거나 sudoers이미 액세스 권한이 있는 그룹에 추가하여 사용자가 이를 사용하도록 명시적으로 허용하지 않는 한 sudo, 사용자는 이를 사용할 수 없습니다.

관련 정보