Configure corretamente os hosts virtuais apache com vários usuários

15

Agradecemos antecipadamente por qualquer ajuda que você possa fornecer. Eu aprendi sozinho usando linux (ubuntu), apache, hosts virtuais e alguns bits no que diz respeito à segurança, embora ainda não tenha reunido tudo isso perfeitamente.

Também aprendi da maneira mais difícil com os erros cometidos no passado no que diz respeito à não configuração correta de contas de usuário e sites / virtualhosts. Eu ssh no servidor como root (eu sei, muito ruim) e criei todos os hosts e arquivos virtuais manualmente, sendo todos de propriedade do root. Eu tive uma versão antiga do código de spam malicioso e explorado pelo joomla inserida em todos os meus outros hosts virtuais.

Estou no processo de mudar para um novo servidor e estou procurando as etapas corretas a seguir no que diz respeito à configuração de hosts virtuais e contas de usuários que podem acessá-los. Como usamos software de terceiros, em uma ocasião precisamos de alguém para entrar no site para investigar os arquivos do site.

Nosso servidor atual é a versão 10.04, no entanto, o novo servidor é a versão 12.04. Todos os arquivos do site são configurados em

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

etc

Em suma, acho que é isso que estou procurando.

  1. Como configuro corretamente um host e usuário virtuais, para que ele tenha acesso apenas aos seus próprios arquivos e não a qualquer outro host virtual no servidor. Por exemplo, se esse site for explorado com código malicioso, não poderá infectar outros sites no servidor

  2. Como eu configuraria os usuários para que eles possam somente acessar o ftp nos arquivos fornecidos e não acessar nenhum dos outros sites.

Como mencionado anteriormente, existem vários artigos detalhando como executar qualquer uma dessas etapas, mas nada que os reúne perfeitamente.

Realmente aprecio a ajuda que qualquer pessoa pode oferecer. Por favor, não hesite em pedir qualquer informação adicional que possa ser necessária para aconselhar. Atualmente, estou seguindo os tutoriais para configurar o chroot, no entanto, receio não estar fazendo isso corretamente, pois percebi algumas inconsistências ao longo do caminho. Também estou investigando o jailkit.

user249729
fonte

Respostas:

6

Como a pergunta é o principal resultado da pesquisa no Google, quando solicitado "usuário separado do host virtual do apache", gostaria de fornecer uma resposta mais elaborada com base nessa resposta . Minha resposta não cobre o caso de uso de PHP e CGI (você usaria suPHP). Ele se concentra no PHP quando usado como um módulo apache.

Você pode usar o módulo apache apache2-mpm-itk . Está disponível para a versão atual do apache 2.4. Vem com a diretiva AssignUserID. Esta diretiva define o usuário e o grupo com o qual a solicitação de host virtual é tratada. Este é um exemplo da configuração do site apache com a qual acabei:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

Obviamente, isso só melhora a segurança, desde que os DocumentRoots individuais sejam de propriedade de seus respectivos usuários e não sejam acessíveis ao grupo. Para maior segurança relacionada ao PHP, os scripts são presos na DocumentRootrestrição open_basedir. Quanto ao acesso ao arquivo de back-end, prefiro SFTP com chroot .

Nota: o apache2-mpm-itk atualmente é incompatível com o módulo http2 do Apache.

Hermann
fonte
1

Não considero que seja uma resposta à sua pergunta. Mas como ainda não posso comentar, tenho que escrever na área "resposta". Como faço sazonalmente o gerenciamento da web, uma maneira de testar e experimentar as coisas de maneira segura é configurar um ambiente de teste em uma máquina virtual (ou seja, VirtualBox) ou em um computador "antigo". Um dos problemas mais comuns dos administradores de host da Web novatos é entender como os programas de servidores da Web funcionam. Nesse caso, presumo que você precise entender como o Apache funciona e pelo menos entender os arquivos de configuração. Acho que o Webmin é uma ferramenta muito útil - para um iniciante - para gerenciar o Apache e outros serviços. Você precisa gastar algum tempo para experimentar as coisas no ambiente de teste, para que as coisas se tornem mais claras para você.

Voltando à sua pergunta, acho que a resposta pode muito bem ser um artigo tutorial ou um pequeno livro. Confira estes artigos para começar:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/

biocibernético
fonte
Obrigado biocyberman. Estas são basicamente as etapas básicas que sigo e estou bastante familiarizada. A única diferença é que eu não escolhi cada site para um usuário diferente, o que é algo que vou tentar a seguir; no entanto, isso protege as pastas virtualhosts umas das outras? O Jailkit parece fazer parte da solução, mas não tenho 100% de certeza. Eu joguei com o webmin no passado, então o revisitarei para ver se ele ajudará com alguma das perguntas que tenho.
user249729