在服务器中运行单个 Web 应用程序-为什么不使用 root?

在服务器中运行单个 Web 应用程序-为什么不使用 root?

我有一台云服务器仅托管一个网站(django + gunicorn + nginx),postgres 数据库将部署到另一台云服务器。

在这种情况下,我应该为我的网站创建特殊用户吗?似乎使用 root 更容易,而且它会带来更多安全风险,但如果我只在那里托管一个应用程序,风险就不大了?

答案1

从技术上来说,没有什么可以阻止你这样做。然而从各方面来看,这都是一个糟糕的想法。

以非特权用户身份运行应用程序的想法与运行一个或多个应用程序无关。它与应用程序本身被攻陷的风险有关。通过以 root 身份运行进程,如果存在任何漏洞,攻击者可以利用它来获得直接访问权限或以其他方式影响您的应用程序,他们将以 root 权限这样做,因此能够直接攻陷整个服务器。

它甚至可能不需要是一个错误,而是一个错误的配置或只是使用应用程序允许的访问,例如,如果您的应用程序允许直接读取或写入文件,他们可以简单地在文件系统上的任何位置执行此操作,而不是在特定于应用程序的文件夹中。

使用非特权用户很容易做到,并且可以保护您免受各种可能的安全攻击。

答案2

似乎使用 root 更容易

大多数发行包的默认 nginx 配置都有一个user指令。工作进程以较低权限用户身份运行。

其中几个生产 gunicron 部署方法允许以给定用户身份运行。

相关内容