Alasan untuk menonaktifkan / mengaktifkan SELinux

36

Pada baris pertanyaan ini tentang StackOverflow dan kerumunan yang sangat berbeda yang kita miliki di sini, saya bertanya-tanya: apa alasan Anda untuk menonaktifkan SELinux (dengan asumsi kebanyakan orang masih melakukannya)? Apakah Anda ingin tetap diaktifkan? Apa anomali yang Anda alami dengan meninggalkan SELinux? Terlepas dari Oracle, vendor lain apa yang memberikan masalah sistem pendukung dengan SELinux diaktifkan?

Pertanyaan bonus: Adakah yang berhasil menjalankan Oracle pada RHEL5 dengan SELinux dalam menjalankan mode yang ditargetkan? Maksud saya, ketat akan menjadi luar biasa, tapi saya belum melakukan itu mungkin, jadi mari kita tetap dengan yang ditargetkan terlebih dahulu ;-)

wzzrd
sumber

Jawaban:

25

RedHat mengaktifkan SELinux secara default karena lebih aman. Hampir setiap vendor yang menggunakan Redhat-produk turunan bergantian SELinux off karena mereka tidak mau harus dimasukkan ke dalam waktu (dan karena itu uang) untuk mencari tahu mengapa hal tidak bekerja. Orang-orang Redhat / Fedora telah menghabiskan banyak waktu dan upaya untuk menjadikan SELinux lebih dari opsi yang layak di Enterprise, tetapi tidak banyak organisasi lain yang benar-benar peduli dengan keamanan Anda . (Mereka peduli tentang mereka keamanan dan reputasi keamanan produk mereka, yang merupakan hal yang sama sekali berbeda.)

Jika Anda bisa membuatnya bekerja, maka lakukanlah. Jika Anda tidak bisa, maka jangan berharap banyak bantuan dari vendor di luar sana. Anda mungkin bisa mendapatkan bantuan dari orang-orang Redhat / Fedora, dari milis selinux dan saluran #selinux di freenode. Tetapi dari perusahaan seperti Oracle - well, SELinux tidak benar-benar memperhitungkan rencana bisnis mereka.

tylerl
sumber
8
Vendor perangkat lunak "perusahaan" yang disewa untuk menginstal produk mereka menangani masalah izin dengan melakukan chmod -R 777 * pada pohon direktori besar. Mereka benar-benar tidak peduli dengan keamanan Anda.
kmarsh
21

Biasanya Anda lebih baik menjalankan SELinux di Permissive daripada menonaktifkannya sepenuhnya. Anda kemudian dapat memeriksa (melalui audit2why) setelah beberapa saat untuk melihat jenis pelanggaran apa yang akan ditolak selama penggunaan rutin Anda, dan membuat kebijakan khusus melalui audit2allowapakah 'pelanggaran' tersebut merupakan kesalahan positif untuk pengaturan Anda.

Saya telah menemukan perilaku SELinux pada sistem turunan non-Fedora secara signifikan lebih menyentuh daripada apa yang Anda dapatkan dengan sistem Fedora / RHEL pada umumnya.

Jika Anda belum melihatnya, Anda mungkin mendapati Panduan Pengguna Fedora SELinux mendidik.

Ophidian
sumber
16

Alasan untuk:

  • Tingkat keamanan yang lebih tinggi melalui kontrol akses wajib
  • Anda memerlukan alasan di luar tingkat keamanan yang lebih tinggi? :-)

Alasan menentang:

  • Sulit dimengerti
  • Sulit dikelola
  • Sulit dipecahkan

Yang mengatakan jika Anda mempertimbangkan SELinux, saya merekomendasikan buku SELinux dengan Contoh .

Saya bekerja untuk perusahaan yang memiliki SELinux diaktifkan, dalam mode menegakkan, di setiap sistem. Kuncinya bagi kami adalah memahami dan menggunakan program audit2allow yang dapat digunakan untuk membuat aturan konteks baru.

Pertama, kami membuat templat dengan audit2allow, dan kemudian menggunakan skrip untuk membangunnya, seperti ini:

export NAME="my_serviced"
sudo audit2allow -m "${NAME}" -i /var/log/audit/audit.log > ${NAME}.te
sudo setup_semodule ${NAME}

Skrip setup_semodule:

#!/bin/sh

# Where to store selinux related files
SOURCE=/etc/selinux/local
BUILD=/etc/selinux/local
NAME=$1

/usr/bin/checkmodule -M -m -o ${BUILD}/${NAME}.mod ${SOURCE}/${NAME}.te
/usr/bin/semodule_package -o ${BUILD}/${NAME}.pp -m ${BUILD}/${NAME}.mod
/usr/sbin/semodule -i ${BUILD}/${NAME}.pp

/bin/rm ${BUILD}/${NAME}.mod ${BUILD}/${NAME}.pp

Ini membangun modul dari templat (file .te), menghasilkan paket, dan kemudian memuat modul.

Kami menggunakan Wayang untuk sistem manajemen konfigurasi kami, dan kami menulis konfigurasi untuk Wayang untuk mengelola semua ini.

Modul Boneka SELinux:

jtimberman
sumber
2
+1, informasi yang sangat berguna.
DCookie
10

Alasan untuk mematikannya adalah karena dapat menyulitkan untuk debug.

Namun kami tidak mematikannya sekarang. Kami hampir selalu membuatnya berjalan. Saya kadang-kadang mematikannya untuk memverifikasi dengan cepat apakah SElinux adalah masalah atau tidak.

Jauh lebih mudah untuk debug sekarang, terutama jika Anda membuat diri Anda terbiasa dengan audit2allow. Anda tidak benar-benar perlu memahaminya dengan audit2allow, tetapi Anda dapat beberapa kali akhirnya membuka menipis lebih lebar daripada yang Anda pikirkan dengan audit2allow. Setelah mengatakan bahwa beberapa SELinux lebih baik daripada tidak sama sekali.

Saya tidak berarti seorang ahli SELinux dan hanya menggunakannya selama beberapa tahun. Saya masih tidak benar-benar memahami dasar-dasarnya, tetapi saya cukup tahu untuk menjalankan aplikasi, tetapi yang termasuk dengan distro dan hal-hal acak yang dikompilasi dari internet.

Hal utama yang saya punya untuk digunakan adalah ls -lZ(acara konteks SELinux), audit2allow, chcon, semodule, getenforce, setenforcedan boolean. Dengan alat-alat itu saya telah berhasil mendapatkan setiap aplikasi yang saya butuhkan untuk berjalan di bawah SELinux.

Saya menemukan salah satu masalah besar dengan debugging masalah SELinux ,, hanya mengingat untuk memeriksa masalah SELinux ketika saya memiliki masalah bijaksana yang tidak dapat dijelaskan. Biasanya saya butuh sedikit akal untuk pergi "h! Periksa SELinux !!".

Menurut halaman manual bind, SELinux jauh lebih aman daripada menjalankan bind di chroot jail. Banyak orang lain yang memiliki jauh lebih banyak petunjuk daripada saya juga merekomendasikannya sehingga saya menjalankannya secara membabi buta. Dan tersangka meskipun ada masalah sesekali, itu mungkin layak dilakukan.

Jason Tan
sumber
2
+1 untuk menunjukkan bahwa Anda sering dilayani dengan lebih baik untuk membiarkan SELinux tetap berjalan dan hanya mematikannya untuk memverifikasi apakah itu sumber masalah.
Ophidian,
2

Saya menonaktifkan SELinux untuk AppArmor , saya merasa lebih ramah dan lebih mudah dirawat daripada SELinux.

LiraNuna
sumber
Menarik. Di distro apa Anda? Saya tidak pernah menggunakan AppArmor, tapi saya penasaran distro mana yang sudah dikonfigurasikan di luar kotak dan apa karakteristiknya. Akan melihat ke dalam ini. Secara pribadi, saya tidak memiliki masalah dengan SELinux, btw, tetapi perlu waktu untuk membiasakan diri.
wzzrd
AppArmor pada awalnya dikembangkan oleh Novell dan disertakan secara default di semua distribusi openSUSE dan SUSE Linux Enterprise mereka. Ini diaktifkan secara default di distro Enterprise, dan mudah untuk dihidupkan di distro konsumen. Ubuntu sudah memilikinya sejak 7.04, tetapi tidak secara otomatis memberlakukan setiap aplikasi secara default.
andrewd18
Saya pikir saya ingat beberapa pembicaraan tentang Novell yang memberhentikan sebagian besar tim AppArmor. Bukankah Ubuntu menjatuhkannya dari distro? Atau apakah aku mendengar suara-suara di kepalaku lagi? ;-)
wzzrd
Novell melakukannya - tetapi penulis masih mengerjakannya tanpa bayaran. Itu masih didukung di ubuntu, dan hal-hal seperti cangkir dan mysqld sedang diberlakukan secara default.
LiraNuna
Tidak selalu tetapi sering kami bertukar kemudahan penggunaan untuk keamanan dan sebaliknya. Ini adalah tindakan penyeimbangan dan jawabannya tidak sepele terutama karena mendefinisikan risiko dan tujuan keamanan adalah tugas yang sangat sulit.
rev
1

Tidak ada alasan untuk mematikannya ketika Anda dapat menjalankannya dalam mode Permissive. Ini tidak akan mengganggu aplikasi yang sedang berjalan dan masih akan memberikan pencatatan keamanan yang berguna. Satu-satunya pengecualian adalah tentang konteks pengguna: jika Anda mengubah antara pengguna yang berbeda yang hidup di dalam instance linux lain yang berjalan di chroot, Anda bisa memiliki masalah.

Federico
sumber
Sebenarnya ada beberapa kasus di mana SELinux dapat mengganggu aplikasi dalam mode Permissive. Satu: pada beberapa titik waktu beberapa aturan diberlakukan, meskipun sistem sedang diatur untuk permisif. Tidak yakin apakah ini masih terjadi. Dua: waktu yang dibutuhkan untuk memproses aturan bisa cukup untuk mengacaukan IPC. Saya telah melihat ini dengan cluster Oracle. Sekali lagi di masa lalu dan tidak yakin apa status saat ini. Tetapi ingat, hampir setiap panggilan sistem memiliki sedikit waktu pemrosesan yang ditambahkan.
Jason Tan
0

Linux SE tidak seputus asa tidak ramah seperti dulu, setidaknya itu tidak ada di distro yang didukung secara komersial seperti RHEL5. Sebagian besar Anda dapat membiarkannya, dan itu akan baik-baik saja dengan apa pun yang disediakan oleh RedHat. Dengan hal lain itu bisa menjadi variabel. Masalahnya adalah bahwa layanan profesional bekerja untuk mendapatkan aplikasi yang bekerja dengan SE Linux diaktifkan adalah aliran pendapatan yang bagus untuk perusahaan seperti RedHat dan Oracle, sehingga mereka tidak memiliki insentif untuk membuat semuanya berfungsi dengan baik ootb.

goo
sumber
Saya tidak berpikir Oracle secara resmi mendukung SELinux tho
wzzrd