GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan shell yang dipenjara dengan jailkit di ubuntu

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/
Ubuntu
  1. Pengaturan server awal dengan Ubuntu 14.04

  2. Cara membuat Pengguna SSH yang Dipenjara dengan Jailkit di Debian 9 (Peregangan)

  3. Cara Setup IP Failover dengan KeepAlived di Ubuntu &Debian

  1. Menggunakan Ubuntu Dengan Pengaturan Dua Layar?

  2. Instal Ubuntu Dengan Uid Tertentu?

  3. Siapkan lingkungan chroot di Ubuntu dengan debootstrap

  1. Cara Mengatur Server FTP dengan VSFTPD di Ubuntu 20.04

  2. Siapkan Wadah Linux dengan LXC di Ubuntu 16.04

  3. Cara Mengatur Django dengan Postgres, Nginx dan Gunicorn di Ubuntu 20.04