保护Ubuntu服务器上的Django部署

我刚刚开始与Django,并希望部署我的Linux VPS上的testing应用程序。 我不熟悉如何保证部署。 如果我将Apacheconfiguration为从我的项目目录下的/ home下的应用程序提供服务,那么我认为有恶意的人可能会访问我的整个/ home。

我正在考虑创build另一个用户。 有更好的select吗?

感谢Hari

Django项目不打算放在文档根目录下。 把它放在/srv并相应地指向WSGIScriptAlias

Django部署的最佳安全做法是为每个“站点”使用一个用户,这对于mod_wsgi来说很简单,对于每个虚拟主机,你都可以这样做:

 <IfModule mod_wsgi.c>
     WSGIDaemonProcess mydeploygroup user = _myuser group = _mygroup threads = 25
     WSGIProcessGroup mydeploygroup
     WSGIScriptAlias / /srv/vhosts/www.example.org/apps/myapp/wsgi/deployment.wsgi
 </ IfModule>configuration

.py文件放入只能从该特定用户访问的只读位置是一种很好的做法。 这样,如果攻击者能够上传任意文件,权限将阻止他修改现有的Python代码并将其后门。

还有一个chrootfunction,但我从来没有testing过。 有没有人有反馈?

在DocumentRoot下你根本不需要任何东西。 您的WSGIScriptAlias应指向wsgi文件,该文件可以位于用户www-data可以读取的任何位置。 wsgi文件依次指向您的Django项目,该项目也可以是任何可以从www-data读取的地方。

似乎没有任何关于如何build立你的结构的官方规则。 我个人将我的所有项目都放在/ var / www子文件夹中。

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