[ << ]
[ < ]
[ Início ]
[ > ]
[ >> ]
11. Fazendo chroot e servidores virtuais
Conteúdo:
11.a. Fazendo chroot
Fazer chroot de um serviço é um jeito de limitar o ambiente de um serviço (ou um
usuário) a só acessar o que deve e não obter acesso (ou informações) que podem
levar a acesso de administrador (root). Ao rodar um serviço como um usuário
diferente de root (nobody, apache, named), um
indivíduo malicioso só pode ter acesso a arquivos com a permissão do usuário.
Isto significa que um indivíduo malicioso não pode obter acesso de root,
mesmo se os serviços tiverem uma falha de segurança.
Alguns serviços como o pure-ftpd e bind têm funções de chroot, e
outros serviços não têm. Se o serviço suportá-lo, use-o. Caso contrário, você
terá que descobrir como criar sua própria função de chroot. Vamos ver como criar
um chroot e para uma compreensão básica de como o chroot funciona, nós iremos
testá-lo com o bash (jeito fácil de aprender).
Crie o diretório /chroot com mkdir /chroot. E descubra com
que bibliotecas dinâmicas que o bash é compilado (se for compilado com
-static este passo não é necessário):
O seguinte comando irá criar uma lista de bibliotecas usadas pelo bash.
Listagem de código 1.1: Obtendo uma lista de bibliotecas usadas |
# ldd /bin/bash
libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
libdl.so.2 => /lib/libdl.so.2 (0x40060000)
libc.so.6 => /lib/libc.so.6 (0x40063000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
Agora, vamos criar o ambiente para o bash.
Listagem de código 1.2: Criando ambiente de chroot para o bash |
# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib
|
Copie os arquivos usados pelo bash (/lib) para o
lib chrootado e copie o comando de bash para o diretório
bin chrootado. Isto irá criar o exato mesmo ambiente, só que com
menos funcionalidades. Depois de copiar, teste-o:
chroot /chroot/bash /bin/bash. Se você receber um prompt dizendo
/, ele está funcionando! Caso contrário ele dirá que algum arquivo
está faltando. Algumas bibliotecas compartilhadas dependem uma da outra.
Você perceberá que dentro do chroot nada funciona, fora talvez o echo.
Isto é porque não temos outros comandos fora do ambiente de chroot fora bash, e
o echo é uma função interna.
Este é basicamente o mesmo jeito que você criaria um serviço chrootado. A única
diferença é que os serviços às vezes dependem de dispositivos e arquivos de
configuração em /etc. Simplesmente copie-os (dispositivos podem ser
copiados com cp -a) para o ambiente de chroot, edite o script de init
para usar chroot antes de executar. Pode ser difícil descobrir que serviços e
arquivos de configuração um serviço precisa. Aqui é onde o comando strace
torna-se útil. Inicie o serviço com /usr/bin/strace bash e procure por
open, read, stat e talvez connect. Isto dará a você uma melhor idéia de que
arquivos copiar. Mas na maioria dos casos, só copiar o arquivo passwd (edite a
cópia e remova usuários que não têm nada em relação ao serviço),
/dev/zero, /dev/log e /dev/random.
11.b. User Mode Linux
Outro jeito de criar um ambiente mais seguro é rodando uma máquina virtual. Uma
máquina virtual, como o nome implica, é o processo que roda em cima de seu
sistema operacional real fornecendo um hardware e ambiente de sistema
operacional que parece ser sua própria máquina individual. O benefício de
segurança é que se o servidor rodando a máquina virtual for comprometido, só o
servidor virtual é afetado e não a instalação mestre.
Para mais informações sobre como configurar o User Mode Linux consulte o Guia de User Mode Linux.
[ << ]
[ < ]
[ Início ]
[ > ]
[ >> ]
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|