将 /usr/bin 添加到 open_basedir 是否安全?

将 /usr/bin 添加到 open_basedir 是否安全?

几个月前发生的一次黑客事件让我意识到在 PHP 网站上使用 open_basedir 的重要性。但现在我需要让 ImageMagick 在 Drupal 网站上工作,但出现错误,提示由于 open_basedir,无法访问 /usr/bin/convert。/usr/bin 及其中的所有内容只能由 root 写入,但其中有很多脚本,让网站访问所有这些脚本让我很担心。

答案1

不,将 /usr/bin 添加到 open_basedir 并不安全。一旦攻击者可以执行任意 PHP 代码,他们就能够执行 /usr/bin 中的任何命令。

为了限制攻击面,您可以在 open_basedir 下创建一个 bin 目录,并在其中创建一个转换链接。确保它不在您的 Web 根目录下。

答案2

显然,我们不知道黑客攻击的细节,但为了利用可能通过正确设置 open_basedir 而阻止的漏洞,您的系统上存在另一个漏洞。但这不是重点。

有很多方法可以解决这个问题 - 允许 PHP 脚本有限地访问相关二进制文件 / 设置权限,这样您就可以允许访问目录而不会暴露很多其他内容(但除非您的 imagemagick 是静态链接的,否则您还需要打开库)。问题是它们依赖于拜占庭权限模型 - 发行版升级很可能会破坏该模型。

如果是我,我会在一个完全独立的进程组中运行转换。如何操作取决于您的 PHP 脚本是否需要知道作业是否成功完成。如果不需要知道,那么异步消息队列(rabbitMQ、链接到 procmail 配方的 SMTP,或者只是数据库中的一些记录)将以可管理的容量处理作业。如果需要确认,则运行分叉守护程序来执行转换。

相关内容