Chroot (jail) di OpenSSH

Chroot (jail) merupakan metode root direktori (/) virtual yang akan menjadikan home direktori dari suatu user seperti root (/) di sistemnya sendiri sehingga mencegah user tersebut dapat naik ke level direktori yang lebih tinggi dan mengambil informasi dari sistem tersebut, disini distro yang digunakan Slackware 12 dan menggunakan OpenSSH, langkah pertama untuk membuatnya adalah mengambil paket OpenSSH, dan sebelumnya pastikan paket OpenSSH yang terinstall sebelumnya diremove terlebih dahulu sebelum memulai proses instalasi

wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz

dan agar OpenSSH dapat menjalankan fungsi jail (memenjarakan) maka kita harus mempatch-nya terlebih dahulu, dan patch-nya dapat diambil disini

http://paradigma.pt/~gngs/sshjail/downloads/openssh-4.6p1-sshjail.patch

selanjutnya ekstrak OpenSSH dan patch dengan patch yang baru kita download tadi

tar xvzf openssh-4.6p1.tar.gz
cd openssh-4.6p1
patch -p0 < ../openssh-4.6p1-sshjail.patch

kemudian jalankan perintah configure, compile (make), dan install (make install) (opsi-opsinya dapat anda sesuaikan sendiri :p )

./configure --with-md5-passwords --prefix=/opt/ sysconfdir=/etc/ssh/
make
make install

buat file konfigurasi /etc/sshjail.conf dengan opsi sebagai berikut

chroot=/home/rifqi users=rifqi

kemudian buat user yang nantinya akan kita "penjarakan" nantinya

adduser rifqqi
bla
bla
bla..

buat direktori yang nantinya akan menjadi root (/) direktori user tersebut dan sesuaikan kepemilikanya dan group-nya

mkdir -p /home/rifqi/{dev,etc,home/rifqi,bin,lib}
chmod 0511 /home/rifqi/{dev,etc,bin,home,lib}

buat device /dev/null untuk user dengan perintah

mknod /home/rifqi/dev/null c 1 3 chmod 666 /home/rifqi/dev/null

salin bash dan comaand-command yang nantinya akan digunakan oleh user

cp /usr/bin/bash /home/rifqi/bin/
cp /bin/{ln,ls,rm,mv,cp,mkdir} /home/rifqi/bin
cp /bin/du /home/rifqi/bin

cek library yang digunakan dari masing-masing command tersebut

ldd /bin/bash
ldd /bin/ls

salin library-library dari hasil ldd tersebut ke direktori /lib dari user

cp /lib/libtermcap.so.2 /home/rifqi/lib
cp /lib/libdl.so.2 /home/rifqi/lib
cp /lib/libc.so.6/home/rifqi/lib
cp /lib/ld-linux.so.2 /home/rifqi/lib
cp /lib/librt.so.1 /home/rifqi/lib
cp /lib/libacl.so.1 /home/rifqi/lib
cp /lib/libpthread.so.0 /home/rifqi/lib
cp /lib/libattr.so.1 /home/rifqi/lib

salin /etc/passwd dan /etc/group dengan command berikut

grep ^rifqi /etc/passwd > /home/rifqi/etc/passwd
grep ^root /etc/passwd >> /home/rifqi/etc/passwd
grep ^users /etc/group > /home/rifqi/etc/group
grep ^root /etc/group >> /home/rifqi/etc/group

ubah file /home/rifqi/etcpasswd hingga menjadi seperti berikut

rifqi:x:1001:100:,,,:/home/rifqi/:/dev/null
root:x:0:0::/:/dev/null

ubah /etc/passwd hingga menjadi seperti berikut

rifqi:x:1002:100:,,,:/home/rifqi/home/rifqi:/bin/bash

kemudian ubah kepemilikan direktori "jail" tersebut menjadi kepemilikan user tersebut

chown -R rifqi.users /home/rifqi

Jalankan ssh tersebut, sebelum menjalankan ssh dari /etc/rc.d/rc.sshd lakukan sedikit perubahan pada file /etc/rc.d/rc.sshd agar letak binari ssh sesuai dengan yang tadi kita install

#/usr/sbin/sshd
/sbin/sshd

dan nyalakan ssh dengan perintah /etc/rc.d/rc.sshd start, kemudian lakukan uji coba ssh dengan menggunakan account yang tadi kita buat #:-S.

apabila tidak terjadi kesalahan maka user rifqi akan login ke home direktorinya di /home/rifqi/home/rifqi dan root (/) direktori dari user tersebut adalah /home/rifqi

Last login: Wed Oct  3 14:27:59 2007 from 10.13.177.48
-bash-3.1$ pwd
/home/masrifqi
-bash-3.1$cd /
-bash-3.1$ ls
bin  dev  etc  home  lib
-bash-3.1$

dan mulai sekarang maka user tersebut (rifqi) setiap kali login akan mempunyai home direktori dan root-nya sendiri :-).

Leave a comment ?

15 Comments.

  1. Oh ya Masrifqi, paket openssh-4.6p1 karena sudah terinstall di slackware sebelumnya, lebih baik diremove lebih dulu baru install openssh yang sudah di patch.

    Kalau develop paket openssh pake slackbuild atawa makepkg , bisa langsung upgrade tanpa perlu remove paket sebelumnya.

    Btw, Sip ! Penjelasannya mudah dimengerti & mengasyikan. πŸ™‚

  2. terimakasih koreksinya mas, proses remove-nya ketinggalan.. πŸ˜€

  3. ngepatch nya level 1

    awaludin:/home/awal# tar zxf openssh-4.6p1.tar.gz
    awaludin:/home/awal# cd openssh-4.6p1
    awaludin:/home/awal/openssh-4.6p1# patch -p1

  4. Minta ijin untuk copy definisi chroot (jail) untuk publikasi πŸ™‚

    Saya kasih link ke situs ini di artikel saya

  5. Silahkan mas, tapi definisinya berantakan πŸ˜€

  6. Apa khabar mas…..

    Mohon penjelasan dari pada mas ……apakah sama

    “setup” nya untuk ubuntu? ( maaf saya masih baru dalam

    dunia linux ini. )

    Harap mendapat jawaban sewajarnya.

    Makasih.

  7. secara garis besar sama πŸ™‚

  8. kalo tanpa remove paket openssh yg sdh terinstall bisa ga mas??
    jadi langsung patch paketnya

  9. @lutfi:
    kalo pake paket bawaanya setau saya ga bisa, karena itu maka butuh di patch dulu

  10. root@slack[arak]com:/home/root/openssh-4.6p1# mknod /home/maong/dev/null c 1 3 chmod 666 /home/maong/dev/null
    mknod: extra operand `chmod’
    Try `mknod –help’ for more information.

    kok bisa gitu ya? salahnya di maana sih ??

  11. /home/maong/dev/null c 1 3 
    

    dan

    chmod 666 /home/maong/dev/null

    itu perintah yang berlainan, dijalankan sendiri, kalo disambung ya pasti error

  12. Chroot (Jail) di Open SSH « Catatan Kegiatan Didan - pingback on July 24, 2009 at 10:54
  13. mas koq nulinya gini saya liat diatas :

    masrifqi:x:1002:100:,,,:/home/masrifqi/home/rifqi:/bin/bash

    koq tau2 berubah masrifki, kan usernya rifki, kalo merubah nama users berarti sama saja menghapus nama users itu di /etc/passwd

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackbacks and Pingbacks: