Jail com VIMAGE carregando automaticamente no boot.
Posted by gondim | Posted in FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 09-08-2012
Tags:jail, vimage, vnet
0
Pois é pessoal, depois de penar um pouco com jails aqui em meu ambiente de testes consegui fazer uma configuração bem legal usando o VIMAGE. O que matava usando o vimage era que a jail não carregava os serviços e configurações automaticamente no boot porque o script /etc/rc.d/jail não tem ainda um suporte oficial para vnet. Mas futucando na Internet achei um patch para isso e que funciona tanto no FreeBSD 8 quanto no FreeBSD 9. Bem eu testei no FreeBSD 9-PRERELEASE. Abaixo vou dar um exemplo de como fazer essa configuração:
Primeiro você precisa compilar o seu kernel com suporte ao VIMAGE. Adicione a seguinte linha ao seu kernel, compile e instale ele:
options VIMAGE
Vamos agora baixar e aplicar o patch para o /etc/rc.d/jail de acordo com o seu FreeBSD:
# cd /etc/rc.d
# patch < (local_onde_baixou_patch)/jail_rc9.patch
Após aplicar o patch o seu script /etc/rc.d/jail terá suporte ao vnet que precisamos e assim carregar automaticamente nossas jails no /etc/rc.conf.
Depois de iniciar com o seu novo kernel, vamos montar a estrutura de uma nova jail para vermos como isso vai funcionar. Darei o nome da minha jail de “mail”. Vamos dizer que eu quisesse montar um servidor de correio nessa jail.
# mkdir -p /usr/jail/mail
Para cada nova jail a estrutura estaria dentro de /usr/jail. Se você já compilou e instalou seu sistema FreeBSD, a coisa fica mais rápida fazendo assim:
# cd /usr/src
# make installworld DESTDIR=/usr/jail/mail
# make distribution DESTDIR=/usr/jail/mail
Agora vamos preparar o ambiente do servidor:
# mkdir -p /etc/jails/fstabs
# echo “/usr/src /usr/jail/mail/usr/src nullfs rw 0 0” > /etc/jails/fstabs/mail
# echo “/usr/ports /usr/jail/mail/usr/ports nullfs rw 0 0” >> /etc/jails/fstabs/mail
No nosso /etc/rc.conf ficará essa configuração:
hostname=”virtsrv.localdomain.net”
keymap=”br275.iso.acc.kbd”
cloned_interfaces=”bridge0 epair0″
ifconfig_bridge0=”inet 192.168.8.34 netmask 255.255.255.0 addm em0 up”
ifconfig_em0=”up”
ifconfig_epair0a=”up”
defaultrouter=”192.168.8.253″
sshd_enable=”YES”
# Set dumpdev to “AUTO” to enable crash dumps, “NO” to disable
dumpdev=”NO”jail_enable=”YES”
jail_v2_enable=”YES”
jail_list=””
jail_set_hostname_allow=”YES”
jail_socket_unixiproute_only=”YES”
jail_sysvipc_allow=”YES”
jail_list=”$jail_list mail”
jail_mail_name=”mail”
jail_mail_hostname=”mail.teste.com.br”
jail_mail_devfs_enable=”YES”
jail_mail_rootdir=”/usr/jail/mail”
jail_mail_mount_enable=”YES”
jail_mail_fstab=”/etc/jails/fstabs/mail”
jail_mail_vnet_enable=”YES”jail_mail_exec_prestart0=”mount -t devfs devfs /usr/jail/mail/dev”
jail_mail_exec_prestart1=”ifconfig bridge0 addm epair0a”
jail_mail_exec_earlypoststart0=”ifconfig epair0b vnet mail”
jail_mail_exec_afterstart0=”ifconfig lo0 127.0.0.1″
jail_mail_exec_afterstart1=”ifconfig epair0b 192.168.8.173 netmask 255.255.255.0 up”
jail_mail_exec_afterstart2=”route add default 192.168.8.253″
jail_mail_exec_afterstart3=”/bin/sh /etc/rc”
jail_mail_exec_poststop0=”ifconfig bridge0 deletem epair0a”
Na nossa configuração acima o IP do servidor das jails será o 192.168.8.34 e o IP que estamos dando para a jail será 192.168.8.173. Use os IPs que melhor atender a sua necessidade. 🙂
Antes de iniciar a nossa jail de exemplo precisamos prepará-la para uso:
Adicione as linhas abaixo em /usr/jail/mail/etc/rc.conf:
hostname=”mail.teste.com.br”
network_interfaces=””
sshd_enable=”YES”
Por último vamos criar um fstab fazio:
# touch /usr/jail/mail/etc/fstab
# mkdir /usr/jail/mail/usr/ports
Agora podemos iniciar nossa jail fazendo:
#/etc/rc.d/jail start mail
Após carregar a jail, podemos entrar nela via jexec e configurar o time zone com tzsetup, colocar senha no root e criar novos users para o sistema. Para fazer isso:
# jls
JID IP Address Hostname Path
1 – mail.teste.com.br /usr/jail/mail# jexec 1 sh
# passwd root
# tzsetup
# adduser
# exit
Bem é isso aí pessoal. :
Muitas coisas desse artigo foram baseadas nesse aqui.