概述
1、什么是SELinux?
SELinux是Security-enhanced Linux的縮寫,它最開始是在Linux社區(qū)作為L(zhǎng)inux®內(nèi)核研究的原型和一些增強(qiáng)安全的工具一起證實(shí)強(qiáng)制訪問控制的價(jià)值,以及如何將這些控制增加到Linux中去,目前SELinux已經(jīng)集成到Linux 2.6內(nèi)核的主線和大多數(shù)Linux發(fā)行版上,SELinux內(nèi)核包括了新的架構(gòu)組件,提升了Flask框架操作系統(tǒng)的安全性,這些架構(gòu)組件提供許多強(qiáng)制訪問控制策略的支持,包括那些基于類型增強(qiáng)(TE)、基于角色的訪問控制和多級(jí)安全。
2、SELinux能給我們帶來什么傳統(tǒng)Linux沒有的東西?
SELinux內(nèi)核強(qiáng)制訪問控制策略限制用戶程序和系統(tǒng)服務(wù)正常工作需要的最小權(quán)限,當(dāng)使用這種方法進(jìn)行限制后,有效地減低了或消除了這些用戶程序和系統(tǒng)服務(wù)泄密引起的危害,這個(gè)限制機(jī)制與傳統(tǒng)訪問控制機(jī)制互相獨(dú)立,誰也不妨礙誰,它沒有超級(jí)用戶的概念,也不會(huì)共用傳統(tǒng)的Linux安全機(jī)制的缺陷(例如一個(gè)依賴setuid/setgid的二進(jìn)制文件)
一個(gè)沒有修改過的Linux系統(tǒng)的安全依賴于內(nèi)核的正確性、所有應(yīng)用程序的權(quán)限和它們的配置,這些地方任何一個(gè)問題都有可能造成全部系統(tǒng)泄密,相反,一個(gè)基于SELinux的經(jīng)過修改的系統(tǒng)的安全主要依賴于內(nèi)核的正確性和它的安全策略配置,當(dāng)正確性或應(yīng)用程序的配置出現(xiàn)了問題,個(gè)別應(yīng)用程序或系統(tǒng)進(jìn)程造成了泄密,也不會(huì)對(duì)其他應(yīng)用程序或系統(tǒng)進(jìn)程的安全造成安全威脅。
3、有什么好處?
SELinux的新特性是基于機(jī)密性和完整性需求進(jìn)行設(shè)計(jì),它們被設(shè)計(jì)成阻止進(jìn)程讀取數(shù)據(jù)、數(shù)據(jù)被篡改、繞過應(yīng)用程序安全機(jī)制,執(zhí)行不可信任的程序,或干涉其它違背系統(tǒng)安全策略的進(jìn)程,它們還幫助限制由于惡意或有缺陷的程序引起的潛在危險(xiǎn),它們還可以用于一個(gè)單個(gè)系統(tǒng)對(duì)不用需求的用戶訪問進(jìn)行不同的安全認(rèn)證。
4、我如何得到一份拷貝?
你可以在http://www.nsa.gov/selinux/code/下載它或者使用一個(gè)已經(jīng)包括了SELinux支持的發(fā)行版,有關(guān)詳細(xì)信息可以在SELinux Sourceforge project找到。
5、你的發(fā)行版包括了什么?
NSA SELinux發(fā)行包括了核心的SELinux應(yīng)用程序代碼,SELinux支持已經(jīng)包括在Linux2.6內(nèi)核的主線里,可以從kernel.org下載最新的內(nèi)核,核心的SELinux應(yīng)用代碼由一個(gè)為二進(jìn)制策略操作的庫(kù)(libsepol)、一個(gè)策勒編譯器(checkpolicy)、一個(gè)為安全感知應(yīng)用程序準(zhǔn)備的庫(kù)(libsemanage)和幾個(gè)與策略有關(guān)的工具(policycoreutils).
除此之外,對(duì)于一個(gè)啟用了SELinux的內(nèi)核和SELinux核心應(yīng)用代碼,你將需要一個(gè)策略和SELinux補(bǔ)丁包,策略可以從SELinux參考策略項(xiàng)目獲取,在SELinux Sourceforge project可以獲取大多數(shù)發(fā)行版的SELinux補(bǔ)丁包。
6、我可以在一個(gè)已經(jīng)裝好的Linux系統(tǒng)上安裝SELinux嗎?
是的,你可以在一個(gè)已經(jīng)裝好的Linux系統(tǒng)上僅僅只安裝SELinux或者直接全新安裝一個(gè)包括SELinux支持的發(fā)行版。SELinux由一個(gè)啟用了SELinux的內(nèi)核、一套核心庫(kù)和工具、一些修改了的應(yīng)用程序包和一個(gè)策略配置組成,要在一個(gè)沒有SELinux支持的系統(tǒng)上安裝它,你必須編譯軟件及其他需要的軟件包,如果你的系統(tǒng)可以支持SELinux,你不需要編譯或安裝NSA SELinux發(fā)行包,除非你想將它更新到最新狀態(tài)。
7、SELinux與未改動(dòng)的Linux兼容性如何?
SELinux提供與現(xiàn)有Linux應(yīng)用程序和Linux內(nèi)核模塊二進(jìn)制兼容性,但是一部分內(nèi)核模塊需要修改以便與SELinux正確地進(jìn)行交互,下面詳細(xì)討論這兩方面的兼容性:
A.應(yīng)用程序兼容性
SELinux提供與現(xiàn)有應(yīng)用程序二進(jìn)制兼容性,我們已經(jīng)擴(kuò)展了內(nèi)核數(shù)據(jù)結(jié)構(gòu)以包含新的安全屬性,并且我們?yōu)榘踩兄獞?yīng)用程序增加了新的API調(diào)用,但是我們并沒有對(duì)應(yīng)用程序改變?nèi)魏螖?shù)據(jù)結(jié)構(gòu)的可視性,也沒有改變現(xiàn)有系統(tǒng)調(diào)用的任何接口,因此現(xiàn)有應(yīng)用程序可以不用修改就可以運(yùn)行,只要安全策略認(rèn)證了它們的操作就行。
B.內(nèi)核模塊兼容性
最初,SELinux僅僅為內(nèi)核模塊提供源代碼兼容,那些修改了內(nèi)核頭的模塊為了獲取新的增加到內(nèi)核數(shù)據(jù)結(jié)構(gòu)的安全屬性而不得不必須重新編譯,自從LSM和SELinux集成到Linux2.6內(nèi)核主線依賴,SELinux就提供了與內(nèi)核模塊二進(jìn)制兼容性,但是,仍然有一些內(nèi)核模塊需要修改才能與SELinux進(jìn)行交互,例如:如果一個(gè)內(nèi)核模塊沒有使用正常的內(nèi)核核心功能來分配并設(shè)置一個(gè)內(nèi)核對(duì)象,那么這個(gè)對(duì)象將缺少特有的安全信息,一部分內(nèi)核模塊也可能缺少正確的安全控制,任何現(xiàn)有的調(diào)用都將觸發(fā)SELinux權(quán)限檢查,最細(xì)粒度的控制或傳統(tǒng)控制都需要強(qiáng)制MAC策略。
SELinux不會(huì)引入常規(guī)Linux共有的問題,只要所有請(qǐng)求的操作都經(jīng)過了安全策略配置的認(rèn)證即可。
8、樣例安全策略配置的目標(biāo)是什么?
高級(jí)的目標(biāo)是證明強(qiáng)制訪問控制的靈活性和安全以及提供一個(gè)最小應(yīng)用程序修改的工作系統(tǒng),低級(jí)的目標(biāo)在策略文檔中有一些目標(biāo)描述,這些目標(biāo)包括對(duì)數(shù)據(jù)的原始訪問控制,內(nèi)核完整性、系統(tǒng)軟件、系統(tǒng)配置信息和系統(tǒng)日志的保護(hù),限制那些由于開發(fā)的原因造成的有潛在危險(xiǎn)的權(quán)限,保護(hù)由于執(zhí)行惡意代碼的特權(quán)進(jìn)程,保護(hù)管理員角色和未經(jīng)用戶認(rèn)證而進(jìn)入的域,阻止常規(guī)用戶進(jìn)程干涉系統(tǒng)進(jìn)程或管理進(jìn)程,保護(hù)用戶和管理員在他們的瀏覽器里執(zhí)行惡意的移動(dòng)代碼。
9、為什么是Linux被選做為基礎(chǔ)平臺(tái)?
Linux被選做為基礎(chǔ)平臺(tái)是因?yàn)樗谧呦虺晒Σ㈤_放了開發(fā)環(huán)境,Linux提供了一個(gè)極好的機(jī)會(huì)來證明這個(gè)功能能在主流的操作系統(tǒng)上是可以成功的,同時(shí),幫助提高了廣泛使用的系統(tǒng)的安全,Linux平臺(tái)也為接收大量的評(píng)價(jià)提供了極好的機(jī)會(huì),并為傳統(tǒng)安全研究提供了基礎(chǔ)。
10、為什么你要做這個(gè)工作?
NSA的信息保障研究組專門負(fù)責(zé)研究和開發(fā)需要的高級(jí)技術(shù),讓NSA能提供解決方案、產(chǎn)品和完成美國(guó)國(guó)家安全部門提供信息保障服務(wù),。
創(chuàng)建一個(gè)有生命力的安全操作系統(tǒng)留下了一個(gè)重要的研究問題,我們的目標(biāo)是創(chuàng)建一個(gè)有效的為安全提供必須的支持的系統(tǒng)架構(gòu),通過這個(gè)方法執(zhí)行一個(gè)應(yīng)用程序?qū)τ谟脩魜碚f基本上是透明的,并且對(duì)開發(fā)商是有吸引力的,我們認(rèn)為達(dá)到這個(gè)目標(biāo)必要的步驟是如何將強(qiáng)制訪問控制集成到主流的操作系統(tǒng)中去。
11、它與早先的NSA OS研究是如何聯(lián)系的?
NSA的信息保障研究組的研究人員與安全計(jì)算公司(SCC)一起工作,共同開發(fā)一個(gè)基于類型增強(qiáng)的強(qiáng)壯的、靈活的強(qiáng)制訪問控制架構(gòu),首先是為L(zhǎng)OCK系統(tǒng)開發(fā)的一個(gè)結(jié)構(gòu),NSA和SCC開發(fā)了兩個(gè)基于Mach的架構(gòu)原型:DTMach和DTOS(http://www.cs.utah.edu/flux/dtos/)。NSA和SCC后來與猶他州立大學(xué)研究組合作將這個(gè)架構(gòu)移植到Fluke操作系統(tǒng)上,在移植過程中,架構(gòu)為更好地提供動(dòng)態(tài)安全策略支持進(jìn)行了增強(qiáng)。這個(gè)增強(qiáng)的架構(gòu)就是今天的Flask(http://www.cs.utah.edu/flux/flask/),NSA現(xiàn)在已經(jīng)將Flask架構(gòu)集成到Linux操作系統(tǒng)中了,并將這個(gè)技術(shù)轉(zhuǎn)移給大型的開發(fā)者和用戶社區(qū)。
12、SELinux是一個(gè)可靠的操作系統(tǒng)嗎?
短語“可靠的操作系統(tǒng)”通常是相對(duì)于提供充足的多級(jí)安全支持和滿足政府部門特殊需求的操作而言,SELinux吸取了這些系統(tǒng)有用的想法,但主要集中在強(qiáng)制訪問控制,SELinux開發(fā)最初的焦點(diǎn)是為真實(shí)環(huán)境創(chuàng)建一個(gè)有用的保護(hù)措施,SELinux本身并不是一個(gè)可信賴的操作系統(tǒng),但是它提供了一個(gè)重要的安全特性 – 強(qiáng)制訪問控制 – 可信賴操作系統(tǒng)需要的。SELinux已經(jīng)被集成到依靠標(biāo)記安全保護(hù)配置文件通過評(píng)估的Linux發(fā)行版,有效的產(chǎn)品信息和評(píng)估中的產(chǎn)品信息可以在http://niap-ccevs.org/找到。
13、它安全嗎?
一個(gè)安全的系統(tǒng)概念包括很多屬性(如物理安全,個(gè)人安全等),SELinux僅僅訪問一套非常有限的屬性(如在操作系統(tǒng)上強(qiáng)制訪問控制),安全系統(tǒng)意味著足夠安全地保護(hù)現(xiàn)實(shí)世界的信息,這些信息是信息所有者的敵人和/或用戶關(guān)心的。SELinux僅僅想證明在類似Linux的現(xiàn)代操作系統(tǒng)中的強(qiáng)制訪問控制,我們認(rèn)為這個(gè)技術(shù)在SELinux中被證明是有用的,這對(duì)創(chuàng)建安全系統(tǒng)的人們來說是非常有價(jià)值的。
14、在提高保障方面你都做過什么?
這個(gè)項(xiàng)目的目標(biāo)是給Linux增加強(qiáng)制訪問控制并做最小的改動(dòng),后來的目標(biāo)大大限制了提高保障能做的事情,沒有將精力集中在提高Linux保障方面的工作,另一方面,增強(qiáng)依靠先前設(shè)計(jì)一個(gè)高保障的安全架構(gòu)工作,并且這些設(shè)計(jì)原則大部分都在SELinux中得到了延續(xù)。
15、SELinux將被CCEVS評(píng)估嗎?
單獨(dú)地,SELinux沒有被設(shè)計(jì)成訪問一套完整的安全體系,雖然它可能獨(dú)立地評(píng)估目前的功能,我們認(rèn)為這樣一個(gè)評(píng)估可能限制了它的價(jià)值,但是,我們已經(jīng)和其他發(fā)行商合作將這個(gè)技術(shù)集成到Linux發(fā)行版中去了,可以在http://niap-ccevs.org/看到有關(guān)的產(chǎn)品信息和評(píng)估信息。
16、你嘗試過修復(fù)任何缺陷嗎?
沒有,我們?cè)谖覀兊墓ぷ髦羞€沒有找到或發(fā)現(xiàn)過任何缺陷,我們僅僅為增加新的結(jié)構(gòu)進(jìn)行了大量改動(dòng)。
17、它被政府認(rèn)可使用嗎?
SELinux沒有為政府使用指定特殊的或額外的認(rèn)可,超越了其他的Linux版本。
18、它與其他成就有何不同?
SELinux有一個(gè)為靈活的強(qiáng)制訪問控制定義的非常好的架構(gòu),它已經(jīng)經(jīng)過幾個(gè)原型系統(tǒng)(DTMach, DTOS, Flask)得到了證實(shí),架構(gòu)支持非常多的安全策略,請(qǐng)參考http://www.cs.utah.edu/flux/dtos/和http://www.cs.utah.edu/flux/flask/。
架構(gòu)提供了細(xì)粒度的控制超過了其他沒有訪問控制的系統(tǒng)的內(nèi)核抽象概念和服務(wù),一些SELinux系統(tǒng)的不同特征如下:
從強(qiáng)制清楚策略的區(qū)別
定義良好的策略接口
獨(dú)立于特殊的策略和策略語言
獨(dú)立于特殊的安全標(biāo)記格式和內(nèi)容
為內(nèi)核對(duì)象和服務(wù)特殊標(biāo)記和控制
為提升效率緩存訪問決策
支持策略改變
控制進(jìn)程初始化和繼承以及程序執(zhí)行
控制文件系統(tǒng)、目錄、文件和打開文件描述
控制套接字、消息和網(wǎng)絡(luò)接口
控制功能的使用
19、在它上面有什么許可限制?
在這個(gè)站點(diǎn)上發(fā)行的所有源代碼都具有相同的條款和條件,例如:linux內(nèi)核補(bǔ)丁和這里現(xiàn)有的工具的補(bǔ)丁都是基于GPL發(fā)行的。
20、它有出口控制嗎?
沒有為SELinux設(shè)置額外的出口控制,超過了其他Linux版本。
21、NSA計(jì)劃在內(nèi)部使用它嗎?
由于眾所周知的原因,NSA不對(duì)操作使用上做解釋。
22、2002/7/26日安全計(jì)算公司關(guān)于保障的陳述改變了NSA的位置,使得SELinux使用GPL協(xié)議發(fā)布嗎?
NSA的位置沒有改變,NSA繼續(xù)遵循GPL協(xié)議使用,拷貝,發(fā)布和對(duì)SELinux的修改,請(qǐng)查看2001/1/2日的NSA發(fā)行注記
23、NSA贊成開放源代碼嗎?
NSA在提高軟件安全方面同時(shí)兼顧了專有技術(shù)和開放源代碼,在我們的研究活動(dòng)中可以同時(shí)使用它們,NSA的工作提升軟件的安全出于一個(gè)簡(jiǎn)單的考慮:有效地使用我們的資源盡可能地給NSA的客戶提供最好的安全選項(xiàng),NSA的研究目標(biāo)是開發(fā)能與軟件開發(fā)社區(qū)共享的高級(jí)技術(shù),NSA不贊成或宣傳任何特殊的軟件產(chǎn)品或商業(yè)模塊,當(dāng)然,NSA正在促進(jìn)安全增強(qiáng)。