Apache网页内容拥有者的最佳做法? (www数据,根,用户等?)

对于简单的LAMP设置,处理/ var / www目录(或子目录)文件所有权的最安全的方法是什么?

Apache作为www数据运行,所以如果它是所有者,它将有写权限。 这可能是一个坏主意,但是使file upload更方便。

如果他们拥有root权限,是否存在任何安全问题?

让每个用户成为/ var / www / site文件夹的所有者是否合理? (我意识到〜/ public_html是这样做的正确方法,但是使用/ var / www /下的所有Web内容可以很容易地看到服务器上当前正在运行的站点)

如果内容由root用户拥有,则它们应该没有问题。

用户的东西应该在/srv ,而不是/var/www 。 他们可以在那里拥有他们的代码和数据。

您的安全级别取决于这是内联网还是互联网(尽pipe“内联网更安全”可能会误导您的防火墙和整体networking安全)。

让apache用户拥有对这些文件的写入权限对安全性是有害的。 如果服务器是根源的,那么他们可以改变内容。 当然,你允许file upload没有审查是一个更大的安全问题 – 不需要apache漏洞。 你最好上传到Web服务器的某个目录,等待审核,移动到Web服务器区域。

如果文件由root拥有,则只有root用户可以修改它们。 这意味着所有改变它们的过程都必须是根,这是一个安全问题。 你愿意给所有的网页内容作者提供root / sudo吗? 我build议反对这个。

如果可能的话,Apache和它的日志应该在一个单独的卷上,至lessclosures/ bin /和/ var。 长满的日志文件或大量上传的文件可能会导致您的操作系统拒绝服务–Linux系统在100%完全/ var分区中performance怪异。

如果你要和用户一起进行完整的LAMP,那么你不得不担心用户的编码技巧。 尽可能让PHP安全(感叹,为什么没有更好的语言,PHP真的太糟糕了,但没有什么比快速内容更好)。 仅编译使用参数化查询的数据库访问(消除几乎所有的SQL注入攻击)。 在MySQL中devise您的模式和授权,以隔离所有的用户。

我在类似的情况下使用组权限:

  • 每个网站都有专门的用户和组

  • 所有应该由Apache读取的文件和目录都是拥有者可写和组可读的(umask设置为027 ),属于相应的网站组

  • 无特权的Apache用户www-data是每个网站组的成员

  • 网站pipe理员(网页内容)pipe理的目录和文件由相应的用户拥有

  • 服务器pipe理员pipe理的所有东西:Web应用程序,CGI脚本,SSL证书等被放置在不同的目录中,并由root拥有。 AliasScriptAlias指令用于访问它们。

  • CGI脚本和Web应用程序必须具有写权限的目录由www-data和相应的网站组拥有,并且setgid位已设置( chmod g+s )。 因此,在其中创build的文件属于网站组,而不是www-data ,并且可以由网站pipe理员读取。