Erinevus lehekülje "FreeBSD jail" redaktsioonide vahel
(→Jaili startimine ja stopimine) |
(→Jaili startimine ja stopimine) |
||
48. rida: | 48. rida: | ||
ifconfig_fxp0_alias0="inet 172.17.0.184 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 kuulama vaid lokaalset soketid. Jailis tuleb siis samuti inet vastavalt seadistada | + | # '''Kui inetd kasutuses siis tuleb see seadistada kuulama vaid lokaalset soketid. Jailis tuleb siis samuti inet vastavalt seadistada.''' |
inetd_flags="-wW -a 172.17.0.183" | inetd_flags="-wW -a 172.17.0.183" | ||
Redaktsioon: 27. oktoober 2009, kell 17:55
Sisukord
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 jails mainly aim at three goals :
Virtualization : Each jail is a virtual environment running on the host machine with its own files, processes, user and superuser accounts. From within a jailed process, the environment is (almost) indistinguishable from a real system.
Security : Each jail is sealed from the others thus providing an additional level of security.
Ease of delegation : Thanks to the limited scope of a jail, it allows administrators to painlessly delegate several tasks which require superuser access without handing out complete control over the system.
Those familiar with Unix will recognize the chroot jail method of restricting the scope of processes. The FreeBSD jail mechanism is more than that: each process is attached a specific kernel structure whose purpose is to limit its interaction with processes running in other jails and restrict the things they can do (for instance a jail is bound to only one IP address and cannot access raw, divert or routing sockets).
Minu arvuti ip on 172.17.0.183, jaili ip hakkab olema 172.17.0.184 ning jaili enda asukoht /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 kuulama vaid lokaalset soketid. Jailis tuleb siis samuti inet vastavalt seadistada. 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 loomine kiirelt binaarfailide abil
Põhineb http://pbraun.nethence.com/doc/sysutils_bsd/dragonfly-freebsd-jail.html)
mkdir -p /var/jails/base sysinstall
sysinstall > Custom > Options > Install Root > /var/jails/base 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 /var/jails/base footest 10.0.0.2 /bin/sh
Annab shelli jailile ette nii ,et asi tundub töötavat. Edasi võib lisada devfs jms
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
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
NetBSD ja OpenBSD jaili analoog sysjail
http://www.nycbsdcon.org/2006/files/sysjail-nycbsdcon.pdf.gz