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