SELinux與SEAndroid

0. 概述

  • SELinux則是由美國NSA(國安局)和一些公司(RedHat、Tresys)設計的一個針對Linux的安全增強系統。SEAndroid是Google在Android 4.4上正式推出的一套以SELinux爲基礎於核心的系統安全機制。
  • 因爲Linux有多種發行版本,因此各家的SELinux表現形式也略有區別。具體到Android平臺,Google對其進行了必定得修改,從而獲得SEAndroid。

1. SELinux

  • DAC和MAClinux

    • SELinux出現以前,Linux上的安全模型叫DAC,全稱是Discretionary Access Control,翻譯爲自主訪問控制。
      核心思想:
      進程理論上所擁有的權限與執行它的用戶的權限相同。好比,以root用戶啓動Browser,那麼Browser就有root用戶的權限,在Linux系統上能幹任何事情。
    • SELinux在DAC以外,設計了一個新的安全模型,叫MAC(Mandatory Access Control),翻譯爲強制訪問控制。
      MAC核心思想:
      任何進程想在SELinux系統中幹任何事情,都必須先在安全策略配置文件中賦予權限。凡是沒有出如今安全策略配置文件中的權限,進程就沒有該權限。
    • DAC和MAC:安全

      • Linux系統先作DAC檢查。若是沒有經過DAC權限檢查,則操做直接失敗。經過DAC檢查以後,再作MAC權限檢查。
      • SELinux中也有用戶的概念,但它和Linux中原有的user概念不是同一個東西。什麼意思呢?好比,Linux中的超級用戶root在SELinux中可能就是一個沒權限,沒地位,打打醬油的」路人甲「。固然,這一切都由SELinux安全策略的制定者來決定。
在SELinux中,安全策略文件是最重要的。SELinux有本身的一套規則來編寫安全策略文件,這套規則被稱之爲SELinux Policy語言.
  • SELinux是典型的MAC實現,對系統中每一個對象都生成一個安全上下文(Security Context),每個對象訪問系統的資源都要進行安全上下文審查。審查的規則包括類型強制檢測(type enforcement),多層安全審查(Multi-LevelSecurity),及基於角色的訪問控制(RBAC: Role Based Access Control)。
  • SELinux的總體結構以下圖所示


2. SEAndroid

  • 因爲Android系 統有着獨特的用戶空間運行時,所以SELinux不能徹底適用於Android系統。爲此,NSA同Google一塊兒針對Android系統,在SELinux基礎上開發了 SEAndroid。總體框架:

  • SEAndroid安全機制包含有內核空間和用戶空間兩部分框架

    • 內核空間的selinux lsm module模塊負責內核資源的安全訪問控制.
    • sepolicy描述的是資源安全訪問策略。系統在啓動的時候,init進程會將內核空間安全訪問策略加載內核空間的selinux lsm模塊中去,而用戶空間的安全訪問策略則直接保存到普通文件中.
    • 用戶空間的SecurityServer一方面須要檢索用戶空間的安全策略,另外一方面也須要檢索內核空間的安全策略.
    • 用戶空間的libselinux庫封裝了對SELinux文件系統接口的讀寫操做。用戶空間的SecurityServer訪問內核空間的selinux lsm模塊時,都是間接地經過libselinux進行的。用戶空間的SecurityServer檢索用戶空間的安全策略時,一樣也是經過 libselinux庫來進行的.
  • SELinux 給Android 帶來下面影響:spa

    • 嚴格限制了ROOT權限,以往ROOT「沒法無天」的狀況將獲得極大的改善。
    • 經過SELinux 保護,下降系統關鍵進程受攻擊的風險,普通進程將沒有權限直接鏈接到系統關鍵進程。
    • 進一步強化APP的沙箱機制,確保APP難以作出異常行爲或者攻擊行爲。
    • 將改變APP 一旦安裝,權限就已經頂死的歷史,APP權限動態調整將成爲可能
相關文章
相關標籤/搜索