2

我正在用 Python 编写一个网络服务器作为一个爱好项目。该代码针对 *NIX 机器。我是在 Linux 上开发的新手,甚至是 Python 本身的新手。

我担心有人会破坏我用来提供网站的文件夹。最明显的方法是过滤对 /../../etc/passwd 等文档的请求。但是,我担心可能有一些聪明的方法可以爬上我不知道的目录树,因此我的过滤器不会捕获。

我正在考虑使用 os.chroot 添加,以便根目录是网站本身。这是防止这些越狱攻击的安全方法吗?这样做有什么潜在的陷阱会伤害我吗?

4

2 回答 2

7

是的,有陷阱。安全方面:

  1. 如果你以 root 身份运行,总有办法突破。所以首先 chroot(),然后永久删除其他用户的权限。
  2. 把不是绝对需要的东西放到 chroot 树中。尤其是没有 suid/sgid 文件、命名管道、unix 域套接字和设备节点。

Python 明智,你的整个模块加载被搞砸了。Python 根本不适合这种情况。如果您的应用程序比较复杂,您遇到模块加载问题。

我认为比 chrooting 更重要的是作为非特权用户运行并简单地使用文件系统权限来阻止该用户阅读任何重要的内容。

于 2009-01-25T22:02:05.320 回答
3

查看扭曲的。twistd支持开箱即用的特权脱落和 chroot 操作。此外,它还有一个用于编写网络服务、守护进程和几乎所有东西的完整框架。

于 2009-01-25T23:15:25.327 回答