cataloghtml
0. 引言 1. 訪問控制策略 2. 訪問控制方法、實現技術 3. SELINUX
0. 引言mysql
訪問控制是網絡安全防範和客戶端安全防護的主要策略,它的主要任務是保證資源不被非法使用、保證網絡/客戶端安全最重要的核心策略之一。訪問控制包括linux
1. 入網訪問控制 2. 網絡權限控制 3. 目錄級控制 4. 屬性控制等多種手段
訪問控制相關領域知識是CISSP的重要章節,本文將重點討論訪問控制模型、及其相關的方法和技術程序員
0x0: 訪問控制概念組成sql
訪問控制涉及到三個基本概念數據庫
1. 主體 是一個主動的實體,它包括 1) 用戶 2) 用戶組 3) 終端 4) 主機 5) 應用 主體能夠訪問客體 2. 客體 是一個被動的實體,對客體的訪問要受控。它能夠是 1) 字節 2) 字段 3) 記錄、 4) 程序 5) 文件 6) 處理器 7) 存貯器 8) 網絡接點等 3. 訪問受權 指主體訪問客體的容許,受權訪問對每一對主體和客體來講是給定的。例如受權訪問有 1) 讀寫: 讀寫客體是直接進行的 2) 執行: 執行是搜索文件、執行文件 對用戶的訪問受權是由系統的安全策略決定的
在—個訪問控制系統中,區別主體與客體很重要。首先由主體發起訪問客體的操做,該操做根據系統的受權或被容許或被拒絕。另外,主體與客體的關係是相對的,當一個主體受到另外一主體的訪問,成爲訪問目標時,該主體便成爲了客體編程
0x1: 入網訪問控制windows
入網訪問控制爲網絡訪問提供了第一層訪問控制。它控制哪些用戶可以登陸到服務器並獲取網絡資源,控制准許用戶入網的時間和准許他們在哪臺工做站入網。用戶的入網訪問控制可分爲三個步驟數組
1. 用戶名的識別與驗證 //用戶還可採用一次性用戶口令,也可用便攜式驗證器(如智能卡)來驗證用戶的身份 2. 用戶口令的識別與驗證 //對網絡用戶的用戶名和口令進行驗證是防止非法訪問的第一道防線。爲保證口令的安全性,用戶口令不能顯示在顯示屏上,口令長度應很多於6個字符,口令字符最好是數字、字母和其餘字符的混合,用戶口令必須通過加密 3. 用戶帳號的缺省限制檢查 //網絡管理員能夠控制和限制普通用戶的帳號使用、訪問網絡的時間和方式,三道關卡中只要任何一關未過,該用戶便不能進入該網絡
0x2: 權限控制安全
網絡的權限控制是針對網絡非法操做所提出的一種安全保護措施。用戶和用戶組被賦予必定的權限。網絡控制用戶和用戶組能夠訪問哪些目錄、子目錄、文件和其餘資源
0x3: 目錄級安全控制
網絡應容許控制用戶對目錄、文件、設備的訪問。用戶在目錄一級指定的權限對全部文件和子目錄有效,用戶還可進一步指定對目錄下的子目錄和文件的權限。對目錄和文件的訪問權限通常有八種
1. 系統管理員權限(最高root權限) 2. 讀權限 3. 寫權限 4. 建立權限 5. 刪除權限 6. 修改權限 7. 文件查找權限 8. 訪問控制權限
用戶對文件或目標的有效權限取決於如下兩個因素
1. 用戶的受託者指派 2. 用戶所在組的受託者指派、繼承權限屏蔽取消的用戶權限
一個網絡管理員應當爲用戶指定適當的訪問權限,這些訪問權限控制着用戶對服務器的訪問。八種訪問權限的有效組合可讓用戶有效地完成工做,同時又能有效地控制用戶對服務器資源的訪問,從而增強了網絡和服務器的安全性
0x4: 屬性安全控制
網絡系統管理員應給文件、目錄等指定訪問屬性。屬性安全在權限安全的基礎上提供更進一步的安全性。網絡上的資源都應預先標出一組安全屬性。用戶對網絡資源的訪問權限對應一張訪問控制表,描述用戶對網絡資源的訪問能力。屬性設置能夠覆蓋已經指定的任何受託者指派和有效權限。屬性每每能控制如下幾個方面的權限
1. 向某個文件寫數據 2. 拷貝一個文件 3. 刪除目錄或文件 4. 查看目錄和文件 5. 執行文件 6. 隱含文件 7. 共享 8. 系統屬性等
0x5: 服務器安全控制
網絡容許在服務器控制檯上執行一系列操做。用戶使用控制檯能夠裝載和卸載模塊,能夠安裝和刪除軟件等操做。網絡服務器的安全控制包括
1. 設置口令鎖定服務器控制檯,以防止非法用戶修改、刪除重要信息或破壞數據 2. 設定服務器登陸時間限制、非法訪問者檢測和關閉的時間間隔
Relevant Link:
http://www.baike.com/wiki/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6 http://staff.ustc.edu.cn/~sycheng/cs/lectures/chap08_Bell-LaPadula_Model.pdf
1. 訪問控制策略
訪問控制模型(Access Control Model)描述了主體訪問客體的一種框架,它經過訪問控制技術和安全機制來實現模型的規則和目標,主要的訪問控制模型有如下幾種
1. 自主訪問控制(Discretionary Access Control DAC) 2. 強制訪問控制(Mandatory Access Control MAC) 3. 基於角色的訪問控制(Ro1e-Based Access Control RBAC) 4. Bell-Lapadula安全模型 5. Biba安全模型 //每一種模型都採用不一樣的方法來控制主體如何訪問客體,都有其優缺點
這些模型內置在不一樣操做系統核心或內核,以及爲操做系統提供支持的應用程序中,對於每個訪問嘗試,在主體可以與客體進行通訊以前,安全內核會對訪問控制模型的規則進行審覈,以決定是否容許該訪問請求
0x1. 自主訪問控制(Discretionary Access Control DAC)
是否容許訪問某個資源取決於資源自己
若是用戶建立了一個文件,則他是這個文件的擁有者,文件頭中包含了用戶的標識符,這種全部權也能夠賦予一羣特定的個體。使用自主型訪問控制(discretionary access control dac)的系統,可讓資源的擁有者指定哪些主體能夠訪問該資源,是從資源自身的角度出發的,故稱爲"自主型",對訪問的控制是由資源擁有者自主決定的
在DAC模型中,訪問根據授予用戶的權限來進行限制,這意味着客體(資源)的擁有者有權指定對這些客體的訪問類型,若是一個系統採用了DAC模型,那麼系統管理員可讓資源的擁有者控制哪些人能夠訪問它們的文件
DAC模型中最多見的實現方式是訪問控制列表(ACL),這個列表由客體的全部者只i的那個,由操做系統強制實施
咱們使用的大多數操做系統都是基於自主型訪問控制模型的,都是用ACL實現DAC模型的實例
DAC可適用於目錄樹結構及其包含的文件,計算機領域採用的訪問權限包括
1. 不能訪問 2. 讀(r) 3. 寫(w) 4. 執行(x) 5. 刪除(d) 6. 更改(c) 7. 徹底控制 //在Linux、windows上的具體實現中會有微小差異
DAC系統根據主體的身份來許可或拒絕訪問,身份能夠爲用戶身份或組成員
0x2. 強制訪問控制(Mandatory Access Control MAC)
在強制型訪問(mandatory access control mac)模型中,用戶和數據的全部者沒有決定誰能訪問這些文件的權利,這應該是由操做系統最後作出的決定,而且可能會覆蓋用戶的設置,這種模型更爲結構化並更加嚴格,通常基於"安全標籤系統"來實現,用戶被賦予一個安全級別(祕密、機密、絕密等),而且數據被分紅了多個類別,這種級別和分類存儲在資源的安全標籤中
分類標籤被綁定到某個主體或客體上,當系統接到一個客體訪問請求時,操做系統根據主體的安全級別和客體的安全類別來做出決策,主體如何訪問數據的規則由管理層制定、配置、管理,由操做系統來進行實施,由安全技術支持
安全標籤和各個客體附在一塊兒,原則上每個文件、目錄、設備都有其本身的安全標籤以及分類信息,一個用戶可能具備祕密(secret)的訪問級別,他要訪問的數據具備絕密(top secret)的安全標籤,這種狀況下用戶會被拒絕訪問,由於它的安全級別不等於或低於客體的安全類別
任什麼時候候,每一個主體和客體都必須有一個帶有屬性的相關聯標籤,由於這是操做系統訪問決定標準的一部分,每一個主體和客體並不須要惟一性的標籤,但它們在邏輯上必須相互關聯,例如服務器上的全部主體和客體能夠共享相同的祕密訪問許可和分級
這種模型主要用在信息分類和機密性要求很是高的環境中,例如軍隊,只有一些專門開發的UNIX系統支持MAC模型,最多見的MAC系統是SELINUX
1. 敏感度標籤
採用MAC模型時,每個主體和客體必須有一個敏感性標籤,也稱爲安全標籤,他包含
1. 一個級別: 級別表示了敏感級別,級別具備一個層次結構,一個級別可能比另外一個級別更受信任 1) 在一個軍事環境中,信息按安全級別能夠分爲絕密(top secret)、祕密(secret)、機密(confidential)、未分類(unclassified) 2) 在一個商業機構中,信息按安全級別能夠分爲機密(confidential)、私有(proprietary)、公司(corporate)、敏感(sensitive) 對信息級別的定義由組織本身負責,而且只在公司內部有意義 2. 不一樣的類別: 類別則用於強調須知規則,類別沒有層次,由於它們表明系統中不一樣域內的信息 標籤的類別部分用來實施須知規則,一個具備絕密級別的用戶並不意味着他能夠訪問全部絕密的信息
在MAC模型中,系統經過比較主體和客體的安全標籤來作出訪問決策(相似查表的過程),可是在DAC模型中,系統須要比較主體的安全令牌(訪問權限)和資源的ACL來決定
0x3. 基於角色的訪問控制(Ro1e-Based Access Control RBAC)
基於角色的訪問控制(role-based access control rbac)也稱做非自主型訪問控制,它使用"集中管理"的控制方式來決定主體和客體如何交互,這種模型容許用戶基於他所處的角色來訪問資源
在UNIX/LINUX POSIX標準採用的訪問控制管理以DAC模型爲基礎,它在角色層使用ACL指定訪問控制,即DAC+RBAC組合的模式,使用更粗的角色粒度來分配客體(資源)的訪問權限
在RBAC模型中,某個角色會根據該角色所執行的操做和任務來定義
角色的引入也引入了顯式受權和隱式受權的不一樣 1. 若是權限是顯式分配的,那麼這種權限是分配給特定的我的的: DAC 2. 若是這些權限是分配給一個角色或用戶則的,則用戶能自動繼承角色的屬性: RBAC
RBAC模型是員工流動性較高的組織最適合的訪問控制系統,或者進一步說更適合在文件常常變更的文件系統上部署DAC+RBAC模型的ACL檢查
1. 核心RBAC
這個組件將整合到每個RBAC模型中,由於它是這個模型的基礎。用戶、角色、許可、操做、會話應根據安全策略進行定義並相互對應
1. 用戶與權限之間存在多對多n:n的關係 2. 會話是某個用戶與少數幾個角色之間的對應關係 3. 提供傳統但穩健的基於羣組的訪問控制
許多用戶可能屬於多個組,並擁有每一個組所享有的各類權限,當用戶登陸時(這是一個會話),該用戶所分配到的各類角色和組將當即對這個用戶生效,即得到這些組的權限
這種模型提供了穩健的選擇,由於它在作出訪問決策時可以包括其餘組件,而不是僅僅根據一組證書作出決策,還能夠配置RBAC包含時間、角色位置、星期等方面,這意味着不只用戶ID和證書,其餘信息也可用於作出訪問決策
2. 層級RBAC
這個組件容許管理員創建一個組織RBAC模型,將某個環境中的組織結構和功能描述對應起來,造成了一個層次關係
1. 角色關係定義了用戶成員與權限繼承,全部層級是其餘角色的權限和許可的累加 2. 反映組織結構和功能描述 3. 兩種類型的層級 1) 有限層級: 只容許一個層級(角色1繼承角色2的權限,沒有其餘角色) 2) 普通層級: 容許多個層級(角色1同時繼承角色二、角色3的許可)
層級是一種劃分角色結構並反映結構的受權和責任的天然方法,橘色層級(role hierarchy)定義角色之間的繼承關係,這個模型提供兩種不一樣類型的責任分割
1. RBAC中的靜態責任分割(SSD)關係: 這種責任分割經過限制組合各類權限來防止欺詐 2. RBAC中的動態責任分割(SSD)關係: 這種責任分割經過限制各類可在任何會話中激活的權限來防止欺詐
基於角色的訪問控制可經過如下方法進行管理
1. 非RBAC方法: 用戶直接對應用程序對應起來,不使用角色 2. 有限的RBAC方法: 用戶與多個角色相互對應起來,並直接與其餘類型的沒有基於角色訪問功能的應用對應起來 3. 混合型RBAC: 用戶與多個應用程序角色對應,僅分配給這些角色選定的權限 4. 徹底的RBAC方法: 用戶與企業角色相互對應
0x4. Bell-Lapadula安全模型
Bell-lapadula是20世紀70年代,美國軍方提出的用於解決分時系統的信息安全和保密問題,該模型主要用於防止保密信息被未受權的主體訪問
使用Bell-lapadula模型的系統會對系統的用戶(主體)和數據(客體)作相應的安全標記,所以這種系統又被稱爲多級安全系統(相似MAC模型),級別和模型用於限制主體對客體的訪問操做,該模型用於增強訪問控制的信息保密性
Bell-lapadula使用主體,客體,訪問操做(讀、寫、讀/寫)以及安全級別這些概念,當主體和客體位於不一樣的安全級別時,主體對客體就存在必定的訪問限制。實現該模型後,它能保證信息不被不安全的主體所訪問
Bell-lapadula有三條強制的訪問規則
1. 簡單安全規則(simple security rule): 簡單安全規則表示低安全級別的主體不能從高安全級別客體讀取數據 2. 星屬性安全規則(star property): 星屬性安全規則表示高安全級別的主體不能對低安全級別的客體寫數據 //它們都是從防止信息泄漏的角度出發的 3. 強星屬性安全規則(strong star property): 強星屬性安全規則表示一個主體能夠對相同安全級別的客體進行讀和寫操做
值得注意的是,全部的MAC系統都是基於BELL-LAPADULA模型,由於它容許在代碼裏面整合多級安全規則,主體和客體會被設置安全級別(在MAC模型中被稱爲安全標籤),當主體試圖訪問一個客體,系統比較主體和客體的安全級別,而後在模型裏檢查操做是否合法和安全。下圖是對bell-lapadula模型的簡要描述
1. 當安全級別爲Secret的主體訪問安全級別爲Top Secret的客體時,簡單安全規則(simple security rule)生效,此時主體對客體可寫不可讀(no read up) 2. 當安全級別爲Secret的主體訪問安全級別爲Secret的客體時,強星屬性安全規則(strong star property)生效,此時主體對客體可寫可讀 3. 當安全級別爲Secret的主體訪問安全級別爲Confidential的客體時,星屬性安全規則( star property)生效,此時主體對客體可讀不可寫(no write down)
0x5. Biba安全模型
Biba模型是在bell-lapadula模型以後開發的,它跟bell-lapadula模型很類似,被用於解決應用程序數據的完整性問題
1. Bell-lapadula使用安全級別(top secret、secret、sensitive等),這些安全級別用於保證敏感信息只被受權的個體所訪問 2. Biba模型不關心信息保密性的安全級別,所以它的訪問控制不是創建在安全級別上,而是創建在完整性級別上
若是佈署正確的話,Biba模型可以防止數據從低完整性級別流向高完整性級別,跟Bell-lapadula同樣,Biba模型也有三條規則提供這種保護
1. 星完整性規則(*-integrity axiom): 星完整性規則表示完整性級別低的主體不能對完整性級別高的客體寫數據,即破壞高等級的完整性 星完整性規則(*-integrity axiom)強調主體如何修改(寫)客體 2. 簡單完整性規則(simple integrity axiom): 簡單完整性規則表示完整性級別高的主體不能從完整性級別低的客體讀取數據 簡單完整性規則(simple integrity axiom)強調主體如何從客體進行讀操做 3. 懇求屬性規則(invocation property): 懇求屬性規則表示一個完整性級別低的主體不能從級別高的客體調用程序或服務 而懇求屬性完整性規則(invocation property)則強調一個主體如何跟另一個客體(能夠是另一個主體)進行通訊並對其進行初始化,例如:一個主體能夠經過它的進程發送一個請求消息調用另一個客體的執行程序,從而完成某項任務。在Biba模型裏,主體只容許去調用低完整性客體的程序或服務,反之則禁止。這就保證低完整性的主體不會去調用某個高完整性客體的清除工具清除該客體的數據 //Linux中的sudo命令就是一種懇求屬性規則的應用
下圖是對Biba模型的簡要描述
1. 當完整性級別爲Medium Integrity的主體訪問完整性級別爲High Integrity的客體時,星完整性規則(*-integrity axiom)和懇求完整性規則(invocation property)生效,此時主體對客體可讀不可寫(no write up),也不能調用主體的任何程序和服務; 2. 當完整性級別爲Medium Integrity的主體訪問完整性級別爲Medium Integrity的客體時,此時主體對客體可寫可讀 3. 當完整性級別爲Medium Integrity的主體訪問完整性級別爲Low Integrity的客體時,簡單完整性規則(simple integrity axiom)生效,此時主體對客體可寫不可讀(no read down)
Relevant Link:
http://wenda.tianya.cn/question/494ef8f320019d38 http://214994.blog.51cto.com/204994/578099
2. 訪問控制方法、實現技術
一旦一個組織決定了採用什麼樣的訪問控制模型,那麼就須要進一步肯定可以支持該模型的方法和技術,咱們接下來具體討論訪問控制模型對應的實現技術
下面是三種不一樣的訪問控制模型的主要特色
1. DAC: 數據的擁有者決定誰能訪問該資源,訪問控制列表用於執行安全策略 2. MAC: 操做系統經過使用安全標籤來執行系統安全策略 3. RBAC: 訪問決策基於主體的角色和功能的位置
0x1: 基於規則的訪問控制
基於規則的訪問控制使用特定的規則來規定主體與客體之間能夠作什麼,不能夠作什麼,它基於"若是X則Y"這樣簡單的編程規則,能夠爲針對資源自己提供更加細化的訪問控制,下面是一個基於規則的例子
電子郵件的附件大小不得大於5MB,這一規則適用於全部用戶,並不單獨針對某個用戶,若是將基於規則改成基於身份,則會形成很大的混亂和冗餘 //基於規則的訪問控制經過制定一個適用於全部用戶的規則,不管它是什麼身份,從而簡化了規則制定
基於規則的訪問控制容許開發者詳細定義各類特殊情形,規定在這些情形中,主體是否可以訪問客體,以及在訪問獲得許可後主體可以執行的操做。基於規則的訪問控制典型地用在MAC系統中,做爲MAC系統提供的一種複雜訪問規則實施機制
同時,基於規則的訪問控制也用在其餘類型的系統和應用程序中,例如入侵檢測、內容過濾使用"若是-則(if-then)"編程語言,將數據或某種活動與一組規則進行比較,許多路由器和防火牆使用規則決定容許或拒絕哪些類型的數據包訪問網絡,基於規則的訪問控制是一種強制型控制,這些規則由管理員制定
0x2: 限制性的用戶接口
限制性的用戶接口經過不容許提供提交某些功能、信息、或訪問某些系統資源的請求來限制用戶的訪問能力,有如下幾種典型的限制性接口
1. 菜單和命令 1) 當使用菜單和命令限制時,用戶只被給與它們可以執行的命令選項 2) 命令解釋器是一個系統的虛擬環境,若是採用了限制性命令,那麼命令解釋器就只包含管理員但願用戶能運行的命令 2. 數據庫視圖 3. 物理限制接口 物理性的用戶接口限制能夠在鍵盤上提供一個特殊的鍵或在屏幕上提供觸摸按鈕,ATM提款機就是這種設計思想,這種裝置有一個操做系統,他可以接收全部的命令和設置,可是咱們在物理上受限不能執行這些功能,咱們只能按鍵來進行提款、查詢、結算、存款操做 4. Linux namespace、cgroup隔離 5. Linux chroot隔離 6. WEB系統中根據不一樣用戶身份顯示不一樣的功能界面
0x3: 訪問控制矩陣
訪問控制矩陣是一個包含有主體和客體的表,它規定每個主體對每個客體所能執行的操做,矩陣是一個數據結構,它用於程序員進行表查詢以供操做系統進行調用
這種類型的訪問控制通常都具備DAC模型的特徵,訪問權限能夠直接分配給主體(訪問能力)或客體(訪問控制列表),LINUX POSIX ACL典型地就是這種設計思想
0x4: 訪問能力表
訪問能力表給出了某些特定的主體對一些肯定的客體進行操做的訪問權限,訪問能力表和訪問控制列表是徹底不一樣的,這是由於主體被綁定在訪問能力表中,而客體被綁定在訪問控制表中,即它們出發點是不一樣的
1. 訪問控制表: 從客體的角度出發 2. 訪問能力表: 從主體的角度出發
一個基於訪問能力的系統就是Kerberos,在這個系統中,Kerberos先給用戶提供一個票證,這個票證就是一個訪問能力表,將這個票證和用戶綁定在一塊兒,上面標明瞭用戶能夠訪問哪些客體以及可以訪問到什麼程度
1. 訪問能力能夠爲令牌、票證、或密鑰,若是主體提供一個能力組件,操做系統(或應用程序)將審查該能力組件中的訪問權限,並只容許主體執行這些功能。能力組件是一種數據結構,其中包含一個惟一客體標識,以及主體對該客體的訪問權限 2. 客體能夠爲文件、數組、內存段、或端口。每個用戶、進程和應用程序在訪問能力系統中都有本身的一組能力
0x5: 訪問控制列表
訪問控制列表(access control list acl)用於不一樣的操做系統、應用程序和路由器配置中,它們是一些主體被受權訪問一個特定的客體的權限列表,列表定義了受權的程度,受權能夠具體到一個個體或組
訪問控制列表給出了訪問控制矩陣中和客體有關的內容,其中訪問能力表對應的是訪問控制矩陣中的行,而訪問控制列表是對應的訪問控制矩陣中的一列
0x6: 基於內容的訪問控制
在基於內容的訪問控制中,對客體的訪問主要取決於客體的內容,例如snort等NIDS都是基於內容的訪問控制
0x7: 基於情形的訪問控制
與基於內容的訪問控制不一樣,基於情形的訪問控制根據一組信息的情形,而不是信息自己的敏感性作出訪問決定,使用基於情形的訪問控制的系統先"審計狀況"(經常表現爲一個行爲序列),再作出決定,例如基於狀態的防火牆須要瞭解協議通訊的全部步驟,瞭解一個會話任務的必要步驟,這就是基於情形訪問控制的一個實例
經過將監控到的行爲序列和預約義的規範行爲序列進行比較,來判斷當前會話是否處於異常狀態
Relevant Link:
《CISSP認證考試指南》
3. SELINUX
SELinux(Secure Enhanced Linux)安全加強的Linux是由美國國家安全局NSA針對計算機基礎結構安全開發的一個全新的Linux安全策略機制。SELinux能夠容許系統管理員更加靈活的來定義安全策略。SELinux是一個內核級別的安全機制,從Linux2.6內核以後就將SELinux集成在了內核當中,由於SELinux是內核級別的,因此咱們對於其配置文件的修改都是須要從新啓動操做系統才能生效的。如今主流發現的Linux版本里面都集成了SELinux機制,CentOS/RHEL都會默認開啓SELinux機制
0x1: SELinux基本概念
咱們知道,操做系統的安全機制其實就是對兩樣東西作出限制: 進程和系統資源(文件、網絡套接字、系統調用等),Linux操做系統是經過用戶和組的概念來對咱們的系統資源進行限制,咱們知道每一個進程都須要一個用戶才能執行
在SELinux當中針對這兩樣東西定義了兩個基本概念
1. 域(domin): 域就是用來對進行進行限制 咱們能夠經過 ps -Z 這命令來查看當前進程的域的信息,也就是進程的SELinux信息 [root@xiaoluo ~]# ps -Z LABEL PID TTY TIME CMD unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2503 pts/0 00:00:00 su unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2511 pts/0 00:00:00 bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3503 pts/0 00:00:00 ps 2. 上下文(context): 上下文就是對系統資源進行限制 經過 ls -Z 命令咱們能夠查看文件上下文信息,也就是文件的SELinux信息 [root@xiaoluo ~]# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop -rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog
0x2: 策略
在SELinux中,咱們是經過定義策略來控制哪些域能夠訪問哪些上下文。在SELinux中,預置了多種的策略模式,咱們一般都不須要本身去定義策略,除非是咱們本身須要對一些服務或者程序進行保護
在CentOS/RHEL中,其默認使用的是目標(target)策略,目標策略定義了只有目標進程受到SELinux限制,非目標進程就不會受到SELinux限制,一般咱們的網絡應用程序都是目標進程,好比httpd、mysqld,dhcpd等等這些網絡應用程序
咱們的CentOS的SELinux配置文件是存放在 /etc/sysconfig/ 目錄下的 selinux 文件,咱們能夠查看一下里面的內容
[root@xiaoluo ~]# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted // 咱們的CentOS使用的策略就是目標策略
0x3: SELinux模式
SELinux的工做模式一共有三種
1. enforcing(強制模式): 只要是違反策略的行動都會被禁止,並做爲內核信息記錄 2. permissive(容許模式): 違反策略的行動不會被禁止,可是會提示警告信息 3. disabled(禁用模式): 禁用SELinux,與不帶SELinux系統是同樣的,一般狀況下咱們在不怎麼了解SELinux時,將模式設置成disabled,這樣在訪問一些網絡應用時就不會出問題了
咱們能夠經過 ls -Z 這個命令來查看咱們文件的上下文信息,也就是SELinux信息,咱們發現其比傳統的 ls 命令多出來了 system_u:object_r:admin_home_t:s0 這個東西,咱們如今就來分析一下這段語句所表明的含義
[root@xiaoluo ~]# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop -rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog system_u:object_r:admin_home_t:s0 這條語句經過:劃分紅了四段,第一段 system_u 表明的是用戶,第二段 object_r 表示的是角色,第三段是SELinux中最重要的信息,admin_home 表示的是類型,最後一段 s0 是跟MLS、MCS相關的東西,暫時不須要管 1. system_u: 指的是SElinux用戶 1) root表示root帳戶身份 2) user_u表示普通用戶無特權用戶 3) system_u表示系統進程 經過用戶能夠確認身份類型,通常搭配角色使用。身份和不一樣的角色搭配時有權限不一樣,雖然可使用su命令切換用戶但對於SElinux的用戶並無發生改變,帳戶之間切換時此用戶身份不變,在targeted策略環境下用戶標識沒有實質性做用 2. 客體角色 1) object_r: object_r通常爲文件目錄的角色 2) system_r: 通常爲進程的角色,在targeted策略環境中用戶的角色通常爲system_r 用戶的角色相似用戶組的概念,不一樣的角色具備不一樣的身份權限,一個用戶能夠具有多個角色,可是同一時間只能使用一個角色。在targeted策略環境下角色沒有實質做用,在targeted策略環境中全部的進程文件的角色都是system_r角色 3. 類型 1) admin_home: 文件和進程都有一個類型,SElinux依據類型的相關組合來限制存取權限
SELINUX開啓後是一種白名單(非白即黑)的訪問控制策略,一旦開啓了SELINUX,就須要根據本機的業務場景進行大量配置,不然極可能形成業務中斷。而實際上咱們須要的主動防護訪問控制策略是一個"黑名單機制"的控制,即明確指定某些進程不能讀寫哪些路徑下的文件
Relevant Link:
http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100444.html http://xinghen.blog.51cto.com/1080189/722082 http://www.uml.org.cn/embeded/201304252.asp http://os.51cto.com/art/201105/265956.htm http://www.cnblogs.com/zgx/archive/2011/08/31/2160330.html
Copyright (c) 2015 LittleHann All rights reserved