确保 Ubuntu 服务器上的 Django 部署安全

确保 Ubuntu 服务器上的 Django 部署安全

我刚刚开始使用 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

如果您不需要整个互联网来访问您的应用程序,请考虑添加一些防火墙规则来限制对该应用程序的访问。

相关内容