Segurança do Apache DocumentRoot

6

Eu tenho uma pergunta geral sobre a segurança do Apache DocumentRoot , que vem de uma declaração que li ao instalar o Galaxy, um serviço web e infraestrutura de bioinformática. A declaração diz

"Please note that Galaxy should never be located on disk inside Apache's DocumentRoot.
By default, this would expose all of Galaxy (including datasets) to anyone on the web."

Este parágrafo é copiado de       link

Então a questão é qual é a diferença entre colocar alguns conteúdos em DocumentRoot vs colocar em um subdiretório de DocumentRoot ? Mesmo se o conteúdo for colocado em um subdiretório, por padrão, também será verdade que todo o conteúdo será exposto a qualquer pessoa na web?

Se eu colocar o conteúdo em DocumentRoot de um SSL servidor e permitir que apenas usuários autenticados e autorizados acessem, isso resolveria o problema de acesso mundial?

Atualização: Obrigado a todos por suas respostas inteligentes. Eu acho que tive todas as minhas perguntas respondidas. Para resumir:

  1. Um subdiretório no DocumentRoot estará acessível a todos, a menos que tenha permissões diferentes definidas.

  2. SSL protege somente os pacotes transferidos pelas redes, não a permissão dos arquivos.

  3. A autenticação / autorização limitará quem pode acessar o DocumentRoot.

  4. As permissões de arquivo do Unix / Linux não afetarão o acesso, pois todos os arquivos devem ser acessíveis pelo proprietário do servidor da web.

por user2196452 11.08.2014 / 05:00

4 respostas

12

Um subdiretório do DocumentRoot ainda é considerado dentro do DocumentRoot.

Quando alguns pacotes de software desaconselham colocar parte do pacote dentro do DocumentRoot, a intenção é que ele esteja realmente fora do DocumentRoot.

Então, por exemplo, se o seu DocumentRoot for /var/www/example.com/html você pode querer colocar esses arquivos em outro lugar completamente, como por exemplo /var/www/example.com/restricted

E não, o SSL não resolve nem resolve a preocupação em ter arquivos de configuração confidenciais dentro da raiz do doc!

    
por 11.08.2014 / 06:42
6

Para adicionar à resposta de Joe Sniderman, colocar os arquivos fora da raiz do documento os torna inacessíveis a um usuário que entra na URL em seu navegador, mas ainda está disponível para os scripts em execução na raiz do documento.

Por exemplo, você cria um relatório que anonimiza e agrega dados de login do usuário. Você coloca o script na raiz do documento como /var/www/example.com/html/report.php para que os outros possam ver a popularidade do seu site.

Seu relatório deve consumir os dados brutos do usuário, para que ele faça referência a um arquivo /var/www/example.com/restricted/login.log como a origem. Este arquivo não está na raiz do documento e, portanto, não está acessível, exceto através do report.php, que anonimiza os dados de qualquer maneira. Você não deseja que os dados brutos sejam públicos, portanto, mantenha esses dados confidenciais longe da raiz do documento.

    
por 11.08.2014 / 09:28
1

Qualquer coisa no DocumentRoot é considerada parte do site e será devidamente entregue pelo Apache se você souber o caminho.

MAS ....

É muito fácil proteger uma pasta. Basta criar uma regra de reescrita em torno dela, ou do controle de acesso, ou o que for.

Mas é ainda melhor colocar seus vários scripts em outro lugar. As outras respostas têm linhas como esta:

/var/www/example.com/restricted

Mas isso não está fora do DocumentRoot. Isso está fora:

/var/www/example.com-scripts/

ou:

/var/admin-code/example.com/

ou realmente em qualquer outro lugar no sistema de arquivos. Tudo o que você precisa é de um software que espere que o código viva em outro lugar e uma configuração onde você diz onde está a pasta.

Como mencionado, o SSL não faz nada para você, além de garantir que o hacker # 2 não possa espionar o hacker # 1 lendo suas senhas de banco de dados.

    
por 11.08.2014 / 14:30
1

A citação

"Please note that Galaxy should never be located on disk inside Apache's DocumentRoot. By default, this would expose all of Galaxy (including datasets) to anyone on the web."

se aplica a um SOFTWARE PARTICULAR e como ele espera que a configuração seja feita!

De acordo com o acima. a configuração padrão do Galaxy pode implicar que todos os arquivos abaixo ("dentro") do DocumentRoot estejam acessíveis .

É por isso que você deve mover os arquivos para que não sejam acessados de lá.

Esta suposição pode não ser verdadeira em outra instalação ou em uma instalação não padrão do Galaxy. Em particular, Directory instruções podem abrir ou fechar partes do sistema de arquivos, Location instruções podem abrir ou fechar partes da árvore URI, Alias instrução pode mapear subárvore do sistema de arquivos em um URI, e permissões em nível de sistema de arquivos, bem como controle de acesso obrigatório (via SELinux ou outro sistema = pode permitir ou conceder acesso a partes do sistema de arquivos para o processo do servidor web.

Um exemplo para "sair do DocumentRoot":

    
por 11.08.2014 / 16:53