9

我在网上看到了很多不同的建议,比如从哪里为您的 Web 应用程序提供服务、以什么用户身份运行它等等。

例如,我看到它从以下位置提供服务:/var/www/site、/srv/www/site、/home/$USER/site。

我已经看到用户是 www-data、$USER(即我的用户帐户)或专门为此目的创建的自定义用户(例如用户 uwsgi)。

在安全性方面,我可以选择的最佳方案是什么?

作为参考,我正在尝试使用 Nginx 和 uwsgi 部署一个 Django 站点。

现在,uwsgi 以 root 身份运行在 Emperor 模式下,uid/gid 设置为 www-data,因此 vassal 与 Nginx worker 具有相同的权限。我在 /home 服务,但正在考虑搬家。

4

1 回答 1

8

对于位置,选择最适合您的位置。以下是一些可以提供帮助的注意事项:

  • 下面的位置用于大小变化/var的文件,或者通常是“可变的”。
  • /srv通常表示与机器上运行的某些服务相关的文件。
  • /home通常应该为交互式用户保留。不过,您可以将系统用户的主目录设置为任何内容。

为了安全起见,您应该尽可能地分段。该应用程序不应以与 Web 服务器相同的用户身份运行,这样它就不会被滥用来读取与服务器本身(.htaccess或其他)相关的敏感文件。应用程序的二进制文件(或者对于 Django,python 源)应该由 root 拥有,对应用程序用户没有写入权限。

这是我关于如何设置它的 2 美分:

  • Django 应用程序:/usr/lib/appname/或者/usr/lib/python/site-packages/appname/如果已安装。由 root 拥有,chmod 644。
  • 应用程序的文件(例如 sqlite db 文件、用于 FastCGI 的 Unix 套接字、上传的文件存储等):/var/lib/appname/. 由应用用户 chmod 600 拥有。
  • app-user 的 shell 是/bin/nologin, home 是/var/lib/appname/。用户没有配置密码。
于 2012-10-17T22:10:53.417 回答