jail howto

Szabados Jozsef Szabados.Jozsef at innet.hu
2001. Aug. 15., Sze, 08:12:51 CEST


Sziasztok

Imhol a legujabb. Ha kiteszitek valahova legyszives irjatok meg nekem,
aztan beleirom. Talaltam egy jailes tar.gz-t. Mellekelem, de meg nem
tudtam sajnos megnezni. Talan tobb, minrt a semmi.

Rutz Antal

Koszonom! A linkeket is.
A /usr/share/doc/papers/jail doksit elkuldened? Nalam nincs fennt. Ezt is
koszonom.

Udvozlettel
Szabados Jozsef

ui.:
Hanyan vagyunk a listan kb?

Csemege:
www.networkintrusion.co.uk
www.antioffline.com/deviation/bsd.html
--------- következő rész ---------
			Jail HOWTO 5. kiadas

Wed Aug 15 07:42:30 CEST 2001


Tartalom:

1. Eloszo
2. Csinaljunk jail-t
3.1. Bind a jailben
3.2. Bind a jailben chrootolva
3.3. qmail a jailben
3.4. mysql a jailben
4. Kulon koszonet
5. Akik segitenek
6. Szerzo
7. Megtalalhato
8. Copyright


1. Eloszo

En szivtam vele egy adagot, irtam egy ilyet, ne szivjatok ti is annyit.
Nem irom le, mi az a jail, ezt a "man 8 jail" is megteszi. Nem ragok szajba
semmit, idom is alig van, de kerdezzetek batran emailcimem,
szabadosjozsef at freemail.hu, alternativ: Szabados.Jozsef at innet.hu (ezt
gyakrabbani nezem). Kb. ezeket a fajlokat massziroztam cefetul, mire osszejott,
most meg a naploztatas hatravan, de az mar csak hab a tortan. Azt is orommel
veszem, ha valaki normalis formaba ontene ezt a HOWTO-t. Nekem aztan mindegy,
en nem nagyon fogom olvasni.

A konyvtarnevek valahol a host rendszer root konytaratol vannak megadva,
mashol meg a jail root konyvatratol. Majd javitok.

Linkek, infok: (Rutz Antal)

http://jailnotes.cg.nu/ - scriptek es egyebek. kicsit minimalista

Ez igazabol egy statikusan forditott chrootolt named, de jo:
http://www.freebsdzine.org/200105a/named.php3 - Running BIND in a jail

Ez egesz jo:
Using jail to imprison processes and their descendants for increased security
http://www.bsdpro.com/info.php?cat=security&fileid=00014#article


es meg a /usr/share/doc/papers alatt van egy doksi a jail-rol.


2. Csinaljunk jail-t (Niedermayer Miklos)

Elsore imhol egy script ami jailt csinal. Koszi Mico.
Mielott vadul lefuttatnad nezd at, mert a patcheles verziofuggo, kicsit
masszirozni kell.

#!/bin/sh

umask 022

JAILHOME=/jail

install_perl=no
install_cvs=no
install_debug=no
install_inetd=yes
install_telnetd=yes

mkdir -p ${JAILHOME}/$1
if ! cd ${JAILHOME}/$1; then
	echo "Can't cd to the jail directory - permission denied?"
	exit 1
fi

ln -s dev/null kernel

mkdir -p bin sbin dev etc/defaults proc
mkdir -p var/log var/run var/tmp/vi.recover var/db var/spool/lock
mkdir -p usr/bin usr/sbin usr/lib/aout usr/libexec usr/libdata usr/share/misc usr/local/etc/rc.d usr/local/sbin usr/local/bin

ln -s var/tmp tmp
ln -s ../var/tmp usr/tmp
chmod 1777 var/tmp var/tmp/vi.recover

cp /dev/MAKEDEV dev
( cd dev ; sh ./MAKEDEV jail )

cp -p /etc/defaults/rc.conf etc/defaults
cp -p /etc/rc /etc/rc.i386 /etc/rc.network /etc/objformat etc

####### ez a resz 4.2 release eseten mukodik
# megpatcheljük az rc-t, mert egy hülyeség miatt csinál egy rm -rf-et
# a /var/run könyvtárban, ami kitörli a host rendszer syslogd-je által
# odarakott log filet.
cat <<-EOF | patch etc/rc
--- rc2	Sat Mar 17 10:35:27 2001
+++ rc	Sat Mar 17 10:35:53 2001
@@ -183,7 +183,8 @@
 
 clean_var() {
 	if [ ! -f /var/run/clean_var ]; then
-		rm -rf /var/run/*
+		#disabled by makejail.sh
+		#rm -rf /var/run/*
 		purgedir /var/spool/lock
 		rm -rf /var/spool/uucp/.Temp/*
 		# Keep a copy of the boot messages around
EOF

####### idaig

####### ez a resz 4.3 release eseten mukodik
cat <<-EOF | patch etc/rc
--- rc	Tue Aug 14 17:37:51 2001
+++ rc.orig	Sat Apr 21 11:10:47 2001
@@ -233,7 +233,7 @@
 
 clean_var() {
 	if [ ! -f /var/run/clean_var ]; then
-		purgedir /var/spool/lock
+		purgedir /var/run /var/spool/lock
 		rm -rf /var/spool/uucp/.Temp/*
 		# Keep a copy of the boot messages around
 		dmesg >/var/run/dmesg.boot
EOF
####### idaig

cat > etc/rc.conf <<- 'EOF'
	network_interfaces=""
	inetd_enable="NO"
	cron_enable="NO"
	syslogd_enable="NO"
	portmap_enable="NO"
	sendmail_enable="NO"
	check_quotas="NO"
	update_motd="NO"
	blanktime="NO"
	tcp_extensions="YES"
	tcp_keepalive="NO"
EOF

chmod 644 etc/rc.conf
touch etc/fstab

#cp -p /stand/sysinstall stand

cp -p /bin/sh /bin/csh /bin/cat /bin/date /bin/ls /bin/ps /bin/hostname /bin/stty /bin/[ /bin/chmod /bin/cp /bin/mv /bin/ln /bin/rm bin
ln bin/[ bin/test
cp -p /usr/bin/vi /usr/bin/grep /usr/bin/env /usr/bin/uname /usr/bin/mktemp /usr/bin/chflags /usr/bin/chgrp /usr/bin/find /usr/bin/objformat usr/bin

### debug ###
case ${install_debug} in
[Yy][Ee][Ss])
	cp -p /usr/bin/truss usr/bin
	cp -p /usr/bin/kdump usr/bin
	cp -p /usr/bin/ktrace usr/bin
	;;
esac

### PERL ###
case ${install_perl} in
[Yy][Ee][Ss])
	cp -pR /usr/libdata/perl usr/libdata
	cp -pR /usr/bin/perl* usr/bin
	cp -pR /usr/lib/libperl.so* usr/lib
	;;
esac

### CVS ###
case ${install_cvs} in
[Yy][Ee][Ss])
	cp -pR /usr/bin/rcs* usr/bin
	cp -pR /usr/bin/cvs* usr/bin
	;;
esac

cp -p /sbin/swapon /sbin/mount /sbin/umount /sbin/dmesg /sbin/adjkerntz /sbin/ldconfig /sbin/sysctl sbin
cp -p /usr/sbin/pw /usr/sbin/pwd_mkdb /usr/sbin/dev_mkdb /usr/sbin/chown /usr/sbin/pkg_add usr/sbin

# ezek nekem a MySQL miatt kellettek
cp -p /usr/bin/limits /usr/bin/nohup /usr/bin/time usr/bin

cp -pR /usr/libexec/ld* usr/libexec

# ezek közül is hanyagolható lenne néhány, szintén a mysqld miatt raktam bele
# ?ket
cp -pR /usr/lib/libc.so* /usr/lib/libgnuregex.so* /usr/lib/libc_r.so* /usr/lib/libm.so* /usr/lib/libmp.so* /usr/lib/libreadline.so* /usr/lib/libstdc++.so* /usr/lib/libxpg4.so* /usr/lib/libz.so* /usr/lib/libncurses.so* usr/lib

cp -pR /usr/lib/libcrypt.so* /usr/lib/libscrypt.so* /usr/lib/libdescrypt.so* /usr/lib/libcrypto.so* usr/lib

# ez nem árt (pl. passwd)
cp -pR /usr/lib/libutil.so* /usr/lib/librpcsvc.so* usr/lib

# ez sem árt (pkg_add)
cp -pR /usr/lib/libftpio.so* /usr/lib/libmd.so* usr/lib

#cp -pR /usr/lib/libmp.so* usr/lib				# telnetd


# Ez kell sok mindenhez, de még a csh-hoz is.
cp -pR /usr/share/misc/termcap* usr/share/misc

cp -p /etc/localtime etc
cat > etc/master.passwd <<- 'EOF'
	root:*:0:0::0:0:Charlie &:/root:/bin/csh
	toor:*:0:0::0:0:Bourne-again Superuser:/root:
	daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
	operator:*:2:5::0:0:System &:/:/sbin/nologin
	bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
	tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
	kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
	games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
	news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
	man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
	bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
	uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
	xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
	pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
	nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
	alias:*:81:81::0:0:User &:/var/qmail/alias:/bin/csh
	qmaill:*:83:81::0:0:User &:/var/qmail:/nonexistent
	qmaild:*:82:81::0:0:User &:/var/qmail:/nonexistent
	qmailp:*:84:81::0:0:User &:/var/qmail:/nonexistent
	qmailq:*:85:82::0:0:User &:/var/qmail:/nonexistent
	qmailr:*:86:82::0:0:User &:/var/qmail:/nonexistent
	qmails:*:87:82::0:0:User &:/var/qmail:/nonexistent
	mysql:*:88:88::0:0:mysqld:/var/db/mysql:/nonexistent
	cvs:*:120:120::0:0:cvs user:/nonexistent:/nonexistent
	cvsadmin:*:121:120::0:0:cvs admin user:/nonexistent:/nonexistent
EOF
chmod 600 /etc/master.passwd
pwd_mkdb -p -d etc etc/master.passwd
cat > etc/group <<- 'EOF'
	wheel:*:0:root
	daemon:*:1:daemon
	kmem:*:2:root
	sys:*:3:root
	tty:*:4:root
	operator:*:5:root
	mail:*:6:
	bin:*:7:
	news:*:8:
	man:*:9:
	games:*:13:
	staff:*:20:root
	guest:*:31:root
	bind:*:53:
	uucp:*:66:
	xten:*:67:xten
	dialer:*:68:
	network:*:69:
	nogroup:*:65533:
	nobody:*:65534:
	qmail:*:82:
	qnofiles:*:81:
	mysql:*:88:
	cvs:*:120:
EOF
chmod 644 etc/group

### ez a plusz a su es videke
#cp -pR /usr/bin/su usr/bin
#cp -pR /usr/lib/libskey.so* usr/lib

case ${install_inetd} in
[Yy][Ee][Ss])
	cp -p /usr/lib/libwrap.so* usr/lib
	cp -p /usr/lib/libipsec.so* usr/lib
	cp -p /usr/sbin/inetd usr/sbin
	cp -p /etc/services etc
	touch etc/inetd.conf
	chmod 600 etc/inetd.conf
	echo "ALL : ALL : allow" >etc/hosts.allow
	echo "inetd_enable=\"yes\"" >> etc/rc.conf
	;;
*)
	echo "inetd_enable=\"no\"" >> etc/rc.conf
	;;
esac

case ${install_telnetd} in
[Yy][Ee][Ss])
	cp -p /usr/lib/libcom_err.so* usr/lib	
	cp -p /usr/lib/libkrb.so* usr/lib
	cp -p /usr/libexec/telnetd usr/libexec
	cp -pR /usr/lib/libpam.so* usr/lib				# login
	cp -pR /usr/bin/login usr/bin				# login
	echo "telnet	stream	tcp	nowait	root	/usr/libexec/telnetd telnetd" >>etc/inetd.conf
	;;
esac


ln -s ../var/run/log dev/log
echo "Please add the
	syslogd_flags=\"-l ${JAILHOME}/$1/var/run/log\"
option into the rc.conf file of the host machine !!!"


3.1. Bind a jailben (en)

cat /etc/ipnat.rules

rdr fxp0 kulso_interface_IP_cime/32 port 53 -> 127.0.0.53 port 8053 tcp
rdr fxp0 kulso_interface_IP_cime/32 port 53 -> 127.0.0.53 port 8053 udp
map fxp0 127.0.0.53/32 -> kulso_interface_IP_cime/32


cat /etc/resolv.conf

domain	rudi.hu
nameserver	127.0.0.53


cat /etc/rc.conf

hostname="turbo.rudi.hu"
ifconfig_fxp0="inet kulso_interface_IP_cime netmask 255.255.0.0 \
broadcast x.x.x.x"
ifconfig_lo0_alias="inet 127.0.0.1 netmask 255.255.255.255"
ipfilter_enable="YES"
ipfilter_flags="-l -E"
ipnat_enable="YES"


cat /usr/local/etc/rc.d/dnsjail.sh

#!/bin/sh
/sbin/ifconfig lo0 inet 127.0.0.53 broadcast 127.0.0.255 \
netmask 255.255.255.255 alias
/usr/sbin/jail /usr/jail turbo.rudi.hu 127.0.0.53 /bin/sh /etc/rc.d/dnsstart.sh


cat /usr/jail/etc/rc.d/dnsstart.sh

#!/bin/sh
/usr/sbin/named -c /etc/namedb/named.conf -q -g bind -u bind


cat /etc/namedb/named.conf (minimum!)

options	{
	directory "/etc/namedb";
	listen on port 8053
		{
		127.0.0.53;
		};
	};

Az nslookup hasznalatahoz az 127.0.0.53 - at fel kell venni a localhost.rev
fileba.


3.2. Bind a jailben chrootolva (en)

(Ez mar nagyon paranoid, de mukodik.) En a named chrootolt konyvtarat a
/usr/jail/usr/local/bind824_s ala pakoltam. Minden konyvtar a bind usere
es a bind groupe, 6770 jogosultsaggal.

/usr/jail/usr/local/bind824_s/dev/null

Ezt "mknod null c 2 2" parancsal lehet megtenni.

/usr/jail/usr/local/bind824_s/dev/log

Ezt a host rendszer syslogd indulalaskor a
syslogd_flags="-l /usr/jail/usr/local/bind824_s/dev/log" valtozoval lehet
izzitani. Bar a logolas meg nincs tesztelve. De valoszinu, hogy ezt a
fajlrendszert ro modban kellene mountolni, s ala a /var/logot rw modba,
a socketes logolast meg hagyni a fenebe. De varok otleteket.

/usr/jail/usr/local/bind824_s/etc/localtime
/usr/jail/usr/local/bind824_s/usr/libexec/named-xfer

Statikusan forditva! A Makefileba a CDEBUG resznel -g -Wall helyett -O2 -static.

/usr/jail/usr/local/bind824_s/usr/sbin/named

Statikusan forditva! A Makefileba a CDEBUG resznel -g -Wall helyett -O2 -static.

/usr/jail/usr/local/bind824_s/var/run/
/usr/jail/usr/local/bind824_s/var/log/
/usr/jail/usr/local/bind824_s/dnsstart.sh

cat /usr/jail/etc/rc.d/dnsstart.sh

#!/bin/sh
/usr/local/bind824_s/usr/sbin/named -c /etc/namedb/named.conf -q \
-g bind -u bind -t /usr/local/bind824_s


3.3. qmail a jailben (en)

(Na ezzel meg sehol sem vagyok...)

Leszedtem a qmailt a cr.yp.to - rol, a cc-conf fileban az elso sor
cc -O2 -static, hogy statikusan legyen forditva. conf-qmail - ban, meg azt
a konyvtart adom meg, ahova tegye a qmailt (a jailt). A jail inetd.confja
megeditalva, hogy az zizzentse a qmailt, az inetd meg a 127.0.0.25 - os portra
bindolva. A fenti scripttel nem kell, de ellenkezo esetben kellenek a jailnek
a qmail userek es a group bejegyzesek.


3.4. mysql a jailben (Rutz Antal)

(lo0_alias=127.0.0.80/32 <- jailhost IP-je)

meg a ports-bol felhuzott mysql osszes cuccat atmasoltam a /jail ala, aztan:
jail /jail jailhost 127.0.0.80 /usr/local/libexec/mysqld \
   --basedir=/usr/local --datadir=/var/db/mysql --skip-networking --user=mysql
elotte persze a megfelelo user-jogosutsagokat beallitani.

Az egesz egy apacs+php+mysql varazslas, aminek jail-ben kell mennie:

(cp -r /usr/local/apache /jail/usr/local)
szukseg van meg a libpam.*-ra is, ha autentikacio bele van forgatva

aztan, hogy az apacs 8080-on fusson:
ipfw add fwd 127.0.0.80,8080 tcp from any to <host_ip> 80
persze a kernelbe:
options      IPFIREWALL
options      IPFIREWALL_FORWARD
options      IPFIREWALL_DEFAULT_TO_ACCEPT #hogy konnyebbe tegyuk az eletet, 
                                          #hisz a gep amugyis firewall mogott
                                          #van

aztan:
jail /jail jailhost 127.0.0.80 /usr/local/apache/sbin/apachectl start


4. Kulon koszonet

kuksi at innet.hu


5. Akik segitenek

Niedermayer Miklos (Mico) mico at bsd.hu
Rutz Antal rutz at dab.iit.uni-miskolc.hu


6. Szerzo

Szabados Jozsef
szabadosjozsef at freemail.hu, alternativ: Szabados.Jozsef at innet.hu


8. Megtalalhato

Ha kiteszed valahova, ird meg legyszi, es ide meg beleirom. Koszi.


8. Copyright

Csak a szerzo modosithatja. Csak azert, hogy ne legyen ma' ezer jail-HOWTO.
--------- következő rész ---------
A non-text attachment was scrubbed...
Name: jail_1.3.tar.gz
Type: application/x-tar-gz
Size: 17397 bytes
Desc: nem elérhető
URL: <http://datacast.hu/pipermail/bsd/attachments/20010815/b1b60327/attachment.bin>


További információk a(z) BSD levelezőlistáról