【问题标题】:Is it okay to run Django API server with root permissions?可以使用 root 权限运行 Django API 服务器吗?
【发布时间】:2020-06-26 15:30:44
【问题描述】:

我正在运行 django 服务器,使用 gunicorn。除了gunicorn,我还有一层nginx作为负载均衡器,使用supervisord管理gunicorn

从安全的角度来看,以sudo 权限运行我的gunicorn 服务器可以吗?是否存在潜在的安全漏洞?

另外,如果我是超级用户并且没有运行具有sudo 权限的进程,因为在任何情况下我都拥有sudo 权限作为用户。

【问题讨论】:

  • 如果 Django 以 root 身份运行,这意味着 Django 可以做任何 root 可以做的事情(一切)。 Django 正在运行您的代码。你确定那里没有 oopsie 可以rm -rf 你的硬盘,或者以某种方式允许用户在某处通过eval 运行代码......?
  • @deceze 我不确定,但如果这是真的,不管sudo,攻击者都可以运行它,对吧?当然,可能无法删除所有内容,但可以删除运行服务器的用户可以访问的内容?
  • 没错,因为运行服务器的用户是root,所以一切
  • @deceze 所以基本上,我必须创建一个新用户,授予其代码库权限并以该用户身份运行所有内容?对吗?

标签: django security


【解决方案1】:

是否需要以root身份运行?

如果没有,请不要以 root 身份运行它。

更好的是,为应用添加一个单独的用户并以该用户身份运行它。

【讨论】:

  • 嘿,我应该授予该用户什么权限才能访问代码库?它应该是读/写/执行还是全部,因为它确实需要写日志,所以也执行代码。谢谢
  • 要执行 Python 代码,您只需要能够阅读它即可。但除此之外,只需让应用用户拥有代码和日志等,例如/home/myapp/app 用于代码,/home/myapp/logs 用于日志,/home/myapp/media 用于 Django 媒体...
【解决方案2】:

我认为“是否可以使用 root 权限运行 xxx”这个问题的答案不应该是“如果不是,请不要以 root 身份运行它”。而是一个明确的“不”。

每台服务器和框架都设计为无需 root 权限即可运行。

会出什么问题?如果您有允许在服务器上远程执行代码的漏洞,您只需将 root 权限授予可以利用它的任何人。如果团队中的一位开发人员做了一些愚蠢的事情,比如删除根目录,它将被删除。您不希望服务器上运行的单个应用程序破坏您的整个系统,对吗?

【讨论】:

    【解决方案3】:

    使用 root 用户权限运行任何面向外部网络的应用程序不是一个好习惯。

    假设您上传的文件未经过验证或清理(文件上传漏洞)。如果有人上传一些易受攻击的文件并执行它。考虑该文件已实现反向外壳。然后更容易关闭您的服务器。

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      相关资源
      最近更新 更多