共享托管上的Drupal网站最合适的用户和权限级别是什么?


14

尽管Drupal网站详细介绍了权限和安全性,但是对共享主机的引用只有模糊/不清楚。从Drupal的角度来看,共享托管站点上最安全的设置(所有权和权限级别)是什么?

作为我要查找的这类信息的一个示例,WordPress建议使用以下共享托管设置:

  • 所有文件应归实际用户帐户所有,而不是用于httpd进程的用户帐户所有。
  • 除非网络服务器进程权限检查有特定的组要求,否则组所有权无关紧要。通常不是这种情况。
  • 所有目录应为755或750。
  • 所有文件应为644或640。例外:wp-config.php应为600,以防止服务器上的其他用户读取它。
  • 永远不要给目录777,甚至不要上传目录。由于php进程以文件所有者的身份运行,因此它获得了所有者权限,甚至可以写入755目录。

2
我认为您在Wordpress中遇到了一些黑客问题;)Drupal中发生这种情况的可能性较小。
niksmac


还是不太了解。如果您的名字叫Johnny,并且您的共享托管服务提供商给您提供了用户名johnny99,是否意味着您应该在上传文件之前将文件整理为“ johnny99:www-data”?还是与共享主机无关?
西蒙·霍尔

Answers:


9

托管选项

网站的托管选项通常是以下之一:

  • 专用服务器
  • 虚拟专用服务器(VPS)
  • 共享主机

使用专用服务器,一台物理计算机上只能托管一个站点,并且配置与计算机本身一样安全。

使用VPS,您的软件可以与其他用户的虚拟机在同一台物理计算机上运行。但是,它在功能上等效于专用服务器。最重要的是,VPS具有专用服务器的私密性和安全性。

使用共享托管,您的网站驻留在与其他用户共享的文件系统上。不幸的是,这使其安全性低于在专用服务器或VPS上运行时的安全性。本文的其余部分讨论共享托管环境中WCMS的安全性。

环境

共享托管环境可视为由Web服务器,文件系统,设置文件,数据库和某些用户组成。

在以下示例中,假定所有者帐户为“ tom”,并且设置文件(持有数据库凭据)的名称为“ settings.php”。

根据配置,Web服务器进程可以所有者帐户“ tom”的用户权限或组“ www”的组权限运行。

另外,假定使用标准的Gnu / Linux或Unix环境,并且假定读者理解Unix访问控制系统,并且将读取(r),写入(w)和执行/访问目录(x)权限分为三个块(用户,组,其他)。

在继续讨论特定设置之前,列出我们希望满足的条件可能会有所帮助:

  1. 为了使网站正常运行,Web服务器必须对构成该网站的所有文件具有读取访问权限,并且必须对构成该网站的所有目录具有目录访问权限。
  2. 为了安全操作,Web服务器不得对其所处理的任何文件具有权限。
  3. 为了安全操作,流氓用户运行的Web脚本不得对另一用户拥有的文件具有读取权限。
  4. 对于使用CLI业主的工作在他自己的网站,用户必须具有读取写入访问自己的文件。
  5. 为了防止其他用户使用CLI访问文件,“ other”块应该没有权限设置。

不幸的是,在共享主机上,您只能有4个(共5个)。我知道您无法同时满足共享主机上的所有五个条件。

据我所知,共享主机提供程序使用了两种不同的配置。下文将讨论这两者,以及用于最佳保护文件和目录的权限以及配置无法满足的条件。

配置1:Web服务器以所有者身份运行

这是AFAIK使用最广泛的配置。Web服务器以文件所有者的身份运行。这意味着流氓用户无法使用其Web服务器用户来运行脚本来读取其他用户的文件。这种类型的配置还可以在CLI中保护用户彼此之间。

但是,这也意味着我们不能对所有者和Web服务器拥有单独的权限。为了使用这种类型的设置满足条件2,您需要限制所有者的写许可权,以防止对Web服务器对除上载目录之外的所有内容进行写访问。

权限:

Directories:  500 r-x --- --- tom.tom
Files:        400 r-- --- --- tom.tom
settings.php: 400 r-- --- --- tom.tom
Upload Dir.:  700 rwx --- --- tom.tom

不幸的是,这意味着不能满足条件4。即该站点无法通过CLI维护。所有者将被限制使用某种基于Web的仪表板来访问站点(我的建议是所有者在他具有不受限制的访问权限的某个登台服务器上维护一个副本,并将在登台服务器上所做的更改镜像到共享主机)。

配置2:Web服务器作为www组的成员运行

共享主机解决方案的某些(IMHO)专业人士使用此配置。Web服务器作为www组的成员运行,并通过组块获得了所需的读取访问权限:

权限:

Directories:  750 rwx r-x --- tom.www
Files:        640 rw- r-- --- tom.www
settings.php: 640 rw- r-- --- tom.www
Upload Dir.:  770 rwx rwx --- tom.www

这些设置的优点是为所有者提供了通过CLI对其文件的完全访问权限,并限制了Web服务器仅读取访问权限。

但是,它也无法满足条件3。也就是说,它允许共享主机上的流氓用户(或黑客入侵了共享主机的另一个用户的站点)运行脚本来读取可被主机读取的任何文件。网络服务器。这使流氓脚本可以使用数据库凭据访问文件settings.php,这使得完全接管该站点变得微不足道。

我的建议是避免这种类型的配置。

附录:使用共享主机有多危险?

我当然不会在共享主机上放置任何敏感内容,例如信用卡号或病历。但是共享主机很便宜,而且有一个吸引力。我使用共享托管自己访问了多个站点。我还没有被黑客入侵过,但是我知道存在这种风险,因此我已经为发生这种情况做好了准备。如果遭到黑客入侵,我将只删除共享主机上的所有内容,然后从保存在安全登台服务器上的镜像副本中重新安装该站点。

对于“ config 2”,主要问题是其他问题。如果您与主机共享的其他一些网站遭到破坏,则您的网站也将成为午餐。使安全依赖于您不认识且无法控制的另一方不是一个好主意。这就是为什么我的建议是避免使用“配置2”类型的托管安排。

使用“ config 1”,您可以独自控制网站的安全性。这样会更好(特别是如果您知道自己在做什么)。但这不是万无一失的。没有人能完美无缺,如果您无所适从,而且您的网站遭到入侵,攻击者将可以访问该主机上存储的属于您的每个文件。换句话说,为了最大程度地减少被黑客入侵时的危害,请不要在该主机上保留任何会导致他人受到伤害的损害的内容。特别要注意不能让你的电子邮件中共享的主机上。电子邮件中通常包含大量敏感数据,因此您不希望在以“您”身份执行的Web服务器附近的任何地方。

并且,如果您的网络应用正在处理敏感数据,请确保您的预算允许使用专用主机或VPS。

您可能还想在Drupal.org 上查看本保护文件权限和所有权的指南。


好吧,我给你50分。感谢您的详细回答。这是否意味着由于无法保护共享托管而在本质上应避免使用?
西蒙·霍尔

实际上,现在我又读了一次,您实际上是在说这种安排不应在实时环境中修改/修改文件,而只能在舞台环境中进行工作,该阶段的修改后的文件将在需要时替换实时网站的文件。 。换句话说,没有人可以修改实时站点。
西蒙·霍尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.