Malangnya, walaupun setelah mengambil langkah keselamatan yang penting, kerentanan keselamatan masih dapat memasuki sistem yang selamat. Salah satu cara untuk mengurus dan melindungi sistem anda adalah dengan membatasi kerosakan yang mungkin berlaku setelah serangan berlaku.
Dalam tutorial ini, kita akan membincangkan proses menggunakan chroot jail untuk menguruskan kerosakan sistem sekiranya berlaku serangan. Kami akan melihat bagaimana mengasingkan proses dan subproses ke persekitaran tertentu dengan hak root palsu. Melakukan ini akan menghadkan proses ke direktori tertentu dan menolak akses ke kawasan sistem lain.
Pengenalan Ringkas ke penjara chroot
Penjara chroot adalah kaedah mengasingkan proses dan subprosesnya dari sistem utama menggunakan hak root palsu.
Seperti disebutkan, mengasingkan proses tertentu menggunakan hak root palsu membatasi kerosakan sekiranya terjadi serangan jahat. Perkhidmatan chroot terhad kepada direktori dan fail dalam direktori mereka dan tidak berterusan semasa perkhidmatan dimulakan semula.
Mengapa menggunakan penjara chroot
Tujuan utama penjara chroot adalah sebagai langkah keselamatan. Chroot juga berguna ketika memulihkan kata laluan yang hilang dengan memasang peranti dari media langsung.
Terdapat pelbagai kelebihan dan kekurangan menetapkan chroot jail. Ini termasuk:
Kelebihan
- Hadkan akses: Sekiranya terdapat kompromi keselamatan, satu-satunya direktori yang rosak adalah yang berada di dalam penjara chroot.
- Had arahan: Pengguna atau proses terhad kepada perintah yang dibenarkan di penjara.
Kekurangan
- Ia sukar untuk disiapkan.
- Ia memerlukan banyak kerja-Jika anda memerlukan perintah tambahan daripada yang dibenarkan secara lalai, anda harus memasukkannya secara manual.
Cara Membuat Penjara Chroot Asas
Dalam proses ini, kami akan membuat penjara chroot asas dengan 3 perintah terhad pada folder itu. Ini akan membantu menggambarkan bagaimana membuat penjara dan memberikan pelbagai arahan.
Mulakan dengan membuat folder utama. Anda boleh menganggap folder ini sebagai / folder dalam sistem utama. Nama folder boleh menjadi apa sahaja. Dalam kes kami, kami memanggilnya / chrootjail
sudo mkdir / chrootjailKami akan menggunakan direktori ini sebagai root palsu yang berisi perintah yang akan kami tetapkan kepadanya. Dengan perintah yang akan kita gunakan, kita memerlukan direktori bin (mengandungi perintah yang dapat dilaksanakan) dan, dll., direktori (mengandungi fail konfigurasi untuk perintah).
Di dalam folder / chrootjail, buat dua folder ini:
sudo mkdir / chrootjail / etc, bin
Langkah seterusnya adalah membuat direktori untuk perpustakaan yang dipaut secara dinamik untuk arahan yang ingin kita sertakan di penjara. Untuk contoh ini, kami akan menggunakan perintah bash, ls, dan grep.
Gunakan perintah ldd untuk menyenaraikan kebergantungan perintah ini, seperti yang ditunjukkan di bawah:
sudo ldd / bin / bash / bin / ls / bin / grep
Sekiranya anda tidak berada di dalam folder tong sampah, anda perlu meneruskan laluan penuh untuk arahan yang ingin anda gunakan. Contohnya, ldd / bin / bash atau ldd / bin / grep
Dari output ldd di atas, kita memerlukan direktori lib64 dan / lib / x86_64-linux-gnu. Di dalam direktori penjara, buat folder ini.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Setelah kami membuat direktori perpustakaan dinamik, kami dapat menyenaraikannya menggunakan pohon, seperti yang ditunjukkan di bawah:
Semasa kami maju, anda akan mula mendapat gambaran yang jelas tentang apa yang dimaksud dengan penjara chroot.
Kami membuat persekitaran yang serupa dengan direktori root biasa dari sistem Linux. Perbezaannya adalah, di dalam lingkungan ini, hanya perintah khusus yang diperbolehkan, dan aksesnya terbatas.
Sekarang kita telah membuat tong sampah. dan lain-lain., lib, dan lib64, kita dapat menambahkan fail yang diperlukan di dalam direktori masing-masing.
Mari kita mulakan 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 kami perlukan, kami memerlukan perpustakaan untuk setiap perintah. Anda boleh menggunakan perintah ldd untuk melihat fail yang akan disalin.
Mari kita mulakan 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
Daripada menyalin semua fail ini satu persatu, kita dapat menggunakan loop for simple untuk menyalin setiap perpustakaan di semua perpustakaan ke / chrootjail / lib / x86_64-linux-gnu
Mari kita ulangi proses ini untuk arahan ls dan grep:
Untuk arahan ls:
Untuk arahan grep:
Seterusnya, di dalam direktori lib64, kami mempunyai satu pustaka bersama di semua binari. Kita boleh menyalinnya dengan menggunakan perintah cp sederhana:
Seterusnya, mari kita edit fail login bash utama (terletak di / etc / bash.bashrc dalam Debian) supaya kami dapat mengubah bash prompt mengikut keinginan kami. Menggunakan perintah gema dan tee sederhana seperti yang ditunjukkan:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcSetelah kami menyelesaikan semua langkah di atas, kami dapat masuk ke persekitaran penjara menggunakan perintah chroot seperti yang ditunjukkan.
sudo chroot / chrootjail / bin / bashAnda akan mendapat hak root dengan prompt yang serupa dengan yang dibuat dalam arahan echo and tee di atas.
Setelah anda log masuk, anda akan melihat bahawa anda hanya mempunyai akses ke perintah yang anda sertakan semasa anda membuat penjara. Sekiranya anda memerlukan lebih banyak arahan, anda harus menambahkannya secara manual.
NOTA: Oleh kerana anda memasukkan bash shell, anda akan mendapat akses ke semua perintah bash built-in. Itu membolehkan anda keluar dari penjara menggunakan perintah keluar.
Kesimpulannya
Tutorial ini merangkumi apa itu chroot jail dan bagaimana kita dapat menggunakannya untuk membuat persekitaran terpencil dari sistem utama. Anda boleh menggunakan teknik yang dibincangkan dalam panduan kaleng untuk membuat persekitaran terpencil untuk perkhidmatan kritikal.
Untuk mempraktikkan apa yang telah anda pelajari, cuba buat penjara apache2.
Petunjuk: Mulakan dengan membuat direktori root, tambahkan file config (etc / apache2), tambahkan root dokumen (/ var / www / html), tambahkan binary (/ usr / sbin / apache2) dan akhirnya tambahkan library yang diperlukan (ldd usr / sbin / apache2)