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