摘 要 現(xiàn)在公眾對信息安全問題是越來越關(guān)心了,各種類型的服務(wù)器上存儲著大量的商務(wù)機(jī)密、個人資料,它們將會受到各種攻擊,例如:服務(wù)器被入侵、主頁文件被替換、機(jī)密文件被盜走。除了來自外部的威脅外,內(nèi)部人員的不法訪問,攻擊也是不可忽視的。對于這些攻擊,當(dāng)然有很多辦法,有防火墻、入侵檢測系統(tǒng)、打補(bǔ)丁等等。在這些方法之中,提高OS系統(tǒng)自身的牢固性就顯得非常的重要。SELinux 在類型強(qiáng)制服務(wù)器中合并了多級安全性或一種可選的多類策略,并采用了基于角色的訪問控制概念。
關(guān)鍵詞 網(wǎng)絡(luò)安全 SELinux模式 SELinux策略 安全上下文
中圖分類號:TP309 文獻(xiàn)標(biāo)識碼:A
1 什么是SELinux
SELinux是美國國家安全局(NSA)對于強(qiáng)制訪問控制的實現(xiàn),是 Linux上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問控制體系,在這種訪問控制體系的限制下,進(jìn)程只能訪問那些在他的任務(wù)中所需要文件。
SELinux是在進(jìn)行程序、文件等權(quán)限設(shè)置依據(jù)的一個內(nèi)核模塊。由于啟動網(wǎng)絡(luò)服務(wù)也是程序,因此剛好也是能夠控制網(wǎng)絡(luò)服務(wù)能否訪問系統(tǒng)資源的一道關(guān)卡。
傳統(tǒng)的文件權(quán)限與賬號關(guān)系是一種自主訪問控制(DAC),就是依據(jù)進(jìn)程的所有者與文件資源權(quán)限來決定有無訪問的能力。這種方式有兩個問題,一是存在特權(quán)用戶root,任何人只要得到root的權(quán)限,對于整個系統(tǒng)都可以為所欲為。二是用戶可以取得進(jìn)程來更改文件資源的訪問權(quán)限。
而SELinux是強(qiáng)制訪問控制(MAC),它針對特定的進(jìn)程與特定的文件資源來進(jìn)行權(quán)限的控制,也就是說,即使你是root,那么在使用不同的進(jìn)程中,你所能取得的權(quán)限并不一定是root,而要看當(dāng)時該進(jìn)程的設(shè)置而定。在強(qiáng)制訪問控制的設(shè)置下,進(jìn)程的活空間變小了,例如:www服務(wù)器軟件的實現(xiàn)為httpd這個進(jìn)程,httpd默認(rèn)情況下,只能在/var/www/這個目錄下面訪問文件,如要訪問其它目錄,就要改規(guī)則設(shè)置和模式,這樣就是雙重管理,就算不小心httpd被入侵者取得了控制權(quán),也不能瀏覽/etc/shadow等重要的文件。
圖1
2 SELinux的運(yùn)行模式
SELinux是通過MAC的方式來控管進(jìn)程,它控制的主體是進(jìn)程,而目標(biāo)則是該進(jìn)程能否讀取“文件資源”。
進(jìn)程程序必須要通過SELinux策略內(nèi)的規(guī)則放行后,就可以與目標(biāo)資源進(jìn)行安全上下文的比較,若比較失敗則無法訪問目標(biāo),若比較成功則可以開始訪問目標(biāo)。如圖1所示。
我們拿一個具體的實例來說明:
①首先,我們觸發(fā)一個可執(zhí)行的目標(biāo)文件,httpd屬于httpd_exec_t這個可以執(zhí)行的類型的/usr/sbin/httpd文件;
②這個類型的文件所造成的主體進(jìn)程具有httpd這個域(domain),SELinux的策略針對這個域已經(jīng)制定了許多規(guī)則和目標(biāo)資源類型;
③由于httpd domain被設(shè)置為可以讀取httpd_sys_content_t這個類型的目標(biāo)文件,因此放置在/var/www/html/目錄下的網(wǎng)頁就會被讀取到;
④但是最后能不能讀到正確的數(shù)據(jù),還要看是符合安全上下文的權(quán)限規(guī)范。
3 SELinux的策略與規(guī)則管理
現(xiàn)在我們應(yīng)該知道,一個主體進(jìn)程能否讀取到目標(biāo)文件資源的重點在于SELinux的策略以及策略內(nèi)的各項規(guī)則,然后再通過該規(guī)則的定義去處理各目標(biāo)文件的安全上下文。
怎樣才能查看并修改策略說明與規(guī)則呢?下面幾個是策略管理工具的使用。
①顯示當(dāng)前的 SELinux的信息
[root@python bin]# sestatus -v
②更改當(dāng)前的SELINUX值
[root@python bin]# setenforce permissive
③semanage
這是一個功能強(qiáng)大的策略管理工具,有了它即使沒有策略的源代碼,也是可以管理安全策略的。
綜上所述,SELinux系統(tǒng)比起通常的Linux系統(tǒng)來,安全性能要高得多,它通過對用戶進(jìn)程權(quán)限的最小化,即使受到攻擊,進(jìn)程或者用戶權(quán)限被奪去也不會對整個系統(tǒng)造成重大影響。SELinux系統(tǒng)對訪問的控制徹底化,對于進(jìn)程只賦予最小的權(quán)限,保證了服務(wù)器的網(wǎng)絡(luò)安全。
參考文獻(xiàn)
[1] 鳥哥.linux鳥哥私房菜.人民郵電出版社(第3版), 2010.7.
[2] 趙炯.Linux內(nèi)核完全注釋.機(jī)械工業(yè)出版社,2004.9.