Mitos atau kenyataan: SELinux dapat membatasi pengguna root?

20

Saya membaca atau mendengar di suatu tempat (mungkin dalam kursus SELinux LinuxCBT ; tetapi saya tidak yakin) bahwa ada server Linux online, yang juga diberikan kata sandi pengguna root. Server Linux diperkeras menggunakan aturan SELinux, sehingga setiap orang dapat login dengan pengguna root, tetapi tidak dapat membahayakan OS.

Tampaknya seperti mitos bagi saya, tetapi saya ingin memastikan: Apakah mungkin untuk mengeraskan kotak Linux (mungkin dengan SELinux), sehingga bahkan pengguna root tidak dapat melakukan kegiatan jahat tertentu di atasnya? (Contoh: menghapus file sistem, menghapus file log, menghentikan layanan penting, dll.)

Kotak Linux semacam itu akan menjadi titik awal yang bagus untuk membangun honeypot .

Sunting: Berdasarkan jawaban (sekarang dihapus), dan sedikit Googling, saya mendapatkan setidaknya dua tautan yang menunjuk ke server Linux yang mengeras. Sayangnya, kedua server sedang down. Sebagai catatan, saya akan menyalin-tempel deskripsi di sini:

1) Dari http://www.coker.com.au/selinux/play.html :

Akses root gratis pada mesin Linux SE!

Untuk mengakses mesin bermain Debian saya ssh untuk bermain.coker.com.au sebagai root, kata sandinya adalah ...

Perhatikan bahwa mesin seperti itu membutuhkan banyak keterampilan jika Anda ingin menjalankannya dengan sukses. Jika Anda harus bertanya apakah Anda harus menjalankannya maka jawabannya adalah "tidak".

Tujuan dari ini adalah untuk menunjukkan bahwa semua keamanan yang diperlukan dapat disediakan oleh SE Linux tanpa izin Unix (namun masih disarankan agar Anda menggunakan izin Unix juga untuk server nyata). Juga memberi Anda kesempatan untuk masuk ke mesin SE dan melihat seperti apa rasanya.

Saat Anda masuk ke mesin SE Linux play, pastikan Anda menggunakan opsi -x untuk menonaktifkan penerusan X11 atau menyetel ForwardX11 no di file / etc / ssh / ssh_config Anda sebelum Anda masuk. Juga pastikan bahwa Anda menggunakan opsi -a untuk menonaktifkan penerusan ssh agent atau menyetel ForwardAgent no di file / etc / ssh / ssh_config Anda sebelum Anda masuk. Jika Anda tidak menonaktifkan pengaturan ini dengan benar maka masuk ke mesin bermain akan membuat Anda berisiko diserang melalui klien SSH Anda.

Ada saluran IRC untuk membahas hal ini, yaitu #selinux di irc.freenode.net .

Berikut ini adalah FAQ cepat

2) Dari http://www.osnews.com/comments/3731

Tujuan Hardened Gentoo adalah menjadikan Gentoo layak untuk keamanan tinggi, lingkungan server produksi dengan stabilitas tinggi. Proyek ini bukan proyek mandiri yang terpisah dari Gentoo; itu dimaksudkan untuk menjadi tim pengembang Gentoo yang berfokus untuk memberikan solusi kepada Gentoo yang memberikan keamanan dan stabilitas yang kuat. Mesin ini adalah mesin demo SELinux Hardened Gentoo . Penggunaan utamanya adalah untuk menguji dan mengaudit integrasi, dan kebijakan SELinux.

MS Dousti
sumber
2
Sudah diklaim di sini juga . Walaupun secara teori itu mungkin dimungkinkan, tampaknya sulit bagi saya (kecuali Anda membatasi pengguna root sedemikian rupa sehingga tidak dapat melakukan sesuatu yang bermanfaat). Menulis aturan SELinux yang benar-benar melakukan apa yang Anda tentukan sulit dalam kasus terbaik.
Gilles 'SANGAT berhenti menjadi jahat'
4
Dengan kernel baru-baru ini, pengguna non-root dapat membuat ruang nama di mana mereka memiliki UID 0. Karena mereka tidak UID 0 di namespace tingkat atas, mereka tidak dapat membahayakan sistem. Mereka secara intrinsik tidak mendapatkan peluang untuk celaka, tidak seperti pendekatan SELinux di mana semua peluang seperti itu harus diambil. Lihat kernel: dukungan Namespaces , dan Sepenuhnya memisahkan dua akun tanpa menginstal sistem operasi yang terpisah?
Gilles 'SANGAT berhenti menjadi jahat'
Tergantung pada driver grafis Anda apakah itu benar-benar aman atau tidak.
Joshua

Jawaban:

17

Kenyataan: ya, SELinux dapat membatasi pengguna root.

Ini dimungkinkan karena SELinux tidak benar-benar peduli tentang pengguna Unix saat ini: semua yang dilihatnya adalah metadata tambahan yang disebut konteks (yang mencakup, di antara bidang lain, bidang domain ) dan yang memungkinkan SELinux memutuskan apakah tindakan yang diminta dapat disahkan atau tidak.

Apa yang biasanya dipahami sebagai pengguna root akan dipetakan di SELinux sebagai pengguna Unix root yang menjalankan domain unconfined_tatau sysadm_tSELinux. Ini adalah pengguna root mahakuasa klasik berkekuatan penuh.

Namun, seseorang dapat dengan sempurna mengatur sistemnya untuk menelurkan shell root (maksud saya root Unix shell pengguna) menjalankan user_tdomain SELinux pengguna terbatas . Sesuai kebijakan SELinux, shell seperti itu tidak akan berbeda dari shell pengguna terbatas lainnya dan tidak akan memiliki hak istimewa pada sistem, sehingga secara efektif membatasi pengguna root.

Appart dari sudut pandang eksperimental, melakukan hal seperti itu secara harfiah tidak ada gunanya, namun praktik serupa menemukan jalan mereka di dunia nyata. Contoh klasik adalah administrator basis data yang harus dapat menghentikan / memulai daemon basis data, mengedit file konfigurasi, dll. Tanpa SELinux, semua tindakan ini akan mengharuskan pengguna untuk meningkat ke arah privilege root (bahkan jika itu biasanya untuk satu baris perintah melalui sudoalat misalnya, namun bahkan itu mungkin rentan terhadap kebocoran).

Berkat SELinux, kami dapat memberikan pengguna ini shell root asli, tetapi alih-alih menjalankan unconfined_tatau sysadm_tdomain itu akan menjalankan dbadm_tdomain. Ini berarti bahwa ia akan memiliki lebih banyak hak istimewa daripada pengguna terbatas, tetapi hak-hak baru ini akan terbatas pada apa yang diperlukan untuk mengelola server basis data: pengguna ini tidak akan dapat mengutak-atik layanan lain, file atau menjalankan perintah administratif lain daripada yang sangat dituntut untuk melakukan pekerjaannya.

Dengan cara yang sama, server web dan administrator layanan lain juga dapat memiliki shell root lain yang berjalan secara paralel pada sistem yang sama, setiap orang akan melihat pengguna Unix mereka saat ini menjadi root , tetapi berkat SELinux masing-masing akan memiliki hak istimewa yang berbeda secara efektif terbatas pada apa diperlukan untuk keperluan mereka sendiri .

WhiteWinterWolf
sumber
1

Iya itu mungkin. Tapi tidak terlalu berguna.

Anda secara teoritis dapat melarang pengguna root dari menjalankan binari yang dapat digunakan untuk tujuan jahat, menegakkan kebijakan melalui sesuatu seperti SELinux. Namun, ini menghadirkan masalah, yaitu bahwa bahkan jika pengguna root pada awalnya dilarang melakukan sesuatu, ia hanya bisa menggunakan metode lain untuk mengubah atau menghapus kebijakan SELinux. Karena masalah ini, Anda harus secara efektif melarang pengguna root dari melakukan tindakan apa pun, membuatnya tidak terlalu berguna.

strugee
sumber
Pertama, saya pesimis seperti Anda. Tetapi, untuk mendapatkan lebih banyak pengetahuan, tampaknya tidak perlu "melarang pengguna root melakukan tindakan apa pun." Periksa jawaban saya yang telah diedit, yang mencakup tautan dan info ke bukti konsep. Sayangnya, mereka tidak lagi tersedia; tetapi tampaknya implementasinya tidak terlalu ketat.
MS Dousti
-5

Apakah mungkin untuk mengeraskan kotak Linux (mungkin dengan SELinux), sehingga bahkan pengguna root tidak dapat melakukan kegiatan jahat tertentu di atasnya?

Ini mungkin terdengar murah, tetapi mudah: ubah uid dari root pengguna menjadi non-nol. Cukup masuk ke / etc / passwd dan / etc / shadow, modifikasi entri uid = 0 yang ada dari "root" ke sesuatu yang lain, dan kemudian tambahkan akun bernama "root" yang usidnya bukan nol dan tidak digunakan.

Itu mencapai tujuan tanpa. Ini juga cara untuk mengklaim bahwa siapa pun mungkin memiliki "akses root" tanpa benar-benar memberikan hak istimewa yang ditingkatkan.

Otheus
sumber
3
Ya, tapi kemudian rootpengguna sebenarnya bukan pengguna root. Pertanyaannya adalah bertanya apakah pengguna super yang sebenarnya dapat dibatasi sedemikian rupa.
terdon
Kedengarannya berbahaya - kecuali Anda membuat akun lain dengan uid 0 tentu saja. Tapi itu akan sama dengan mengganti nama root, dan menggunakan kembali nama "root".
Volker Siegel
Pertanyaannya hanya mengacu pada "root" yang belum tentu setara dengan super-user, yaitu, uid = 0. Pada kesempatan langka, ini adalah perbedaan yang berguna.
Otheus
2
Namun demikian, konteksnya memperjelas bahwa OP menanyakan apakah pengguna super, dan bukan pengguna acak yang memiliki nama pengguna rootdapat dibatasi sedemikian rupa.
terdon
1
BAIK. Setidaknya, harap edit jawaban Anda dan tunjukkan bagaimana apa yang Anda sarankan dapat dicapai. Itu terus ditandai sebagai kualitas rendah karena panjangnya. Itu sebabnya semakin downvotes.
terdon