Saya telah mendengar / membaca banyak tentang chroot jail di linux tetapi belum pernah menggunakannya (saya menggunakan Fedora sehari-hari), jadi apa itu chroot "jail"? Kapan dan mengapa saya bisa menggunakannya / tidak menggunakannya dan apakah ada hal lain yang harus saya ketahui? Bagaimana cara saya membuatnya?
99
Jawaban:
Penjara chroot adalah cara untuk mengisolasi proses dan anak-anaknya dari sisa sistem. Seharusnya hanya digunakan untuk proses yang tidak berjalan sebagai root, karena pengguna root dapat keluar dari penjara dengan sangat mudah.
Idenya adalah Anda membuat pohon direktori tempat Anda menyalin atau menautkan semua file sistem yang diperlukan agar proses dapat berjalan. Anda kemudian menggunakan
chroot()
pemanggilan sistem untuk mengubah direktori root agar berada di dasar pohon baru ini dan memulai proses yang berjalan di lingkungan chroot. Karena sebenarnya tidak dapat mereferensikan jalur di luar root yang dimodifikasi, ia tidak dapat melakukan operasi (baca / tulis dll.) Dengan jahat di lokasi tersebut.Di Linux, menggunakan bind mounts adalah cara yang bagus untuk mengisi chroot tree. Dengan menggunakan itu, Anda dapat menarik folder seperti
/lib
dan/usr/lib
saat tidak menarik/usr
, misalnya. Ikat saja pohon direktori yang Anda inginkan ke direktori yang Anda buat di direktori jail.sumber
firejail
sedang berjalan./bin
yang diinstal oleh pengguna root? @Ben Combee"chroot jail" adalah istilah yang keliru sehingga harus benar-benar mati, tetapi orang-orang tetap menggunakannya.
chroot
adalah alat yang memungkinkan Anda mensimulasikan direktori di sistem file Anda sebagai root dari sistem file. Itu berarti Anda dapat memiliki struktur folder seperti:Jika Anda
chroot foo
melakukannyals /
, Anda akan melihat:Sejauh
ls
(dan alat lain yang Anda jalankan) yang bersangkutan, itu adalah satu-satunya direktori di sistem file. Alasan "jail" adalah nama yang salahchroot
tidak dimaksudkan untuk memaksa program untuk tetap berada di sistem file yang disimulasikan; sebuah program yang mengetahui bahwa ia berada di chroot "jail" dapat dengan mudah lolos, jadi Anda tidak boleh menggunakanchroot
sebagai langkah keamanan untuk mencegah program memodifikasi file di luar sistem file simulasi Andasumber
chroot
"penjara". The kasus saya pernah melihat mengharuskan meningkat untuk hak akses root. Apakah sulit untuk mencegah proses yang meningkat dengan sendirinya untuk membasmi hak istimewa?chroot
tidak. Untuk alasan ini orang sering campur adukchroot
danjails
bermaksud hal yang sama. Mereka tidak melakukannya. Istilah "penjara" dikatakan diciptakan oleh Bill Cheswick ketika ia membuat honeypot untuk menangkap seorang cracker: csrc.nist.gov/publications/secpubs/berferd.pdfchroot jail
ide yang baik dalam kasus saya ?Pada dasarnya Anda hanya mengubah direktori root dari lingkungan Anda. Begitu
menjadi
Ketika suatu aplikasi mengakses / mereka akan mendapatkan / beberapa-penjara /. Juga aplikasi tidak dapat keluar dari / beberapa-penjara / sehingga Anda tahu itu tidak akan mengakses apa pun di mesin Anda. Ini cara yang sangat sederhana untuk mengatakan 'hei, Anda hanya dapat mengakses hal-hal yang saya berikan kepada Anda, dan Anda tidak dapat mengakses hal lain di sistem.
sumber
"Kapan dan mengapa aku menggunakannya?"
Salah satu penggunaannya adalah dalam skrip pengujian (waktu booting dan lainnya) yang membuat referensi path absolut, atau yang menjalankan perintah yang Anda mungkin ingin intersep dan login (dan mungkin no-op mereka) - di lingkungan di mana Anda tidak ingin perintah-perintah itu untuk sebenarnya beroperasi di lingkungan Anda berjalan.
Misalnya saya memiliki perangkat tertanam yang menjalankan Linux, saya ingin memeriksa operasi beberapa bash tanpa a) menjalankannya di perangkat nyata (karena saya memiliki alat yang lebih baik di desktop saya dan tidak ingin merusak perangkat) b) menjalankan itu nyata di desktop saya (karena saya tidak ingin sistem desktop saya berantakan)
Selain itu, Anda kemudian dapat menemukan perintah atau file skrip lain yang digunakan karena proses akan keluar dengan kesalahan setiap kali ia mencoba menjalankan perintah atau skrip shell yang tidak ada di "chroot jail".
(Tentu saja, untuk menjalankan keseluruhan babi, Anda dapat menjalankan di dalam QEMU atau Docker, atau VM, tetapi itu akan melibatkan pembuatan gambar VM dll. - lebih banyak pekerjaan)
sumber