NEW : Jailling user in OpenSSH

Anda inginkan Nota Lengkap, sila muat turun di URL berikut :
Nota Lengkap Garis Panduan Operasi CERT Pahang

Dah lama dah aku cari solution ni, banyak juga aku bertanya kat member2 aku yg expert...mungkin sebab aku ni tak reti nak explain ke diaorg jadi masing-masing tak dapat bagi solution yang tepat...semalam aku post kt FB ada respon dan aku dapat idea dari situ...Jadi nilah penyelesaiannya.

Masalah :
Aku handle 1 web server yang berkongsi pelbagai sistem didalamnya. Aku create setiap seorang pentadbir sistem dengan user masing-masing dan mereka ditetapkan home root masing-masing ke folder sistem masing-masing. Aku juga tetapkan owner dan group owner folder kepada user dan group user berkenaan. Namun masalahnya user tu boleh buka folder sistem orang lain dan boleh pergi merayap ke folder lain dalam server. Memanglah mereka tak boleh nak edit atau delete sebab file permission ditetapkan kepada owner berkenaan sahaja boleh buat semua tu...namun mereka boleh read dan mereka boleh copy masuk ke PC masing-masing guna WinScp...masalah-masalah...hakcipta sistem tidak terpelihara!

Penyelesaian :
Guna kaedah kurung mereka di dalam folder masing-masing sahaja dan gunakan konfigurasi chroot di dalam OpenSSH.

Untuk pengetahuan, bermula dari OpenSSH 4.8p1 sehingga terkini dah boleh support buat konfigurasi mengurung menggunakan chroot ni..versi sebelum ni takleh dan kena guna software lain macam rssh, scponly dan pelbagai patches OpenSSH orang create...

Kaedahnya kita akan kurung user tersebut di dalam folder berkenaan sahaja dan penggunaan sftp sahaja dibenarkan kepada user tersebut.

Kelebihannya :
1) Halang user dari merayap dan baca config server atau copy fail2 sistem orang lain atau copy backup fail di server...
2) Menutup akses menggunakan normal ssh menerusi putty, kerana user aku ni hanya nak copy data ke server tu je..bukannya dia nak run command tertentu..kalau nak kena mintak kebenaran admin server la dulu kan..
3) Kenapa tak guna ftp je kan semua ni dah ada...betuiiiii...cumanya ia tak encrypt..yang ni guna secure FTP...kawalan pengguna adalah bergantung kepada sistem..kalau power ftp server mungkin secure functionnya. Namun ia tak dapat halang dari hackers sniff packet transfer melalui FTP..

So caranya begini : (Anggap macam setup atas server baru)

1) GNU Compiler Collection kena install untuk membolehkan install program ni nanti
yum install gcc

2) Install Zlib (Download versi terkini, yg ni contoh je)

cd /tmp
mkdir -p /opt/zlib
mkdir zlib1.25
cd zlib1.25/
wget http://zlib.net/zlib125.zip
unzip zlib125.zip
make
make install prefix=/opt/zlib/

* Lokasi folder zlib terpulang pada anda

3) Install OpenSSL (Download versi terkini, yg ni contoh je)

cd /tmp
mkdir -p /opt/openssl
wget http://www.openssl.org/source/openssl-1.0.0e.tar.gz
tar xvzf openssl-1.0.0e.tar.gz
cd openssl-1.0.0e
./config --prefix=/opt/openssl --openssldir=/opt/openssl
make
make test
make install

* Lokasi folder OpenSSL terpulang pada anda

4) Download OpenSSH (Download versi terkini, yg ni contoh je)

cd /tmp
mkdir -p /opt/openssh
wget http://mirror.team-cymru.org/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
tar xvzf openssh-5.9p1.tar.gz
cd openssh-5.9p1
* Lokasi folder openSSH terpulang pada anda

5) Install OpenSSH. Jika tak confirm lokasi xauth taip di command line "which xauth"

./configure --prefix=/opt/openssh --with-ssl-dir=/opt/openssl --with-xauth=/usr/X11R6/bin/xauth --with-zlib=/opt/zlib
make
make install


6) Untuk tetapkan auto run ssh shell, gunakan init. Tukar line di /etc/init.d/sshd

# Some functions to make the below more readable
KEYGEN=/opt/openssh/bin/ssh-keygen
SSHD=/opt/openssh/sbin/sshd
RSA1_KEY=/opt/openssh/etc/ssh_host_key
RSA_KEY=/opt/openssh/etc/ssh_host_rsa_key
DSA_KEY=/opt/openssh/etc/ssh_host_dsa_key


7) Kendian restart SSH untuk pastikan ianya tiada masalah :

/etc/init.d/sshd restart

8) Test pulak dari PC Client guna telnet :
>Telnet localhost 22
Result :

Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
SSH-2.0-OpenSSH_5.9


* Sahkan betui anda install versi berkenaan

9) Kendian, edit '/opt/openssh/etc/sshd_config' untuk tujuan menyedia kurungan (jail). Gantikan sebarang line menyatakan 'subsystem' dengan line berikut :

Match Group sftponly
        ChrootDirectory /var/www/html/muzzotechspot
        ForceCommand internal-sftp
        AllowTcpForwarding no


10) Create user dan masukkan dalam group berkenaan dan tetapkan home directory beliau :

useradd muzzo
usermod -g sftponly muzzo
usermod -s /bin/false muzzo
usermod -d /var/www/html/muzzotechspot
passwd muzzo

* Tetapkan password kepada test..nanti tukar semula la..



11) Kendian, bina kurungan (jail) :

chmod 755 /var/www/html/muzzotechspot
chown root:root /var/www/html/muzzotechspot
mkdir /var/www/html/muzzotechspot/website
chown muzzo:sftponly /var/www/html/muzzotechspot/website

12) Sekarang cuba login guna putty (atau mana-mana ssh terminal). Mesti anda akan dapat error atau denied access atau tetiba tertutup je Putty anda.

Lepas tu cuba log in user muzzo menggunakan winscp (atau yang sama SFTP dengannya). Pasti anda akan berada dalam folder :  /var/www/html/muzzotechspot...pada winscp anda tak boleh ke directory di atasnya dan anda akan nampak seolah berada di folder "/"

Rujukan :
http://adamsworld.name/chrootjailv5.php
http://www.debian-administration.org/articles/590

Sekarang anda berjaya, jadi hebahkan kat kawan2 anda...moga ilmu ni berpanjangan..

~ Be a Creator Not a User ~

Ulasan