Ubuntu SFTP 和 Chrooting

Ubuntu SFTP 和 Chrooting

我已经四处寻找了几天,尝试了各种配置并遵循了相关教程。

我有两个组:开发安全FTP

用户在开发团体也是www-数据SVN 版本组。这些用户将chrooted到他们的主目录。我希望他们能够通过符号链接访问 /var/www,或者以某种方式为他们安装目录。

sftp 组内的用户,无法 ssh,但应该允许 sftp。

背景

我尝试配置 sshd_config 以允许 sftp 组仅 sftp 访问,重新启动 ssh 后就断开了。幸运的是,在处理 sshd_config 时,我准备了一个故障保护,以在这种情况下每 10 分钟通过 cron 恢复配置并重新启动。尽管如此,我还是找不到替代方案或让这种方法奏效。

编辑 !!

在查看以下答案后,是否有其他建议?我运行的是 Ubuntu - 因此 root 用户被锁定,并且ssh_config 拒绝root 登录。此外,sudoers 在其配置中拥有 2 个允许的组,srv-admin 和 sudo(sudo 无法终止、重启、升级等)。

该组dev允许用户访问 2 个目录,/home/<user>/var/www。该组sftp仅允许用户 SFTP 访问,仅此而已,并且不允许 SSH。

听起来我误解了在这种情况下 chroot 的使用。

答案1

您不能公开目录外部通过符号链接退出 chroot 环境(因为路径根本无法访问)。通过公开目录绑定挂载。这可让您将文件系统的一部分挂载到文件系统的另一部分。例如:

mount --bind /var/www /home/someuser/www

一般来说,chroot除非你真的限制了可用的工具数量,否则环境是比较棘手的。你需要提供一组适当的二进制文件里面环境chroot,以及所有必要的共享库。ssh如果人们希望能够正常工作,那么对于交互式环境(例如提供登录)来说,这通常最终是一个失败的提议。

您应该能够使用指令中的块为组提供仅访问权限sftp。例如:sftpMatchsshd_configForceCommand

Match Group sftp
ForceCommand sftp-internal

您可以将ChrootDirectory选项作为Match块的一部分。以下内容将chroot人们带到他们自己的主目录:

ChrootDirectory %h

请注意手册页中的以下内容sshd_config

ChrootDirectory 必须包含支持用户会话所需的文件和目录。对于交互式会话,这至少需要一个 shell(通常为 sh(1))和基本 /dev 节点,例如 null(4)、zero(4)、stdin(4)、stdout(4)、stderr(4)、arandom(4) 和 tty(4) 设备。对于使用“sftp”的文件传输会话,如果使用进程内 sftp 服务器,则无需对环境进行额外配置,但使用日志记录的会话确实需要 chroot 目录中的 /dev/log(有关详细信息,请参阅 sftp-server(8))。

答案2

请记住,chroot 用于构建环境,它不是安全工具。无数种方式让攻击者能够突破 chrooted 环境。

如果您希望将用户彼此隔离,Linux 中的常规权限模型应该足够了,但您需要锁定环境本身。始终假设攻击者将突破 chroot,并从那里锁定。

如果你想要真正的隔离,KVM/Xen 风格的解决方案可能是你想要的,但如果你坚持使用 chroot,那么你可能需要一个 grsec 修补的内核,它有一些基本安全保护这将阻止最常见的 chroot 破坏技术。

相关内容