我已经四处寻找了几天,玩弄configuration和下面的教程。
我有两个组: dev和sftp 。
开发组内的用户也是www-data和svn组的一部分。 这些用户将被chrooted到他们的主目录。 我希望他们通过符号链接访问/ var / www,或者以某种方式为他们安装目录。
sftp组内的用户不能使用ssh ,但应该允许sftp。
背景
我试图configurationsshd_config以允许sftp组sftp只能访问,重启ssh并丢弃。 幸运的是,在处理sshd_config时,我准备了一个故障安全来恢复configuration,并在此事件中每隔10分钟由cron重新启动。 尽pipe如此,我找不到替代方法或使这种方法工作。
编辑!
在回顾下面的答案后,会有其他build议吗? 我运行Ubuntu – 因此root用户被locking,而ssh_config
拒绝 rootlogin。 另外sudoers在其configuration中有两个允许的组,srv-admin和sudo(sudo不能杀死,重启,升级等)。
该组dev
是允许用户访问2个目录, /home/<user>
和/var/www
。 该组sftp
仅用于允许用户SFTP访问,仅此而已,没有SSH。
听起来像我误解了在这种情况下使用chroot。
您不能通过符号链接暴露chroot环境以外的目录(因为path根本无法访问)。 您可以通过绑定挂载 来公开目录。 这使您可以在文件系统的另一部分安装文件系统的一部分。 例如:
mount --bind /var/www /home/someuser/www
一般来说,除非你真的限制了可用工具的数量,否则chroot
环境是非常棘手的。 您将需要在chroot
环境中提供适当的二进制文件以及所有必要的共享库。 如果人们希望能够正常工作,这通常最终会成为一个交互式环境(例如提供了ssh
login)的一个失败的主张。
您应该能够使用sshd_config
的Match
块和ForceCommand
指令一起提供sftp
-only访问sftp
组的权限。 就像是:
Match Group sftp ForceCommand sftp-internal
您可以包含一个ChrootDirectory
选项作为您的Match
块的一部分。 以下将chroot
人自己的主目录:
ChrootDirectory %h
请从sshd_config
手册页注意以下几点:
ChrootDirectory必须包含必要的文件和目录来支持用户的会话。 对于交互式会话,这需要至less一个通常为sh(1)的shell和诸如null(4),zero(4),stdin(4),stdout(4),stderr(4),arandom等基本/ dev节点(4)和tty(4)设备。 对于使用“sftp”的文件传输会话,如果使用进程内sftp服务器,则不需要对环境进行额外configuration,尽pipe使用日志logging的会话在chroot目录内部需要/ dev / log(请参阅sftp-server(8)详情)。
记住,chroot是用于构build环境的,它不是一个安全工具。 攻击者有无数种方法可以打破chrooted环境。
如果你想隔离用户,Linux中的常规权限模型应该足够了,但是你需要locking环境本身。 总是假设一个攻击者要突破chroot,并从那里locking。
如果你想要真正的隔离,KVM / Xen风格的解决scheme可能是你想要的,但是如果你坚持使用chroot,那么你可能需要一个grsec补丁内核,它具有一些基本的安全保护措施 ,可以防止最常见的chroot破坏技术。