我正在我的 VPS 上设置 vsftpd,并且我不希望允许用户离开他们的 ftp 主目录。我使用的是 local_user ftp,而不是匿名 ftp,因此我添加了:
chroot_local_user=是
我在很多论坛帖子中看到,这是不安全的。
- 这为什么不安全?
- 如果由于使用 ssh 加入我的 VPS 而导致这不安全,那么我可以将这些用户锁定在 sshd 之外,对吗?
- 还有其他选项可以实现 vsftpd 的这种行为吗?(我不想删除系统上“world”的所有文件夹/文件的读取权限)
答案1
点击此处VSFTPD 的常见问题寻找您想要的答案。以下是我认为可以回答您问题的重要摘录。
问) 救命!“chroot_local_user”选项中提到的安全隐患是什么?
A) 首先请注意,其他 ftp 守护程序也存在同样的问题。这是一个一般性问题。问题不太严重,但问题是:有些人拥有 FTP 用户帐户,但这些帐户不被信任具有完全 shell 访问权限。如果这些帐户也可以上传文件,则存在小风险。恶意用户现在可以控制文件系统根目录,即他们的主目录。ftp 守护程序可能会导致读取某些配置文件 - 例如 /etc/some_file。使用 chroot(),此文件现在处于用户的控制之下。vsftpd 在这方面很谨慎。但是,系统的 libc 可能想要打开语言环境配置文件或其他设置...
答案2
问题是您不能同时使用本地帐户,也不能禁用这些帐户的 shell 登录。如果您将其登录 shell 设置为 /bin/nologin,它也不会允许您使用 vsftpd 登录。
更好更安全的 FTP 守护程序是 Pure-ftpd。查找它,它可从 EPEL 存储库获得,并且允许创建虚拟用户。服务器使用通用用户/组来设置用户主文件夹的所有权限,并在登录时将虚拟用户“映射”到该用户以处理权限。这更安全,您不必处理 openssh 登录安全性。
Pure-ftpd 还支持很多功能,例如配额、比例等。比 vsftpd 好多了。
以下是有关如何安装和配置基本虚拟用户的简单教程:http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd-in-centos/
如果您阅读完整的文档(您应该阅读),您就会知道创建虚拟用户时的 -d 开关是该用户的自动 chroot 到该目录。
答案3
当 chroot 到 时/some/dir/
,文件系统实际上被限制在该目录中。因此,任何试图打开 的程序/etc/some_file
实际上都会打开/some/dir/etc/some_file
。
当/some/dir/
其可写时,恶意用户就可以向/some/dir/etc/some_file
其中插入恶意制作的内容。
由此产生的不安全程度取决于底层软件是否意识到 chroot。vsFTPd
肯定是的(如上面的常见问题解答中所述),但下面的一些库可能不知道。