Selasa, 27 Mei 2008

Membuat Chroot dengan sshd

Tujuan dari chroot terhadap suatu login(account/user) adalah untuk "memenjarakan" user tersebut ke home direktorinya sendiri sehingga user yang bersangkutan tidak bisa "naik" ke direktori yang lebih tinggi diatasnya. Hal ini mungkin bisa meminimalisir usaha pembajakan terhadap suatu account yang lain (misalnya root) ataupun pencurian data user maupun data penting lainnya pada suatu sistem operas i linux.

Karena sshd yang mendukung chroot adalah sshd dari ssh.com, maka langkah yang pertama adalah menginstall sshd tersebut dan menguninstall openssh (sshd yang digunakan berlisensi free for non commercial use), jika anda sudah menggunakan sshd dari ssh.com anda bisa melewati langkah berikut ini :


[root@kurowo asfik]# wget ftp://ftp.ssh.com/pub/ssh/ssh-3.2.3.tar.gz

[root@kurowo asfik]# tar -xzvf ssh-3.2.3.tar.gz

[root@kurowo asfik]# cd ssh-3.2.3

[root@kurowo ssh-3.2.3]# ./configure

[root@kurowo ssh-3.2.3]# make

[root@kurowo ssh-3.2.3]# make install

Perhatian, langkah berikut ini sangatlah penting, silakan berhati-hati dalam mengerjakannya, terutama jika anda bekerja diserver secara remote. Aktifkan terlebih dahulu protokol telnet, hal ini untuk mencegah jika tiba-tiba kita tidak bisa terhubung ke server menggunakan ssh.

Pada distro Redhat anda bisa menyunting

file /etc/xinetd.d/telnetdan ubah pada bagian disable = yes menjadi disable = no.

Kemudian restart xinetd :

[root@kurowo asfik]# service xinetd restart

Setelah ok, silakan masuk ke server melalui protokol telnet, langkah selanjutnya adalah langsung menghentikan sshd yang masih berjalan :

[root@kurowo asfik]# service sshd stop

Pastikan semua user telah logout (atau kita logoutkan secara pasti :D ):

[root@kurowo asfik]# killall -9 sshd

Hapus openssh :

[root@kurowo asfik]# for a in $(rpm -qa | grep openssh); do rpm -e --nodeps $a; done

Semenjak root merupakan account yang keramat, maka kita putuskan untuk menolak ssh dengan login root dengan menyunting file /etc/ssh2/sshd2_config pada bagian

PermitRootLogin menjadi :

PermitRootLogin no

Jalankan sshd yang terbaru dari ssh.com :

[root@kurowo asfik]# /usr/local/sbin/sshd

Untuk memastikan sshd yang baru secara otomatis dijalankan setiap server di reboot :

[root@kurowo asfik]# echo "/usr/local/sbin/sshd" >> /etc/rc.local

Silakan dicoba untuk melakukan ssh ke server tersebut, jika sukses, jangan lupa langsung mematikan kembali daemon telnet dengan menyunting kembali /etc/xinetd.d/telnet dan mengubah bagian disable = no menjadi disable = yes, dan karena kita tidak memerlukan

xinetd :

[root@kurowo asfik]# service xinetd stop

Buat user baru yang akan dichroot (misalnya user niken ) sekalian kita set passwordnya :

[root@kurowo asfik]# useradd niken

[root@kurowo asfik]# passwd niken

Changing password for user niken

New password:

Retype new password:

passwd: all authentication tokens updated successfully

Buat direktori etc,bin,lib didirektori /home/niken :

[root@kurowo asfik]# mkdir /home/niken/{etc,bin,lib}

Buat entry untuk user niken di file /home/niken/etc/passwd dan /home/niken/etc/group :

[root@kurowo asfik]# grep ^niken /etc/passwd > /home/niken/etc/passwd

[root@kurowo asfik]# grep ^niken /etc/group > /home/niken/etc/group

Install bash dengan menyalin file /bin/bash ke /home/niken/bin:

[root@kurowo asfik]# cp /bin/bash /home/niken/bin

Salin file library yang digunakan oleh bash (anda bisa memeriksanya dengan perintah ldd) :

[root@kurowo asfik]# ldd /bin/bash

libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001d000)

libdl.so.2 => /lib/libdl.so.2 (0x40021000)

libc.so.6 => /lib/i686/libc.so.6 (0x40025000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

[root@kurowo asfik]# cp /lib/libtermcap.so.2 /home/niken/lib

[root@kurowo asfik]# cp /lib/libdl.so.2 /home/niken/lib

[root@kurowo asfik]# cp /lib/i686/libc.so.6 /home/niken/lib

[root@kurowo asfik]# cp /lib/ld-linux.so.2 /home/niken/lib

Atau bisa juga dengan menggunakan perintah ini :

[root@kurowo asfik]# for a in $(ldd /bin/bash | awk '{print $3}'); do cp $a

/home/niken/lib/; done

Untuk Redhat 7.x, salin pula file /lib/libnss_files.so.2, /lib/libnsl.so.1dan

/lib/libnss_compat.so.2 :

[root@kurowo asfik]# cp /lib/libnss_files.so.2 /home/niken/lib

[root@kurowo asfik]# cp /lib/libnsl.so.1 /home/niken/lib

[root@kurowo asfik]# cp /lib/libnss_compat.so.2 /home/niken/lib

Jika diperlukan juga, install file-utils (ln,ls,rm,mv,cp,du,mkdir):

[root@kurowo asfik]# cp /bin/{ln,ls,rm,mv,cp,mkdir} /home/niken/bin

[root@kurowo asfik]# cp /usr/bin/du /home/niken/bin

Periksa kembali library yang akan digunakan oleh file -file tersebut dengan menggunakan perintah ldd (misalnya: ldd /bin/ls dan seterusnya), kemudian salin ke direktori lib pada home direktori user yang bersangkutan. Ganti kepemilikan /home/niken ke user niken :

[root@kurowo asfik]# chown -R niken.niken /home/niken

Jika anda menginginkan agar user yang bersangkutan tidak bisa menghapus file/direktori yang digunakan dalam chroot, anda bisa menggunakan perintah chattr :

[root@kurowo asfik]# chattr -R +i /home/niken/{bin,etc,lib}

Langkah terakhir adalah menambahkan entry niken pada file /etc/ssh2/sshd2_config bagian ChRootUsers menjadi sebagai berikut :

ChRootUsers anonymous,ftp,guest,niken

Restart daemon ssh :

[root@kurowo asfik]# killall -HUP sshd

Jika sukses, anda bisa mencoba ssh ke localhost dengan menggunakan login niken :

[root@kurowo asfik]# ssh niken@localhost

niken's password:

Authentication successful.

Last login: Wed Feb 26 2003 12:51:42 +0700 from localhost

No mail.

bash-2.05$ ls -la

total 40

drwx------ 5 niken niken 4096 Feb 26 05:48 .

drwx------ 5 niken niken 4096 Feb 26 05:48 ..

-rw------- 1 niken niken 57 Feb 26 05:52 .bash_history

-rw-r--r-- 1 niken niken 24 Feb 26 05:21 .bash_logout

-rw-r--r-- 1 niken niken 191 Feb 26 05:21 .bash_profile

-rw-r--r-- 1 niken niken 124 Feb 26 05:21 .bashrc

-rw-r--r-- 1 niken niken 3511 Feb 26 05:21 .screenrc

drwxr-xr-x 2 niken niken 4096 Feb 26 05:47 bin

drwxr-xr-x 2 niken niken 4096 Feb 26 05:49 etc

drwxr-xr-x 2 niken niken 4096 Feb 26 05:53 lib


Related Post :



1 comments:

MINYUNG mengatakan...

salam kenal
pada baris ini mohon di jelaskan lebih lanjut....

Pada distro Redhat anda bisa menyunting

file /etc/xinetd.d/telnetdan ubah pada bagian disable = yes menjadi disable = no.


karena pada redhat saya(centos) xinetd.d berisi:
eklogin ekrb5-telnet gssftp klogin krb5-telnet kshell rsync

dan untuk menuju telnet itu pake command apa?
nano apa vi

R