为什么vsftpd的chroot_local_user不安全?

我在我的VPS上设置了一个vsftpd,我不希望用户被允许离开他们的ftp主目录。 我使用local_user ftp,而不是匿名的,所以我补充说:

chroot_local_user = YES

我读了很多论坛post,这是不安全的。

  1. 为什么这是不安全的?
  2. 如果这是不安全的,因为使用sshjoin我的VPS,那么我可以locking这些用户从sshd,对不对?
  3. 有没有其他的select来支持vsftpd的行为? (我不想删除在我的系统上的“世界”的所有文件夹/文件的读取权限)

点击此处查看VSFTPD的常见问题解答 。 以下是我认为会回答你的问题的重要摘录。

Q)帮助! 在“chroot_local_user”选项中提到的安全含义是什么?

A)首先注意其他ftp守护进程具有相同的含义。 这是一个普遍的问题。 问题不是太严重,但是这是有些人有FTP用户帐户不被信任有完整的shell访问。 如果这些账户也可以上传文件,那么风险很小。 坏的用户现在可以控制文件系统的根目录,这是他们的主目录。 ftp守护进程可能会导致读取一些configuration文件 – 例如/ etc / some_file。 使用chroot(),这个文件现在处于用户的控制之下。 vsftpd在这方面很小心。 但是,系统的libc可能想要打开语言环境configuration文件或其他设置…

问题是,你不能同时使用本地帐户,也从shelllogin中禁用这些帐户。 如果您将其loginshell设置为/ bin / nologin,则不会让您使用vsftpdlogin。

一个更好,更安全的FTP守护进程将是Pure-ftpd。 查看它,可从EPEL存储库中获得,并允许创build虚拟用户。 服务器使用通用用户/组来设置用户的主文件夹的所有权限,并在login时将虚拟用户“映射”到该用户以处理权限。 这是更安全的,你不必处理opensshlogin安全。

Pure-ftpd还支持许多function,如配额,比率等。 比vsftpd好多了。

这里有一个关于如何安装和configuration基本的虚拟用户的简单教程: http : 在-的CentOS /

如果你阅读完整的文档(你应该),你会知道创build虚拟用户时的-d开关是该用户的该目录的自动chroot。