Os projetos Django não devem ser colocados na raiz do documento. Coloque-o em /srv
e aponte WSGIScriptAlias
de acordo.
Estou apenas começando com o Django e quero implantar um aplicativo de teste em um VPS do Linux que eu tenho. Não estou familiarizado com como posso proteger a implantação. Se eu configurar o Apache para servir o aplicativo do diretório de projetos em / home, acredito que haja um escopo para que alguém com intenção maliciosa possa acessar todo o / home.
Eu estava pensando em criar outro usuário. Existe uma opção melhor?
Obrigado Hari
Os projetos Django não devem ser colocados na raiz do documento. Coloque-o em /srv
e aponte WSGIScriptAlias
de acordo.
A melhor prática de segurança para a implementação do Django é usar um usuário para cada "site", isso é fácil de fazer com mod_wsgi
, para cada host virtual, você tem algo assim::
<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>
Esta é uma boa prática para ter seus arquivos .py
em um local somente leitura acessível somente a partir desse usuário específico. Dessa forma, se um invasor for capaz de fazer upload de arquivos arbitrários, as permissões impedem que ele modifique o código Python existente e faça backdoor dele.
Há também um recurso chroot , mas nunca testei isso. Alguém tem um feedback?
Você realmente não precisa de nada em DocumentRoot. Seu WSGIScriptAlias deve apontar para o arquivo wsgi, que pode estar em qualquer lugar onde o usuário www-data possa ler. O arquivo wsgi, por sua vez, aponta para o seu projeto Django, que também pode ser qualquer lugar onde www-data possa ler.
Não parece haver nenhuma regra oficial sobre como configurar sua estrutura. Pessoalmente, tenho todos os meus projetos em subpastas para / var / www.
Se você não precisar da Internet inteira para acessar o aplicativo, pense em adicionar algumas regras de firewall para restringir o acesso ao aplicativo.
Tags django linux apache-2.2