Apa yang bisa salah jika kita menonaktifkan selinux [ditutup]

9

Kami mewarisi banyak server yang digunakan dari tim lain. Beberapa dari mereka memiliki SELinux diaktifkan di atasnya, beberapa tidak. Karena SELinux, kami mengalami masalah dalam mengatur kata sandi ssh, server web kami, dll. Kami menemukan pekerjaan di sekitar situs pertukaran stackex ini , yaitu menjalankan:

restorecon -R -v ~/.ssh

Namun, karena kita tidak perlu SELinux berjalan untuk apa yang kita lakukan, mungkin lebih mudah untuk mematikannya daripada bagi kita untuk mengingat semua orang menjalankan cmd di atas pada dir apa pun yang membutuhkan izin.

Bisakah kita mematikan SELinux tanpa dampak apa pun atau lebih baik hanya citra ulang server? Satu hal yang perlu diperhatikan; grup IT kami sangat sibuk sehingga pencitraan ulang server tidak tinggi di daftar mereka kecuali jika benar-benar diperlukan (perlu kasus bisnis yang sangat baik) ... atau seseorang menyuap bos mereka dengan sebotol scotch atau wiski.

PEMBARUAN: Terima kasih atas saran dan saran semua orang. Semua server ini akan digunakan sebagai server dev internal. Tidak akan ada akses luar ke mesin-mesin ini sehingga keamanan tidak menjadi perhatian utama kami. Server kami saat ini yang kami gunakan semua (sepengetahuan saya) tidak memiliki SELinux diaktifkan. Beberapa yang baru saja dilakukan manajer saya dan itulah yang sedang kami nonaktifkan sehingga semua yang ada di cluster kami seragam.

Rahasia
sumber
1
Saya menjawab pertanyaan serupa di Android.se: Seberapa berbahayakah fakta bahwa SELinux dalam mode “Permissive”? Apa yang harus saya waspadai? . Perbedaan utama antara mode "Permisif" dan menonaktifkan SELinux adalah bahwa Anda tidak akan mendapatkan pesan log AVC lagi dan bahwa SELinux tidak akan membuat label file tetap up-to-date sehingga Anda perlu menstabilkan kembali file Anda sebelum mengaktifkannya lagi.
WhiteWinterWolf
"Apa yang bisa salah?"
scai
3
@scai Sebenarnya itu pertanyaan yang bagus. Seperti yang ditunjukkan Sato Katsura , SELinux sulit digunakan secara efektif. Rasa aman yang salah akan merusak keamanan.
Rhymoid

Jawaban:

14

SELinux adalah fitur keamanan sistem operasi. Ini dirancang untuk membantu melindungi beberapa bagian server dari bagian lain.

Misalnya, jika Anda menjalankan server web dan memiliki beberapa kode "rentan" yang memungkinkan penyerang menjalankan perintah sewenang-wenang maka SELinux dapat membantu mengurangi ini, dengan mencegah server web Anda mengakses file yang tidak boleh dilihat.

Sekarang Anda dapat menonaktifkan SELinux dan seharusnya tidak merusak apa pun. Server akan tetap bekerja seperti biasa.

Tetapi Anda akan menonaktifkan salah satu fitur keamanan.

Stephen Harris
sumber
10
SELinux hanya berfungsi dengan baik jika dikonfigurasi dengan benar. Namun, SELinux sangat rumit sehingga tidak ada yang punya waktu dan / atau pengetahuan untuk mengkonfigurasinya dengan benar, dan karena itu akhirnya dinonaktifkan, atau sebagai rasa sakit yang terus-menerus di belakang untuk admin. Namun kalian terus menanamkan iman di dalamnya sebagai fitur keamanan .
Satō Katsura
3
Saya setuju bahwa selinux adalah PITA untuk dikelola, namun masih adil dan sepenuhnya akurat untuk menyebutnya fitur keamanan. bagi mereka yang ingin atau perlu menginvestasikan waktu dalam mempelajari dan mengelola (bukan saya), ini sangat berharga - misalnya sysadmin untuk situs web besar dan terkenal alias target yang menarik untuk skrip kiddies di seluruh dunia.
cas
2
@SatoKatsura Hanya karena sulit dikonfigurasi atau sulit dipahami tidak membenarkan menonaktifkan mekanisme keamanan. Asalkan mekanisme keamanan ini sebenarnya diperlukan yang tidak selalu mudah untuk diputuskan.
scai
@Cai aku tidak mengatakan itu harus (atau tidak seharusnya) dinonaktifkan. Apa yang saya katakan adalah, model yang mendasari SELinux cacat. Beberapa orang berpendapat bahwa semua mekanisme keamanan yang dapat dinonaktifkan cacat.
Satō Katsura
@SatoKatsura ya, itu sebabnya memiliki kata sandi sepenuhnya dan sama sekali tidak ada gunanya karena mereka dapat dinonaktifkan (misalnya dengan pam atau nss atau hanya dengan memiliki kata sandi kosong). BTW, saya tidak pernah mengklaim bahwa Anda mengatakan selinux harus dinonaktifkan. saya hanya membantah pernyataan Anda bahwa itu bukan fitur keamanan nyata.
cas
8

Ada berbagai pandangan SELinux. Dalam banyak kasus, beberapa aplikasi tidak bermain dengan baik dengan SELinux sehingga keputusan ini diperdebatkan (Oracle adalah salah satu contoh).
Secara umum, SELinux adalah mekanisme perlindungan untuk menempatkan penghalang lain di jalan orang jahat yang ingin menumbangkan sistem Anda.

Dalam peran saya sebelumnya sebagai Administrator Sistem di perusahaan besar ... Saya biasanya menonaktifkan SELinux. Saya tidak punya waktu untuk melacak semua kesalahan SELinux pada semua sistem yang digunakan oleh pengguna, pengembang, dan manajer.

Sebelum menonaktifkan sesuatu, Anda mungkin ingin memulai dengan memberi label ulang file pada sistem kembali ke apa yang seharusnya. Metode termudah yang saya temukan adalah memasukkan perintah:

 # /sbin/fixfiles onboot

ATAU

 # touch /.autorelabel

Kemudian, reboot, dan tunggu karena akan membutuhkan waktu yang sama bagi sistem untuk memverifikasi dan mereset label SELinux yang salah dalam sistem. Setelah itu Anda mungkin baik-baik saja karena memperbaiki dan memperbaiki label SELinux yang tidak sesuai yang mungkin telah dimodifikasi sebelum Anda mencoba administrasi server.

Namun, jika tidak, sistem tidak akan dirugikan dengan TIDAK memiliki SELinux dalam mode penegakan. Ini hanya lapisan perlindungan tambahan.

mdpc
sumber
3
bisa diperdebatkan, bukan bisu. Tapi benar sekali; tidak semua sistem membutuhkan selinux.
phyrfox
+1 untuk memberi saran untuk mencoba memberi label ulang secara global pada file sebelum menonaktifkan SELinux sebagai cadangan. SELinux dimaksudkan untuk mencegah perangkat lunak dan perilaku pengguna yang tidak terduga. Pada sistem di mana tidak ada perilaku yang diharapkan yang didefinisikan dengan baik, SELinux memang dapat menyebabkan lebih banyak kerusakan daripada kebaikan (kebijakan yang disediakan OS mencoba untuk menjadi se-umum mungkin, tetapi kadang-kadang ini tidak cukup).
WhiteWinterWolf
Terima kasih! /sbin/fixfiles onbootbekerja untuk saya di CentOS, tidak demikian halnya dengan touch /.autorelabel. Running sealert -a /var/log/audit/audit.logmenunjukkan 0 peringatan sekarang. @ mdpc Apa perbedaan antara kedua perintah itu?
Joseph K.
5

Sederhananya, menonaktifkan mekanisme kontrol akses wajib (MAC) seperti SELinux bukanlah ide yang baik dan dapat menempatkan Anda pada kerugian-keamanan jika orang jahat berhasil menghindari kontrol akses berbasis nama, dilaksanakan oleh Discretionary Access Control (DAC).

Kalau saya, saya akan melakukan sesuatu seperti

semanage fcontext -a -t ssh_home_t ~/.ssh # Adding the policy
restorecon -R -v ~/.ssh # Applying the policy

untuk lebih yakin tentang label tipe yang ditugaskan secara rekursif~/.ssh

sjsam
sumber
1
Ini bergaya "SELinux". Linux bukan akronim, dan bagian "SE" adalah inisialisasi.
Rhymoid
@ Rhymeoid: Itu catatan yang bagus memang .. Sebenarnya apa yang saya tulis itu kebetulan.
sjsam
2

Secara umum Anda tidak harus menonaktifkan SELinux. Ada alat yang dapat membantu Anda memahami apa yang salah. Favorit saya adalah contoh penggunaan sealert:

sealert -a /var/log/audit/audit.log

OFC Anda selalu dapat mengatur SELinux dalam mode permisif untuk debug, tetapi menjaga SELinux dinonaktifkan atau permisif diajarkan sebagai cacat keamanan serius oleh Red Hat.

Alex Baranowski
sumber