Por que o nginx pode acessar o / etc / passwd? [fechadas]

1

Estou tentando configurar meu novo VPS com meus sites parceiros.

nginx, php-fpm e outros serviços necessários instalados.

Eu configurei um bloco de servidor nginx (hosts virtuais) para o meu site e, em seguida, tente criar um arquivo php para teste. Tudo está funcionando bem, mas eu quero tentar o arquivo echo file_get_contents('/etc/passwd') para a verificação de segurança. E o seu trabalho também, um arquivo test.php pode acessar meu arquivo VPS etc / passwd e muito mais.

Depois de tentar echo shell_exec('ls /') , mostro minhas pastas raiz.

Então isso é normal? Ou como posso evitar isso? Eu quero negar o acesso a todos, exceto /var/www para www-data usuário que executa códigos php.

Desculpe pelo meu mau inglês.

Obrigado.

    
por musa 14.04.2014 / 00:54

2 respostas

12

O arquivo passwd é legível por todos os usuários. Isso é perfeitamente normal. O mesmo para /. Programas precisam de acesso ao / etc / passwd para mapear nomes de usuários para ids. As senhas reais são armazenadas em / etc / shadow, que é mais restrito.

Se, por algum motivo, você não quiser que programas vejam esses arquivos, crie uma jaula chroot que forneça seu próprio diretório-raiz falso e uma cópia separada de todos os arquivos necessários. Mas, para a maioria dos serviços, isso é desnecessário.

    
por 14.04.2014 / 01:03
2

Você pode impedir o acesso fora dos limites proibidos configurando e usando o AppArmour ou o SELinux.

O que você está realmente dizendo aqui é: "os scripts que eu coloco no sistema e rodam têm acesso para ler arquivos legíveis pelo mundo no sistema."

Sim, sim eles fazem.

    
por 14.04.2014 / 04:44