O que é o ezjail ?
Ezjail é um framework de administração de jail(8) no FreeBSD, com ele você pode gerenciar sistemas enjaulados de forma bem fácil. Além disso ele tem a vantagem de organizar pra você todo o esquema de diretorio e ainda compartilha o sistema base entre as “maquinas” virtualizadas, fazendo com que isso você econimize espaço no disco, desta forma, uma nova jail zerada pode conter só 2mb de espaço.
O que é o ezjail ?
Ezjail é um framework de administração de jail(8) no FreeBSD, com ele você pode gerenciar sistemas enjaulados de forma bem fácil. Além disso ele tem a vantagem de organizar pra você todo o esquema de diretório e ainda compartilha o sistema base entre as “maquinas” virtualizadas, fazendo com que isso você economize espaço no disco, desta forma, uma nova jail zerada pode conter só 2mb de espaço.
Algumas vantagens de utilizar ezjail:
- Você salva espaço em disco, inodes e até memória, já que os binários provém de uma única copia para todas as Jails.
- Você pode atualizar todas as Jails de uma única vez.
- Se uma Jail for invadida, o invasor não conseguira introduzir um rootkit, pois o sistema básico fica montado como somente leitura na Jail.
- O ezjail é totalmente escrito em sh, não é necessário instalar nenhum outro script ou linguagem no FreeBSD.
FONTE: http://erdgeist.org/arts/software/ezjail/
Estarei me baseando este tutorial em um FreeBSD 6.2 e que seus fontes (/usr/src) estejam atualizados, no meu caso eu atualizei todo o sistema para STABLE, mas você pode manter seu sistema em RELEASE sem problemas.
Instalando o ezjail
A instalação é feita através do ports, então, basta executar os comandos abaixo:
# cd /usr/ports/sysutils/ezjail # make install clean
Usando o ezjail
Configure o arquivo de configuração do ezjail para suas necessidades, normalmente é interessante deixar o padrão, não descomentado nada. # cd /usr/local/etc # cp ezjail.conf.sample ezjail.conf
Talvez você queira alterar o caminho das suas Jails, o padrão é /usr/jails, para isso basta alterar a opção ezjail_jaildir=/usr/jails com o caminho que você desejar.
Coloque o ezjail na inicialização do sistema # echo 'ezjail_enable="YES"' >> /etc/rc.conf
Feito isso é necessário criar o sistema base do ezjail, para isso, você deve utilizar a opção update do ezjail-admin. Se você já estiver com o seu '/usr/src' compilado e certinho, faça um: # ezjail-admin update -i
Com isso ele vai criar a estrutura básica das Jails no diretório /usr/jails, copiar toda a estrutura base do sistema do /usr/src para basejail e gerar algumas configs.
Viu como é fácil, ele já fez um monte de coisas que você teria que ler todo o man do jail para entender e fazer.
Você já estará pronto para criar suas jails.
Criando uma Jail com o ezjail
Para criar uma Jail é muito facil, basta usar a opção create, vamos à um exemplo:
Vamos criar uma Jail com IP 192.168.10.20, então vamos seguir os passos:
- Crie um alias do ip desejado no sistema
# ifconfig rl0 192.168.10.20 netmask 255.255.255.0 alias Para ficar mais conviniente, coloque na inicialização do sistema:
# echo 'ifconfig_rl0_alias0="inet 192.168.10.20 netmask 255.255.255.0"' >> /etc/rc.conf
- Agora crie a Jail através do ezjail
# ezjail-admin create nomedamaquina.dominio.com.br 192.168.10.20
Pronto !!! sua Jail esta criada, com 2 passos você criou uma Jail nova, para inicia-la, basta executar: # /usr/local/etc/rc.d/ezjail.sh start nomedamaquina.dominio.com.br
Para acessa-la pela maquina BASE, faça assim: # jail /usr/jails/nomedamaquina.dominio.com.br nomedamaquina.dominio.com.br 192.168.10.20 /bin/csh
Muito fácil não ?!
Outra característica muito legal do ezjail é usar imagens criptografas ou não para criar sua Jail, com isso você pode limitar uso de espaço na jail, veja um exemplo de como ficaria uma Jail com 200MB: # ezjail-admin create -i -c bde -s 200M nomedamaquina.dominio.com.br 192.168.10.20
Ele vai pedir a senha de criptografia e vai criar uma imagem de 200M para instalar a Jail.
Para acessar, faça do método normal, a única diferença é que ele vai pedir a senha de criptografia.
Dica:
Nosso amigo Alex Moura, frequentador da FUG nos lembrou muito bem que não a necessidade de fazer o “xunxo” que descrevi abaixo, conforme ele comentou na FUG o ezjail já faz o update do Ports, conforme ele mesmo descreve: Instalar uma árvore de ports para as jails (na basejail) com: # ezjail-admin install -p Atualizar a árvore de ports para as jails (pode ser feito com as jails em execução): # ezjail-admin update -P Pra poder manter o ports entre o sistema BASE e as jails em comum, você pode fazer o seguinte: mover o /usr/ports do FreeBSD para /usr/jails/basejail/usr/ports e criar um link simbólico de volta no FreeBSD:
# cd /usr/ports # mkdir /usr/jails/basejail/usr/ports # mv * /usr/jails/basejail/usr/ports # cd /usr # rmdir ports # ln -s /usr/jails/basejail/usr/ports
Dessa forma, todas as Jails vão ter o ports em comum, sendo assim, basta um portsnap fetch update no FreeBSD BASE para que todas as Jails fiquem com seu ports atualizado. FAQ
P: Como faço para iniciar as Jails ?
R: com o comando # /usr/local/etc/rc.d/ezjail.sh start, sem o nome da maquina no final ele inicializará todas.
P: Como faço para desabilitar uma Jail ?
R: com o parâmetro -r norun do comando # ezjail-admin config -r norun nomedajail, para voltar a habilitar, faça # ezjail-admin -r run nomedajail
P: Removi um Jail mas o arquivos continuaram no /usr/jails, é um BUG ?
R: Não, é segurança, imagine que você fez por “cagada”, basta voltar a Jail com o create com o parâmetro -x que diz que a estrutura já existe, mas se tiver certeza que quer apagar a Jail mesmo, coloque um -w no delete.
É isso pessoal !!
Qualquer coisa, estamos ai !
Luiz Gustavo -
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
http://wiki.luizgustavo.pro.br |