
Gostaria de obter uma resposta definitiva sobre a razão pela qual esta prática deve ser seguida com serviços que estão expostos a redes potencialmente hostis (ou seja, a Internet). Pelo que entendi, existe um método para sair de uma prisão chroot, então se não há valor real para esta medida de segurança, então por que algumas instalações ainda a buscam?
Responder1
Você nunca deve considerar um chroot um recurso de segurança completo. Embora isso torne o ataque mais difícil, se você conseguir obter algum controle dentro do chroot, é bastante fácil sair dele. Existe um método que envolve fazer chroot para um diretório pai (..) Mais informaçõesaqui. A razão pela qual o chroot oferece algum benefício de segurança é que muitos dos aplicativos que um hacker poderia esperar ter por perto simplesmente não estarão lá. Se pudesse escolher entre algo sendo chroot ou não, eu escolheria a opção chroot.
Uma abordagem melhor seria algo como a prisão do BSD, as zonas do Solaris ou alguma tecnologia de virtualização como KVM ou Xen. Essas abordagens adotam a mesma ideia de compartimentalização do chroot e as tornam mais fortes. Você também pode olhar para algo como SELinux, mas isso é um pouco mais complicado e, portanto, sujeito a erros.
Responder2
Pelo que entendi, existe um método para sair de uma prisão chroot (...) então por que algumas instalações ainda o perseguem?
Você pode dizer a mesma coisa sobre senhas. A questão é que muitas vezes assegurar alguns recursos significa colocar tantos obstáculos no caminho do intruso que o forçam a desistir antes de atingir o alvo. Você não pode confiar em um único método para proteger determinado recurso. Além disso, o chroot oferece mais controle sobre o aplicativo que você está executando. Você pode restringir os recursos do sistema de arquivos aos quais este aplicativo tem acesso.
Responder3
Sim.
- Se o seu daemon ou o que quer que esteja fornecendo o serviço não seja executado como root, até mesmo uma falha nesse daemon será isolada do resto do sistema.
- Se o seu sistema operacional puder restringir operações que podem ser realizadas durante o chroot(), é ainda melhor. grsec-patches para Linux, por exemplo, podem remover a capacidade do usuário root dentro de um chroot de sair ou criar /dev-nodes dentro do chroot
Se, no entanto, você obtiver um bug de kernel explorável (ou apenas um buraco na raiz, se não for grsec ou prisão BSD) dentro do chroot, então todo o sistema será de propriedade. Não é assim se você executa um virtualizador real (como o VMWare, mas NÃO as cadeias BSD. Eles não ajudam, pois usam o mesmo kernel para todos os "sistemas").
Então sim, adiciona uma camada de segurança, se usado corretamente.
Responder4
Acho que o chroots é muito complicado e nunca consegui instalar um. Alguém poderia argumentar que se eu tivesse conseguido fazer isso, teria grande interesse nisso, mas ainda não o fiz.
Acho que isolar seus serviços em máquinas virtuais (no Xen é claro, mas o VMWare também funcionará se você insistir :-P ) é uma ideia muito melhor considerando o poder de computação disponível atualmente. As máquinas virtuais também têm a enorme vantagem de serem realmente fáceis de fazer backup/migrar, o que os chroots não possuem. Você também possui uma interface abrangente para gerenciar VMs, que você definitivamente não possui para chroots.