涂俊英
TU Jun-ying
(孝感學(xué)院 計(jì)算機(jī)與信息科學(xué)學(xué)院,孝感 432000)
Internet正在越來(lái)越多地融入到社會(huì)的各個(gè)方面,計(jì)算機(jī)網(wǎng)絡(luò)的安全問(wèn)題隨著Internet的發(fā)展而越來(lái)越被人們所重視。在社會(huì)日益信息化的今天,隨著Internet以電子商務(wù)為代表的網(wǎng)絡(luò)應(yīng)用的日益發(fā)展,出于各種目的的網(wǎng)絡(luò)入侵和攻擊越來(lái)越頻繁。信息網(wǎng)絡(luò)的大規(guī)模全球互聯(lián)趨勢(shì),隨著網(wǎng)絡(luò)用戶成分越來(lái)越多樣化,以及人們的社會(huì)與經(jīng)濟(jì)活動(dòng)對(duì)計(jì)算機(jī)網(wǎng)絡(luò)依賴性的與日俱增,Internet安全以及信息數(shù)據(jù)安全,使得計(jì)算機(jī)網(wǎng)絡(luò)的安全性成為信息化建設(shè)的一個(gè)核心問(wèn)題。隨著Internet對(duì)公司、個(gè)人和社會(huì)生活影響的日益擴(kuò)大,Internet越來(lái)越深入地滲透到各行各業(yè)的關(guān)鍵要害領(lǐng)域,網(wǎng)絡(luò)安全作為一個(gè)無(wú)法回避的問(wèn)題呈現(xiàn)在人們面前.如果網(wǎng)絡(luò)安全問(wèn)題不能得到妥善的解決,網(wǎng)絡(luò)使用者如果不重視自身的安全防范,將會(huì)對(duì)國(guó)家安全帶來(lái)嚴(yán)重的威脅,將很有可能給自己帶來(lái)一系列的嚴(yán)重后果。
本文以研究和改進(jìn)Linux現(xiàn)有的存取訪問(wèn)控制機(jī)制為主要目標(biāo),在對(duì)Linux現(xiàn)有安全機(jī)制分析的基礎(chǔ)上,為了驗(yàn)證LYSLinux存取訪問(wèn)控制模型的可行性和正確性,進(jìn)一步結(jié)合信息安全模型理論,本文設(shè)計(jì)并實(shí)現(xiàn)了基于LYSLinux存取訪問(wèn)控制模型的LYSLinux原型系統(tǒng),總結(jié)出了安全操作系的分權(quán)思想,并進(jìn)一步提出了LYSLinux存取訪問(wèn)控制模型及分層授權(quán)觀點(diǎn)。LYSLinux原型系統(tǒng)的設(shè)計(jì)充分利用了Linux內(nèi)核提供的安全設(shè)施,基于現(xiàn)有FLASK安全體系結(jié)構(gòu)設(shè)計(jì)。本文通過(guò)對(duì)LYSLinux原型系統(tǒng)的測(cè)試和結(jié)果分析,進(jìn)一步總結(jié)該系統(tǒng)的優(yōu)缺點(diǎn)。
Linux網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)將整個(gè)網(wǎng)絡(luò)系統(tǒng)的結(jié)構(gòu)分為內(nèi)核空間和用戶空間兩部分,IP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)層協(xié)議,其中內(nèi)核空間又可以分為協(xié)議層和設(shè)備驅(qū)動(dòng)層,在IP層以下是網(wǎng)絡(luò)設(shè)備來(lái)支持所有Linux網(wǎng)絡(luò)工作。Linux選用編程接口是由于它的流行性及可移植性,控制Socket文件描述符對(duì)應(yīng)的就是對(duì)BSD Socket的操作,有助于應(yīng)用程序從Linux平臺(tái)移植到其他Unix平臺(tái)。從INET Socket層到IP層,它由INET Sockets層來(lái)支持,發(fā)送數(shù)據(jù)時(shí)根據(jù)發(fā)送的目標(biāo)地址確定需要使用的網(wǎng)絡(luò)設(shè)備接口和下一個(gè)需要傳送的及其地址,這一層為基于IP協(xié)議的TCP和UI)P管理傳輸端點(diǎn)。從而進(jìn)入到BsD Socket層的操作,從IP層到數(shù)據(jù)鏈路層,接收數(shù)據(jù)時(shí)在IP層判斷數(shù)據(jù)包是向上一層協(xié)議提交還是需要做IP轉(zhuǎn)發(fā),就是到網(wǎng)絡(luò)接口設(shè)備驅(qū)動(dòng)程序,對(duì)數(shù)據(jù)包的采集和發(fā)送。
由于Linux安全操作系統(tǒng)的應(yīng)用已非常廣泛,不斷成熟和完善的Linux提倡的開(kāi)放源碼政策及自身安全方面所具有的一些優(yōu)良特性。國(guó)內(nèi)近年來(lái)在這方面也取得了大量成果,Linux的存取訪問(wèn)控制機(jī)制也在不斷的發(fā)展和完善,然而,現(xiàn)有的Linux存取訪問(wèn)控制仍有其不足之處,較之國(guó)外仍存在差距,在研究成果的產(chǎn)品化上亦有諸多缺陷。
安全模型是對(duì)系統(tǒng)安全功能的高度抽象和概括,安全系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)除了依賴于具體的安全模型之外,是實(shí)現(xiàn)具體安全機(jī)制的理論基礎(chǔ)。同時(shí),還需具有良好的體構(gòu)來(lái)保證系統(tǒng)的運(yùn)行效率和質(zhì)量,安全模型也是制定安全策略的依據(jù)。因此,安全體系結(jié)構(gòu)(安全體系框架)是實(shí)現(xiàn)安全系統(tǒng)的基礎(chǔ)和依據(jù),對(duì)安全框架的研究是十分必要的。
Flask體系結(jié)構(gòu)提供了動(dòng)態(tài)策略支持,從安全服務(wù)器取得主體對(duì)客體的訪問(wèn)權(quán)限。Flask體系結(jié)構(gòu)實(shí)現(xiàn)了動(dòng)態(tài)安全策略,標(biāo)識(shí)系統(tǒng)管理的對(duì)象,支持策略靈活性。緩存了數(shù)目有限的特定主體對(duì)客體的訪問(wèn)權(quán)限記錄,主要為了避免由于安全服務(wù)器的頻繁訪問(wèn)而造成的系統(tǒng)性能下降對(duì)象管理器,實(shí)施安全策略的判定;安全服務(wù)器通過(guò)該接口對(duì)象管理器能及時(shí)感知安全策略的變化,做出安全策略的判定。Flask體系結(jié)構(gòu)如圖1所示。
圖1 Flask安全體系結(jié)構(gòu)
針對(duì)自主訪問(wèn)控制存在的種種不足,Linux系統(tǒng)下出現(xiàn)了許多強(qiáng)制訪問(wèn)控制機(jī)制,SELinux是一個(gè)基于動(dòng)態(tài)策略配置的強(qiáng)制訪問(wèn)控制子系統(tǒng)。由于SELinux支持較細(xì)粒度的權(quán)限描述和管理,采用SELinux能極大程度的提高系統(tǒng)的安全性能。
SELinux安全策略配置支持RBAC模型,該模型中存在另一個(gè)實(shí)體集——用戶集。用戶可以將一個(gè)或多個(gè)類(lèi)型指派給某一角色,SELinux定義的用戶是RBAC模型的組成部分,換言之,SELinux中的角色是包含一個(gè)或多個(gè)類(lèi)型的更大的權(quán)限集,實(shí)際上是一個(gè)更大的權(quán)限集合。SELinux在設(shè)計(jì)初期是以內(nèi)核模塊的形式插入到內(nèi)核中運(yùn)行的,Linux2.6內(nèi)核中SELinux訪問(wèn)控制建立在LSM框架之上。LSM的主要思想是內(nèi)核的設(shè)計(jì)者在需要進(jìn)行訪問(wèn)控制的位置插入相應(yīng)的鉤子函數(shù)(hooks),是Linux內(nèi)核中為安全模塊(系統(tǒng))的設(shè)計(jì)提供的一套內(nèi)核機(jī)制。當(dāng)信息流到這些鉤子函數(shù)時(shí)控制時(shí),內(nèi)核根據(jù)該反饋結(jié)果控制系統(tǒng)中的信息流,內(nèi)核會(huì)將控制交給注冊(cè)到LSM中的安全控制函數(shù),然后經(jīng)過(guò)某一安全策略的判斷后將決策結(jié)果反饋給內(nèi)核,安全控制函數(shù)首先提取出主體和客體信息, SELinux的存取訪問(wèn)控制是基于LSM框架實(shí)現(xiàn)的。SELinux的結(jié)構(gòu)如圖2所示。
圖2 SELinux存取訪問(wèn)控制模型
Linux安全模塊(LSM)采用了通過(guò)在內(nèi)核源代碼中放置鉤子的方法,滿足大多數(shù)現(xiàn)有Linux安全增強(qiáng)系統(tǒng)的需要,截獲主體對(duì)客體的訪問(wèn)。為了Linux安全模塊(LSM)采取了簡(jiǎn)化設(shè)計(jì)的方式,在系統(tǒng)運(yùn)行過(guò)程中,Linux安全模塊(LSM)現(xiàn)在主要支持大多數(shù)現(xiàn)存安全增強(qiáng)系統(tǒng)的核心功能。系統(tǒng)通過(guò)提取存放在內(nèi)核對(duì)象安全域中的信息,對(duì)一些安全增強(qiáng)系統(tǒng)要求的其他安全功能,得到主客體的安全標(biāo)識(shí)。Linux安全模塊(LSM)現(xiàn)在主要支持“限制型”的訪問(wèn)控制決策,LSM框架為多數(shù)內(nèi)核對(duì)象增加了安全域。當(dāng)Linux內(nèi)核給予訪問(wèn)權(quán)限時(shí),進(jìn)程控制塊(task struct),inode結(jié)點(diǎn),用戶進(jìn)程執(zhí)行系統(tǒng)調(diào)用,首先經(jīng)過(guò)Linux內(nèi)核原有的邏輯找到并分配資源,進(jìn)行錯(cuò)誤檢查,只提供了的少量的支持,然后經(jīng)過(guò)經(jīng)典的UNIX自主訪問(wèn)控制,對(duì)于模塊功能合成。在Linux內(nèi)核試圖對(duì)內(nèi)核對(duì)象進(jìn)行訪問(wèn)之前,Linux安全模塊(LSM)允許模塊堆棧,安全模塊根據(jù)其安全策略進(jìn)行決策。LKM的最基本框架
LKM編譯成功之后,可用insmod 命令插入到系統(tǒng)內(nèi)核,并在內(nèi)核態(tài)下運(yùn)行。
當(dāng)LYSLinux內(nèi)核模塊初始化完畢后,內(nèi)核中LSM框架的鉤子函數(shù)會(huì)將程序流引向LYSLinux安全策略實(shí)施機(jī)構(gòu)中相應(yīng)的輔助函數(shù),安全策略實(shí)施機(jī)構(gòu)開(kāi)始截獲并根據(jù)安全策略實(shí)施強(qiáng)制訪問(wèn)控制。LYSLinux安全策略實(shí)施機(jī)構(gòu)的輔助函數(shù)會(huì)從內(nèi)核對(duì)象中提取出LYSLinux所需的安全信息,根據(jù)激活的輔助函數(shù)及其他LSM傳遞的參數(shù)判斷主體對(duì)客體的操作請(qǐng)求以及該操作的類(lèi)別,一般是指主體的當(dāng)前有效SID和客體類(lèi)型的類(lèi)型號(hào)。
當(dāng)存取訪問(wèn)向量緩存(AVC)中找不到相應(yīng)向量時(shí),由主體的SID,客體類(lèi)型的類(lèi)型號(hào)以及操作和操作類(lèi)別到存取訪問(wèn)向量緩存中查尋相應(yīng)的訪問(wèn)向量,AVC會(huì)進(jìn)一步請(qǐng)求對(duì)象管理器并得到與SID對(duì)應(yīng)的主體權(quán)限信息,通過(guò)查詢安全策略數(shù)據(jù)庫(kù)計(jì)算出對(duì)該操作集的決策結(jié)果以及存取向量,然后會(huì)將主體權(quán)限信息與客體類(lèi)型和操作集及操作類(lèi)別發(fā)送到安全服務(wù)器。更新存取訪問(wèn)向量緩存并返回決策結(jié)果,安全策略實(shí)施機(jī)構(gòu)將決策結(jié)果返回給Linux內(nèi)核。
安全策略服務(wù)器主要由安全策略加載器(DBLoader)和策略查詢器(PolicyQuerier)組成,安全策略服務(wù)器的結(jié)構(gòu)和工作時(shí)所依賴的數(shù)據(jù)結(jié)構(gòu)信息。策略查詢器(PolicyQuerier)負(fù)責(zé)根據(jù)其他組件的安全查詢請(qǐng)求信息從安全策略數(shù)據(jù)庫(kù)中提取出相應(yīng)的信息,安全策略加載器負(fù)責(zé)構(gòu)建和維護(hù)安全策略數(shù)據(jù)庫(kù)(PolicyDB )。系統(tǒng)啟動(dòng)時(shí)安全策略加載器會(huì)從文件系統(tǒng)加載二進(jìn)制安全策略描述文件到內(nèi)核空間,計(jì)算出該請(qǐng)求的訪問(wèn)向量并返回,并由一組加載函數(shù)從二進(jìn)制策略文件中讀出策略數(shù)據(jù),并用這些數(shù)據(jù)初始化安全策略數(shù)據(jù)庫(kù)。策略查詢器實(shí)現(xiàn)了db make decision函數(shù),該函數(shù)申明如下:
int svr_make_decision(u32 domain,u32 role,u32 user,
u32 type,perm_classt class,operation_t ops,
svr_decision__t*sd);
該函數(shù)會(huì)根據(jù)一定的策略由上述的三個(gè)集合計(jì)算出該主體對(duì)該客體的所有權(quán)限以及請(qǐng)求操作集中被允許的權(quán)限。
系統(tǒng)管理的各類(lèi)軟硬件資源包括數(shù)據(jù)的安全,而在操作系統(tǒng)中對(duì)資源的訪問(wèn)操作都需請(qǐng)求操作系統(tǒng)內(nèi)核的服務(wù),Linux操作系統(tǒng)以其良穩(wěn)定的系統(tǒng)性能和開(kāi)放源碼的優(yōu)勢(shì)受到了廣大個(gè)人用戶和企業(yè)的青睞,因此基于操作系統(tǒng)內(nèi)核的存取訪問(wèn)控制可以有效的保證系統(tǒng)中數(shù)據(jù)的安全性。但是Linux操作系統(tǒng)的存取訪問(wèn)控制還存在不足之處,對(duì)信息安全模型和安全體系結(jié)構(gòu)研究的基礎(chǔ)上,著重對(duì)現(xiàn)有Linux操作系統(tǒng)的存取訪問(wèn)控制機(jī)制進(jìn)行了優(yōu)缺點(diǎn)分析,并在此基礎(chǔ)是提出了若干改進(jìn)思路和觀點(diǎn),并構(gòu)建了原型系統(tǒng)加以驗(yàn)證。
[1]Sylvia Osborn,Ravi Sandhu,Qamar Munawer.Configuring role-based access control to enforce mandatory and discretionary access control policies.ACM Transactions on Information and System Security.2000,13(2):8-96.
[2]梁洪亮.支持多安全政策的安全操作系統(tǒng)的研究與實(shí)施[D].中國(guó)科學(xué)院軟什研究所,2002:11-23.
[3]Zanin,Giorgio.Towards a formal model for security policies specification and validation in the SE Linux system.Proceedings on the Ninth ACM Symposium on Access Control Models and Technologies,2004,10(5),136-145.
[4]李遠(yuǎn)征.操作系統(tǒng)訪問(wèn)控制模型關(guān)鍵技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(4):1004-1002,1095.
[5]Ray Spencer,Stephen Smalley,Peter Leacock,Mike Hitler,David Andersen,Jay Leprous.The Flask Security Architecture:System Support for Diverse Security Policies.Proceeding of The Eighth USENIX Security Symposium.1999,8:123-139.