Configure adequadamente a permissão para / home / user folder para o servidor da web

3

Atualmente, estou configurando meu próprio servidor Linux executando o CentOS 6. Para testar a segurança no meu servidor, eu escrevi um script PHP que funciona como uma espécie de "navegador". Eu posso ir um diretório para cima, abrir os arquivos, etc, etc.

O problema é que minhas ferramentas me permitem subir até "/" e não estou muito feliz com isso. Embora o Apache esteja sendo executado como "nobody", parece que ele pode alcançar todas as pastas e arquivos em todo o servidor.

Eu tentei resolver isso como cPanel fez isso, mas desde que eu não tenho cPanel eu não sei exatamente como isso é feito.

Basicamente eu tenho isso:

/ home / account / public_html / home / anotherAccount / public_html

Eu quero fazer com que "anotherAccount" não consiga acessar os arquivos de "account". Na verdade eu adoraria que "anotherAccount" não pudesse nem sair do seu próprio diretório!

Sim, eu sei que você está pensando: Instale suPHP / fastcgi / suExec, mas não posso fazer isso porque eles estão comendo recursos. Eu sei que é possível sem instalar nenhum deles! Eu carreguei o meu script para algum webhost profissional ainda não muito conhecido e eu fui capaz de ir para dentro / com ele, mas não dentro dos diretórios home, exceto o meu próprio. / home / listado como vazio!

Como posso proteger minhas pastas iniciais?

    
por John Smith 18.02.2013 / 12:46

2 respostas

1

Se você quiser que ninguém possa acessar sua pasta pessoal, exceto você e o root, você deve se certificar de que os outros usuários não têm permissões no seu homedir. assim:

chmod o-rwx ~

Isso remove as permissões de leitura, gravação e execução do seu diretório pessoal para outros usuários.

Se você também quiser ter certeza de que ninguém do grupo que possui seu diretório pode acessá-lo, você também precisará fazer isso:

chmod g-rwx ~

Isso também removerá todas as permissões para membros do grupo que possui seu diretório.

se você quiser saber mais detalhes, verifique a página de manual man 1 chmod e man 2 chmod . Eles devem explicar todos os detalhes.

BTW. Eu ficaria com medo de colocar um script PHP no meu servidor que permita que qualquer pessoa navegue pelos arquivos, mesmo que ele seja executado apenas como usuário nobody .

    
por 18.02.2013 / 12:55
0

O usuário do Apache sempre poderá ler uma grande parte do sistema de arquivos. Tanto por design e por padrão muitos locais são legíveis (e às vezes executáveis) para todos os usuários. Isto não é, em si, um problema.

O que você precisa garantir é que 1) O Apache não servirá documentos fora de um conjunto específico de diretórios e que 2) o PHP não tem permissão para entrar em nenhum diretório que não possua os arquivos PHP do seu aplicativo.

1) Use as entradas <Directory> para limitar o acesso e garantir que não haja padrões inseguros em nenhum arquivo de configuração. Isso é um pouco tangencial à sua pergunta, pois o que está servindo os arquivos é PHP, não apache. Mas ainda é importante estar atento;

2) Ative o Modo de Segurança e defina diretivas doc_root e open_basedir para garantir que o PHP seja restrito a uma árvore de diretórios específica, por exemplo open_basedir="/var/www/htdocs/<website>/"; . Essas opções de configuração podem ser configuradas em muitos lugares: do php.ini do sistema a arquivos php.ini dedicados do vhost, a diretivas do apache passadas ao interpretador do php, etc;

por 20.02.2018 / 10:21