操作系統安全機制


操作系統的安全性表現

物理上分離:要求進程使用不同的物理實體

時間上分離:具有不同安全要求進程在不同時間運行

邏輯上分離:要求進程不能訪問其允許範圍外的實體

密碼上分離:要求進程隱蔽數據及計算

操作系統安全的主要目標

依據系統安全策略對用戶的操作進行訪問控制,防止用戶對計算機資源的非法訪問(竊取、篡改和破壞);

標識系統中的用戶和進行身份鑑別;

監督系統運行時的安全性;

保證系統自身的安全性和完整性。

必要的安全機制

硬件安全機制

訪問控制機制:自主訪問控制、安全標記與強制訪問控制、客體重用

可追究機制:標識與鑑別、可信路徑、安全審計

連續保護機制:系統完整性、隱蔽通道分析、最小特權管理、可信恢復

第一節硬件安全

基本安全機制,包括:存儲保護、運行保護、I/O保護

一、存儲安全

1.虛地址空間

存儲進程的程序與數據的專用地址空間

由硬件實現虛-實地址轉換/映射

2.請求式頁面調度

操作系統建立一個作用於整個進程虛擬存儲器的頁面描述表,並在描述符中設置一個”ON DISK”標誌,以指示那些頁面不在物理存儲器中, 此時要求進行中斷頁處理(整個進程用一個頁表)

3.分段虛擬存儲

典型二段方案:分爲用戶空間與系統空間

可變長分段與請求頁面調度結合(每個進程的段數不同,每個段都有一個可變長的頁面描述表)

二、運行保護

基於保護環的等級域機制:

1.執行域:涉及內容爲:執行方式、狀態以及範圍。域是分層的。

2.保護環:分層圖的圖形像一組同心的環。環的編號越小,特權越高。

3.安全概念:保護每一環免遭其他環的影響,並允許每層環有效地控制該環及更低特權環上的應用程序。

三、IO保護

I/O硬件保護機制:

I/O是隻能由操作系統執行的一種特權操作。

I/O介質輸出訪問控制最簡單的方式是將設備看成客體,彷彿它們都處於安全邊界外。

由於所有的I/O不是向設備寫數據就是從設備接收數據,所以一個進行I/O操作的進程必須受到對設備的讀/寫兩種訪問控制。

因此,設備到介質間的路徑可以不受什麼約束,而處理器到設備間的路徑則需要施以一定的讀/寫訪問控制

第二節自主訪問控制機制

計算機系統安全機制的主要目的是訪問控制, 它包括三個任務:

(1)授權:確定哪些主體有權訪問哪些客體

(2)確定訪問權限(讀、寫、執行、刪除、追加等存取方式的組合)

(3)實施訪問權限

一、自主訪問控制概述

文件的擁有者可以按照自己的意願精確指定系統中的其他用戶對其文件的訪問權。

定義:自主訪問控制是基於客體所屬用戶/組身份,以及需知原則來約束對客體的訪問的一種手段。這種控制是自主的意義在於:具有特定訪問權限的一個主體能夠將該權限(直接或間接地)傳遞給另一個主體。

二、DAC分類

基於行的訪問控制矩陣信息:連接可訪問客體到指定用戶。

基於列的訪問控制矩陣信息:連接用戶列表到指定的客體。

1.     基於行的自主存取控制機制:

①     能力表(capability list)

對於每個用戶,系統有一個能力表。要採用硬件、軟件或加密技術對系統的能力表進行保護,防止非法修改。能力的兩個基本屬性是: 它們可以從一個訪問主體傳遞給另一個主體,且未經操作系統TCB的允許,擁有 某些能力 的 訪問主體 不能 修改 或者 僞造 任何能力。

不足 :即使一個簡單的“誰能存取該文件?”的問題,也要花費系統大量時間從每個用戶的能力表中尋找。

②前綴表(profiles)

對每個主體賦予的前綴表,包括 受保護客體名 和 主體對它的訪問權限。當主體要訪問某客體時,自主存取控制機制將檢查主體的前綴是否具有它所請求的訪問權。

不足: (1)訪問權的撤消 和 客體的刪除一般都是比較困難的,因爲系統必須能夠檢測每個主體的前綴;(2)對於一個可訪問許多客體的主體,它的前綴量將非常大,很難管理;(3)如果不採用全路徑,客體命名必須惟一,否則難以管理。

②   口令: password-based accesscontrol mechanisms

如果對每個客體,每個主體都擁有它自己獨有的口令(類似能力表)每個客體都相應地有一個讀/寫口令 ,主體在對客體進行訪問前,必須向操作系統提供該客體的口令。正確,纔可以訪問該客體。

2. 基於列的自主存取控制機制

在每個客體上都附加一個主體明細表,表示存取控制矩陣。表中的每一項都包括主體的身份和主體對該客體的訪問權限。

方法一,“擁有者/同組用戶/其他用戶” 模式

Owner(前三位) 此客體的擁有者對它的訪問權限;

Group(中間三位)    owner同組用戶對此客體的訪問權限;

Other(最後三位)     其他用戶對此客體的訪問權限;

方法二 ACL和“擁有者/同組用戶/其他用戶”相結合模式
方法:僅對“擁有者/同組/其他用戶”無法分組的用戶使用ACL

優點:保持與原系統的兼容性,且控制粒度細化到單個用戶

第三節強制訪問控制機制(MAC)

在DAC控制下,以某個用戶身份運行的程序可以任意地修改該用戶所擁有文件的訪問控制信息,而操作系統無法區分修改信息的是一個合法用戶還是一個木馬。儘管系統可以對擁有特權的特定程序修改訪問控制信息的能力進行限制,但同時會失去靈活性。實際上,在DAC控制下並沒有辦法防止木馬通過共享客體(shared objects)-比如文件、消息和共享內存等,把消息從一個進程傳給另一個進程。

木馬是一段計算機程序,表面上在執行合法功能,實際上卻完成了用戶不曾料到的非法功能。受騙者是程序的用戶,入侵者是這段程序的開發者。木馬必須具有以下功能才能成功地入侵:

(1)入侵者要寫一段程序進行非法操作,其行爲方式不會引起用戶的懷疑

(2)必須設計出某種策略誘使受騙者接受這段程序

(3)必須使受騙者運行該程序

(4)入侵者必須有某種手段回收由木馬發作爲他帶來的利益

一、MAC可以在一定程度上阻止木馬

主要體現在:

(1)爲每個主體(subjects)和客體(objects)賦予安全屬性(security attributes),這些屬性不像自主訪問控制屬性那樣可以隨意改變。(2)系統通過比較主體和客體的安全屬性來決定該主體能否以期望的方式訪問該客體。反之,如果系統判定擁有某一安全屬性的主體不能訪問某個客體,那麼任何人(包括客體的擁有者)也不能使它訪問該客體。從這種意義上講,是“強制”的。(3)以某個用戶身份運行的進程不能改變該用戶本身及該用戶所擁有客體的安全屬性,所以簡單地通過允許其他用戶來訪問一個文件不會泄露文件的內容。(4)可以阻止進程創建共享文件,避免利用這些共享文件將敏感信息傳遞給另一個進程。

二 多級安全的思想

1.起源:上世紀60年代末期,美國國防部研究保護計算機中機密信息的新方式;

2.多級安全的概念:(1)將文件按不同的密級(classification)進行分類,將用戶按許可級(clearance)分類;(2)要想合法地獲得信息,用戶所具有的許可級別必須大於或等於信息的密級;

3多級安全系統的主要目標是:實施強制機密性安全策略,確保信息不會被無意泄露。

4.軍事安全策略,也稱多級安全策略,主要防止用戶獲得他不應獲得的密級較高的信息,策略中主客體的許可級/密級等統稱爲安全級(security label),由兩方面構成:保密級別(sensitive level/hierarchical level)例如,分爲unclassified,confidential,secret,topsecret等級別。注意:保密級之間的關係屬於線性排列,即: “unclassified <confidential < secret < top secret ”範疇集(category/compartment):安全級涉及的領域

   例如,人事處、財務處等。

    注意:範疇是互相獨立和無序的,但兩個範疇集之間的關係是包含、被包含或無關。比如: {人事處}   {人事處,財務處}

三 安全級別的支配關係

兩個安全級A和B之間的支配關係具體包括以下幾種:

1.A支配B:即A的密級不小於B的密級,A的範疇集包含B的範疇集。

2.A支配於B或B支配A:即B的密級不小於A的密級,B的範疇集包含A的範疇集。

3.A等於B:即A的密級等於B的密級,A的範疇集等於B的範疇集。

4.A、B無關:即A的範疇集不包含B的範疇集,B的範疇集也不包含A的範疇集

三 BLP模型的安全屬性:

1, 簡單安全屬性:不可上讀2.*屬性:不可下寫

三 安全級標識

1.     主體的安全級:用戶安全級範圍的初始設置:由系統管理員在創建用戶時完成,並保存到一個用戶安全文檔(例如:修改useradd和usermod命令,增加ia_userinfo命令來查看)在用戶登錄時,可以指定本次登錄shell進程的安全級或缺省安全級,但都必須在用戶所指定的安全級範圍之內

2.     客體安全級:(1)“文件、有名管道”的安全級 = 創建進程的安全級,且必須等於其父目錄的安全級,保存在相應的磁盤inode結點和內存inode結點中。(2)“進程、消息隊列、信號量集合和共享存儲區”的安全級 = 創建進程的安全級,保存在內存相應的數據索引結構中。(3)“目錄”的安全級 = 創建進程的安全級,且必須大於或等於其父目錄的安全級,保存在相應的磁盤inode結點和內存inode結點中。(4)設置客體安全級的命令爲setlevel。

3.     設備的安全級:系統須在設備安全文件檔中說明系統中每個設備的安全屬性,如設備的最高安全級、最低安全級等。設備工作時還具有一個當前安全級,爲調用該設備的用戶進程、系統進程或系統服務進程的安全級,而且必須在設備允許的最高安全級和最低安全級範圍之內。

4.     設備分爲單級設備和多級設備。

單級設備在某個時刻只能處理單一安全級的數據。這類設備包括終端和用於某個相應狀態的磁帶機和軟盤驅動器。如果一個設備用作一個公用資源,那麼它必須是單級設備。

多級設備可以包含多個安全級數據。這個設備只能由具有適當特權的進程打開,這些進程包括內核和系統進程、具有適當特權的管理員進程。磁盤和存儲器設備就是多級設備。

通常一個用戶在登錄時訪問一個終端設備,這個用戶將以某個安全級在該終端上進入系統。如果這個安全級不在這個終端所定義的安全級範圍之內,這個登錄就會失敗。如果登錄成功,這個設備的安全級就被設置成用戶登錄時所使用的安全級。

要使用磁帶或軟盤設備,或者不是在登錄時訪問終端設備,用戶必須要求管理員分配(allocate)設備,管理員以某個安全級將此設備分配給這個用戶。

如果這個安全級不在設備的安全級範圍之內,這個分配將失敗。

如果成功,用戶就成爲這個設備的所有者(owner),設備文件的DAC設置爲600,設備安全級爲分配時給定的安全級,並且管理員通知用戶分配成功。如果用戶當前的安全級等於分配的設備安全級,用戶就可以任意地使用該設備了。

5.      

第四節客體重用機制

1.     客體重用思想:包含一個或多個客體的存儲介質(例如,頁面,磁盤扇區,磁帶)的主體的重新分配。通過標準系統機制,爲新的主體重新分配時不應含有任何可用的殘留數據。

2.     標準要求:

1)TCSEC(C2-A1)和GB17859(第二級~第五級)的要求:在計算機信息系統可信計算機基(TCB)的空閒存儲客體空間中,對客體初始指定、分配或再分配一個主體之前,要求撤消客體所含信息的所有授權。當主體獲得對一個已被釋放的客體的訪問權時,當前主體不能獲得原主體活動所產生的任何信息。

2)CC和GB/T18336—2001(EAL2~EAL 7):PP中有FDP類(保護用戶數據),其中子集“9、殘留信息保護(FDP-RIP)”對應的就是TCSEC和GBl7859中的客體重用機制,用於保護文件和存儲器中的殘留信息。

3.     實施方法:即殘留數據的清理工作:(1)硬盤、軟盤、可擦寫光盤的物理盤塊空間:文件的刪除和創建,可能會在重新分配物理盤塊空間時,泄露這些盤塊上以前曾經存放的信息。因爲刪除文件只是簡單將該文件對應的目錄索引項(包括I結點號、文件名)清零,而對應該文件的物理盤塊上的內容則依然存在(2)內存頁面:Linux內核採用頁面式存儲管理,虛擬地址空間劃分成固定大小的“頁面”,由MMU(內存管理單元)在運行時將虛擬地址“映射”成(或者說交換成)某個物理內存頁面中的地址。所以,根據具體介質的不同,一個物理頁面可以在內存中,也可以在磁盤(交換設備)上,分別稱爲“內存物理頁面”和“盤上物理頁面”。 在某項外部設備上,例如網卡上,用來存儲一個頁面內容的那部分介質,也稱爲一個物理頁面,這裏稱爲“外設物理頁面”。由於內存頁面的分配和釋放,可能會在重新分配內存頁面時,泄露其上以前曾經存放的信息。(3) 高速緩存:Linux內核在運行中常常會需要使用一些頁高速緩存區。頁高速緩存中可能包含的內容:a)含有普通文件數據的頁;b)含有目錄的頁;c)含有直接從塊設備文件讀出的數據的頁;d)含有用戶態進程數據的頁;e)屬於特殊文件系統文件的頁(注:內核的代碼和內核數據不必從磁盤讀也不必寫入磁盤)。因此,由於這些頁高速緩存空間的釋放和再分配,也可能會泄露其以前曾經被存放的信息。

第五節標識與鑑別機制

1.標識,要求系統對用戶的身份進行有效標記,且要求代表用戶身份的特定名稱,即用戶標識符uid必須滿足:(1)是唯一的,而且(2)是不能被僞造的

2.鑑別,將用戶標識符與用戶聯繫的過程。主要用以識別用戶的真實身份鑑別操作總是要求用戶提供能夠證明他身份的特殊信息,比如口令/password等。

3. 傳統Unix系統中文件客體包括正規文件、目錄文件、塊設備文件、字符設備文件、命名管道FIFO、Socket、符號鏈接等7種。每個文件客體對應唯一的屬主標識uid和屬主所在組的組標識gid,保存在文件的inode中。

系統中的主體(進程)也具有uid和gid,即主體所代表的用戶和所在組。

FreeBSD中,新創建文件的uid被設置爲創建進程的有效uid(euid),gid被設置爲文件所在目錄的gid。這樣一個目錄下的所有層次目錄和文件都具有和該目錄一樣的gid。 

FreeBSD,Linux和Mac OS中,超級用戶可以使用chown改變文件的屬主uid,但是文件的屬主不能改變其屬主uid,這樣做的原因是防止磁盤空間配額限制被惡意繞過。

4.     與鑑別有關的認證機制:

(1)在進行任何需要TCB仲裁的操作之前,TCB都應該要求用戶標識他們自己。

(2)TCB必須維護認證數據

(3)TCB必須保護認證數據,防止被非法使用

(4)TCB應能維護、保護和顯示所有帳戶的狀態信息

5. 口令被用作一種保護機制時,至少要滿足:

(1)用戶選擇一個其他用戶已使用的口令時,TCB應保持沉默。

(2)TCB應以單向加密方式存儲口令,訪問加密口令必須有特權

(3)在口令輸入或顯示設備上,TCB應自動隱藏口令明文。

(4)在普通操作過程中,TCB應禁止使用空口令。只有系統管理員可以在某些特殊作中可以在受控方式下使用

(5)TCB應提供一種保護機制允許用戶更換自己的口令,這種機制要求重新認證用戶身份。TCB還必須保證只有系統管理員才能設置或初始化用戶口令。

(6)對每一個用戶或每一組用戶,TCB必須加強口令失效管理。口令的使用期超過系統的指定值後,系統應當要求用戶修改口令。系統管理員的口令有效期通常比普通用戶短。過期口令將失效。只有系統管理員才能進行口令失效控制。

(7)在要求用戶更改口令時,TCB應事先通知用戶。在用戶口令過期之前通知用戶系統指定的口令有效時間,或者在口令過期後通知用戶,並在更改口令前允許用戶有指定次數的額外登錄機會。

(8)要求在系統指定的時間段內同一用戶的口令不可重用

(9)TCB應提供一種算法確保用戶輸入口令的複雜性。口令至少應滿足以下要求:①口令至少應有系統指定的最小長度。②TCB應能修改口令複雜性檢查算法。③TCB應允許系統指定一些不可用的口令。

 

第六節可信路徑機制

1.     定義:用戶登錄、定義用戶的安全屬性、改變文件的安全級等操作,用戶必須確定是與真實的安全內核通信,而不是與一個特洛伊木馬打交道。一種用於保障用戶和真實的內核通信的機制就是可信路徑(或可信通路)

2.     TCSEC B2級的可信路徑要求爲:“可信路徑是終端人員能借以直接同可信計算基TCB 通信的一種機制,該機制只能由有關終端人員或可信計算基TCB 啓動,不能被不可信軟件模仿。”

3.     TCSEC B3 級的可信路徑要求爲:“連接用戶(比如註冊、更改主體安全級)時,計算機信息系統TCB 提供它與用戶之間的可信通信路徑。可信路徑上的通信只能由該用戶或計算機信息TCB 激活,且在邏輯上與其他路徑上的通信相隔離,且能正確地加以區分。”

4.     安全路徑實現方法一:給每個用戶兩臺終端,一臺做通常的工作,一臺用作與內核的硬連接。缺點:這種辦法雖然十分簡單,但太昂貴了。

5.     方法二:對用戶建立可信路徑的一種現實方法是使用通用終端,通過發信號給核心。這個信號是不可信軟件不能攔截、覆蓋或僞造的。一般稱這個信號爲“安全注意鍵”, Secure Attention Key。缺點:目前大多數終端十分智能,內核要使該機制不被特洛伊木馬欺騙十分困難。

6.     安全注意鍵(SAK)機制的實現方法:在一秒鐘內連續按下一個或一組鍵(在Linux X86 平臺上,SAK 是ALT-SysRq-k),TCB 在按鍵傳送到一個進程之前進行監視,以阻止SAK 機制被其他入侵進程截取。一旦可信路徑建立,用戶可進行登陸。

Linux中,SAK可以用下面命令來激活:echo “1” > /proc/sys/kernel/sysrq 。使用可信路徑將終止其他所有進程對該終端的訪問,因此防止其他進程欺騙該可信登陸進程。

7.     

8.     安全注意鍵在Windows NT系統中被稱爲SAS(Secure Attention Sequence),默認爲“Ctrl-Alt-Del”組合。整個可信路徑機制作爲WinLogon的子功能來實現。

Local Security Authority(LSA):系統的主要安全功能管理及維護進程。

Security Accounts Manager(SAM):負責管理系統用戶帳號數據庫的安全組件

Security Reference Monitor(SRM):安全引用監控器

Microsoft Verification Package(MSV):負責用戶鑑別功能的具體軟件包

第七節安全審計

1.概念:審計活動就是對系統中安全相關行爲進行記錄(recording), 檢查(examining) 和 審覈(reviewing)。目的:檢測和阻止非法用戶對計算機系統的入侵,並顯示合法用戶的誤操作。意義:審計員可從審計追蹤中獲得詳細、可靠的信息,爲系統事故原因的查詢、定位,事故發生前的預測、報警以及事故發生後的實時處理提供證據。

2.審計事件,是系統審計用戶操作的最基本單位。比如:創建文件的事件creat,涉及如下系統調用:

open(“file1”,O_CREATE,mode)

creat(“file1”,mode)

所以, creat事件就在用戶調用上述系統調用時由核心審計下來。

3.審計事件可分爲主體審計事件和客體審計事件兩大類:

主體審計事件:進程代表特定的用戶請求系統服務、利用系統資源完成特定的任務,是系統中的活動主體。審計系統必須記錄系統中所有執行安全相關活動的主體,這類審計事件即主體審計事件。

客體審計事件:操作系統中的客體是指文件、消息、信號量、共享區等,客體審計事件關注的是對安全攸關的系統客體(或文件) 進行的存取活動。

4.劃分標準:從主體(用戶和代表用戶的進程)角度上看,系統要記錄用戶進行的一些活動,每個用戶有自己的待審計事件集,稱爲用戶事件標準。有些事件與系統安全性關係非常大,任何時候都不應免於審計,爲固定事件集。

從客體對象角度,先定義關於某對象的哪些操作事件要求被審計,即包含客體對象的審計事件標準,再確定待審計客體的MAC安全級範圍。


5主體審計事件:主體審計事件比如:exec,fork, mount, reboot, setgid, setuid, link, unlink, ……

主體審計記錄中主要包括如下信息:(1)事件的類型、事件的成功與失敗(2)主體審計事件所對應的進程標識pid (3)該進程對應的程序映像名稱image(4)進程的真實用戶/用戶組標識ruid/rgid, 進程的有效用戶/用戶組標識euid/egid (5)進程當前的安全級sclass

 

6.客體審計事件:從操作系統安全的角度考慮,有一類主體安全活動與客體緊密相關。安全標準要求必須從客體的角度出發,記錄這類事件。因此,這類操作即要產生主體審計記錄,也要產生對應的客體審計記錄。比如:chmod, chown, create, fcntl, ioctl, ……

客體審計記錄必須記錄:(1)客體的全路徑(2)客體的屬主/用戶組uid/gid(3)客體的安全級

6.     審計保護:

審計系統必須保證:

審計系統進行了正確的設置,使系統能夠記錄下所有必要的行爲及行爲屬性

在審計追蹤紀錄產生之後,要避免這些紀錄被惡意的破壞、修改和刪除。

有效保證措施:

審計職責隔離(審計員從系統管理員分離出來)

審計數據的安全保護(特定的策略)

7.     審計點:用戶程序與操作系統的惟一接口是系統調用,也就是說當用戶請求系統服務時,必須經過系統調用。因此,在系統調用的入口處(稱作審計點)增加審計控制,就可以成功地審計系統調用,也就成功地審計了系統中所有使用內核服務的事件。當發生可審計事件時,要在審計點調用審計函數並向審計進程發消息,由審計進程完成審計信息的緩衝、存貯、歸檔工作

8.     

        </div>
            </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章