我刚刚开始使用 Django,想在我拥有的 Linux VPS 上部署一个测试应用程序。我不熟悉如何保护部署。如果我将 Apache 配置为从 /home 下的项目目录为应用程序提供服务,那么我相信有恶意的人可能会访问我的整个 /home。
我正在考虑创建另一个用户。有更好的选择吗?
谢谢 Hari
答案1
Django 项目不应该放在文档根目录中。请将其放在下面/srv
并指向WSGIScriptAlias
相应的位置。
答案2
Django 部署的最佳安全实践是为每个“站点”使用一个用户,这很容易做到mod_wsgi
,对于每个虚拟主机,您都有类似这样的内容::
<IfModule mod_wsgi.c> WSGIDaemonProcess mydeploygroup 用户 = _myuser 组 = _mygroup 线程 = 25 WSGIProcessGroup mydeploygroup WSGIScriptAlias / /srv/vhosts/www.example.org/apps/myapp/wsgi/deployment.wsgi </IfModule>
将.py
文件放入只有特定用户可以访问的只读位置是一种很好的做法。这样,如果攻击者能够上传任意文件,权限会阻止他修改现有的 Python 代码并对其进行后门操作。
还有一个chroot 功能但我从未测试过。有人有反馈吗?
答案3
实际上,DocumentRoot 下根本不需要任何东西。您的 WSGIScriptAlias 应该指向 wsgi 文件,该文件可以是用户 www 数据可以读取的任何位置。wsgi 文件又指向您的 Django 项目,该文件也可以是 www 数据可以读取的任何位置。
似乎没有任何关于如何设置结构的官方规则。我个人将所有项目都放在 /var/www 的子文件夹中。
答案4
如果您不需要整个互联网来访问您的应用程序,请考虑添加一些防火墙规则来限制对该应用程序的访问。