代码之家  ›  专栏  ›  技术社区  ›  dreftymac

什么时候应该在我的Web服务器文件上使用“apache:apache”或“nobody:nobody”?

  •  0
  • dreftymac  · 技术社区  · 16 年前

    背景: 我记得在我以前工作的地方,Web服务器管理员总是让我更改httpd可访问的文件上载目录,使它们归apache:apache所有,或者无人拥有。

    他说这是出于安全考虑。

    问题: 你能告诉我这具体意味着什么安全吗?还有一种方法可以让Apache以无人身份运行:无人,是否也存在安全隐患?

    蒂亚

    2 回复  |  直到 9 年前
        1
  •  2
  •   t0mm13b    9 年前

    有一个合理的理由,假设httpd(apache)也属于root组,并且在代码本身中发现了一个漏洞,例如,恶意用户请求的URL比预期的长,httpd seg出现故障。现在,该漏洞已经发现了根访问,这意味着,它可以控制系统,因此恶意用户最终会夺取控制权并在盒子上造成破坏。

    这就是为什么httpd守护进程的所有权在nobody或apache:apache下运行的原因。这是一种有效的预防措施,以确保没有漏洞/漏洞会暴露根访问。想象一下如果发生这种情况,安全性的影响。

    幸运的是,现在,根据Linux发行版、bsd变体(openbsd/freebsd/netbsd)或商业Unix变体的不同,httpd守护进程在权限最小的用户组下运行。而且,可以肯定地说,许多Apache代码都经过了足够好的测试和稳定。所有域中大约49%的服务器都在运行Apache。微软的IIS在29%的域上运行。这是根据netcraft调查网站 here .

    在另一个上下文中,它表明在最低权限下运行程序将被认为是“安全的”,并且可以减少任何可能的利用机会、漏洞。

        2
  •  1
  •   Matthew    16 年前

    这是这个问题的错误站点。通常你会 希望源代码与Apache属于同一个用户。如果Apache或服务器端脚本中出现安全缺陷,攻击者可以恶意修改网站的文件,而无需提升权限。

    如你所说,唯一的例外是文件上传目录。在本例中,您希望Apache对该目录进行更改。