让陌生人安全进入

让陌生人安全进入

我在家里设置了一个非常小的wireguard 服务器,其中包含我的公共IP 等。我使用 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

无论哪种情况,他们现在都有一个 root shell。

另外,请确保您没有将朋友的帐户添加到任何有权运行不受限制的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特权。一旦你成为root,你就可以运行它su user,这会让你进入user的帐户。如果你从你的帐户运行该命令,你将需要你的密码才能进入你朋友的帐户,而你的帐户就是检查/etc/sudoers文件中的权限。如果您从朋友的帐户运行它,那么您已经授予他们完全的权限,sudo并且可以简单地运行sudo -s以获得 root shell。

答案2

你不需要做任何事。默认情况下,用户没有sudo访问权限,要使用su该用户需要 root 密码。

只要您不明确允许用户使用sudo,无论是将他们添加到sudoers,还是将他们添加到已经具有 - 访问权限的组中sudo,他们都无法使用。

相关内容