为什么vsftpd的chroot_local_user不安全?

p11*_*00i 22 linux vps centos ftp vsftpd

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

chroot_local_user=是

我在很多论坛帖子中都读过,这是不安全的。

  1. 为什么这是不安全的?
  2. 如果因为使用 ssh 加入我的 VPS 而这不安全,那么我可以将这些用户从 sshd 中锁定,对吗?
  3. 是否有其他选择来实现 vsftpd 的这种行为?(我不想删除系统上“world”的所有文件夹/文件的读取权限)

小智 22

在此处查看VSFTPD 的常见问题解答,以获得您正在寻找的答案。以下是我认为可以回答您的问题的重要摘录。

问)帮助!“chroot_local_user”选项中提到的安全隐患是什么?

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

  • 实际上我是在阅读 FAQ 后来到这里的,因为我不明白这个令人担忧的陈述:“ftp 守护进程可能会导致一些配置文件被读取 - 例如 /etc/some_file。使用 chroot(),这个文件现在处于控制之下用户。”。大概只有在 `vsftpd` 有安全漏洞(如缓冲区溢出)时才会出现这种情况???在用户 chroot 到他们的主目录的情况下运行 `vsftpd` 如何使这种情况更有可能发生?请解释... (5认同)

Yan*_*ard 5

问题是您不能既使用本地帐户又禁用这些帐户的 shell 登录。如果你将他们的登录 shell 设置为 /bin/nologin,它也不会让你使用 vsftpd 登录。

Pure-ftpd 是一个更好、更安全的 FTP 守护进程。查找一下,它可以从 EPEL 存储库中获取,并且它允许创建虚拟用户。服务器使用公共用户/组来设置用户主文件夹的所有权限,并在登录时将虚拟用户“映射”到该用户来处理权限。这样更安全,而且您不必处理 openssh 登录安全问题。

Pure-ftpd 还支持很多功能,例如配额、比率等。比 vsftpd 好多了。

这是有关如何安装和配置基本虚拟用户的简单教程:http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd-在-centos/

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

  • 是的,它会的!您只需将“非 shell”添加到 /etc/shells 即可。在许多系统上,/bin/false 或 /bin/nologin 存在于 /etc/shells 中。如果 shell 存在,vsftpd 确实会让您登录,并且还启用了 chroot_local_user。 (4认同)