Linux dosya güvenliğinde DAC (dosya izinleri), ACL ve MAC (SELinux) hangi rolleri oynar?


18

Linux dosya güvenliğinde DAC, ACL ve MAC oyunlarında farklı açıklamalara / onaylamaya / ayrıntılara ihtiyacım var.

Belgelerden biraz araştırma yaptıktan sonra, bu yığını anladım:

  1. SELinux, dosya nesnesine erişmenize izin vermelidir.
  2. Eğer dosyanın ACL (örneğin setfacl,getfacl açıkça izin veren bir ACL bağlama için) / nesneye erişimi engeller, daha sonra başka işlem gereklidir.
  3. Aksi takdirde, dosyanın izinlerine bağlıdır (rwxrwxrwx DAC modeli).

Bir şey mi kaçırıyorum? Durumun böyle olmadığı durumlar var mı?


2
Doğru olduğunu düşünüyorum. Karşılaştığınız sorunu gönderebilir misiniz?
Kevin M

Yanlış biçimlendirilmiş soru için özür dilerim. Bu söz konusu olduğunda, bir "deneme yanılma" moduna giriyorum. Güvenle kavramaya çalışıyorum ve birinin yığının her bir bölümünün oynadığı rollerin daha net bir resmini paylaşabileceğini umuyordum.
Belmin Fernandez

Cevaplarda aradığımı açıklığa kavuşturmak için soruyu düzenledi.
Belmin Fernandez

Yanıtlar:


19

Bir işlem bir dosyaya işlem gerçekleştirdiğinde, Linux çekirdeği denetimi aşağıdaki sırayla gerçekleştirir:

  1. İsteğe Bağlı Erişim Kontrolü (DAC) veya kullanıcı tarafından belirlenen erişim kontrolü. Bu, hem klasik UNIX stili izin denetimlerini hem de POSIX Erişim Denetim Listelerini (ACL) içerir . Klasik UNIX denetimleri, geçerli mod UID ve GID ile erişilen dosyanın UID ve GID'sini hangi modların ayarlandığına göre karşılaştırır (Okuma / Yazma / eXecute). Erişim Kontrol Listesi, izin kontrolü ile ilgili daha fazla seçeneğe izin vermek için klasik UNIX kontrollerini genişletir.

  2. Zorunlu Erişim Kontrolü (MAC) veya ilke tabanlı erişim kontrolü. Bu, artık gerçek modüller olmayan Linux Güvenlik Modülleri (LSM) kullanılarak uygulanır (eskiden bırakılırdı). Klasik UNIX tarzı güvenlik kontrolleri dışındaki diğer modellere dayalı ilave kontroller sağlar. Bu modellerin tümü, hangi bağlamda hangi bağlamda hangi işlemlere izin verildiğini açıklayan bir politikaya dayanmaktadır.

İşte online Linux Çapraz Referans bağlantıları ile cevabımı desteklemek için inodes erişimi (dosya erişimi dahil) için bir örnek . Verilen " function_name(dosyaadı: satır)" Linux çekirdeğinin 3.14 sürümü içindir.

Fonksiyonu inode_permission( fs / namei.c: 449 ) (dosya sistemi kendisinde okuma izni için ilk kontroller sb_permissioniçinde fs / namei.c: 425 ), sonra çağrılar __inode_permission( fs / namei.c: 394 ) Okuma / yazma için kontrol etmek / yürütmek izinleri ve do_inode_permission( fs / namei.c: 368 ) (DAC) içindeki bir inode üzerindeki POSIX ACL ve ardından security_inode_permission( security / security.c: 550 içindeki LSM ile ilgili izinler (MAC) ) ).

Bu siparişin tek bir istisnası vardı (DAC sonra MAC): mmap kontrolleri içindi. Ancak bu, Linux çekirdeğinin 3.15 sürümünde düzeltildi ( ilgili taahhüt ).


Standart kaynaklarla mükemmel ayrıntılı cevap. Teşekkürler!
Belmin Fernandez

15

DAC== Discretionary Access Control, http://en.wikipedia.org/wiki/Discretionary_access_control
MAC == Mandatory Access Control, http://en.wikipedia.org/wiki/Mandatory_access_control
ACL == Access Control List, http://en.wikipedia.org/wiki/Access_control_list

ACLBelirtir kontrolleri kontrol yöntemi ile uygulanan edilecek DACveya MAC. MACaçık, merkezi olarak denetlenir ve kullanıcılara açık izinleri olmadıkça bir nesneye yetki verme izni vermezken DAC, diğer kullanıcılara erişebilecekleri nesnelere erişim izni verme izni verir.

MAC ACLs her zaman önce bir isteğe uygulanır ve erişim reddedilirse işleme durur. Erişime izin veriliyorsa, DAC ACLs uygulanır ve erişim reddedilirse işlem durdurulur. Erişim ikisi tarafından verilir Sadece eğer MACve DAC ACLkullanıcı erişim nesnesi olabilir s onlar istedi.

SELinuxMACLinux için bir uygulamadır (diğerleri vardır), geleneksel rwxdosya izinleri, sahip olan kullanıcı ve grupla birleştirilir DAC ACL. SELinux'Politikası' temelde MAC ACL.


1
ACL dosyası (ör. setfacl) Nereye gelir?
Belmin Fernandez

1
setacldosyalar ve dizinler için ACLbirden fazla kullanıcıya veya gruba atanmasına izin vermek üzere temel dosya sistemlerini genişletir ACL. Bu aynı zamanda bir DACuygulamadır ve bu nedenle SELinux MAC ACLs'den sonra uygulanır .
Mike Insch

Teşekkürler Mike. Bir soru daha: Testlerimle söyleyebildiğim kadarıyla, açıkça ayarlanan setfaclACL'ler geleneksel izinleri geçersiz kılar. Bu her durumda doğru mu?
Belmin Fernandez

Bildiğim kadarıyla, evet, setacl/ setfacl ACLs ACLdosyadaki geleneksel 'basit' geçersiz kılar .
Mike Insch

1
Mike, hakkındaki notun setfaclcevaba ait.
Pavel Šimerda

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.