Server Security| Root Jail

Posted by Abonk on Wed, 08/01/2012 - 13:14

Root jail atau chroot environtment adalah suatu teknik pengamanan server dengan metode memasukkan sebuah service kedalam penjara… ( kaya gayus aja :hammer: ), teknik ini sebaiknya di lakukan terhadap service yang bisa berjalan baik di user non root (contohnya httpd/apache).  Hubungannnya dengan keamanan ? misalkan gini… suatu saat di tengah malam bugtrack merilis bug baru apache versi xx yang ternyata terinstall di server kita, dan saat itu kita sedang bobo, hehe. Nah dengan menggunakan exploit yang di rilis (biasanya sploit cepet keluar kalau bug sudah di temukan) seorang script kiddie melakukan testing (yang kebetulan server kita yang ditemukannya), dan jreng…  dia berhasil rooting via apache.. wow… kacau
Tapi… scenario lainnya : si script kiddie melakukan testing, jreng.. berhasil rooting via apache, tapi dia ga ada didalam root sebenarnya dan server kita aman untuk sementara sampai paginya kita melakukan patching… karna apache sudah kita penjarakan.. hehe

Ok seperti kuliah aja jadinya.. panjang banget epilognya..:

Langkahnya :
1.    Mengetahui nama dan letak daemon service yang akan di jail
2.    Mengetahui kebutuhan librarynya
3.    Membuat  struktur root file system di bawah root sebenarnya
4.    Membuat file-file device yang dibutuhkan daemon service (pake “mknod”)
5.    Mengkopi semua library dan file-file yang dibutuhkan dari filesystem root asli ke jail
6.    Menjalankan  service pake chroot

Prakteknya :
1.    Mengatahui nama dan letak daemon service
a.    #rpm –qa |grep httpd maka akan keluar versi httpd kita
b.    Cek file dan direktori

#rpm –ql  httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/proxy_ajp.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/httpd/logs
/etc/httpd/modules
/etc/httpd/run
/etc/logrotate.d/httpd
/etc/rc.d/init.d/httpd
/etc/sysconfig/httpd
/usr/bin/ab
/usr/bin/htdbm
/usr/bin/htdigest
/usr/bin/htpasswd
/usr/bin/logresolve
/usr/lib/httpd
/usr/lib/httpd/modules
/usr/lib/httpd/modules/mod_actions.so
/usr/lib/httpd/modules/mod_alias.so
/usr/lib/httpd/modules/mod_asis.so

c.    Temukan lokasi program daemon dari httpd

#which httpd
/usr/sbin/httpd

2.    Mengetahui kebutuhan librarynya

#ldd /usr/sbin/httpd

Hasilnya :

linuxgate.so.1 => (0x0012b000)
libm.so.6 => /lib/libm.so.6 (0x0012c000)
libpcre.so.0 => /lib/libpcre.so.0 (0x00153000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00170000)
libaprutil1.so.0 => /usr/lib/libaprutil1.so.0 (0x00187000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x001a4000)
libldap2.3.so.0 => /usr/lib/libldap2.3.so.0 (0x001d2000)
liblber2.3.so.0 => /usr/lib/liblber2.3.so.0 (0x0020c000)
libdb4.3.so => /lib/libdb4.3.so (0x0021a000)
libexpat.so.0 => /lib/libexpat.so.0 (0x00311000)
libapr1.so.0 => /usr/lib/libapr1.so.0 (0x00332000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0035a000)
libdl.so.2 => /lib/libdl.so.2 (0x00371000)
libc.so.6 => /lib/libc.so.6 (0x00375000)
/lib/ldlinux.so.2 (0x00110000)
libsepol.so.1 => /lib/libsepol.so.1 (0x004b2000)
libuuid.so.1 => /lib/libuuid.so.1 (0x004f8000)
libpq.so.4 => /usr/lib/libpq.so.4 (0x004fb000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x0051b000)
libresolv.so.2 => /lib/libresolv.so.2 (0x0057a000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x0058d000)
libssl.so.6 => /lib/libssl.so.6 (0x005a6000)
libcrypto.so.6 => /lib/libcrypto.so.6 (0x005eb000)

3.    Membuat struktur direktori root jail

# mkdir –p /var/jail/bin
# mkdir –p /var/jail/sbin
# mkdir –p /var/jail/etc
# mkdir –p /var/jail/dev
# mkdir –p /var/jail/tmp
# mkdir –p /var/jail/lib
# mkdir –p /var/jail/proc
# mkdir –p /var/jail/usr/bin
# mkdir –p /var/jail/usr/sbin
# mkdir –p /var/jail/usr/lib
# mkdir –p /var/jail/var/run
# mkdir –p /var/jail/var/lib
# mkdir –p /var/jail/var/log
# mkdir –p /var/jail/home
# mkdir –p /var/jail/etc/init.d
# mkdir –p /var/jail/etc/rc.d/init.d
# mkdir –p /var/jail/var/lock/subsys

4.    Membuat device yang dibutuhkan

# mknod /var/jail/dev/zero c 1 5
# mknod /var/jail/dev/null c 1 3
# mknod /var/jail/dev/urandom c 1 9
# mknod /var/jail/dev/random c 1 8
# chmod 666 /var/jail/dev/*

5.    Mengkopi semua lib dan file2 yang dibutuhkan

# cp /usr/sbin/httpd /var/jail/usr/sbin/
# cp /lib/libm.so.6 /var/jail/lib/
# cp /lib/libpcre.so.0 /var/jail/lib/
# cp /lib/libselinux.so.1 /var/jail/lib/
# cp /usr/lib/libaprutil1.so.0 /var/jail/usr/lib/

lanjutkanpenyalinan untuk library lainnya sebagaimana yang terdaftar dari hasil perintah
ldd /usr/sbin/httpd di atas tadi hehe

menyalin beberapa file configurasi ke direktori root jail :

# cp /etc/passwd /var/jail/etc
# cp /etc/group /var/jail/etc
# cp /etc/shadow /var/jail/etc
# cp /etc/bashrc /var/jail/etc
# cp /etc/profile /var/jail/etc
# cp /etc/profile /var/jail/etc
# cp /etc/localtime /var/jail/etc
# cp /etc/hosts /var/jail/etc
# cp –rf /etc/profile.d /var/jail/etc
# cp /lib/ld* /var/jail/lib/
# cp /bin/bash /var/jail/bin/
# cp /etc/nsswitch.conf /var/jail/etc/
# cp /usr/bin/getent /var/jail/usr/bin/
# cp /etc/services /var/jail/etc/
# cp –rf /etc/ld.so.c* /var/jail/etc/
# cp /sbin/ldconfig /var/jail/sbin/
# cd /var/jail/lib/
# ln –s bash sh
# cp –rf /lib/libnss_* /var/jail/lib/
# cp /etc/fstab /var/jail/etc
# cp /bin/grep /var/jail/bin/
# mkdir /var/jail/etc/init.d
# mkdir –p /var/jail/etc/rc.d/init.d/
# cp /lib/libtermcap.so.2 /var/jail/lib/
# cp /etc/rc.d/init.d/functions /var/jail/etc/rc.d/init.d/
# cp /sbin/consoletype /var/jail/sbin/
# cp /etc/shells /var/jail/etc/
# cp /etc/mime.types /var/jail/etc/
# cp /bin/usleep /var/jail/bincp /etc/passwd /var/jail/etc
# cp /etc/group /var/jail/etc
# cp /etc/shadow /var/jail/etc
# cp /etc/bashrc /var/jail/etc
# cp /etc/profile /var/jail/etc
# cp /etc/profile /var/jail/etc
# cp /etc/localtime /var/jail/etc
# cp /etc/hosts /var/jail/etc
# cp –rf /etc/profile.d /var/jail/etc
# cp /lib/ld* /var/jail/lib/
# cp /bin/bash /var/jail/bin/
# cp /etc/nsswitch.conf /var/jail/etc/
# cp /usr/bin/getent /var/jail/usr/bin/
# cp /etc/services /var/jail/etc/
# cp –rf /etc/ld.so.c* /var/jail/etc/
# cp /sbin/ldconfig /var/jail/sbin/
# cd /var/jail/lib/
# ln –s bash sh
# cp –rf /lib/libnss_* /var/jail/lib/
# cp /etc/fstab /var/jail/etc
# cp /bin/grep /var/jail/bin/
# mkdir /var/jail/etc/init.d
# mkdir –p /var/jail/etc/rc.d/init.d/
# cp /lib/libtermcap.so.2 /var/jail/lib/
# cp /etc/rc.d/init.d/functions /var/jail/etc/rc.d/init.d/
# cp /sbin/consoletype /var/jail/sbin/
# cp /etc/shells /var/jail/etc/
# cp /etc/mime.types /var/jail/etc/
# cp /bin/usleep /var/jail/bin

Menyalin tools lainnya seperti “ls”
 

#which ls
/bin/ls
#cp /bin/ls /var/jail/bin/
#ldd /bin/ls
linuxgate.so.1 => (0x00110000)
librt.so.1 => /lib/librt.so.1 (0x001a4000)
libacl.so.1 => /lib/libacl.so.1 (0x00681000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00229000)
libc.so.6 => /lib/libc.so.6 (0x004fa000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00668000)
/lib/ldlinux.so.2 (0x004dd000)
libattr.so.1 => /lib/libattr.so.1 (0x002b7000)
libdl.so.2 => /lib/libdl.so.2 (0x00662000)
libsepol.so.1 => /lib/libsepol.so.1 (0x00242000)

# cp –rf /lib/librt.so.1 /var/jail/lib/
# cp –rf /lib/libacl.so.1 /var/jail/lib/
# cp –rf /lib/libselinux.so.1 /var/jail/lib/
# cp –rf /lib/libc.so.6 /var/jail/lib/
# cp –rf /lib/libpthread.so.0 /var/jail/lib/
# cp –rf /lib/libattr.so.1 /var/jail/lib/
# cp –rf /lib/libdl.so.2 /var/jail/lib/
# cp –rf /lib/libsepol.so.1 /var/jail/lib/

Lakukan untuk tools-tools lainnya, seperti vi dan kawan-kawan.. hehe

6.    Menjalankan daemon dengan chroot

#chroot /var/jail
          -bash-3.1 $ls

Jika akses root jail berhasil coba jalankan httpd yang sudah di jail tadi dengan perintah :


#chroot /var/jail /usr/sbin/httpd
Atau
#chroot /var/jail /etc/init.d/httpd start

Coba cek apa httpd sudah jalan dalam jail atau tidak :

#pgrep httpd
4614
4617
4618
4619
4620
4621
4622
4623
4624
# ls –al /proc/4617
Lihat baris :

lrwxrwxrwx 1 root root 0 Feb 1 06:13 root -> /var/jail

bila sudah dalam jail selamat anda sukses memenjarakan apachenya hehe, selamat ber kreasi, apabila ada yang kurang atau salah silahkan dikoreksi yah.. maklum nubie nekat.. :malu:[/QUOTE]
 

 

Kategory: