Erinevus lehekülje "FreeBSD jail" redaktsioonide vahel
(→Jaili baasmasina seadistus) |
(→Jaili baasmasina seadistus) |
||
79. rida: | 79. rida: | ||
Seejärel võib anda juba näiteks käsu | Seejärel võib anda juba näiteks käsu | ||
− | # /etc/rc.d/jail start | + | '''# /etc/rc.d/jail start''' |
Configuring jails:. | Configuring jails:. | ||
Starting jails: test. | Starting jails: test. |
Redaktsioon: 19. mai 2009, kell 19:37
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 baasmasina seadistus
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 samuti inet vaja 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" jail_test_devfs_ruleset="test_ruleset"
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
masina /etc/ssh/sshd_config muudame selliselt
ListenAddress 172.17.0.183 UseDNS no
Seejärel võib anda juba näiteks käsu
# /etc/rc.d/jail start Configuring jails:. Starting jails: test.
Jaili konf
Liigume kausta /usr/jail/jail1
jaili /etc/rc.conf
network_interfaces="" hostname="yhikas" sshd_enable="YES" sendmail_enable="NO" syslogd_flags="-ss"
Jaili /etc/ssh/sshd_config muudame selliselt
ListenAddress 172.17.0.184 UseDNS no
Jaili tühi /etc/fstab
touch /usr/jail/jail1/etc/fstab
Jaili /etc/resolv.conf kirjutame enda nimeserveri, mida antud võrgus kasutame
paneme jaili käima
jail /usr/jail/jail1 test 172.17.0.184 /bin/sh
nüüd võib luua userid seada root kasutaja parooli jms tegevused
Töötamine loodud jailiga
Töötavaid jaile näeme käsuga jls
# jls JID IP Address Hostname Path 1 172.17.0.184 test /usr/jail/jail1
Jaile saab startida ja seisata käskudega
/etc/rc.d/jail start yhikas /etc/rc.d/jail stop yhikas
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
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