這里來看看操作系統(tǒng)之前先看看內(nèi)核
操作系統(tǒng)和內(nèi)核是包含關(guān)系,內(nèi)核是操作系統(tǒng)最基本的部分,它提供了操作系統(tǒng)的最基本功能,是操作系統(tǒng)工作的基礎(chǔ)。
操作系統(tǒng)內(nèi)核負(fù)責(zé)操作系統(tǒng)的任務(wù)調(diào)度、用戶管理、內(nèi)存管理、多線程支持、多CPU支持等,并包含 必要的網(wǎng)絡(luò)協(xié)議、驅(qū)動(dòng)等 。
內(nèi)核是所有軟件的基礎(chǔ),相應(yīng)的 內(nèi)核安全是操作系統(tǒng)安全的基礎(chǔ) 。
這里其實(shí)可以理解一下什么內(nèi)核和操作系統(tǒng):簡言之,操作系統(tǒng)就是內(nèi)核掌握了技能之后的樣子。
當(dāng)前主流操作系統(tǒng)的內(nèi)核都屬于UNIX(或類UNIX)系統(tǒng)。UNIX是一個(gè)強(qiáng)大的多用戶、多任務(wù)操作系統(tǒng),支持多種處理器架構(gòu),屬于分時(shí)操作系統(tǒng)。
UNIX最早于1969年在AT&T的貝爾實(shí)驗(yàn)室開發(fā),隨著時(shí)間演進(jìn)產(chǎn)生若干分支,并在移動(dòng)智能終端操作系統(tǒng)中獲得廣泛使用,如 iOS系統(tǒng)基于UNIX BSD規(guī)范 ,而 Android則基于Linux,同屬UNIX大類 。
簡單地說,UNIX是現(xiàn)代操作系統(tǒng)的典型代表,也是各種主要OS的技術(shù)源泉;而Linux是類UNIX的一個(gè)開源版本,具有產(chǎn)品級(jí)的系統(tǒng)穩(wěn)定性。
典型終端操作系統(tǒng)內(nèi)核使用情況如表所示。
可以看到,除了iOS,其他多數(shù)移動(dòng)智能終端操作系統(tǒng)均采用了Linux內(nèi)核。但iOS系統(tǒng)是封閉的,整體來說,對(duì)Linux內(nèi)核的安全研究有相當(dāng)?shù)膶?shí)際價(jià)值。
在Linux基礎(chǔ)之上,2000年12月22日美國國家安全局(NSA,National Security Agency)發(fā)布了Linux安全增強(qiáng)版本SELinux, 其全稱為Security-Enhanced Linux ,之后被合并到主線Linux內(nèi)核版本中。隨著近幾年安全需求的不斷增強(qiáng),SELinux開始在產(chǎn)品和系統(tǒng)中獲得使用。
于是請(qǐng)歡迎咱們的主角SELinux登場(chǎng)!!!
1、SELinux整體架構(gòu)
1.1 SELinux基本概念
SELinux由NSA發(fā)布,之后,Red Hat、Network Associates、Secure Computing Corporation、Tresys Technology以及Trusted Computer Solutions等公司及研究團(tuán)隊(duì)都為SELinux的發(fā)展做出了重要的貢獻(xiàn)。
SELinux本質(zhì)是一個(gè)Linux內(nèi)核安全模塊 ,可在Linux系統(tǒng)中配置其狀態(tài)。SELinux的狀態(tài)分為3種,即disabled、permissive和enforcing。
- (1)disabled狀態(tài):指在Linux系統(tǒng)中不啟用SELinux模塊的功能。
- (2)permissive狀態(tài):指在Linux系統(tǒng)中,SELinux模塊處于Debug模式, 若操作違反策略系統(tǒng)將對(duì)違反內(nèi)容進(jìn)行記錄 ,但不影響后續(xù)操作。
- (3)enforcing狀態(tài):指在Linux系統(tǒng)中,SELinux模塊有效, 若操作違反策略,SELinux模塊將無法繼續(xù)工作 。
SELinux涉及的重要概念如下。
(1)主體
主體是訪問操作的發(fā)起者 ,是系統(tǒng)中信息流的啟動(dòng)者。主體通常指用戶或代表用戶意圖的進(jìn)程。
通常, 主體是訪問的發(fā)起者,但有時(shí)也會(huì)成為訪問或受控的對(duì)象 。
一個(gè)主體可以向另一個(gè)主體授權(quán),一個(gè)進(jìn)程可能會(huì)控制幾個(gè)子進(jìn)程,這時(shí)受控的主體或子進(jìn)程就是一種客體。
(2)客體
客體相對(duì)主體而存在,通常客體 是指信息的載體或從其他主體或客體接收信息的實(shí)體 ,即訪問對(duì)象。
(3)訪問控制分類
管理方式的不同形成不同的訪問控制方式。
通常,訪問控制方式分為兩類:自主訪問控制(DAC, Discretionary Access Control)和強(qiáng)制訪問控制(MAC, Mandatory Access Control)。
(4)域
域決定了系統(tǒng)中進(jìn)程的訪問,所有進(jìn)程都在域中運(yùn)行 。本質(zhì)上 ,域是一個(gè)進(jìn)程允許的操作列表,決定了一個(gè)進(jìn)程可以對(duì)哪些類型進(jìn)行操作 。SELinux中域的概念相當(dāng)于標(biāo)準(zhǔn)Linux中uid的概念。
(5)類型
類型與域的概念基本相似,但是, 域是相對(duì)進(jìn)程主體的概念,類型是相對(duì)目錄、文件等客體的概念 。類型分配給一個(gè)客體,并決定哪個(gè)主體可以訪問該客體。
(6)角色
角色決定了可以使用哪些域 。具體哪些角色可以使用哪些域,需要在策略配置文件中預(yù)先定義。如果在策略配置文件中定義了某個(gè)角色不可以使用某個(gè)域,在實(shí)際使用中將會(huì)被拒絕。
(7)身份
身份屬于安全上下文的一部分,身份決定了本質(zhì)上可以執(zhí)行哪個(gè)域。
(8)安全上下文
安全上下文是對(duì)操作涉及的所有部分的屬性描述,包括身份、角色、域、類型。
(9)策略
策略是規(guī)則的集合,是可以設(shè)置的規(guī)則。
策略決定一個(gè)角色的用戶可以訪問什么,哪個(gè)角色可以進(jìn)入哪個(gè)域,哪個(gè)域可以訪問哪個(gè)類型等。
1.2、SELinux內(nèi)核架構(gòu)
最早期的SELinux是Linux系統(tǒng)一個(gè)增強(qiáng)安全的補(bǔ)丁集,其后為解決每個(gè)系統(tǒng)對(duì)安全的細(xì)節(jié)控制不盡相同的問題,Linux安全框架(LSM, Linux Security Modules)被提出,使SELinux可作為可加載的安全模塊運(yùn)行。
LSM是一個(gè)底層的安全策略框架,Linux系統(tǒng)利用LSM管理所有的系統(tǒng)調(diào)用。SELinux通過LSM框架整合到Linux內(nèi)核中。
當(dāng)用戶進(jìn)程執(zhí)行系統(tǒng)調(diào)用時(shí),進(jìn)程首先遍歷Linux內(nèi)核現(xiàn)有的邏輯尋找和分配資源,進(jìn)行一些常規(guī)的錯(cuò)誤檢查,然后進(jìn)行DAC自動(dòng)訪問控制。
自主訪問控制(DAC, Discretionary Access Control)
進(jìn)程僅在內(nèi)核訪問內(nèi)部對(duì)象之前,由LSM的鉤子詢問LSM模塊可否訪問,LSM模塊處理該策略問題并回答可以訪問或拒絕訪問。
LSM框架主要包括安全服務(wù)器、客體管理器和訪問向量緩存。LSM模塊架構(gòu)如圖所示。
安全服務(wù)器負(fù)責(zé)策略決定,安全服務(wù)器使用的策略通過策略管理接口載入。
客體管理器負(fù)責(zé)按照安全服務(wù)器的策略決定強(qiáng)制執(zhí)行它管理的資源集。
對(duì)于內(nèi)核, 客體管理器可以理解為一個(gè)內(nèi)核子系統(tǒng) ,負(fù)責(zé)創(chuàng)建并管理內(nèi)核級(jí)的客體,包括文件系統(tǒng)、進(jìn)程管理和System V進(jìn)程間通信(IPC, Inter-Process Communication)。
訪問向量緩存(AVC, Access Vector Cache)提升了訪問確認(rèn)的速度,并為LSM鉤子和內(nèi)核客體管理器提供了SELinux接口。
1.3、SELinux策略語言
SELinux架構(gòu)中,對(duì)于內(nèi)核資源,策略通過策略管理接口載入SELinux LSM模塊安全服務(wù)器中,從而決定訪問控制。
SELinux的優(yōu)勢(shì)是其策略規(guī)則不是靜態(tài)的,用戶必須按照安全目標(biāo)的要求自行編寫策略。使用和應(yīng)用SELinux本質(zhì)上就是編寫和執(zhí)行策略的過程。
策略在策略源文件中描述。策略源文件名稱為policy.conf,其文件結(jié)構(gòu)包括以下幾點(diǎn)。
- (1)類別許可, 指安全服務(wù)器的客體類別 ,對(duì)于內(nèi)核而言, 類別直接關(guān)系內(nèi)核源文件 , 許可指針對(duì)每個(gè)客體類別的許可。 通常,SELinux策略編寫者不會(huì)修改客體的類別和許可定義。
- (2)類型強(qiáng)制聲明,包括所有的類型聲明和所有的TE(Type Enforcement,類型強(qiáng)制)規(guī)則,是SELinux策略中最重要的部分。
- (3)約束,是TE規(guī)則許可范圍之外的規(guī)則,為TE規(guī)則提供必要的限制。多級(jí)安全(MLS)是一種約束規(guī)則。
- (4)資源標(biāo)記說明,指對(duì)所有客體都必須添加的一個(gè)“安全上下文”標(biāo)記,是SELinux實(shí)施訪問控制的前提。SELinux根據(jù)資源標(biāo)記說明處理文件系統(tǒng)標(biāo)記以及標(biāo)記運(yùn)行時(shí)創(chuàng)建的臨時(shí)客體規(guī)則。
SELinux策略大而復(fù)雜,由一個(gè)個(gè)小的策略模塊構(gòu)成。
策略模塊的生成一般采用源模塊法。源模塊法支持單策略的開發(fā),并通過一組shell腳本、m4宏和Makefile一起合并成為文本文件。
多個(gè)策略模塊集合組成策略源文件,即policy.conf,策略源文件是文本文件,通過策略編譯器checkpolicy編譯為二進(jìn)制文件policy.xx(xx為版本號(hào)),并通過策略裝載函數(shù)security_load_policy載入內(nèi)核且實(shí)施訪問控制。
使用源模塊構(gòu)造和載入SELinux策略的全過程如圖所示。
- 首先,通過源模塊法生成一個(gè)個(gè)策略模塊,策略模塊聚合形成一個(gè)大的策略源文件policy.conf;
- 其次,策略源文件policy.conf通過策略編譯器checkpolicy,生成可被內(nèi)核讀取的二進(jìn)制文件policy.xx;
- 最后,policy.xx通過策略裝載函數(shù)security_load_policy載入內(nèi)核空間并實(shí)施訪問控制。
目前,在SELinux策略上常見的是單策略組合。
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
805瀏覽量
42239 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
605瀏覽量
28447 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
493瀏覽量
28147
發(fā)布評(píng)論請(qǐng)先 登錄
華為榮獲ITP.NET年度終端安全創(chuàng)新獎(jiǎng)

如何維護(hù)i.MX6ULL的安全內(nèi)核?
頂堅(jiān)智能防爆手持終端:確保高危易燃易爆作業(yè)安全無憂

直流充電安全測(cè)試負(fù)載方案解析
鐵路安全巡檢進(jìn)入智能時(shí)代:頂堅(jiān)防爆巡檢手持對(duì)講終端的應(yīng)用與成效

車載終端安全檢測(cè)有哪些內(nèi)容和方法
頂堅(jiān)單北斗智能防爆手持終端:為工業(yè)安全賦能

硬核智造驅(qū)動(dòng)創(chuàng)新,大核桃智能巡檢整體解決方案助力高危行業(yè)安全生產(chǎn)

電梯應(yīng)急救援終端:守護(hù)安全的智慧防線
電力巡檢智能化:頂堅(jiān)單北斗定位手持終端確保電網(wǎng)安全保障

電梯報(bào)警顯示終端:智能電梯時(shí)代如何重塑安全管理?
中國首個(gè)終端安全生態(tài)聯(lián)盟成立
國內(nèi)首個(gè)專注于終端安全的生態(tài)聯(lián)盟正式成立
如何保障后臺(tái)與終端產(chǎn)品之間數(shù)據(jù)安全交互

評(píng)論