我想你们中的许多人都有生产环境,而重新编译广泛使用的软件包(如 OpenSSH)的选项并不是一个选项,至少在任何时候都不是。解决方案保护 SFTP要求您至少为 CentOS_5.1 重建 OpenSSH。
我希望找到另一种方法来阻止我的最终用户(使用 sftp)查看除允许文件夹之外的其他目录。类似于 Windows FTP 服务器中的隔离模式。
经过多次谷歌搜索后,我想到这里看看,但除了上面的帖子外,我没有找到其他内容。有什么想法吗?
答案1
- OpenSSH 支持基于用户、组或地址的条件配置
- OpenSSH 还具有集成的 sftp 服务器,它不依赖于 chroot 进行配置、库等……
此方法不需要对 chroot 进行额外的维护!
它也更安全,因为 jail 内不需要任何可执行文件或库。
附加将其添加到你的 sshd_config 中:
Match Group mysftpgroup
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
那么 mysftpgroup UNIX 组中的用户将无法使用除 SFTP 之外的任何其他 SSH 服务。当然,请针对您的具体配置进行验证!
请注意,匹配“部分”以新的匹配部分或配置文件结尾结束。有关其他选项,请参阅 man sshd_config。谷歌搜索手册页可能会找到过时的版本。
答案2
如果我理解了你的问题,那么你可以使用配置文件来执行此操作。请参阅这个 ServerFault 问题获得有关在配置中设置 chroot 的一些帮助。OpenSSH 工具套件最近在配置中提供了一些非常好的选项。值得您花时间阅读手册和常问问题,即使你在一两年前就已经仔细阅读过它们。
你什么时候曾经需要重新编译 OpenSSH 以获得安全性吗?OpenSSH 的业绩安全性是其他项目(甚至是与安全相关的项目)梦寐以求的。小心那些第三方补丁,它们以为会提高 OpenSSH 的安全性。别忘了 Debian 的失误。
答案3
限制 SFTP 用户的访问不需要重新编译 openssh。
你应该能够设置你的主目录权限和umask这样用户只能看到他自己的主目录。
当然,用户也能够查看(但不能修改)许多系统文件。如果您甚至想限制这一点,我认为您可以让 sftp 会话在监狱。
答案4
我认为您这里谈论的是两种不同的安全。
第一个需要重新编译(或安装打包的二进制文件)的是端到端通信安全。您在服务器上对用户可以访问的文件/文件夹所做的任何操作都不会保护客户端-服务器之间的通信。实际上,如果您不保持 Openssh 为最新版本,则有可能有人会利用此作为攻击媒介进入您的服务器。
第二个是文件/文件夹安全。您可以限制文件夹设置(chroot 或隔离模式),这将限制登录用户可以访问的文件。请注意,这无助于确保文件的实际通信安全。
希望有帮助!