本文主要講述FreeBSD 5.0作業系統中新增的重要安全機制,即強制存取控制機制(MAC)的使用與原始碼分析,主要包括強制存取控制架構及多級安全(MLS)策略兩部分內容。這一部分講述要將MAC架構與MLS策略用起來,應該做的一些工作,以及如何有效使用它們的問題。
強制存取控制(英文縮寫MAC)是實現作業系統安全的一個重要的方法,現在幾乎所有的安全作業系統都採用強制存取控制作為其核心安全機制之一。強制存取控制是對作業系統的各種客體(如檔案、socket、系統FIFO、SCD、IPC等)進行細粒度的存取控制,即當使用者或使用者程式訪問系統的某個客體時,強制存取控制機制對這種訪問的安全性進行檢查。與自主存取控制不同,強制存取控制對使用者及使用者程式的行為進行限制,從而達到更高的安全層級。
強制存取控制是一種機制,它對使用者與使用者程式對客體的訪問進行檢查,但什麼樣的訪問是安全的呢?這就需要引入安全性原則的概念。安全性原則可以認為是一組檢查條件,它為每次訪問的主體(使用者或使用者程式)和被訪問的客體(如檔案等)定義一個安全標記,再根據主體和客體的安全標記來決定這次訪問是否安全。目前已經開發出多種安全性原則,其中MLS用得最多。MLS是多級安全的意思,它最早用于軍事領域。它的基本思想是定義一些安全級,如從低到高分普通、機密、絕密等安全級,要求高安全層級的資訊不能泄露給低安全層級的使用者,這樣就要求低安全級的主體不能讀高安全級的客體,同時高安全級的主體不能寫低安全級的客體。詳情請參見有關資料。
與Linux一樣,FreeBSD系統是開放原始碼的作業系統,而且FreeBSD的結構清晰,安全性好,所以使用也很廣泛。從5.0RC2版開始,FreeBSD核心開始引入強制存取控制機制。它在核心中實現了一個靈活通用MAC架構,這個架構對FreeBSD核心中幾乎所有的核心對象進行了存取控制,並且這個架構設計合理、介面簡潔,使得我們可以很方便地開發各種安全性原則模組並將之掛接到系統,從而按我們自己的策略對系統進行安全控制。另外,系統還提供了包括MLS原則模組在內的多個原則模組供我們選用。
本文從使用與原始碼的分析這兩方面詳細講述FreeBSD系統中的強制存取控制機制,內容主要包括MAC架構和MLS策略,相信會對對此部分內容感興趣的朋友有所啟發。
1: FreeBSD 5.0中強制存取控制機制的使用
FreeBSD 5.0 RC2版本發布時,核心原始碼中已經包含了MAC架構和一些MAC原則模組(如MLS原則模組、用於開發及實驗的MAC_NONE原則模組、完整性模組MAC_BIBA等),但是這個版本的核心並沒有正式對MAC提供支援,所以預設情況下,在編譯核心的時候沒有把實現MAC架構的代碼編譯進去。另外,我們將以MLS策略為例,說明怎樣利用MAC架構載入原則模組。為了讓MLS策略真正實用,還需要配置系統的擴充檔案屬性等,我們將對之進行一定的介紹。最後我們將介紹如通過控制台命令以及在程式中如何使用系統調用介面對檔案或進程的MAC標記進行操作。