Nginx, uWSGI, Python, usuários, grupos e permissões. Perguntas sobre segurança [fechada]

3

Ok, ontem eu finalmente consegui servidores nginx e uWSGI rodando no meu PC. Arquivos de configuração Nginx e uWSGI, novos usuários, grupos e seus privilégios, e chrootdir para SSH que eu configurei com base no conhecimento disponível na web. Infelizmente, eu não confio muito, então eu queria perguntar aos administradores de sistema se eu não tiver cometido um grande erro em algum lugar, o que fará com que um dia eu diga adeus ao servidor.

Para o servidor HTTP eu uso apenas o diretório / srv dir, que estrutura e privilégios são os seguintes:

drwxr-xr-x 2 root root 4096 2012-02-03 04:16 nginx
    -rw-r--r-- 1 root root 411 2012-02-03 04:25 Site1.conf
    -rw-r--r-- 1 root root 170 2012-02-02 23:59 Site2.conf
drwxrwxr-x 2 root www  4096 2012-02-03 04:25 sockets
    srw-rw---- 1 Site1-www www 0 2012-02-03 04:25 Site1.socket
drwxr-xr-x 2 root root 4096 2012-02-03 04:09 uwsgi
    -rw-r--r-- 1 root root  190 2012-02-03 04:10 DjangoAutoreload.py
    -rw-r--r-- 1 root root 1477 2012-02-03 04:13 Site1.yaml
drwxr-xr-x 5 root root 4096 2012-02-03 03:44 www
    drwxr-xr-x 3 root root 4096 2012-02-03 03:49 Site1
        drwxr-xr-x 11 Site1 www 4096 2012-02-03 03:48 www
            ... all files with Site1 user, sftponly group and rw-r--r--
A pasta

/ srv / nginx em cada arquivo separado contém a configuração do novo servidor virtual.
A pasta / srv / sockets contém apenas arquivos de soquete que são usados pelo uWSGI ang nginx, o arquivo de exemplo com priviliges já existe. A pasta / srv / uwsgi em cada arquivo separado contém a configuração para cada instância do servidor uWSGI.

Agora a pasta / srv / www. Esta pasta contém subpastas, cada uma para cada usuário SFTP, que tem chrootdir nela. Cada uma dessas pastas contém a subpasta www, que contém os projetos Django e RoR.

Agora, eu tenho minhas primeiras perguntas:

  1. Privilégios de pastas estão corretos?
  2. O Nginx funciona com uid = www gid = www, e cada instância do uWSGI trabalha com uid = USER-www e gid = www. Pasta de soquete e seus arquivos têm proprietário, grupo e privilégios corretos?
    2.1. Se a escrita de privilégios para o grupo é definida como verdadeira, isso não cria um problema de segurança?
    2.2. Cada instância do servidor uWSGI deve funcionar com o mesmo uid ou em outro?
    2.3. As instâncias do uWSGI devem funcionar com o mesmo uid que o servidor HTTP (nginx)?
    2.4. O servidor uWSGI não deve gravar o arquivo de soquete antes que os privilégios sejam eliminados? Isso é um inseto?
  3. Quais privilégios, proprietário e grupo da pasta / srv / www / Site1 / www estão corretos?
  4. Como configurar o servidor SSH para usuários que já possuem diretórios chroot em / srv / www / Site1 para não ver e não ter acesso ao SFTP para outras pastas ocultas em / srv / www / Site1, por exemplo, com logs ou estatísticas?

Agora, usuários e grupos. Eu criei para o servidor precisa dos seguintes usuários e grupos:

uid=1003(www) gid=1003(www) grupy=1003(www)
uid=1005(Site1) gid=1004(sftponly) grupy=1004(sftponly)
uid=1006(Site1-www) gid=100(users) grupy=100(users),1003(www)

O usuário www é usado pelo Nginx.
O Site do usuário1 é usado somente para acesso ao SFTP para o cliente, tem diretórios chroot em / srv / www / USER_NAME e / www dir no arquivo passwd.
User Site1-www é um usuário "técnico", usado apenas por servidores e scripts que trabalham para esse usuário, por exemplo. uWSGI.

Próximas perguntas:

  1. Esta configuração de usuário e grupos está correta, não apresenta nenhum problema de segurança?
  2. Eu deveria usar um usuário para conexões SFTP e um para servidores, scripts trabalhando para esse usuário (Site1, Site1-www)?

Configuração do servidor Nginx. Eu não colo tudo da configuração porque isso não é perguntas sobre se o servidor está bem configurado, mas sobre sua segurança.

A configuração principal está na pasta / etc / nginx, não faço nenhuma alteração de privilégios a esses arquivos. Server funciona em www uid e group.
A configuração dos servidores virtuais é no catálogo / srv / nginx, que é totalmente importado (inclua /srv/nginx/*.conf;).
Os logs principais do servidor estão na pasta / var / log / nginx, e os logs dos usuários estarão na pasta / srv / www / USER_NAME / log.

  1. Se essa configuração é "correta", ou seja, pastas, os caminhos dos arquivos não são estranhos?
  2. Alguma idéia de mudar alguma coisa, fazer com que seja melhor? :)

Agora há o fim. Configuração do uWSGI:

A configuração de cada instância, uma ou mais para cada cliente (é o caso de vários aplicativos serem usados nas pastas /srv/www/USER_NAME/www/App1..App2), está na pasta / srv / uwsgi. Todas as instâncias do uWSGI funcionam com uid = USER_NAME-www e gid = www.

Na configuração do uWSGI, tenho os seguintes caminhos de python:

chdir: /srv/www/Site1/www
pythonpath: /srv/www/Site/www
  1. Eu quero prender todas as instâncias do uWSGI com o chroot. Em qual pasta? O que devo fazer para tornar o Django, o RoR funcionando corretamente?
  2. O pythonpath em / srv / www / Site / www está de alguma forma limitando os recursos da conta?
  3. A utilização de um usuário e uma pasta / www para vários projetos está correta?

E isso é tudo. Obrigado por ler e agradeço qualquer resposta. Eu sei que meu inglês não é perfeito, mas eu espero que tudo isso tenha sido escrito de forma clara e compreensível. Eu respondo por todas as perguntas nos comentários, então se houver alguma imprecisão para que eu possa explicar imediatamente:)

    
por Galmi 03.02.2012 / 17:28

0 respostas