Saya sedang mempelajari cara kerja dasar SELinux dan akan berguna untuk memicu penolakan. Mesin uji saya menjalankan CentOS 7, ini adalah penginstalan server dasar tanpa layanan tambahan, dan membuat status 'Enforcing' diberlakukan. Jadi saya merasa yakin bahwa membuat / me-root dunia dapat dibaca, dan mencoba membaca file dari sana sebagai pengguna yang tidak mampu akan melakukan triknya. Tapi tidak berhasil! Adakah yang bisa menyarankan beberapa tes cepat? Mencoba mengakses jalur, atau membuka port, dll.
Idealnya saya sedang mencari perintah shell langsung yang DAC tidak akan dibatasi, tetapi MAC akan melihat dan menolak. Karena itu saya tidak ingin mengkompilasi program yang dipesan lebih dahulu, atau menginstal layanan tertentu (seperti server web) untuk mencapai hal ini. Ini berharga karena menyediakan cara yang umum dan jelas untuk melihat SELinux dalam aksi.
Saya tidak punya masalah dengan memodifikasi DAC (yaitu izin filesystem) untuk membuatnya lebih ketat daripada standarnya sebagai bagian dari pengujian.
Jawaban:
Untuk menunjukkan utilitas SELinux dalam deteksi bug untuk pihak ketiga / kode pengembang Anda sendiri, berikut ini adalah tes perlindungan memori (memodifikasi contoh kode pertama di sini ):
Kompilasi dan tampilkan default (tidak tertangkap)Ubah booleans untuk menangkap masalah:
sumber
Ini jelas menunjukkan kebijakan MAC di mana DAC setara bisa dilewati pada instalasi dasar CentOS 7.
Secara default (dalam CentOS pada saat penulisan) tidak terprivasi, pengguna non-sistem masuk sebagai peran 'unconfined_u'. Namun kami dapat mengubah sistem kami sehingga 'alice' pengguna kami yang tidak diprioritaskan ditempatkan ke peran 'user_u'. Kebijakan default dapat dibuat untuk secara jelas membatasi peran ini dengan hanya sejumlah kecil konfigurasi tambahan.
Sekarang nonaktifkan kemampuan pengguna ini untuk mengeksekusi file yang terletak di direktori home dan / tmp. Sekali lagi, standarnya adalah mengizinkan perilaku ini. Perintah ini mungkin perlu beberapa saat untuk diselesaikan .
Sekarang (dengan pengguna kami yang tidak berprivasi), kami dapat masuk dan mencoba untuk mengeksekusi sesuatu di salah satu dari area terlarang ini. Seperti yang Anda lihat, kami ditolak.
Akhirnya, kita dapat melihat log AVC untuk melihat penolakan SELinux kami.
sumber
Kecuali Anda telah mengubah kebijakan Anda di tab Boolean dari system-config-selinux (atau di / etc / selinux / policy), maka defaultnya akan merespons yang berikut (NB, Anda mungkin juga ingin menginstal setroubleshoot untuk menyelam lebih dalam) :
Kemudian, restart server web Anda dan coba akses http: // localhost / ks dengan browser web Anda. Anda akan melihat pesan "Terlarang". Jika Anda mengikuti
/var/log/audit/audit.log
atau menjalankanausearch -m avc -ts recent
, maka Anda seharusnya dapat melihat pesan:type=AVC msg=audit(1391277951.222:266): avc: denied { read } for pid=1731 comm="httpd" name="ks" dev=sda1 ino=22351 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined u:object r:default t:s0 tclass=dir
Anda kemudian dapat mengubah konteks SELinux dengan
chcon -Rv --reference /var/www/html /install/ks
jika Anda tidak ingin menonaktifkan SELinux tetapi dapat mengakses sumber daya.EDIT: maaf, tidak melihat Anda mengatakan "bukan server web". Coba
chcon -u fake_u <filename>
gunakan akun yang tidak memiliki hak pribadi pada file sistem.sumber
instal dua paket kecil - tidak ada dependensi
mulai server FTP
buat file di rumah root
pindah dari rumah root ke direktori FTP.
catatan: pindah, jangan salin, atau konteks file akan berubah
login ke server FTP Anda sebagai pengguna klien FTP dan mencoba mengakses file baru.
catatan: tab pelengkapan otomatis tidak akan berfungsi di sini
lihat penolakan di log mentah
atau jika Anda telah
setroubleshoot*
menginstalsumber