通过使用 libpam-chroot,当用户使用 SSH 登录时,可以根据用户名轻松地 chroot 用户子集。
创建此 chroot 和 libpam-chroot 设置的好方法是什么。我的目标之一是 chrooted 用户仅在 chroot 环境中为人所知(chroot 之外不会存储任何密码或任何内容)。在我之前的设置中,我需要在/etc/shadow
和之间手动更新用户密码/var/my_chroot/etc/shadow
。这可能吗?
或者有没有一种完全不同的方法来实现这种子系统,而不需要完全不同的另一台(虚拟)计算机(我没有任何备用硬件可提供,而且我只有 1 个网络接口)?还是说虚拟化才是正确答案?
答案1
确保UsePAM yes
在 中已安装/etc/ssh/sshd_config
,并设置一个 PAM 模块,该模块可从 chroot 内部某个位置读取用户数据库。没有简单的方法可以读取pam_unix
不同的passwd
和shadow
文件,但您可以pam_ldap
改为使用并在 chroot 内部运行 LDAP 服务器(或者更好的是,在 chroot 外部,将其数据存储在 下的某个位置/var
)。
至于是否使用虚拟化,这取决于您对 chrooting 的期望。它无法为具有 shell 访问权限的用户提供太多安全性。例如,本地 root 漏洞可完全访问整个机器;本地用户可以通过在 chroot 内部进行窥探来窥探 chroot 之外的大量信息/proc
;chroot 内部使用的网络端口在外部不可用;...