好的,我有一个 VPS,我为一个朋友创建了一个帐户,以便他可以托管自己的域名(使用 DirectAdmin 中的经销商功能)。他要求 SSH 访问权限,我知道这可能是一个坏主意。他是否可以访问我的整个服务器,例如执行命令、访问我在服务器上托管的域名?我使用他的帐户详细信息登录了我的 SSH,它让我浏览所有根文件夹/文件,他的帐户位于 /home/AccountName/ 下。
有没有办法限制他只能访问自己的文件夹?以及他可以使用的命令?
编辑:他可以在我的服务器上安装程序等等吗?
答案1
作为普通用户,你的朋友无法对你的服务器造成太大的伤害(当然,他们可能会制造出 fork 炸弹或填满你的磁盘,但如果他们真的是朋友,他们可能不会做出这样的蠢事)。如果我的朋友要求一个帐户,他们就会在我的计算机上获得实际的登录 shell,并且会受到严厉的训斥,如果他们做任何让我生气的事情,他们就会被踢出机器。
听起来你不太信任你的“朋友”,所以除了 The Rook 的回答之外,我还要说,一个半吊子、能够运行 PHP 脚本的人几乎和拥有不受限制(可登录)SSH 访问权限的用户一样危险,我假设你的服务器允许使用 PHP。请记住,用户可以通过 PHP 运行不受信任的代码,包括下载、编译和运行系统上的其他任意程序(尽管在 Web 服务器用户权限的限制范围内)。一般来说,除非你正在 chroot/jail 你的 Web 服务器,否则你的朋友可以通过他的登录 shell 看到的任何内容,他都可以通过一些不太有创意的 PHP 脚本看到。
底线:在你的系统上给某人一个账户,然后在 /etc/passwd 中锁定他们的 shell 并设置 SFTP chroot 选项会有所帮助,但你真的应该考虑以下安全隐患:任何访问权限以及您对此人的信任程度。
答案2
就网络安全而言,授予某人 FTP 访问权限是最糟糕的事情之一。蠕虫会嗅探网络流量以寻找 FTP,并利用此进行传播。我亲自清理过几个受到此类感染的网站。
您可以在 /etc/passwd 中禁用对用户帐户的 shell 访问,在这种情况下,ssh 仅用于 SFTP。您还可以ChrootDirectory
在 sshd_config 文件中设置,以防止用户访问您选择的目录树之外的文件。ChrootDirectory 应该不是必需的,您应该使用 Linux 的内置文件访问控制。例如,如果文件不属于用户,并且全局权限已被删除,则该用户将无法访问该文件。使用 chmod 700 而不是 777。最后一个数字是全局权限,7 授予所有用户对该文件的完全访问权限。 chown user:group filename
用于更改拥有该文件的用户/组。
答案3
SSH 和 FTP 等需要访问其余文件,因为它们从 bin 目录运行命令来列出文件等。一些 FTP/SSH 服务器支持 chroot 以提供对正确文件的访问权限,甚至完全伪造访问权限。
您可以(也应该)保护您的主目录,并将任何网站文件锁定给需要它们的用户。您的网站可能应该锁定所有权 yourname:www-data(在 debian 系统上)或 yourname:apache(在 redhat 系统上),而 his 则应锁定所有权 hisname:www-data 或 hisname:apache(以同样的方式)。主目录和网站目录权限应为 o=rwx,g=rx,o= 文件将相同,没有 x。根据需要设置 g+w 和 g+x,以便特定 Web 应用程序更新其文件。特别是,网站上的上传、临时和缓存目录通常需要 g+w 权限。
如果您不确定这一切意味着什么,请在您的服务器上运行 man chmod 和 man chown 并阅读。
另外,考虑在服务器上运行类似 plesk/webmin 的程序,以便简化管理(这不是很好,但如果您是新手,可能会更好)。或者,研究其他经销商选项,以更好地锁定一切,这样您就不必这样做了。
答案4
如果您担心,您可以为他创建一个 chroot 环境,只能访问他需要的工具和文件。