chroot (Change Root)
O utilitário
chroot é usado para enjaular um daemon dentro de uma estrutura restrita. Tu podes usá-lo para isolar um serviço do outro, desta forma, um problema de segurança em um pacote de software específico, não interfere em todo o servidor.
O chroot é praticamente um sistema dentro de outro. Ao criar o chroot, o sistema somente transfere os arquivos básicos, sendo que os programas e os pacotes de atualizações deverão ser novamente configurados dentro do chroot. Por exemplo, caso tu tenhas o Vim instalado no sistema real e quiser ele no chroot, deverá instalá-lo novamente. Isso acontece com os outros programas também.
Crie a pasta dentro do diretório
/var, de preferência, ou em algum diretório onde tenha espaço suficiente, pois os programas serão instalados dentro do chroot que estará nessa pasta e, logicamente, a tendência dela é crescer.
Em outro artigo meu sobre chroot com o Apache e o BIND, teve um cara reclamando nos comentários que faltou instalar o tal "jaula", sendo que "jaula" era o nome do diretório criado para o chroot, pois a instalação foi toda feita manualmente. Pois bem, agora vamos instalar o tal "jaula", só que o tal "jaula" se chama
Debootstrap, que é uma ferramenta que permite instalar a base de um sistema Debian num subdiretório de outro sistema já instalado.
Instalando o tal "jaula" e os pacotes requeridos:
# aptitude install binutils debootstrap
Criando o local:
# mkdir /var/chroot #Tu podes dar o nome que quiser, eu coloquei chroot para fins didáticos.
Construindo o chroot:
# debootstrap wheezy /var/chroot
Deixe ele fazer os "parangolés" dele e aguarde terminar.
Configurando o
/etc/fstab:
# vim /etc/fstab #Usei o Vim, tu uses teu editor de texto preferido.
Acrescente no final:
/dev /var/chroot/dev auto bind 0 0 #Aconselho a usar a tecla tab entre os espaços.
/dev/pts /var/chroot/dev/pts auto bind 0 0
/proc /var/chroot/proc auto bind 0 0
Salve e saia. Reinicie:
# shutdown -r now
Entrando no chroot e prevenindo alguns daemons de serem executados sem permissão:
# chroot /var/chroot
# cat > ./usr/sbin/policy-rc.d << EOF # Vá dando enter após cada linha.
#!/bin/sh
exit 101
EOF
# chmod a+x ./usr/sbin/policy-rc.d
Vários pacotes dependem do ischroot, porém, o comando ischroot não reconhece que ele está sendo executado como chroot. Para consertar isso, vamos substituir o ischroot pelo comando
/bin/true:
# dpkg-divert --divert /usr/bin/ischroot.debianutils --rename /usr/bin/ischroot
# ln -s /bin/true /usr/bin/ischroot # criando o link simbólico.
Instalando alguns pacotes necessários:
# aptitude install vim vim-doc #Opcional; lembre-se que estamos dentro do chroot e que é praticamente um sistema dentro do outro, então teremos que instalar novamente os pacotes que queremos; porém, é boa prática instalar somente os pacotes necessários para não quebrar a segurança.
# aptitude install locate less #Opcional, mas é interessante ter o locate e o less instalados.
# aptitude install locales #O locales se faz necessário para ajustar as configurações de encode.
# locale-gen pt_BR pt_BR.UTF-8 en_US en_US.UTF-8 #Gerando o encode.
# dpkg-reconfigure locales #Configurando.
Na janela que aparecer, usando a barra de espaços marque:
pt_BR,
pt_BR.UTF-8,
en_US,
en_US.UTF-8. No locale predefinido, marque:
pt_BR.UTF-8. Use as setas de direção e a tecla
Tab.
Entrando no arquivo
/root/.bashrc e mudando o prompt de comando para saber quando se está no terminal do chroot e evitar confusão:
# vim /root/.bashrc
Adicione a seguinte linha ao final do arquivo:
export PS1='chroot:\h:\w:$ ' #onde chroot tu coloca o que tu quiser; deixe um espaço em branco entre $ e o último apóstrofo.
Salvar e sair do arquivo. Saindo do chroot:
# exit
Entrando no chroot para verificar a mudança ocorrida no prompt:
# chroot /var/chroot
Mudando a senha de root do chroot:
# passwd root
Configurando o
/etc/fastab no chroot:
# vim /etc/fstab
Adicione a seguinte linha:
none /dev/pts devpts defaults 0 0 #Novamente use a tecla tab.
Salvar e sair. Verificando:
# mount -a
Deverá aparecer:
mount: according to mtab, devpts is already mounted on /dev/pts
E assim, finalizamos a contento a instalação do chroot. Aconselho a acrescentar no
/etc/apt/sources.list do chroot os mesmos repositórios do sistema real.