Gentoo Logo

[ << ] [ < ] [ 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 ] [ > ] [ >> ]


Imprimir

View all

Atualizado 15 de dezembro de 2005

A versão original deste documento foi atualizada em 2 de abril de 2010

Resumo: Isole seus servidores.

Kim Nielsen
Autor

John P. Davis
Editor

Eric R. Stockbridge
Editor

Carl Anderson
Editor

Jorge Paulo
Editor

Sven Vermeulen
Editor

Benny Chuang
Editor

Sune Jeppesen
Editor

Tiemo Kieft
Editor

Zack Gilburd
Editor

Dan Margolis
Editor

Marcelo Góes
Tradutor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.