Esclarecimento: permissão e oportunidade pelo processo apache de web root

0

Eu li muitos artigos sobre a propriedade correta / segura (1) e (2) permissões de acesso para diretórios e arquivos em um diretório acessível pela Web servido pelo apache (por exemplo, /var/www/ ). Ou eu sou facilmente confuso ou há um monte de conselhos confusos / contraditórios ao redor.

CMS comuns, como drupal, wordpress, etc. geralmente recomendam 755 para diretórios, 644 para arquivos. No entanto, a recomendação para dar a propriedade do grupo ao processo do apache de todos os conteúdos na raiz da Web (por exemplo, chown -R :www-data /var/www/ ) também é feita.

(1) Primeira pergunta: digamos que a propriedade do grupo de diretórios e arquivos em /var/www/* pertence a www-data e, como de costume, o usuário do processo apache www-data é o único membro desse grupo. Enquanto isso, a propriedade do usuário de diretórios e arquivos em /var/www/* pertence a um usuário comum no sistema linux que pertence ao grupo sudo (por exemplo, somesudouser ). Isso nos dá algo como:

    ----------  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    d--------- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

Dada a estrutura de propriedade acima, certamente a permissão de acesso para "outros" pode ser definida como 0 ; por exemplo. 750 para diretórios, 740 para arquivos e isso não impediria que o apache servisse corretamente esses arquivos em resposta a uma solicitação do navegador:

    -rwxr-----  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    drwxr-x--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

O que há de errado com isso? Não vejo sentido em definir a "outra" permissão para nada além de 0 (em vez do frequentemente recomendado 5 para diretórios e 4 para arquivos) e não vejo motivo para os arquivos não terem a propriedade do usuário definida para 7 (em vez do geralmente recomendado 6 ). o que estou perdendo?

(2) Segunda pergunta: quando a propriedade de grupos de diretórios e arquivos na raiz da web pertence a um grupo que não inclui o processo apache (por exemplo, somesudouser:somesudouser ), o processo apache pode interagir com diretórios e arquivos na web root somente se a permissão de acesso "outros" permitir. Em termos de segurança, qualquer um dos seguintes itens tem alguma vantagem / desvantagem real:

    -rwx---r--  1 somesudouser somesudouser   3012 Jan 10 13:46 some-file.php
    drwx---r-x 16 somesudouser somesudouser  12288 Jan 10 13:25 some-directory/

Ou:

    -rwxr-----  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php
    drwxr-x--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

Ou até mesmo:

    -r--------  1 www-data www-data   3012 Jan 10 13:46 some-file.php
    dr-x------ 16 www-data www-data  12288 Jan 10 13:25 some-directory/

(3) E finalmente uma pergunta sobre w permissions. Digamos que o processo do apache tenha a propriedade de um arquivo em um grupo e esse grupo tenha uma permissão de acesso de 7 :

    ----rwx---  1 somesudouser www-data   3012 Jan 10 13:46 some-file.php

Por que isso é um problema? Uma pessoa mal-intencionada pode seqüestrar o usuário do apache, editar some-file.php e, assim, executar o php malicioso no sistema linux? Como isso seria feito?

E se um diretório tiver a mesma permissão:

    d---rwx--- 16 somesudouser www-data  12288 Jan 10 13:25 some-directory/

Uma pessoa mal-intencionada pode fazer com que o processo do apache grave novos arquivos nesse diretório? Mais uma vez, como isso seria feito?

Obrigado.

    
por penname 16.05.2016 / 14:10

1 resposta

0

(1) First question: ... as usual, the apache process user www-data is the only member of this group ... What is wrong with this? I see no point in setting the "other" permission to anything apart from 0 (instead of the often recommended 5 for directories and 4 for files)

Primeiramente, adicionar-se como administrador / desenvolvedor de sistema como membro do grupo www-data é uma ideia perfeitamente válida e válida, pois permitiria que você trabalhasse com arquivos e pastas criados pelo servidor da Web.
Se as permissões da raiz do documento do servidor web foram configuradas assim, com o bit setgid nos diretórios você poderia trabalhar com arquivos e pastas criadas pelo servidor web e, porque você compartilhou a propriedade do grupo (e supondo umask de 002) o servidor poderia funcionar corretamente com acesso total para arquivos e pastas que foram criados por você, ftp'ed, criados etc.
Nesse caso, você estaria certo, definir os outros bits como 0 seria sensato, pois as outras contas UNIX não deveriam ter acesso à raiz do documento.
Eu suspeito que seus documentos do CMS sugerem permitir que outros leiam, pelo menos, porque a maioria dos administradores não profissionais não terá conhecimento suficiente para configurar o setgid etc e, no caso dos arquivos de propriedade do www-data, você será outro - isso será menos permite que você leia os arquivos e vice-versa com o servidor sobre seus arquivos.

(2) Second question: when group ownership of directories and files in the web root belongs to a group that does not include the apache process

Pode depender de qual diretório é usado e se o servidor da Web precisa de acesso de gravação a ele para funcionar. Geralmente, você deve conceder ao servidor da Web apenas permissões suficientes para que ele funcione, mas se o servidor da Web precisar de permissão, o ideal é que ele seja atribuído às funções de propriedade ou de grupo. Se você der ao mundo acesso de leitura / gravação apenas para que seu servidor possa ler / escrever, você está permitindo que outras contas de usuários UNIX tenham a mesma liberdade. por exemplo. esses outros "vizinhos" em um sistema compartilhado que não deveria poder acessar seus arquivos, mas ocasionalmente podem quando os administradores deslizam, e sim eu vi isto acontecer.

(3) And finally a question about w permissions. Let's say the apache process has group ownership of a file and this group has an access permission of 7:

bem, sim, que praticamente vai ser a principal fonte de seus problemas, você tem um servidor conectado à internet - que será constantemente submetido a abusos, pessoas más tentando roubar o servidor para fazer o que eles querem - o que pode envolver manipulações de arquivos na raiz do documento e no site, por exemplo

  • indexação / exploração de diretórios
  • escrevendo / desfazendo arquivos - quando o servidor da Web precisa apenas ler esses arquivos para funcionar

Observe que, como um problema geral de segurança, o abuso do sistema de arquivos por meio do servidor da web pode se espalhar para o restante do sistema operacional, por exemplo, leitura de senhas, etc. Então, além disso, você tem problemas de permissões sobre o servidor da Web, exibindo informações confidenciais do sistema, senhas, registros, etc. fora da raiz do documento.
Em relação às permissões de raiz do documento, como são as permissões bem configuradas? Eu recomendaria

e também lendo

por 16.05.2016 / 15:08