Erinevus lehekülje "FreeBSD jail" redaktsioonide vahel

Allikas: Kuutõrvaja
(Jaili loomine kiirelt binaarfailide abil)
132. rida: 132. rida:
  
 
===Jaili loomine kiirelt binaarfailide abil===
 
===Jaili loomine kiirelt binaarfailide abil===
Based http://pbraun.nethence.com/doc/sysutils_bsd/dragonfly-freebsd-jail.html)
+
Põhineb http://pbraun.nethence.com/doc/sysutils_bsd/dragonfly-freebsd-jail.html)
  
 
  mkdir -p /var/jails/base
 
  mkdir -p /var/jails/base
139. rida: 139. rida:
 
  sysinstall > Custom > Options > Install Root > /var/jails/base
 
  sysinstall > Custom > Options > Install Root > /var/jails/base
 
  sysinstall > Custom > Distributions > Minimal
 
  sysinstall > Custom > Distributions > Minimal
  sysinstall > Custom > Media > File System > /cdrom    (I just used ftp
+
  sysinstall > Custom > Media > File System > /cdrom     
myself, this meant i had to change the release from 7.2-RELEASE-p4 to 7.2-RELEASE in options)
 
 
  sysinstall > Custom > Commit
 
  sysinstall > Custom > Commit
 
  [Visit the general configuration menu ?] > No
 
  [Visit the general configuration menu ?] > No
Note. don't do the post-install, it would modify the host, not the guest.
+
 
 +
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
 
  jail /var/jails/base footest 10.0.0.2 /bin/sh
  
gives me a shell in the jail so it seems to have worked, Time to add
+
Annab shelli jailile ette nii ,et asi tundub töötavat. Edasi võib ölisada devfs jms
devfs etc i guess.
 
  
 
===Lingid===
 
===Lingid===

Redaktsioon: 27. oktoober 2009, kell 14:41

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 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"         

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

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://sysjail.bsd.lv/

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

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