如何安全地将 FTP 用户限制在根目录中

如何安全地将 FTP 用户限制在根目录中

我需要为多个用户提供 FTP 登录名,一些用户能够写入,一些用户只能读取单个 FTP 根目录。我非常想限制访问权限,以便他们无法看到该目录上方的文件系统。搜索后,我将配置选项定义user_local为根目录,并使用选项或 chroot jail 将用户限制在该目录中chroot_local_users。这基本上有效。

通过阅读,我发现在这个安全环境中使用 chroot jail 可能会有问题:

Chroot jail 并不安全,因为它仅“修改进程及其子进程的路径名查找,以便对以‘/’开头的路径的任何引用都会有效地将新根目录(作为单个参数传递)添加到路径前面”但“当前工作目录保持不变,相对路径仍然可以引用新根目录之外的文件。”

来源http://lwn.net/Articles/252794/

现在,只有当 cwd 高于我通过 vsftpd 的Local_Root配置参数分配给 FTP 用户的 FTP 根目录时,这个问题才会成为问题。FTP 守护进程的 CWD 是什么?是我分配给的那个吗Local_Root?那么,在我的用例中,chroot 不是问题,我说得对吗?

此外,我发现有更好的解决方案,尽管实施起来很困难,也就是说,尽管引用 Linux 内核开发人员 Alan Cox 的话,“chroot 不是,也从来不是一个安全工具。人们已经基于 chroot 的属性构建了一些东西,但进行了扩展(BSD jails、Linux vserver),但它们完全不同。您也可以自己编写一个 LSM 模块来执行此操作。”

这种方法,强化了 jail 概念,是一种标准的专业方法吗?还是说有能力的 Linux 管理员只是使用 chroot jail?或者完全是其他方法?

这个问题在互联网上被广泛问到,但我找不到任何比我在这个问题中提到的内容更详细的内容。因此,我们找到了由最好的 FTP 下载站点托管的网站,从各种 Linux 发行版到内核维护者本身。如何真正安全地限制 FTP 用户?

相关内容