天天看點

selinux第一節

版權聲明:您好,轉載請留下本人部落格的位址,謝謝 https://blog.csdn.net/hongbochen1223/article/details/45172215

(一):selinux簡介

selinux是security enhancement linux的簡稱,從字面意思說就是安全增強型linux,這種增強能夠有效的減輕

有缺陷的應用軟體所出現的問題,包括那些沒有被發現的或者是被建立的缺陷。同時,這種增強也能夠強化很多安全

目标,從資料保密到應用內建來提高其健壯性。

(二):DAC和MAC

1): 在早期的作業系統中幾乎是沒有安全方面的考慮的,使用者可以隻要知道資源的名稱就可以擷取任何檔案或者是資源。後來,有了比較主流的通路控制機制(access control mechanisms)-DAC,即discretionary access control,自主通路控制,DAC的主要特征就是資源擁有者能夠指定誰能或者是誰不能通路該資源。DAC機制有一些基礎的安全缺陷。

—-下面來自百度知道:

“自主通路控制的實作方式包括目錄式通路控制模式、通路控制表(ACL)、通路控制矩陣、面向過程的通路控制等,其中,通路控制表是自主通路控制機制通常采用的一種方式。通路控制表是存放在計算機中的一張表,本質上是帶有通路權限的矩陣,其通路權限包括讀檔案、寫檔案、執行檔案等等。在自主通路控制機制下,每個客體都有一個特定的安全屬性,同時通路控制表也授予或禁止主體對客體的通路權限。在實際工作中,安全管理者通過維護通路控制表,控制使用者對檔案、資料等IT系統資源的通路行為,來達到安全防控的目的。

  從安全性上看,現有作業系統中基于通路控制表的自主通路控制存在着明顯的缺陷:一方面,超級使用者(root/Administrator)權力過度集中,可以随意修客體的通路控制表,隻要擁有超級管理者權限就可以對服務

器所有的資源進行任意操作;另一方面,客體的屬主可以自主地将權限轉授給别的主體,一旦把某個客體的ACL修改權轉授出去以後,擁有者便很難對自己的客體實施控制了。是以,在現有的這種通路控制模型下,

作業系統存在很多安全風險。”

  

是以,基于自主通路控制的缺點,另外一種通路控制機制–MAC,強制通路控制被開發出來。MAC目的是在提供安全需求的時候,能夠克服DAC的缺陷。selinux帶給linux的主要價值就是一個靈活的,可配置的MAC機制。

2):引用監控的概念

在引用監控中,作業系統将被動資源,例如檔案隔離到不同的客體當中,同時,将活動的實體,例如運作中的

程式分隔到主體當中。引用監控機制也就是引用驗證機制,通過提供內建一套通路控制規則的安全政策來驗證主體和客體之間的通路。通過這種方式,程式通路通路系統資源,例如檔案,就能夠被限制在符合安全政策的通路中。

通路控制決策是基于與每一個主體和客體相關的安全屬性的,安全屬性代表着主體或者是客體的安全相關的特征。例如,在linux中,主體也就是程序,都有真實并且有效的使用者辨別符,客體,例如檔案,有通路權限模式,該模式被用來決定哪一個程序能夠打開檔案。

除了實作安全政策,引用監控概念實作的基礎設計目标就是:
1:防篡改(不能被惡意改變或者是修改)
2:無通行(主體不能避免通路控制決策)
3:可驗證(他是正确的,并且安全政策的實作是已經證明的)
           

幾乎所有的作業系統都在實行了引用監控的形式,而且都是以主體,客體以及安全政策規則為特征的。在标準linux中,主體通常都是程序,客體大都是用來資訊共享,存儲和交流(檔案,目錄,套接字,共享記憶體等)的系統資源。

在linux中,和其他流行的作業系統一樣,被引用監控(也就是核心)實施的安全政策都是固定的和寫死的,然而被這些規則用于驗證的安全屬性(例如,通路模式)可以被改變和被配置設定。标準的linux安全是DAC安全的一種形式。

3):自主通路控制的問題

DAC是一種通路控制形式,他通常是允許被準許的使用者(通過他們的程式,例如shell)來改變來改變客體的通路控制屬性,是以來執行哪一個其他使用者有權來通路該客體。DAC的一種簡單的形式就是檔案密碼,想要通路檔案必須要知道被檔案擁有者建立的密碼。大多數DAC機制是基于使用者身份通路控制屬性的。幾乎所有目前的作業系統都有基于使用者身份的DAC形式。在linux中,擁有者-組-其他權限模式機制是非常普遍的和出名的。同樣的,一個更加普通的通路控制清單機制也是比較普遍的。

所有的DAC機制都有一個基礎性的缺陷,就是他不能識别人使用者和計算機程式的差別。DAC嘗試着去模拟一個所有權的概念;例如,檔案所有者有權利來指定檔案通路,并且僅僅将通路權限指定給他信任的其他使用者。假設你能夠信任一個 人使用者(可能是一個無效的命題),計算機工作的方式不能直接模拟一個真實的世界。簡單的說,使用者依賴于不是他們自己創造的,但是能夠在計算機上執行功能的軟體,是以我們不能給使用者授權和使用通路的能力,而是給軟體程式這種能力。正如在網際網路時代非常明顯的事情,程式充滿着缺陷并且很容易被惡意攻擊。這就是特洛伊木馬,首次在1970s被發現,今天的病毒,蠕蟲和間諜軟體都是他的變體,所帶來的問題。簡而言之,如果一個使用者是被授權通路的,那也就意味着程式也被授權通路了,如果程式被授權通路了,那麼惡意程式也會得到相同的通路權。

DAC假設了一個良性的環境,在這個環境當中,所有的程式都是值得信任的并且是沒有缺陷的。雖然我們希望有這樣的環境,但是,我們知道,目前是沒有這樣的環境的。

4):MAC的起源

整個1970s到1980s,基本上所有的精力都放在解決惡意攻擊和軟體存在缺陷的問題上。目标就是實作MAC。

多層安全模型(MLS)是基于一個正式的模型,稱作Bell-LaPadula模型。在多層安全模型中,主體和客體是用安全層來标記的。在我們的例子中,我們有PUBLIC和SECRET敏感層,這些層代表着資料的相對敏感性和代表着主體正在操作的使用者的許可(SECRET的資料要比PUBLIC的資料敏感)。在MLS中,主體可以讀或者是寫具有相同敏感度的客體。除此,主體能夠讀低層的客體(“read down”)和寫高層的客體(“write up”)。然後,一個主體絕不能讀高層的客體(”no read up”)或者是寫底層的客體(“no write down”)。這樣的思想就能夠使資訊從低層流向高層了,但不能反轉,進而來保護高層資料的機密性。

MLS在我們認為的通路控制方面是一個翻天覆地的變化。資料擁有者不再能夠任意的決定誰能通路客體了。更進一步,假設,大多數軟體是不可信的,我們也有非常強健的安全機制了,因為資訊流向規則會阻止不适當的資料通路。在MLS當中,組織通過固定的規則來決定個人使用者怎樣來共享資料。MLS是至今最具應用價值的MAC機制。并且在多個作業系統中也是非常普遍的。

MLS主要的問題就是,嚴格意義上,MLS實作了一個單一的安全目标(也就是說,使用政府分類文檔的迷性來保護敏感資料的機密性),是一種固定的方式。不是所有的作業系統安全問題都是與資料機密性相關的,同時,大多數也不是服從于嚴格地,簡單的政府分類文檔的模型的。在MLS中為了擴充這個目标(和類MAC機制),主體一定要被賦予權限在安全政策之外工作(也就是說,未被“無通行”的原則),并且被信任不會違背這個政策的目的。

5):一個更好的MAC形式

SElinux實作了一個靈活的MAC機制,稱作type enforcement(TE),即類型強制政策。正如你看到的,類型強制政策提供了一個以适應安全目标的多樣性為形式的,健壯的強制安全政策。同時,TE提供了一種手段來控制個人程式層的通路,允許組織者定義一個适合自己系統的安全政策。在TE中,所有的主體和客體都有一個類型辨別符與他們相關聯。為了能夠通路客體,主體的類型一定要被授權為客體的類型,不管主體的使用者辨別符是什麼。

使得selinux的方法比直接的MLS方法優越的原因就是,統治基于類型的通路控制在核心中是不預先被定義的或者不是寫死的。預設的,selinux不允許通路。一個組織能夠開發任何數量的規則來指定什麼是被允許的,使得selinux能夠适應安全政策的多樣性。

一個系統中允許通路的規則的集合被稱作selinux policy,即selinux政策。一個selinux政策是包含所有的selinux核心要實施的規則的檔案。政策檔案從源檔案集合中被編譯。正如你看到的,selinux政策能夠從一個系統移植到另外一個系統中。在啟動程序階段,政策被加載到核心當中,它在核心當中被用做通路控制決策的基礎。

selinux向linux帶來了以基于角色的通路控制為形式的靈活的TE和可選的傳統的MLS附加。這個被建構在主流的linu作業系統當中的靈活的和可修改的MAC安全機制,是能夠提高安全性的有希望的技術。

繼續閱讀