
Eu ouvi/li muito sobre o chroot jail no Linux, mas nunca o usei (eu uso o Fedora no dia a dia), então o que é uma "prisão" chroot? Quando e por que devo usá-lo/não usá-lo e há mais alguma coisa que eu deva saber? Como eu faria para criar um?
Responder1
Uma prisão chroot é uma forma de isolar um processo e seus filhos do resto do sistema. Ele só deve ser usado para processos que não são executados como root, pois os usuários root podem sair da prisão com muita facilidade.
A ideia é que você crie uma árvore de diretórios onde copie ou vincule todos os arquivos do sistema necessários para a execução de um processo. Você então usa a chroot()
chamada do sistema para alterar o diretório raiz para estar na base desta nova árvore e iniciar o processo em execução nesse ambiente chroot. Como ele não pode realmente fazer referência a caminhos fora da raiz modificada, ele não pode executar operações (leitura/gravação, etc.) maliciosamente nesses locais.
No Linux, usar montagens de ligação é uma ótima maneira de preencher a árvore chroot. Usando isso, você pode extrair pastas como /lib
e /usr/lib
sem extrair /usr
, por exemplo. Basta vincular as árvores de diretórios desejadas aos diretórios criados no diretório jail.
Responder2
"chroot jail" é um nome impróprio que deveria realmente desaparecer, mas as pessoas continuam usando-o. chroot
é uma ferramenta que permite simular um diretório em seu sistema de arquivos como a raiz do sistema de arquivos. Isso significa que você pode ter uma estrutura de pastas como:
-- foo
-- bar
-- baz
-- bazz
Se você chroot foo
e fizer ls /
, você verá:
-- bar
-- baz
No que ls
diz respeito (e a quaisquer outras ferramentas que você execute), esses são os únicos diretórios no sistema de arquivos. A razão pela qual “prisão” é um nome impróprio chroot
não se destina aforçaum programa para permanecer naquele sistema de arquivos simulado; um programa que sabe que está em uma "prisão" chroot pode escapar facilmente, então você não deve usar chroot
como medida de segurança para evitar que um programa modifique arquivos fora do seu sistema de arquivos simulado
Responder3
Basicamente você está apenas alterando o diretório raiz do seu ambiente. Então
/
torna-se
/some-jail/ (or whatever directory you want)
Quando um aplicativo acessa / eles receberão /some-jail/. Além disso, o aplicativo não pode sair de /some-jail/ então você sabe que ele não acessará mais nada em sua máquina. É uma maneira muito simples de dizer 'ei, você só pode acessar essas coisas que estou lhe dando e não pode acessar mais nada no sistema.
Responder4
chroot é facilmente entendido como um ambiente virtual de termo mais moderno. O processo obtém um novo diretório raiz virtual para estabelecer a visibilidade do caminho. Esta é principalmente uma maneira simples e conveniente de controlar quais arquivos e bibliotecas podem ser referenciados pelo processo. É muito útil para isolar coisas que possam ter versões diferentes disponíveis no sistema de arquivos real.
Você também pode pensar nisso como uma espécie de filtro sobre o que está visível no sistema de arquivos.
É importante considerar também a alteração do diretório de trabalho atual após o chroot para evitar uma visualização inesperada do sistema de arquivos.
Uma coisa que é enganosa é o termo prisão. Historicamente, tem havido uso de chroot para simular o que o FreeBSD chama de prisão, outros podem chamar de sandbox. Fazer isso requer também a auto-redução dos privilégios do processo. Não é um ótimo modelo de segurança.
Um caso de uso comum é na compilação de software que precisa fazer referência a um conjunto de ferramentas específico ou a um conjunto de bibliotecas, arquivos e ferramentas que são um subconjunto do que o sistema realmente possui.