Shell dan Jailkit yang Dipenjara
Cangkang yang dipenjara adalah sejenis cangkang terbatas yang memberi pengguna cangkang yang tampak sangat nyata tetapi tidak memungkinkannya untuk mengacaukan/melihat/memodifikasi bagian mana pun dari sistem file yang sebenarnya. Sistem file di dalam shell berbeda dari sistem file sebenarnya dari sistem yang mendasarinya. Fungsionalitas seperti itu dicapai melalui chroot dan menemukan banyak jenis aplikasi. Misalnya untuk mengatur shell linux agar pengguna hanya "bermain dengan". Atau jalankan beberapa program dengan fungsionalitas penuh tetapi dalam lingkungan terbatas dan sebagainya.
Dalam tutorial ini kita akan berbicara tentang menyiapkan shell yang di-jail dengan cepat dengan jailkit di ubuntu. Jailkit adalah program pembantu yang memungkinkan untuk dengan cepat menyiapkan shell yang dipenjara, memenjarakan pengguna di dalamnya, dan mengonfigurasi program untuk dijalankan dari lingkungan yang dipenjara.
Jailkit dapat diunduh dari
http://olivier.sessink.nl/jailkit/
Kami telah membahas tentang menginstal jailkit di ubuntu jadi periksa posting itu.
Menyiapkan shell yang dipenjara
1. Siapkan lingkungan penjara
Perlu ada direktori tempat seluruh lingkungan penjara akan diatur. Mari kita lakukan di /opt/jail. Ini bisa apa saja.
$ sudo mkdir /opt/jail
Root harus memiliki direktori ini. Jadi, tunjukkan.
$ sudo chown root:root /opt/jail
2. Siapkan program agar tersedia di dalam jail
Semua program yang perlu tersedia di jail perlu disalin di dalamnya menggunakan perintah jk_init.
Contoh
$ sudo jk_init -v /jail basicshell $ sudo jk_init -v /jail editors $ sudo jk_init -v /jail extendedshell $ sudo jk_init -v /jail netutils $ sudo jk_init -v /jail ssh $ sudo jk_init -v /jail sftp $ sudo jk_init -v /jail jk_lsh
Atau sekaligus
$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp
Nama-nama seperti basicshell , editors , netutils adalah grup yang berisi banyak program. Setiap grup adalah satu set file yang dapat dieksekusi, perpustakaan, dll untuk disalin ke dalam shell. Misalnya, bagian kulit dasar menyediakan banyak program seperti bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep dll di jail.
Untuk daftar lengkap bagian yang dapat diatur, lihat /etc/jailkit/jk_init.ini
.
jk_lsh (Jailkit limited shell) - is an important section, and must be added.
3. Buat pengguna yang akan dipenjara
Perlu pengguna untuk dimasukkan ke dalam penjara. Ayo buat satu
$ sudo adduser robber Adding user `robber' ... Adding new group `robber' (1005) ... Adding new user `robber' (1006) with group `robber' ... Creating home directory `/home/robber' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for robber Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Perhatikan bahwa ini adalah pengguna biasa yang dibuat dalam sistem file yang sebenarnya dan bukan di dalam jail.
Pada langkah berikutnya pengguna ini akan dipenjara di dalam jail.
Pada titik ini jika Anda melihat /etc/passwd Anda akan melihat entri di akhir yang terlihat seperti ini
robber:x:1006:1005:,,,:/home/robber:/bin/bash
Ini adalah pengguna baru kami dan bagian terakhir /bin/bash menunjukkan bahwa pengguna memiliki akses shell normal pada sistem, jika dia login.
4. Penjarakan pengguna
Sekarang saatnya memasukkan pengguna ke dalam penjara.
$ sudo jk_jailuser -m -j /opt/jail/ robber
Dengan melakukan ini perampok pengguna sekarang telah dipenjara.
Sekarang jika Anda melihat /etc/passwd entri terakhir akan terlihat seperti ini
robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh
Perhatikan bahwa 2 bagian terakhir yang menunjukkan pengguna rumahan dan tipe shell telah berubah. Direktori home pengguna sekarang berada di dalam lingkungan jail di /opt/jail. Shell pengguna sekarang menjadi program khusus yang disebut jk_chrootsh yang akan menyediakan shell yang sudah di-jail.
Shell khusus yang disebut jk_chrootsh inilah yang membawa pengguna ke dalam penjara, setiap kali dia masuk ke sistem.
Pengaturan penjara sekarang hampir selesai. Tetapi jika Anda mencoba menghubungkan ke id dari ssh, itu akan gagal seperti ini :
$ ssh [email protected] [email protected]'s password: Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64) * Documentation: https://help.ubuntu.com/ 13 packages can be updated. 0 updates are security updates. *** /dev/sda7 will be checked for errors at next reboot *** *** /dev/sda8 will be checked for errors at next reboot *** Last login: Sat Jun 23 12:45:13 2012 from localhost Connection to localhost closed. $
Sambungan harus ditutup. Ini terjadi karena pengguna sebenarnya memiliki shell yang terbatas.
5. Berikan bash shell kepada pengguna di dalam penjara
Hal penting berikutnya yang harus dilakukan adalah memberi pengguna shell bash yang tepat, tetapi di dalam jail.
Buka file berikut
/opt/jail/etc/passwd
Ini adalah file kata sandi di dalam penjara. Ini akan terlihat seperti ini
root:x:0:0:root:/root:/bin/bash robber:x:1006:1005:,,,:/home/robber:/usr/sbin/jk_lsh
Ubah /usr/sbin/jk_lsh menjadi /bin/bash
root:x:0:0:root:/root:/bin/bash robber:x:1006:1005:,,,:/home/robber:/bin/bash
Simpan file dan keluar.
6. Masuk ke penjara
Jadi sekarang waktunya login ke penjara lagi
$ ssh [email protected] [email protected]'s password: Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64) * Documentation: https://help.ubuntu.com/ 13 packages can be updated. 0 updates are security updates. *** /dev/sda7 will be checked for errors at next reboot *** *** /dev/sda8 will be checked for errors at next reboot *** Last login: Sat Jun 23 12:46:01 2012 from localhost bash: groups: command not found I have no [email protected]:~$
Penjara mengatakan 'Saya tidak punya nama!' , ha ha. Sekarang kita memiliki bash shell yang berfungsi penuh tetapi di dalam penjara.
Sekarang periksa lingkungan dengan bergerak. Akar / dari lingkungan yang dipenjara adalah /opt/jail dari sistem file yang sebenarnya. Tapi hanya kita yang tahu itu, bukan pengguna yang dipenjara.
I have no [email protected]:~$ cd / I have no [email protected]:/$ ls bin dev etc home lib lib64 run usr var I have no [email protected]:/$
Juga hanya perintah yang disalin melalui bagian jk_cp yang akan tersedia di jail ini.
Jika login gagal, periksa /var/log/auth.log untuk pesan kesalahan.
Sekarang coba jalankan beberapa perintah jaringan seperti wget atau yang serupa.
$ wget http://www.google.com/
Jika Anda mendapatkan kesalahan seperti ini :
$ wget http://www.google.com/ --2012-06-23 12:56:43-- http://www.google.com/ Resolving www.google.com (www.google.com)... failed: Name or service not known. wget: unable to resolve host address `www.google.com'
Perbaiki dengan menjalankan 2 perintah berikut :
$ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_files.so.2 $ sudo jk_cp -v -j /opt/jail /lib/x86_64-linux-gnu/libnss_dns.so.2
Lokasi yang tepat dari libnss_files.so dan libnss_dns.so dapat bervariasi, jadi periksalah.
Menjalankan program atau layanan di penjara
Sekarang pengaturan selesai. Jail berguna untuk menjalankan program atau layanan di lingkungan terbatas/aman. Untuk meluncurkan program atau daemon di dalam jail, gunakan jk_chrootlaunch perintah.
$ sudo jk_chrootlaunch -j /opt/jail -u robber -x /some/command/in/jail
Utilitas jk_chrootlaunch dapat digunakan untuk meluncurkan proses tertentu di dalam lingkungan jail dengan hak istimewa dari pengguna tertentu. Jika daemon gagal dijalankan, periksa /var/log/syslog apakah ada pesan kesalahan.
Untuk menjalankan program di dalam jail, program pertama-tama harus disalin sepenuhnya di dalam jail menggunakan perintah jk_cp.
jk_cp - a utility to copy files including permissions and libraries into a jail
Untuk membaca lebih lanjut tentang berbagai perintah jailkit, periksa dokumentasi di
http://olivier.sessink.nl/jailkit/