Erinevus lehekülje "FreeBSD jail" redaktsioonide vahel

Allikas: Kuutõrvaja
 
(Loodud jaili kasutamine)
 
(ei näidata 2 kasutaja 91 vahepealset redaktsiooni)
1. rida: 1. rida:
jail kiirelt ja mustalt
+
===Sissejuhatus===
  
 +
Jail on loogiliselt võttes virtuaalmasin, millest selle sees olevad programmid-kasutajad kuidagi välja reaalsesse süsteemi ei näe. Reaalselt on sellisest võimalusest kasu eelkõige erinevate kriitiliste rakenduste oma sandboxidesse surumiseks. Näiteks levinud on Apache panek oma jaili, et mõnes weebirakenduses ilmnev auk, mis annab ründajale apachei õigustes shelli, ei viiks automaatselt kogu süsteemi nägemiseni. Jaile kasutatakse laialt ka virtuaalserverite puhul, kus kliendile antakse oma jail ja seal võib ta root õigustega tegutseda ilma, et see kuidagi ohustaks reaalse süsteemi turvalisust.
  
minu arvuti ip on 172.17.0.183
+
Jail erineb host süsteemist peamiselt selle poolest, et ta on selle limiteeritud osa. Näiteks pole võimalik lisada uusi IP aadresse võrgu liidestele, samuti pole võimalik luua uusi võrguseadmeid ( gif / lo ..etc ), ei ole v6imalik mountida asju.. jaili uptime on sama mis hosti oma, jaili kernel on sama mis hosti oma.. jne.  
jaili ip otsutasin hakkab olema 172.17.0.184 ning jaili enda asukoht /usr/jail/jail1
 
  
esimesena kompileerime kokku süsteemi source ...eeldusel ,et see on olemas
+
Ühte multifunktsionaalsesse serverisse mahutatakse seega mitu monofunktsionaalset.  
  
cd /usr/src && make buildworld
+
Kuigi jaili kirjeldus kõlab nagu oleks tegu virtuaalmasinaga, on tegu siiski kõigest lisakoodiga turvakriitiliste syscallide juures, mis tähendab, et jailiga ei kaasne mitte mingit lisa mälu overheadi.
  
nüüd loome väikse skripti mis meisterdab meile soovitud kohta jaili valmis
+
FreeBSD jailid omavad peamiselt kolme eesmärki:
jaili asukoht määratakse süsteemis muutuja D abil
 
  
#!/bin/sh
+
*Virtualiseerimine : Iga jail on virtuaalne keskkond mis omab tema enda faile, protsesse, kasutajaid ning administraatori kasutajaid. Seejuures on töötav keskkond (peaaegu) eristamatult sarnane reaalsel raual käivitatud operatsioonisüsteemiga.
D=/usr/jail/jail1
 
cd /usr/src
 
mkdir -p $D
 
make installworld DESTDIR=$D
 
cd /usr/src/etc
 
make distribution DESTDIR=$D
 
mount_devfs devfs $D/dev
 
cd $D
 
ln -sf dev/null kernel
 
  
 +
*Turvalisus : Iga jail on eraldatud teistest andes sedaviisi lisa turvalisusekihi.
  
 +
*Telegeerimise lihtsus : Administraatoritel on lihtne ja valutu telegeerida erinevaid ülesandeid, mis vajavad administraatori õigusi, samas ilma kogu süsteemi kontrolli jagamata.
  
 +
Näites kasutatud host arvuti ip on '''172.17.0.183''', jaili questi ip hakkab olema '''172.17.0.184''' ning jaili enda asukoht failisüsteemis '''/usr/jail/jail1'''.
  
vajalik arvuti /etc/rc.confi lisada
+
===Jaili loomine===
 +
'''jail kiirelt ja mustalt'''
  
ifconfig_fxp0="inet 172.17.0.183 netmask 255.255.255.0"
+
Esimesena tirime cvsupiga süsteemi source
ifconfig_fxp0_alias0="inet 172.17.0.184 netmask 0xFFFFFFFF"
 
  
# make it not conflict with jail
+
nüüd loome väikese skripti, mis meisterdab meile soovitud kohta jaili valmis. jaili asukoht määratakse süsteemis muutuja D abil
inetd_flags="-wW -a 172.17.0.183"
 
  
# make syslog listen only on a local socket
+
#!/bin/sh
syslogd_flags="-ss"
+
D=/usr/jail/jail1
 +
mkdir -p $D
 +
cd /usr/src
 +
make world DESTDIR=$D
 +
cd etc/
 +
make distribution DESTDIR=$D
 +
mount_devfs devfs $D/dev
  
# rpcbind would conflict with jail
+
Seejärel käivitame skripti ja loome selle abil valmis jaili baasi
rpcbind_enable="NO"
+
Esimene kord võib see võtta päris pikalt aega kuna buildidakse ikkagi terve bsd baas ümber
  
# configure jail
+
===Jaili startimine ja stopimine===
jail_enable="YES"
 
jail_list="test"
 
jail_test_hostname="yhikas"
 
jail_test_ip="172.17.0.184"
 
jail_test_rootdir="/usr/jail/jail1"
 
jail_test_exec="/bin/sh /etc/rc"
 
  
 +
vajalik arvuti '''/etc/rc.conf''' lisada
  
 +
# '''ip aadressid jailile ja masinale'''
 +
ifconfig_fxp0="inet 172.17.0.183 netmask 255.255.255.0"
 +
ifconfig_fxp0_alias0="inet 172.17.0.184 netmask 255.255.255.0"
 +
 +
# '''Kui inetd kasutuses siis tuleb see seadistada nii questis kui hostis kuulama vaid lokaalset soketid, vastasel juhul võib seda rida ignoreerida.'''
 +
inetd_flags="-wW -a 172.17.0.183"
 +
 +
# '''syslog kuulama lokaalset socketit'''
 +
syslogd_flags="-ss"
 +
 
 +
# '''globaalne jailid seadistus, jail list muutujale tuleb kirjutada kõik kasutavad jailid eraldades nende nimed tühikutega'''
 +
jail_enable="YES"
 +
jail_list="test"
 +
 +
# '''loodava testnimelise jaili spetsiifilised parameetrid'''
 +
jail_test_hostname="test"
 +
jail_test_ip="172.17.0.184"
 +
jail_test_rootdir="/usr/jail/jail1"
 +
jail_test_devfs_enable="YES"       
  
masina /etc/ssh/sshd_config lisame midagi sellist
+
Jaili tööks on kindlasti vaja jailine antav ip
Port            22
+
seadistada serveri võrgukaardile aliaseks.
Protocol        2
 
ListenAddress  172.17.0.183
 
UseDNS          no
 
Subsystem      sftp    /usr/libexec/sftp-server
 
  
 +
Näiteks kiirelt saab seda teha käsuga
  
ning muudame ka fstab'i /etc/fstab selliselt ,et jaili oleks dev lingitud
+
ifconfig fxp0 172.17.0.184 netmask 255.255.255.0 alias
devfs                  /mnt/hdd/dev          devfs  rw    0       0
 
  
 +
Seejärel võib anda juba näiteks käsu
  
jaili /etc/rc.conf
+
'''# /etc/rc.d/jail start'''
 +
Configuring jails:.
 +
Starting jails: test.
  
rpcbind_enable="NO"
+
Mingit kindlat jaili saab startida ja stopida käsuga
network_interfaces=""
 
hostname="yhikas"
 
sshd_enable="YES"
 
sendmail_enable="NO"
 
syslogd_flags="-ss"
 
inetd_flags="-wW -a 172.17.0.184"
 
  
Jaili /etc/ssh/sshd_config
+
Jaile saab startida ja seisata järgnevalt
  
Port            22
+
/etc/rc.d/jail start test
Protocol        2
+
/etc/rc.d/jail stop test
ListenAddress  172.17.0.184
 
UseDNS          no
 
Subsystem      sftp    /usr/libexec/sftp-server
 
  
Jaili tyhi /etc/fstab
+
===Jaili häälestus===
touch /mnt/jail/etc/fstab
 
  
Jaili /etc/resolv.conf kirjutame enda nimeserveri mida kasutame mina kirjutasin sinna kadri.ut.ee
+
Liigume kausta '''/usr/jail/jail1'''
echo "nameserver 193.40.5.94" >> /mnt/jail/etc/resolv.conf
 
  
ln -s /var/run/log /mnt/jail/dev/log
 
  
paneme jaili käima lähme sinna sisse
+
jaili '''/etc/rc.conf'''
jail /usr/jail/jail1 test 172.17.0.184 /bin/sh
 
  
nüüd võib luua userid seada root kasutaja parooli
+
network_interfaces=""
 +
hostname="yhikas"
 +
sshd_enable="YES"
 +
sendmail_enable="NO"
 +
syslogd_flags="-ss"
  
nüüd peale rebooti hakkab jail tööle
+
Jaili '''/etc/resolv.conf''' kirjutame enda nimeserveri, mida antud võrgus kasutame
  
võib logida sinna enda kasutajanimega ssh abil
+
Jaili saab käima panna ka ilma rc.conf'i ning rc skriptita käsuga
 +
 
 +
jail /usr/jail/jail1 test 172.17.0.184 /bin/sh
 +
 
 +
===Loodud jaili kasutamine===
 +
 
 +
Töötavaid jaile näeme käsuga jls
 +
 
 +
'''# jls'''
 +
    JID  IP Address      Hostname                      Path
 +
      1  172.17.0.184    test                          /usr/jail/jail1
 +
 
 +
Jailis tegutsemiseks olemas käsk jexec
 +
 
 +
# jexec 1 /bin/csh
 +
 
 +
Käske saab jailis käivitada käsuga jexec kasutades jaili id'd nimega jid
 +
 
 +
'''# jexec 1 ps -aux'''
 +
USER    PID %CPU %MEM  VSZ  RSS  TT  STAT STARTED      TIME COMMAND
 +
root  94791  0.0  0.1  1404  1072  ??  SsJ  10:36PM  0:00.00 /usr/sbin/syslogd -s
 +
smmsp 94853  0.0  0.3  3408  2840  ??  IsJ  10:36PM  0:00.00 sendmail: Queue runner@00:30:00 for  /var/spool/clientmqueue
 +
root  94859  0.0  0.1  1396  1104  ??  IsJ  10:36PM  0:00.00 /usr/sbin/cron -s
 +
root  94894  0.0  0.1  1568  1092  p2  R+J  10:41PM  0:00.00 ps -aux
 +
 
 +
Moundine pordid
 +
 
 +
# mkdir /home/jail1/usr/ports
 +
# mount_nullfs /usr/ports /home/jail1/usr/ports
 +
 
 +
===Jaili alternatiivne loomine kiirelt binaarfailide abil===
 +
Põhineb http://pbraun.nethence.com/doc/sysutils_bsd/dragonfly-freebsd-jail.html)
 +
ja freebsd-isp listi vestlustel
 +
 
 +
'''sysistalli põhine'''
 +
 
 +
# mkdir -p /home/jail
 +
# sysinstall
 +
 
 +
[[Pilt:Jail.png]]
 +
 
 +
sysinstall > Custom > Options > Install Root > /home/jail
 +
sysinstall > Custom > Distributions > Minimal
 +
sysinstall > Custom > Media > File System > /cdrom   
 +
sysinstall > Custom > Commit
 +
[Visit the general configuration menu ?] > No
 +
 
 +
Post installi skripte ei tohi teha, need modifitseerivad host masinat mitte guesti
 +
 
 +
Seejärel käsk
 +
 
 +
# jail /home/jail footest 10.0.0.2 /bin/sh
 +
 
 +
Annab shelli jailile ette nii ,et asi tundub töötavat. Edasi võib lisada devfs jms
 +
 
 +
Alternatiivina saab tegevust automatiseerida kasutada juba valmis konfiguratsioonifaili install.cfg
 +
 
 +
installVarDefaults
 +
releaseName=7.2-RELEASE
 +
_ftpPath=
 +
ftp://ftp.freebsd.org/pub/FreeBSD/
 +
 +
mediaSetFTP
 +
dists=base man
 +
distSetCustom
 +
installRoot=/srv/jails/example.domain.tld/root
 +
installCommit
 +
 
 +
Siis tuleb installiks vaja anda käsud
 +
 
 +
# mkdir -p /srv/jails/example.domain.tld/root
 +
# sysinstall configFile=/root/install.cfg loadConfig
 +
 
 +
freebsd-update works within the jail to update patches. For migrating point releases (7.1 to 7.2) after updating the host OS I use the commands below.
 +
 
 +
'''ezjail'''
 +
 
 +
Peaks töötama ka käsk lisaks ezjail-admin install mis paigaldab jaili binaarfailid üle ftp
 +
pole seda käsku ise proovinud. Lihtne peaks nii olema
 +
ka uuendamine kuna piisab vaid ezjail-admin update -u" käsust jaili uuendamisels freebsd-update abil. Samuti kasutab ta edasistes mountimistes nullfs'i
 +
 
 +
'''cd meedia'''
 +
 
 +
Või kasutada installimeediat käskudega
 +
 
 +
cd /some/media/7.2-RELEASE/base
 +
mkdir /path/to/myjail
 +
setenv DESTDIR /path/to/myjail
 +
sh install.sh
 +
 
 +
Võimalus on lisaks mountida nullfsi abil baasüsteem ümber jaili
 +
 
 +
===Jaili uuendamine freebsd-update abil===
 +
 
 +
freebsd-update abil jaili uuendamiseks, näiteks migreerides release 7.1 pealt 7.2 versiooniks
 +
 
 +
# env UNAME_r=7.1-RELEASE-p5 freebsd-update -b /srv/jails/example.domain.tld/root -r 7.2-RELEASE  upgrade
 +
# freebsd-update -b /srv/jails/example.domain.tld/root install
 +
# /etc/rc.d/jail restart <jail>
 +
# freebsd-update -b /srv/jails/example.domain.tld/root install
 +
 
 +
===Optimiseerimist===
 +
 
 +
jaili ise kompileerides on soovituslik lülitada välja hulk jailis kasutuid teenused lisades allolevad
 +
read /etc/make.conf faili
 +
 
 +
NO_ACPI=      true    # do not build acpiconf(8) and related programs
 +
NO_BOOT=      true    # do not build boot blocks and loader
 +
NO_BLUETOOTH=  true    # do not build Bluetooth related stuff
 +
NO_FORTRAN=    true    # do not build g77 and related libraries
 +
NO_GDB=        true    # do not build GDB
 +
NO_GPIB=      true    # do not build GPIB support
 +
NO_I4B=        true    # do not build isdn4bsd package
 +
NO_IPFILTER=  true    # do not build IP Filter package
 +
NO_PF=        true    # do not build PF firewall package
 +
NO_AUTHPF=    true    # do not build and install authpf (setuid/gid)
 +
NO_KERBEROS=  true    # do not build and install Kerberos 5 (KTH Heimdal)
 +
NO_LPR=        true    # do not build lpr and related programs
 +
NO_MAILWRAPPER=true    # do not build the mailwrapper(8) MTA selector
 +
NO_MODULES=    true    # do not build modules with the kernel
 +
NO_NETCAT=    true    # do not build netcat
 +
NO_NIS=        true    # do not build NIS support and related programs
 +
NO_SENDMAIL=  true    # do not build sendmail and related programs
 +
NO_SHAREDOCS=  true    # do not build the 4.4BSD legacy docs
 +
NO_USB=        true    # do not build usbd(8) and related programs
 +
NO_VINUM=      true    # do not build Vinum utilities
 +
NO_ATM=        true    # do not build ATM related programs and libraries
 +
NO_CRYPT=      true    # do not build any crypto code
 +
NO_GAMES=      true    # do not build games (games/ subdir)
 +
NO_INFO=      true    # do not make or install info files
 +
NO_MAN=        true    # do not build manual pages
 +
NO_PROFILE=    true    # Avoid compiling profiled libraries
 +
 +
# BIND OPTIONS
 +
NO_BIND=              true    # Do not build any part of BIND
 +
NO_BIND_DNSSEC=        true    # Do not build dnssec-keygen, dnssec-signzone
 +
NO_BIND_ETC=          true    # Do not install files to /etc/namedb
 +
NO_BIND_LIBS_LWRES=    true    # Do not install the lwres library
 +
NO_BIND_MTREE=        true    # Do not run mtree to create chroot directories
 +
NO_BIND_NAMED=        true    # Do not build named, rndc, lwresd, etc.
 +
 
 +
===Alates 7.2 versioonist uuendused===
 +
 
 +
Võimalik on 7.2 ja 8.0 versioonides seadistada jailile mitu ip aadressi, selleks tuleb rc.conf'i lisada read nagu
 +
 
 +
jail_test1_ip_multi0="127.0.0.2"
 +
jail_test2_ip_multi0="127.0.0.3"
 +
 
 +
Lisaks on võimalik startida jailis juba boodilt erinevaid käske lisades rc.conf'i jail_exec_afterstartN täht N märgib siis käsu numbrit
 +
 
 +
Näiteks
 +
 
 +
jail_exec_afterstart0="/bin/sh command"
 +
 
 +
===Lingid===
 +
 
 +
http://phk.freebsd.dk/pubs/sane2000-jail.pdf
 +
 
 +
http://www.freebsd.org/cgi/man.cgi?query=jail&format=html
 +
 
 +
http://www.bsd.ee/dwiki/doku.php?id=freebsd_jail_loeng
 +
 
 +
http://sysjail.bsd.lv/ NetBSD ja OpenBSD jaili analoog sysjail
 +
 
 +
http://www.nycbsdcon.org/2006/files/sysjail-nycbsdcon.pdf.gz
 +
 
 +
http://www.digitaldaemon.com/FreeBSD/FreeBSD/index.html
 +
 
 +
http://wiki.freebsd.org/Jails
 +
 
 +
http://www.section6.net/wiki/index.php/Creating_a_FreeBSD_Jail põhjalikum õpetus
 +
 
 +
http://forums.freebsd.org/showthread.php?t=6230 jail ja ZFS
 +
 
 +
http://blogs.freebsdish.org/pjd/2007/03/18/zfs-and-freebsd-jails/ veel jailist ja ZFSist

Viimane redaktsioon: 1. oktoober 2011, kell 12:02

Sissejuhatus

Jail on loogiliselt võttes virtuaalmasin, millest selle sees olevad programmid-kasutajad kuidagi välja reaalsesse süsteemi ei näe. Reaalselt on sellisest võimalusest kasu eelkõige erinevate kriitiliste rakenduste oma sandboxidesse surumiseks. Näiteks levinud on Apache panek oma jaili, et mõnes weebirakenduses ilmnev auk, mis annab ründajale apachei õigustes shelli, ei viiks automaatselt kogu süsteemi nägemiseni. Jaile kasutatakse laialt ka virtuaalserverite puhul, kus kliendile antakse oma jail ja seal võib ta root õigustega tegutseda ilma, et see kuidagi ohustaks reaalse süsteemi turvalisust.

Jail erineb host süsteemist peamiselt selle poolest, et ta on selle limiteeritud osa. Näiteks pole võimalik lisada uusi IP aadresse võrgu liidestele, samuti pole võimalik luua uusi võrguseadmeid ( gif / lo ..etc ), ei ole v6imalik mountida asju.. jaili uptime on sama mis hosti oma, jaili kernel on sama mis hosti oma.. jne.

Ühte multifunktsionaalsesse serverisse mahutatakse seega mitu monofunktsionaalset.

Kuigi jaili kirjeldus kõlab nagu oleks tegu virtuaalmasinaga, on tegu siiski kõigest lisakoodiga turvakriitiliste syscallide juures, mis tähendab, et jailiga ei kaasne mitte mingit lisa mälu overheadi.

FreeBSD jailid omavad peamiselt kolme eesmärki:

  • Virtualiseerimine : Iga jail on virtuaalne keskkond mis omab tema enda faile, protsesse, kasutajaid ning administraatori kasutajaid. Seejuures on töötav keskkond (peaaegu) eristamatult sarnane reaalsel raual käivitatud operatsioonisüsteemiga.
  • Turvalisus : Iga jail on eraldatud teistest andes sedaviisi lisa turvalisusekihi.
  • Telegeerimise lihtsus : Administraatoritel on lihtne ja valutu telegeerida erinevaid ülesandeid, mis vajavad administraatori õigusi, samas ilma kogu süsteemi kontrolli jagamata.

Näites kasutatud host arvuti ip on 172.17.0.183, jaili questi ip hakkab olema 172.17.0.184 ning jaili enda asukoht failisüsteemis /usr/jail/jail1.

Jaili loomine

jail kiirelt ja mustalt

Esimesena tirime cvsupiga süsteemi source

nüüd loome väikese skripti, mis meisterdab meile soovitud kohta jaili valmis. jaili asukoht määratakse süsteemis muutuja D abil

#!/bin/sh
D=/usr/jail/jail1
mkdir -p $D
cd /usr/src
make world DESTDIR=$D
cd etc/
make distribution DESTDIR=$D
mount_devfs devfs $D/dev

Seejärel käivitame skripti ja loome selle abil valmis jaili baasi Esimene kord võib see võtta päris pikalt aega kuna buildidakse ikkagi terve bsd baas ümber

Jaili startimine ja stopimine

vajalik arvuti /etc/rc.conf lisada

# ip aadressid jailile ja masinale
ifconfig_fxp0="inet 172.17.0.183 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 172.17.0.184 netmask 255.255.255.0"

# Kui inetd kasutuses siis tuleb see seadistada nii questis kui hostis kuulama vaid lokaalset soketid, vastasel juhul võib seda rida ignoreerida.
inetd_flags="-wW -a 172.17.0.183"

# syslog kuulama lokaalset socketit
syslogd_flags="-ss"
 
# globaalne jailid seadistus, jail list muutujale tuleb kirjutada kõik kasutavad jailid eraldades nende nimed tühikutega
jail_enable="YES"
jail_list="test"

# loodava testnimelise jaili spetsiifilised parameetrid
jail_test_hostname="test"
jail_test_ip="172.17.0.184"
jail_test_rootdir="/usr/jail/jail1"
jail_test_devfs_enable="YES"         

Jaili tööks on kindlasti vaja jailine antav ip seadistada serveri võrgukaardile aliaseks.

Näiteks kiirelt saab seda teha käsuga

ifconfig fxp0 172.17.0.184 netmask 255.255.255.0 alias

Seejärel võib anda juba näiteks käsu

# /etc/rc.d/jail start
Configuring jails:.
Starting jails: test.

Mingit kindlat jaili saab startida ja stopida käsuga

Jaile saab startida ja seisata järgnevalt

/etc/rc.d/jail start test
/etc/rc.d/jail stop test

Jaili häälestus

Liigume kausta /usr/jail/jail1


jaili /etc/rc.conf

network_interfaces=""
hostname="yhikas"
sshd_enable="YES"
sendmail_enable="NO"
syslogd_flags="-ss"

Jaili /etc/resolv.conf kirjutame enda nimeserveri, mida antud võrgus kasutame

Jaili saab käima panna ka ilma rc.conf'i ning rc skriptita käsuga

jail /usr/jail/jail1 test 172.17.0.184 /bin/sh

Loodud jaili kasutamine

Töötavaid jaile näeme käsuga jls

# jls
   JID  IP Address      Hostname                      Path
     1  172.17.0.184    test                          /usr/jail/jail1

Jailis tegutsemiseks olemas käsk jexec

# jexec 1 /bin/csh

Käske saab jailis käivitada käsuga jexec kasutades jaili id'd nimega jid

# jexec 1 ps -aux
USER    PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root  94791  0.0  0.1  1404  1072  ??  SsJ  10:36PM   0:00.00 /usr/sbin/syslogd -s
smmsp 94853  0.0  0.3  3408  2840  ??  IsJ  10:36PM   0:00.00 sendmail: Queue runner@00:30:00 for   /var/spool/clientmqueue
root  94859  0.0  0.1  1396  1104  ??  IsJ  10:36PM   0:00.00 /usr/sbin/cron -s
root  94894  0.0  0.1  1568  1092  p2  R+J  10:41PM   0:00.00 ps -aux

Moundine pordid

# mkdir /home/jail1/usr/ports
# mount_nullfs /usr/ports /home/jail1/usr/ports

Jaili alternatiivne loomine kiirelt binaarfailide abil

Põhineb http://pbraun.nethence.com/doc/sysutils_bsd/dragonfly-freebsd-jail.html) ja freebsd-isp listi vestlustel

sysistalli põhine

# mkdir -p /home/jail
# sysinstall

Jail.png

sysinstall > Custom > Options > Install Root > /home/jail
sysinstall > Custom > Distributions > Minimal
sysinstall > Custom > Media > File System > /cdrom    
sysinstall > Custom > Commit
[Visit the general configuration menu ?] > No

Post installi skripte ei tohi teha, need modifitseerivad host masinat mitte guesti

Seejärel käsk

# jail /home/jail footest 10.0.0.2 /bin/sh

Annab shelli jailile ette nii ,et asi tundub töötavat. Edasi võib lisada devfs jms

Alternatiivina saab tegevust automatiseerida kasutada juba valmis konfiguratsioonifaili install.cfg

installVarDefaults
releaseName=7.2-RELEASE
_ftpPath=
ftp://ftp.freebsd.org/pub/FreeBSD/

mediaSetFTP
dists=base man
distSetCustom
installRoot=/srv/jails/example.domain.tld/root
installCommit

Siis tuleb installiks vaja anda käsud

# mkdir -p /srv/jails/example.domain.tld/root
# sysinstall configFile=/root/install.cfg loadConfig

freebsd-update works within the jail to update patches. For migrating point releases (7.1 to 7.2) after updating the host OS I use the commands below.

ezjail

Peaks töötama ka käsk lisaks ezjail-admin install mis paigaldab jaili binaarfailid üle ftp pole seda käsku ise proovinud. Lihtne peaks nii olema ka uuendamine kuna piisab vaid ezjail-admin update -u" käsust jaili uuendamisels freebsd-update abil. Samuti kasutab ta edasistes mountimistes nullfs'i

cd meedia

Või kasutada installimeediat käskudega

cd /some/media/7.2-RELEASE/base
mkdir /path/to/myjail
setenv DESTDIR /path/to/myjail
sh install.sh

Võimalus on lisaks mountida nullfsi abil baasüsteem ümber jaili

Jaili uuendamine freebsd-update abil

freebsd-update abil jaili uuendamiseks, näiteks migreerides release 7.1 pealt 7.2 versiooniks

# env UNAME_r=7.1-RELEASE-p5 freebsd-update -b /srv/jails/example.domain.tld/root -r 7.2-RELEASE  upgrade
# freebsd-update -b /srv/jails/example.domain.tld/root install
# /etc/rc.d/jail restart <jail>
# freebsd-update -b /srv/jails/example.domain.tld/root install

Optimiseerimist

jaili ise kompileerides on soovituslik lülitada välja hulk jailis kasutuid teenused lisades allolevad read /etc/make.conf faili

NO_ACPI=       true    # do not build acpiconf(8) and related programs
NO_BOOT=       true    # do not build boot blocks and loader
NO_BLUETOOTH=  true    # do not build Bluetooth related stuff
NO_FORTRAN=    true    # do not build g77 and related libraries
NO_GDB=        true    # do not build GDB
NO_GPIB=       true    # do not build GPIB support
NO_I4B=        true    # do not build isdn4bsd package
NO_IPFILTER=   true    # do not build IP Filter package
NO_PF=         true    # do not build PF firewall package
NO_AUTHPF=     true    # do not build and install authpf (setuid/gid)
NO_KERBEROS=   true    # do not build and install Kerberos 5 (KTH Heimdal)
NO_LPR=        true    # do not build lpr and related programs
NO_MAILWRAPPER=true    # do not build the mailwrapper(8) MTA selector
NO_MODULES=    true    # do not build modules with the kernel
NO_NETCAT=     true    # do not build netcat
NO_NIS=        true    # do not build NIS support and related programs
NO_SENDMAIL=   true    # do not build sendmail and related programs
NO_SHAREDOCS=  true    # do not build the 4.4BSD legacy docs
NO_USB=        true    # do not build usbd(8) and related programs
NO_VINUM=      true    # do not build Vinum utilities
NO_ATM=        true    # do not build ATM related programs and libraries
NO_CRYPT=      true    # do not build any crypto code
NO_GAMES=      true    # do not build games (games/ subdir)
NO_INFO=       true    # do not make or install info files
NO_MAN=        true    # do not build manual pages
NO_PROFILE=    true    # Avoid compiling profiled libraries

# BIND OPTIONS
NO_BIND=               true    # Do not build any part of BIND
NO_BIND_DNSSEC=        true    # Do not build dnssec-keygen, dnssec-signzone
NO_BIND_ETC=           true    # Do not install files to /etc/namedb
NO_BIND_LIBS_LWRES=    true    # Do not install the lwres library
NO_BIND_MTREE=         true    # Do not run mtree to create chroot directories
NO_BIND_NAMED=         true    # Do not build named, rndc, lwresd, etc.

Alates 7.2 versioonist uuendused

Võimalik on 7.2 ja 8.0 versioonides seadistada jailile mitu ip aadressi, selleks tuleb rc.conf'i lisada read nagu

jail_test1_ip_multi0="127.0.0.2"
jail_test2_ip_multi0="127.0.0.3"

Lisaks on võimalik startida jailis juba boodilt erinevaid käske lisades rc.conf'i jail_exec_afterstartN täht N märgib siis käsu numbrit

Näiteks

jail_exec_afterstart0="/bin/sh command"

Lingid

http://phk.freebsd.dk/pubs/sane2000-jail.pdf

http://www.freebsd.org/cgi/man.cgi?query=jail&format=html

http://www.bsd.ee/dwiki/doku.php?id=freebsd_jail_loeng

http://sysjail.bsd.lv/ NetBSD ja OpenBSD jaili analoog sysjail

http://www.nycbsdcon.org/2006/files/sysjail-nycbsdcon.pdf.gz

http://www.digitaldaemon.com/FreeBSD/FreeBSD/index.html

http://wiki.freebsd.org/Jails

http://www.section6.net/wiki/index.php/Creating_a_FreeBSD_Jail põhjalikum õpetus

http://forums.freebsd.org/showthread.php?t=6230 jail ja ZFS

http://blogs.freebsdish.org/pjd/2007/03/18/zfs-and-freebsd-jails/ veel jailist ja ZFSist