Saya perlu beberapa klarifikasi / konfirmasi / elaborasi tentang peran yang berbeda yang dimainkan DAC, ACL dan MAC dalam keamanan file Linux.
Setelah beberapa penelitian dari dokumentasi, ini adalah pemahaman saya tentang tumpukan:
- SELinux harus memberi Anda akses ke objek file.
- Jika file ACL (misalnya,
setfacl
,getfacl
untuk ACL mount) secara eksplisit memungkinkan / menolak akses ke objek, maka pengolahan lagi diperlukan. - Jika tidak, terserah izin file (model rwxrwxrwx DAC).
Apakah saya melewatkan sesuatu? Apakah ada situasi di mana ini bukan masalahnya?
linux
permissions
selinux
acl
Belmin Fernandez
sumber
sumber
Jawaban:
Ketika sebuah proses melakukan operasi ke file, kernel Linux melakukan pemeriksaan dalam urutan berikut:
Discretionary Access Control (DAC) atau kontrol akses yang ditentukan pengguna. Ini mencakup pemeriksaan izin gaya UNIX klasik dan Daftar Kontrol Akses POSIX (ACL) . Pemeriksaan UNIX klasik membandingkan proses UID dan GID saat ini dengan UID dan GID dari file yang sedang diakses sehubungan dengan mode mana yang telah ditetapkan (Baca / Tulis / eXecute). Daftar Kontrol Akses memperpanjang pemeriksaan UNIX klasik untuk memungkinkan lebih banyak opsi mengenai kontrol izin.
Mandatory Access Control (MAC) atau kontrol akses berbasis kebijakan. Ini diimplementasikan menggunakan Linux Security Modules (LSM) yang bukan modul nyata lagi (mereka dulu tetapi itu dijatuhkan). Mereka memungkinkan pemeriksaan tambahan berdasarkan pada model lain selain pemeriksaan keamanan gaya UNIX klasik. Semua model tersebut didasarkan pada kebijakan yang menggambarkan opeartions seperti apa yang diizinkan untuk proses mana dalam konteks mana.
Berikut adalah contoh untuk akses inode (yang mencakup akses file) untuk mendukung jawaban saya dengan tautan ke Referensi Silang Linux online . "
function_name
(Nama file: baris)" yang diberikan adalah untuk versi 3.14 dari kernel Linux.Fungsi
inode_permission
( fs / namei.c: 449 ) pertama-tama memeriksa izin baca pada sistem file itu sendiri (sb_permission
dalam fs / namei.c: 425 ), lalu memanggil__inode_permission
( fs / namei.c: 394 ) untuk memeriksa baca / tulis / eksekusi izin dan POSIX ACL pada inode dido_inode_permission
( fs / namei.c: 368 ) (DAC) dan kemudian izin terkait LSM (MAC) disecurity_inode_permission
( security / security.c: 550 ).Hanya ada satu pengecualian untuk pesanan ini (DAC kemudian MAC): itu untuk cek mmap. Tetapi ini telah diperbaiki dalam versi 3.15 dari kernel Linux ( commit yang relevan ).
sumber
DAC
==Discretionary Access Control
, http://en.wikipedia.org/wiki/Discretionary_access_controlMAC
==Mandatory Access Control
, http://en.wikipedia.org/wiki/Mandatory_access_controlACL
==Access Control List
, http://en.wikipedia.org/wiki/Access_control_listThe
ACL
Menentukan kontrol yang akan diterapkan dengan metode kontrol,DAC
atauMAC
.MAC
eksplisit, dikendalikan secara terpusat, dan tidak memungkinkan pengguna untuk memberikan wewenang kepada suatu objek kecuali mereka memiliki izin eksplisit untuk melakukannya, sedangkanDAC
memungkinkan pengguna untuk memberikan pengguna lain akses ke objek yang dapat mereka akses.MAC
ACL
s akan selalu diterapkan pada permintaan terlebih dahulu, dan jika akses ditolak, proses berhenti. Jika akses diizinkan makaDAC
ACL
s diterapkan, dan lagi jika akses ditolak pemrosesan berhenti. Hanya jika akses diberikan oleh keduanyaMAC
danDAC
ACL
s dapat pengguna mengakses objek yang mereka minta.SELinux
adalahMAC
implementasi untuk Linux (ada yang lain), sedangkanrwx
izin file tradisional , dikombinasikan dengan pengguna yang dimiliki dan grup membentuk lengkapDAC
ACL
. TheSELinux
'kebijakan' pada dasarnya adalahMAC
ACL
.sumber
setfacl
) masuk?setacl
memperluas sistem file dasarACL
untuk memungkinkan lebih dari satu pengguna atau grup untuk ditugaskan keACL
untuk file dan direktori. Ini juga merupakanDAC
implementasi, dan karena itu diterapkan setelahSELinux
MAC
ACL
s.setfacl
ACL yang secara eksplisit mengesampingkan izin tradisional. Apakah ini benar dalam setiap kasus?setacl
/setfacl
ACL
s akan menimpa tradisional 'sederhana'ACL
pada file.setfacl
milik jawabannya.Maaf berdalih, tapi saya pikir beberapa jawaban di sini mungkin salah. Langsung dari Fedora http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html :
sumber