Sayangnya, bahkan setelah mengambil langkah-langkah keamanan penting, kerentanan keamanan masih menemukan jalan mereka ke sistem yang aman. Salah satu cara untuk mengelola dan melindungi sistem Anda adalah dengan membatasi kemungkinan kerusakan setelah serangan terjadi.
Dalam tutorial ini, kita akan membahas proses penggunaan chroot jail untuk mengelola kerusakan sistem jika terjadi serangan. Kita akan melihat bagaimana mengisolasi proses dan subproses ke lingkungan tertentu dengan hak akses root palsu. Melakukan ini akan membatasi proses ke direktori tertentu dan menolak akses ke area sistem lain other.
Pengantar Singkat Untuk chroot jail
Penjara chroot adalah metode untuk mengisolasi proses dan subprosesnya dari sistem utama menggunakan hak akses root palsu.
Seperti disebutkan, mengisolasi proses tertentu menggunakan hak akses root palsu membatasi kerusakan jika terjadi serangan jahat malicious. Layanan chroot terbatas pada direktori dan file di dalam direktorinya dan tidak persisten saat layanan dimulai ulang.
Mengapa menggunakan penjara chroot
Tujuan utama dari chroot jail adalah sebagai tindakan keamanan. Chroot juga berguna saat memulihkan kata sandi yang hilang dengan memasang perangkat dari media langsung.
Ada berbagai keuntungan dan kerugian dari pengaturan chroot jail. Ini termasuk:
Keuntungan
- Membatasi akses: Jika terjadi gangguan keamanan, satu-satunya direktori yang rusak adalah direktori di dalam chroot jail.
- Batas perintah: Pengguna atau proses dibatasi pada perintah yang diizinkan di penjara.
Kekurangan
- Pengaturannya bisa jadi menantang.
- Ini membutuhkan banyak pekerjaan-Jika Anda memerlukan perintah tambahan daripada yang diizinkan secara default, Anda harus memasukkannya secara manual.
Cara Membuat Penjara Chroot Dasar
Dalam proses ini, kami akan membuat jail chroot dasar dengan 3 perintah terbatas pada folder itu. Ini akan membantu mengilustrasikan cara membuat penjara dan menetapkan berbagai perintah.
Mulailah dengan membuat folder utama. Anda dapat menganggap folder ini sebagai folder / di sistem utama. Nama foldernya bisa apa saja. Dalam kasus kami, kami menyebutnya /chrootjail
sudo mkdir /chrootjailKami akan menggunakan direktori ini sebagai root palsu yang berisi perintah yang akan kami berikan padanya. Dengan perintah yang akan kita gunakan, kita akan memerlukan direktori bin (berisi perintah yang dapat dieksekusi) dan, dll., direktori (berisi file konfigurasi untuk perintah).
Di dalam folder /chrootjail, buat dua folder ini:
sudo mkdir /chrootjail/etc,bin
Langkah selanjutnya adalah membuat direktori untuk perpustakaan yang terhubung secara dinamis untuk perintah yang ingin kita sertakan di penjara. Untuk contoh ini, kita akan menggunakan perintah bash, ls, dan grep.
Gunakan perintah ldd untuk membuat daftar dependensi dari perintah-perintah ini, seperti yang ditunjukkan di bawah ini:
sudo ldd /bin/bash /bin/ls /bin/grep
Jika Anda tidak berada di dalam folder bin, Anda harus melewati path lengkap untuk perintah yang ingin Anda gunakan. Misalnya, ldd /bin/bash atau ldd /bin/grep
Dari output ldd di atas, kita membutuhkan direktori lib64 dan /lib/x86_64-linux-gnu. Di dalam direktori jail, buat folder-folder ini.
sudo mkdir -p /chrootjaillib/x86_64-linux-gnu, lib64Setelah direktori perpustakaan dinamis dibuat, kita dapat membuat daftarnya menggunakan pohon, seperti yang ditunjukkan di bawah ini:
Seiring kemajuan kami, Anda akan mulai mendapatkan gambaran yang jelas tentang arti chroot jail.
Kami menciptakan lingkungan yang mirip dengan direktori root normal sistem Linux. Perbedaannya adalah, di dalam lingkungan ini, hanya perintah tertentu yang diizinkan, dan aksesnya terbatas.
Sekarang kita telah membuat bin. dll., lib, dan lib64, kita dapat menambahkan file yang diperlukan di dalam direktori masing-masing.
Mari kita mulai dengan binari.
sudo cp /bin/bash /chrootjail/bin && sudo cp /bin/ls /chrootjail/bin && sudo cp /bin/grep /chrootjail/bin
Setelah menyalin binari untuk perintah yang kita butuhkan, kita memerlukan perpustakaan untuk setiap perintah. Anda dapat menggunakan perintah ldd untuk melihat file yang akan disalin.
Mari kita mulai dengan bash. Untuk bash, kami memerlukan perpustakaan berikut:
/lib/x86_64-linux-gnu/libtinfo.begitu.6/lib/x86_64-linux-gnu/libdl.begitu.2
/lib/x86_64-linux-gnu/libc.begitu.6
/lib64/ld-linux-x86-64.begitu.2
Alih-alih menyalin semua file ini satu per satu, kita dapat menggunakan loop sederhana untuk menyalin setiap perpustakaan di semua perpustakaan ke /chrootjail/lib/x86_64-linux-gnu
Mari kita ulangi proses ini untuk perintah ls dan grep:
Untuk perintah ls:
Untuk perintah grep:
Selanjutnya, di dalam direktori lib64, kami memiliki satu perpustakaan bersama di semua binari. Kita cukup menyalinnya menggunakan perintah cp sederhana:
Selanjutnya, mari kita edit file login bash utama (terletak di /etc/bash.bashrc di Debian) sehingga kita dapat mengubah bash prompt sesuai dengan keinginan kita. Menggunakan perintah echo dan tee sederhana seperti yang ditunjukkan:
sudo echo 'PS1="CHROOTJAIL #"' | sudo tee /chrootjail/etc/bash.bashrcSetelah kita menyelesaikan semua langkah di atas, kita dapat masuk ke lingkungan jail menggunakan perintah chroot seperti yang ditunjukkan.
sudo chroot /chrootjail /bin/bashAnda akan mendapatkan hak akses root dengan prompt yang mirip dengan yang dibuat dalam perintah echo dan tee di atas.
Setelah Anda masuk, Anda akan melihat bahwa Anda hanya memiliki akses ke perintah yang Anda sertakan saat membuat jail. Jika Anda memerlukan lebih banyak perintah, Anda harus menambahkannya secara manual.
CATATAN: Karena Anda telah menyertakan bash shell, Anda akan memiliki akses ke semua perintah bawaan bash. Itu memungkinkan Anda untuk keluar dari penjara menggunakan perintah keluar.
Kesimpulan
Tutorial ini membahas apa itu chroot jail dan bagaimana kita dapat menggunakannya untuk membuat lingkungan yang terisolasi dari sistem utama. Anda dapat menggunakan teknik yang dibahas dalam panduan ini untuk menciptakan lingkungan terisolasi untuk layanan kritis.
Untuk mempraktikkan apa yang telah Anda pelajari, coba buat penjara Apache2 apa.
PETUNJUK: Mulailah dengan membuat direktori root, tambahkan file konfigurasi (etc/apache2), tambahkan root dokumen (/var/www/html), tambahkan biner (/usr/sbin/apache2) dan terakhir tambahkan perpustakaan yang diperlukan (ldd / usr/sbin/apache2)