jail-HOWTO

Szabados Jozsef Szabados.Jozsef at innet.hu
2001. Aug. 13., H, 20:48:29 CEST


Sziasztok!


Nos, egy picit kiegeszitettem, meg talaltam nehany jailes anyagot a neten,
ha lesz idom megnezem, meg beleteszem.

Aki gondolja, tegye ki a netre, most mar szerintem azert kiteheto. Mondjuk
amolyan kiserleti jelleggel. Tan anyaznak egy kicsit engem, de abbol lehet
fejlodni. Meg nem csak az az ms adatbazis konvertalos doksi lenne egyedul
a www.bsd.hu - n ;-)


Mico:

Meg a heten megrobalom megnezni a makejail.sh, meg a /etc/rc-t, hogy jol
mukodjon. Ill. a librarykat azert nem teszek bele nagyon, mert amit nyuzok a
jailben, azt statikusan forditom. Meg a szkripted altal csinalt jailbol is ki-
szedtem ezt-azt. Igy is fittin mukodik a named... ;-)


Nagy Attila

Meddig vagy szabin?


Valaki! (Nincs ezen a gepen archivum, nem tudok nevet mondani) 

Valaki az elmult honapban kiserletezett a jaillel, meg beletenni a sendmailt.
Sikerult? Hogy? Esetleg beletennemi a doksiba a leirast, ha nem baj.

Most sajnos egyeb dolgok miatt keveset tudok ezzel foglalkozni, de azert
igyekszek.


web lista:
ezen nem vagyok rajta, ha valaszoltok, dobjatok legyszi egy cc-t. koszi.


Udv
Szabados Jozsef

ui.: bocs, ha hosszura sikerult
--------- következő rész ---------
			Jail HOWTO 4. kiadas

Mon Aug 13 20:17:50 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
4. Kulon koszonet
5. Akik segitenek
6. Szerzo
7. 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.

2. Csinaljunk jail-t (Niedermayer Miklos)

Elsore imhol egy script ami jailt csinal. Koszi Mico.

#!/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

# 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

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/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.


4. Kulon koszonet

kuksi at innet.hu


5. Akik segitenek

Niedermayer Miklos (Mico) mico at bsd.hu


6. Szerzo

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


7. Copyright

Csak a szerzo modosithatja. Csak azert, hogy ne legyen ma' ezer jail-HOWTO.


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