Problemas instáveis de segurança chroot do Debian

2

Esta página descreve como você pode usar o utilitário debootstrap para instalar um sistema Debian instável / sid básico em um sistema Linux existente. máquina. A nova instalação está acessível usando chroot .

Ao fazer isso, quais problemas de segurança devem ser mantidos em mente? Por exemplo, o que precisa ser feito para impedir que os processos de background / startup iniciem no novo chroot ou interfiram com o sistema principal?

    
por jrdioko 24.07.2011 / 02:29

1 resposta

2

O Chroot sozinho não traz nenhum tipo de segurança. Em outras palavras, trate um chroot como se os processos chrooted pudessem acessar tudo no sistema - porque geralmente eles o fazem. Veja também chroot "jail" - o que é e como posso usá-lo? - note em particular Observação de Michael Mrozek

"chroot jail" is a misnomer that should really die out

O Chroot é um método de contenção somente para arquivos, e é mais conveniente do que um recurso de segurança. Se você tiver um processo que permita que usuários não confiáveis especifiquem nomes de arquivos (um servidor FTP, por exemplo), o chroot é uma maneira de garantir que os usuários não possam fazer referência direta a arquivos fora do chroot. Você deve certificar-se de que o chroot não contenha nenhum arquivo que possa levar a uma fuga; em particular:

  • Coloque apenas o mínimo de arquivos de dispositivos ( /dev/* ) no chroot. Não vincule-mount /dev , por exemplo, você não quer bloquear dispositivos lá. Coloque apenas dispositivos tty e os dispositivos de dados diversos ( /dev/null , /dev/zero , /dev/urandom ,…).
  • Não monte /proc . Essa é uma grande restrição, mas /proc expõe muitas informações por design. Por exemplo, se você tem um processo 1234 está sendo executado como um determinado usuário fora do chroot, então qualquer processo (chrooted ou não) pode acessar o diretório raiz como /proc/1234/root .

Um processo chrooted ainda pode enviar sinais para processos não-chrooted, abrir sockets de rede, acessar memória compartilhada (no Linux, atualmente, somente se /dev/shm estiver disponível), etc. Se você estiver usando o chroot para contenção, execute qualquer processo fora do chroot como um usuário que esteja executando processos dentro do chroot.

O Chroot continua sendo uma boa maneira de executa uma versão diferente do mesmo sistema operacional (com o mesmo kernel) ¹. Quando há preocupações de segurança, existem ferramentas melhores hoje em dia, em particular FreeBSD jails e Cgroups do Linux e LXC . Comparado com os velhos tempos, a virtualização completa (VirtualBox, KVM,…) também se tornou uma opção mais viável mesmo em hardware de commodity.

¹ A propósito, na minha resposta lá eu explico como não iniciar serviços dentro de um chroot Debian. Isso não é uma preocupação de segurança e há uma suposição de que os serviços são cooperativos e corretamente redigidos.

    
por 24.07.2011 / 03:04