SELinux的作用:1、通過對(duì)進(jìn)程和文件資源采用MAC控制方式,為L(zhǎng)inux系統(tǒng)提供了改進(jìn)的安全性;2、賦予了主體最小的訪問特權(quán),最大限度地減小系統(tǒng)中服務(wù)進(jìn)程可訪問的資源,可以防止主體對(duì)其他用戶或進(jìn)程產(chǎn)生不利的影響;3、每個(gè)進(jìn)程都有自己的運(yùn)行區(qū)域,各進(jìn)程僅運(yùn)行在自己的域內(nèi),無(wú)法訪問其他進(jìn)程和文件;4、SELinux能最大程序上限制Linux系統(tǒng)中的惡意代碼活動(dòng)。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
SELinux,Security Enhanced Linux 的縮寫,也就是安全強(qiáng)化的 Linux,是由美國(guó)國(guó)家安全局(NSA)聯(lián)合其他安全機(jī)構(gòu)(比如 SCC 公司)共同開發(fā)的,旨在增強(qiáng)傳統(tǒng) Linux 操作系統(tǒng)的安全性,解決傳統(tǒng) Linux 系統(tǒng)中自主訪問控制(DAC)系統(tǒng)中的各種權(quán)限問題(如 root 權(quán)限過高等)。
對(duì)于 SELinux,初學(xué)者可以這么理解,它是部署在 Linux 上用于增強(qiáng)系統(tǒng)安全的功能模塊。
傳統(tǒng)的 Linux 系統(tǒng)安全,采用的是 DAC(自主訪問控制方式),而 SELinux 是部署在 Linux 系統(tǒng)中的安全增強(qiáng)功能模塊,它通過對(duì)進(jìn)程和文件資源采用 MAC(強(qiáng)制訪問控制方式)為 Linux 系統(tǒng)提供了改進(jìn)的安全性。
SELinux的主要作用
-
通過對(duì)進(jìn)程和文件資源采用 MAC(強(qiáng)制訪問控制方式)控制方式,為 Linux 系統(tǒng)提供了改進(jìn)的安全性。
-
最大限度地減小系統(tǒng)中服務(wù)進(jìn)程可訪問的資源(最小權(quán)限原則)。
它賦予了主體(用戶或進(jìn)程)最小的訪問特權(quán),這也就意味著,每個(gè)主體僅被賦予了完成相關(guān)任務(wù)所必須的一組有限的權(quán)限。通過賦予最小訪問特權(quán),可以防止主體對(duì)其他用戶或進(jìn)程產(chǎn)生不利的影響。
-
SELinux 管理過程中,每個(gè)進(jìn)程都有自己的運(yùn)行區(qū)域(稱為域),各進(jìn)程僅運(yùn)行在自己的域內(nèi),無(wú)法訪問其他進(jìn)程和文件,除非被授予了特殊權(quán)限。
-
SELinux 能最大程序上限制 Linux 系統(tǒng)中的惡意代碼活動(dòng)。
擴(kuò)展知識(shí):
SELinux 基本概念:
1、主體(Subject):就是想要訪問文件或目錄資源的進(jìn)程。想要得到資源,基本流程是這樣的:由用戶調(diào)用命令,由命令產(chǎn)生進(jìn)程,由進(jìn)程去訪問文件或目錄資源。在自主訪問控制系統(tǒng)中(Linux 默認(rèn)權(quán)限中),靠權(quán)限控制的主體是用戶;而在強(qiáng)制訪問控制系統(tǒng)中(SELinux 中),靠策略規(guī)則控制的主體則是進(jìn)程。
2、目標(biāo)(Object):這個(gè)概念比較明確,就是需要訪問的文件或目錄資源。
3、策略(Policy):Linux 系統(tǒng)中進(jìn)程與文件的數(shù)量龐大,那么限制進(jìn)程是否可以訪問文件的 SELinux 規(guī)則數(shù)量就更加煩瑣,如果每個(gè)規(guī)則都需要管理員手工設(shè)定,那么 SELinux 的可用性就會(huì)極低。還好我們不用手工定義規(guī)則,SELinux 默認(rèn)定義了兩個(gè)策略,規(guī)則都已經(jīng)在這兩個(gè)策略中寫好了,默認(rèn)只要調(diào)用策略就可以正常使用了。這兩個(gè)默認(rèn)策略如下:
-
-targeted:這是 SELinux 的默認(rèn)策略,這個(gè)策略主要是限制網(wǎng)絡(luò)服務(wù)的,對(duì)本機(jī)系統(tǒng)的限制極少。我們使用這個(gè)策略已經(jīng)足夠了。
-
-mls:多級(jí)安全保護(hù)策略,這個(gè)策略限制得更為嚴(yán)格。
4、安全上下文(Security Context):每個(gè)進(jìn)程、文件和目錄都有自己的安全上下文,進(jìn)程具體是否能夠訪問文件或目錄,就要看這個(gè)安全上下文是否匹配。如果進(jìn)程的安全上下文和文件或目錄的安全上下文能夠匹配,則該進(jìn)程可以訪問這個(gè)文件或目錄。當(dāng)然,判斷進(jìn)程的安全上下文和文件或目錄的安全上下文是否匹配,則需要依靠策略中的規(guī)則。舉個(gè)例子,我們需要找對(duì)象,男人可以看作主體,女人就是目標(biāo)了。而男人是否可以追到女人(主體是否可以訪問目標(biāo)),主要看兩個(gè)人的性格是否合適(主體和目標(biāo)的安全上下文是否匹配)。不過,兩個(gè)人的性格是否合適,是需要靠生活習(xí)慣、為人處世、家庭環(huán)境等具體的條件來(lái)進(jìn)行判斷的(安全上下文是否匹配是需要通過策略中的規(guī)則來(lái)確定的)。
SELinux 的工作模式
SELinux 提供了 3 種工作模式:Disabled、Permissive 和 Enforcing,而每種模式都為 Linux 系統(tǒng)安全提供了不同的好處。
1、Disable工作模式(關(guān)閉模式)
在 Disable 模式中,SELinux 被關(guān)閉,默認(rèn)的 DAC 訪問控制方式被使用。對(duì)于那些不需要增強(qiáng)安全性的環(huán)境來(lái)說,該模式是非常有用的。
例如,若從你的角度看正在運(yùn)行的應(yīng)用程序工作正常,但是卻產(chǎn)生了大量的 SELinux AVC 拒絕消息,最終可能會(huì)填滿日志文件,從而導(dǎo)致系統(tǒng)無(wú)法使用。在這種情況下,最直接的解決方法就是禁用 SELinux,當(dāng)然,你也可以在應(yīng)用程序所訪問的文件上設(shè)置正確的安全上下文。
需要注意的是,在禁用 SELinux 之前,需要考慮一下是否可能會(huì)在系統(tǒng)上再次使用 SELinux,如果決定以后將其設(shè)置為 Enforcing 或 Permissive,那么當(dāng)下次重啟系統(tǒng)時(shí),系統(tǒng)將會(huì)通過一個(gè)自動(dòng) SELinux 文件重新進(jìn)程標(biāo)記。
關(guān)閉 SELinux 的方式也很簡(jiǎn)單,只需編輯配置文件 /etc/selinux/config,并將文本中 SELINUX= 更改為 SELINUX=disabled 即可,重啟系統(tǒng)后,SELinux 就被禁用了。
2、Permissive工作模式(寬容模式)
在 Permissive 模式中,SELinux 被啟用,但安全策略規(guī)則并沒有被強(qiáng)制執(zhí)行。當(dāng)安全策略規(guī)則應(yīng)該拒絕訪問時(shí),訪問仍然被允許。然而,此時(shí)會(huì)向日志文件發(fā)送一條消息,表示該訪問應(yīng)該被拒絕。
SELinux Permissive 模式主要用于以下幾種情況:
審核當(dāng)前的 SELinux 策略規(guī)則;
測(cè)試新應(yīng)用程序,看看將 SELinux 策略規(guī)則應(yīng)用到這些程序時(shí)會(huì)有什么效果;
解決某一特定服務(wù)或應(yīng)用程序在 SELinux 下不再正常工作的故障。
某些情況下,可使用 audit2allow 命令來(lái)讀取 SELinux 審核日志并生成新的 SELinux 規(guī)則,從而有選擇性地允許被拒絕的行為,而這也是一種在不禁用 SELinux 的情況下,讓應(yīng)用程序在 Linux 系統(tǒng)上工作的快速方法。
3、Enforcing工作模式(強(qiáng)制模式)
從此模式的名稱就可以看出,在 Enforcing 模式中, SELinux 被啟動(dòng),并強(qiáng)制執(zhí)行所有的安全策略規(guī)則。