Configurando corretamente as permissões do apache2 em /var/www/example.com

1

Gostaria de saber qual é a maneira correta de configurar permissões para o diretório /var/www/example.com e todos os arquivos contidos nele. O servidor inteiro será usado apenas para configurar meus sites, por isso não tenho certeza se é necessário criar um novo usuário para cada um dos meus sites. O Apache é executado como www-user: www-user. Também seria ótimo se você pudesse explicar um pouco do ponto de vista da segurança.

EDITAR Parece que eu preciso rodar 2 sites como usuários separados simplesmente porque um dos sites terá que ser o mais seguro e separado possível do outro, o que eu espero que seja muito mais vulnerável (fórum vbulletin). Ser capaz de comprometer o site supostamente seguro através de um menos seguro é inaceitável para mim.

    
por jaz 18.08.2011 / 10:34

3 respostas

3

Eu uso o apache-itk com um usuário separado para cada site. Há uma sobrecarga extra, pois cada novo pedido tem que iniciar um novo processo como esse usuário, mas ele realmente torna as coisas muito mais nítidas do ponto de vista da segurança, já que um site em particular não pode acessar os arquivos de outro. Também ajuda se um site em particular estiver consumindo muitos recursos e assim por diante.

No Debian / Ubuntu:

apt-get install apache2-mpm-itk

Em seguida, adicione:

<IfModule mpm_itk_module>
    AssignUserId USER GROUP
</IfModule>

No VirtualHost do seu apache2, substituindo USER e GROUP pelos seus próprios.

    
por 18.08.2011 / 10:49
3

Como você configura as permissões depende dos seus modelos de segurança e ameaça. E nós não sabemos o que são esses.

Mas, em geral, os arquivos / diretórios só devem ser lidos pelos uids que precisam lê-los e devem ser gravados apenas pelos uids que precisam escrevê-los. Às vezes, isso nem sempre é prático para mapear diretamente para o modelo de permissões do Unix, portanto, o próximo princípio que geralmente se aplica é que a divulgação acidental de informações geralmente é preferível à modificação não autorizada de dados.

O que isto significa no seu caso, é que nenhum dos arquivos / diretórios dentro da árvore de documentos do servidor web deve ser gravável pelo servidor web uid. Em alguns casos, isso pode implicar a montagem do sistema de arquivos somente leitura. Mas obviamente isso torna a vida mais complicada quando você quer mudar seu conteúdo. Então, quem muda o conteúdo? Se for um único usuário (e sempre será um único usuário), suas permissões podem ser:

-rw-r----- devuser wwwuser somefile
drwxr-s--- devuser wwwuser somedir

Assim, seu servidor da Web obtém acesso por meio da propriedade do grupo. O bit de grupo fixo garante que os diretórios / filiais criados herdem o mesmo grupo.

Se você tiver vários usuários alterando arquivos, adicione-os todos a um grupo (digamos, webdev) e torne o acesso do servidor da web por meio das 'outras' permissões:

-rw-rw-r-- devuser webdev somefile
drwxrxsr-x devuser webdev somedir

Certamente, existem ferramentas adicionais que podem adicionar mais separação de privilégios, mas consideraria apenas examiná-las se você estivesse configurando um host compartilhado e precisasse isolar cada vhost.

    
por 18.08.2011 / 12:31
0

Se você é o único usando o servidor web, coisas como o mpm_itk são exageradas.

Basta definir as permissões para o mesmo usuário que o servidor web / php executar como (www-user: www-user no seu caso).

O único motivo para isolar as permissões é proteger um site de ser invadido se o servidor da Web que estiver executando outro site também for invadido. Se todos os sites são seus, então não é um problema tão próximo.

Eu vejo muitos e muitos passos que parecem implicar que você deve configurar a segurança assim e é perigoso não fazer isso. Isso é totalmente falso. O usuário do usuário www não tem permissão para nada em seu servidor que não seja o diretório do seu servidor web, então é perfeitamente seguro deixar o web root e tudo abaixo dele configurado para 770/660 e www-user: www-user.

No pior dos casos, um de seus hosts virtuais é hackeado e eles limpam todas as suas coisas nos outros hosts virtuais, mas, então, você precisa restaurar o servidor inteiro de qualquer maneira, porque qualquer interrupção significa que você não pode confiar nele. >

Claro, se você estiver hospedando coisas para outras pessoas, ou se você tiver muitos usuários fazendo login e quiserem seus próprios Apache isolados, você precisa considerar opções, mas para um servidor pessoal com alguns hosts virtuais, não há nada errado com deixar tudo o que pertence ao usuário do servidor da Web.

    
por 18.08.2011 / 12:14