1

到目前为止,我的搜索已经显示了在尝试从 PHP 中执行 sudo'd 命令时将产生的潜在安全漏洞。

我当前的问题是我需要通过 PHP 的 exec() 函数在我的工作 Web 服务器上以 sudo 的形式运行 bash 脚本。我们目前托管的网站不到 200 个。将执行此操作的网站仅限于从我办公室的 IP 地址访问。这会消除任何可用解决方案带来的任何潜在安全问题吗?

其中一种方法是将 apache 用户添加到 sudoers 文件中,我认为这将适用于整个服务器,因此仍然会在所有其他网站上造成问题。

在限制访问我们办公室的网站上使用时,是否有任何不会造成安全威胁的解决方案?

提前致谢。

编辑:简要背景

这是我想要实现的目标的简要描述。我工作的公司为旅游相关业务开发网站,等等。在创建新网站时,我需要设置一个托管包,其中包括:为新站点创建目录结构,创建一个包含在 httpd.conf 中的 apache 配置文件,添加一个新的 FTP 用户,创建一个新的与网站 CMS 一起使用的数据库等等。

目前我在服务器上有一个 bash 脚本,它创建目录结构、添加用户、创建 apache 配置文件并优雅地重新启动 apache。这只是一部分,我想做的是在 PHP 脚本中使用这个 shell 脚本,以一种易于使用的方式自动化整个网站生成过程,为其他同事和一般效率。

4

1 回答 1

1

您至少有 4 个选项:

  1. 将 apache 用户添加到 sudoers 文件中(并限制它运行一个命令!)
    • 在这种情况下,您的 php-apps 中的一些安全漏洞也可能会运行脚本(例如,如果它们可以包含调用 php - 或者甚至通过使用另一个也调用脚本 mod_rewrite 的 url 来绕过对您的 ip 的限制)
  2. s用该位 标记脚本
    • 很危险,不要这样做。
  3. 运行另一个仅绑定到本地接口且无法从外部访问的 Web 服务器
    • 这是我首选的解决方案,因为调用 php 的链接可以通过主网络服务器的链接访问,并且可以单独处理安全性。您甚至可以为此服务器创建一个新用户。一些简单的服务器可以完成这项工作,例如 python 和 perl 的服务器模块。甚至没有必要在您的 php 安装中启用 exec!
  4. 运行一个守护进程(例如,inotify,以监视文件事件)或读取某些文件或 db-entry 然后运行命令的 cronjob
    • 这可能太复杂并且有缺点,即守护进程无法检查哪个脚本生成了条目。
于 2013-07-26T14:02:30.383 回答