writer : Asfihani (asfik@cakraweb.com)
26 Februari 2003
Jika Anda merasa apa yang saya tulis berikut ini berguna dan ingin membuat saya gembira, Anda bisa mengirimkan satu (atau lebih) CD dari daftar wishlist saya. Tentu saja, usaha Anda akan sangat saya hargai :-).
Pendahuluan
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 operasi 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
FIN
http://efnet.linux.or.id/docs/ <--- link this sites
No comments:
Post a Comment