FreeBSD Jail

Fórumok

Már 3 napja próbálok összehozni egy működő freebsd-n egy jailt, de bevallom férfiasan nem értem ezt az egész jail-esdit.
A létrehozást így csinálom:

JAIL="/home/jail/osiris
mkdir -p $JAIL
cd /usr/src
make world DESTDIR=$JAIL -DNOCLEAN
cd etc
make distribution DESTDIR=$JAIL NO_MAKEDEV=yes
cd $JAIL/dev
mount_devfs dev $JAIL/dev
mount -t procfs proc $JAIL/proc
cd $JAIL
ln -sf dev/null kernel
touch $JAIL/etc/fstab
grep nameserver /etc/resolv.conf > $JAIL/etc/resolv.conf
echo "sendmail_enable=\"NONE\"" >> $JAIL/etc/rc.conf
echo "portmap_enable=\"NO\"" >> $JAIL/etc/rc.conf
echo "rpcbind_enable=\"NO\"" >> $JAIL/etc/rc.conf
echo "cron_enable=\"NO\"" >> $JAIL/etc/rc.conf
echo "syslogd_flags=\"-ss\"" >> $JAIL/etc/rc.conf
echo "sshd_enable=\"YES\"" >> $JAIL/etc/rc.conf

aztán ha ez megvan akkor
ifconfig rl0 inet alias 192.168.1.199/32 ( a host-é a 192.168.1.200)
mount_procfs procfs $JAIL/proc
mount_devfs devfs $JAIL/dev

majd:
jail /home/jail/osiris osiris 192.168.1.199 /bin/sh
itt beállítottam a root jelszavát, usereket, ssh-t stb.

végül:
jail /home/jail/osiris osiris 192.168.1.199 /bin/sh /etc/rc

A kérdéseim:

1. Menedzselni jail-t ssh-n kell/lehet csak?
2. Hogyan tudom a host rendszeren beállítani hogy automatikusan induljon a jail?
(mert ugye a host rendszerről kell az inet alias meg a mount stb. reboot után nem marad meg. irjam az rc.confba?)
3. Honnan látom a host rendszerről hogy fut e a jail?
4. Lehet-e csak a jail rendszert újraindítani?
5. Van-e ennél egyszerűbb módszer egy jail létrehozására?

Hozzászólások

0. cp /etc/localtime $JAIL/etc
1. igen
2. rc.conf
3. jls
4. # /etc/rc.d/jail start
# /etc/rc.d/jail stop
# /etc/rc.d/jail start jail_name
# /etc/rc.d/jail stop jail_name
5. tudomásom szerint nincs

Hát izé. Ott van rc.conf-ban a lehetőség a jailt indítani stb.

man jail
grep jail /etc/defaults/rc.conf
man jls
man jexec

Mindenek előtt: http://www.onlamp.com/pub/a/bsd/2003/09/04/jails.html

Annó találtam egy jailes linket a handbookban, de most sehol sem lelem. :(

A jailbe a procfs folosleges imho.

Én nemrég kezdtem el kísérletezni a portsban található ezjail-lel, ez különösen akkor jön jól, ha sok, egymástól nem túlságosan különböző jailt kell felhúzni. Előnye (persze adott esetben ez hátrány lehet), hogy igény szerint mount_nullfs-sel mountol ports és src fákat, így egy jail sokkal kevesebb helyet foglal.
Bővebben itt

Mi úgy csináljuk, hogy van egy jail.sh ami gyakorlatilag egy init script:


#!/bin/sh
case "$1" in
    start)
jail -u root /home/JAIL-3 acid.rain.hu 84.21.31.223 /initRC &
        ;;
esac

Az initRC scriptünk pedig igy néz ki:


#!/bin/sh
/bin/sh /etc/rc.d/syslogd start
/bin/sh /etc/rc.d/sshd start
/bin/sh /etc/rc.d/cron start
/bin/sh /usr/local/etc/rc.d/000.apache2libs.sh start
/bin/sh /usr/local/etc/rc.d/apache2.sh start
/bin/sh /usr/local/etc/rc.d/mysql-server.sh start
/bin/sh /usr/local/etc/rc.d/pure-ftpd.sh start
/usr/local/sbin/postfix start

while true ; do
    sleep 3600
done

Ez nem a standard freebsds megoldás, de eddig hiba nélkül igy megy 20 szerverünkön.
Jailt managelni pedig vagy sshn keresztül tudod, vagy jexec -el.
elöször jls el megnézed a jail számát
aztán pl.: jexec 1 csh.
Ezt azért preferálom mert pl w -vel nem látszik, hogy éppen te is turkálsz a gépen, nem úgy, mint ssh esetében.

Azt meg tudja valaki mondani, hogy ha portsban frissítek valamit a jail-en kívül, akkor a jail-en belüli változata is frissül? Tehát ha egy spamassassint frissítek, akkor a jail-es is frissül?