Existe um tutorial para configurar um servidor de hospedagem compartilhada?

1

Não consigo encontrar um tutorial sobre como configurar um servidor de hospedagem compartilhada.

A parte que falta é a maneira como os privilégios são definidos para os webmasters, para que eles não visualizem os diretórios uns dos outros.

Post anterior:

Como a OVH pode configurar seu servidor SSH para fazer isso?

Estou tentando configurar um servidor da Web para vários usuários e, para isso, gostaria que cada usuário pudesse usar as duas conexões com o SSH e o SFTP, mas, o mais importante, apenas veria seu próprio diretório. A OVH conseguiu fazer isso, mas depois de 6 horas pesquisando e tentando (criando uma jaula chroot), eu não vejo como eles fizeram isso. Talvez seja trivial, mas eu simplesmente não vejo isso.

Veja o que posso fazer quando faço login na minha conta OVH:

  • pwd me dá o diretório home ( /homez.52/creak )
  • /homez.52/creak é, na verdade, um link simbólico para /home/creak
  • Eu posso cd em todos os diretórios comuns do Linux ( /bin , /usr , /home , ..) mas cada vez ls me dá este erro: ls: cannot open directory .: Permission denied
  • posso procurar todos os meus arquivos em /homez.52/creak e /home/creak

Como eles conseguiram fazer isso? chroot? ACL?

Obrigado

    
por Creak 16.08.2015 / 23:24

2 respostas

4

Em um ambiente de hospedagem na Web compartilhado, há alguns problemas que você precisa resolver logo de cara.

Em relação às permissões de diretório e somente poder acessar seus arquivos: o que você quer fazer é configurar as permissões do diretório home de forma que o grupo "outros" não tenha permissão alguma. Lembre-se que a permissão eXecute é necessária para o cd nos diretórios, mas isso por si só não permitirá que você leia o conteúdo deles. Portanto, / home deve ser de propriedade do root e ter rwxr-x - x, assim os usuários podem apenas "às cegas" ir para sua pasta de casa, mas não têm uma olhada ao redor e saber quantos usuários estão em seu sistema. Seria algo parecido com isto (data, tamanho etc omitido para maior clareza):

# ls -la /home
drwxr-x--x root root .
drwxr-xr-x root root ..
drwxr-x--- usr1 usr1 usr1
drwxr-x--- usr2 usr2 usr2
...

Se você realmente não quiser que os usuários possam ler o conteúdo de diretórios como /bin , etc., simplesmente remova o bit de permissão "read" para o grupo "outros". Isso não afetará sua capacidade de usar os binários contidos, desde que conheçam a rota completa antecipadamente.

Para acesso SSH e FTP, se você configurar as permissões do sistema de arquivos corretamente, qualquer implementação SSH ou FTP decente já estará segura. Eu recomendo o vsftpd para FTP, é claro, o OpenSSH para SSH, mas não significa que eles sejam as únicas opções corretas disponíveis. Lembre-se de ajustar as opções de configuração para esses serviços (em particular, desabilitar o login de root através do SSH, provavelmente proibir o login de senha para qualquer pessoa com capacidade para sudo, etc.)

A parte complicada é configurar seu servidor da Web corretamente, especialmente se você tiver que executar scripts CGI para sites dinâmicos. Todo mundo e sua avó querem PHP hoje em dia, e você realmente não pode ter /home/dumbuser/public_html/php_shell.php rodando como o mesmo usuário que gerou seu Apache / Nginx, certo?

Uma possível solução aqui, se você estiver executando o servidor web Apache, é usar a suexec módulo , que terá seu script CGI executado como o usuário que possui o arquivo executável (pense bit setuid). Para permitir o acesso ao servidor HTTP para os arquivos reais, considere adicionar o usuário do servidor é executado como (típico. www-data ) para cada grupo de usuários no sistema ( "cada grupo de usuários", significando cada usuário que está usando seu ambiente compartilhado, nem todos conta de usuário no sistema).

Note que isto é apenas coçando a superfície de tudo o que deve ser feito para configurar e fortalecer adequadamente um servidor compartilhado. Os arquivos de configuração para cada serviço em execução devem ser completamente compreendidos e você provavelmente precisará modificá-los para atender às suas necessidades. Em particular, você provavelmente terá que passar uma boa semana lendo as opções de configuração do seu servidor web e testando-o em um ambiente de desenvolvimento / teste.

    
por 14.04.2016 / 11:23
1

Se você não tiver r permissão para um diretório, mas somente x permission, não será possível "varrer" o diretório, mas poderá acessar qualquer arquivo nele que você saiba o nome.

Se você ls -ld /bin , poderá ver a configuração do modo como drwxr-x--x para ver que o "outro" de /bin é capaz de usar programas, como /bin/ls , mas não de acesso (ver ) o diretório em uma varredura.

Entre os usuários, ou seja, os diretórios /home/* , também é possível descartar a permissão x para proibir o acesso cruzado completamente.

    
por 11.04.2016 / 13:02