Práticas recomendadas para o proprietário do conteúdo da web do Apache? (www-data, root, user, etc?)

3

Para uma configuração simples de LAMP, qual é a maneira mais segura de lidar com a propriedade de arquivos do diretório / var / www (ou subdiretórios)?

O Apache é executado como www-data, portanto, se for o proprietário, ele terá acesso de gravação. Esta é provavelmente uma má ideia, no entanto, torna-se conveniente para uploads de arquivos.

Se eles forem de propriedade do root, há algum problema de segurança envolvido?

Faz sentido que cada usuário seja o proprietário de sua pasta / var / www / site? (Eu percebo que ~ / public_html é o caminho certo para fazer isso, no entanto, ter todo o conteúdo da web em / var / www / torna fácil ver quais sites estão atualmente em execução no servidor)

    
por Murat Ayfer 15.11.2010 / 02:53

3 respostas

1

Não deve haver problemas com o conteúdo pertencente à raiz, desde que sejam legíveis pelo usuário do httpd.

O material do usuário deve estar abaixo de /srv , não /var/www . Eles podem possuir o código e os dados deles lá.

    
por 15.11.2010 / 02:56
1

O seu nível de preocupação com a segurança depende se esta é a intranet ou a Internet (embora 'seguro na intranet' possa ser enganoso, dependendo do seu firewall e da segurança geral da rede).

Ter o usuário do apache tem acesso de gravação aos arquivos é ruim para a segurança. Se o servidor estiver enraizado, eles poderão alterar o conteúdo. É claro, você permitir uploads de arquivos sem verificação é um problema de segurança muito maior - não é necessário ter um buraco de apache. Você está melhor com o upload para algum diretório fora do servidor, espere para o veterinário, vá para a área do servidor web.

Se os arquivos forem de propriedade de root, apenas o usuário root poderá modificá-los. Isso significa que todos os processos que os modificam precisam ser o root, o que é uma preocupação de segurança. Você está disposto a dar root / sudo a todos os autores de conteúdo da web? Eu recomendaria contra isso.

Se possível, o apache e seus logs devem estar em um volume separado, pelo menos fora de / bin / e / var. Arquivos de registro overgrown ou arquivos carregados enormes podem causar Denial Of Service para seus sistemas OS - Linux agem de forma estranha com partições 100% full / var.

Se você estiver usando o LAMP completo com os usuários, precisará se preocupar com as habilidades de codificação de seus usuários. Torne o PHP seguro quanto possível (suspiro, porque não há uma linguagem melhor, o PHP é realmente horrível, mas não há nada remotamente tão bom quanto para conteúdo rápido). Compile apenas o acesso ao banco de dados que usa consultas parametrizadas (elimina quase todos os ataques de injeção SQL). Projete seu esquema e autorizações no MySQL para isolar todos os usuários.

    
por 15.11.2010 / 16:53
1

Estou utilizando permissões de grupo em uma situação semelhante:

  • Existe um usuário e um grupo dedicados para cada site

  • Todos os arquivos e diretórios que devem ser lidos pelo Apache são graváveis pelo proprietário e pelo grupo (umask é definida como 027 ) e pertencem ao respectivo grupo de sites

  • O usuário do Apache não privilegiado www-data é um membro do grupo de cada site

  • Os diretórios e arquivos gerenciados pelos administradores do site (conteúdo da web) são de propriedade do respectivo usuário

  • Tudo gerenciado pelo servidor admins: aplicativos da Web, scripts CGI, certificados SSL, etc., é colocado em diretórios separados e de propriedade do root. As diretivas Alias e ScriptAlias são usadas para acessá-las.

  • Os diretórios aos quais os scripts CGI e os aplicativos da Web devem ter acesso de gravação são de propriedade de www-data e do respectivo grupo de sites e têm o setgid bit definido ( chmod g+s ). Como resultado, os arquivos criados neles pertencem ao grupo de sites, não www-data , e podem ser lidos pelo administrador do site.

por 10.03.2012 / 07:45