Loading AI tools
Linux核心安全模組 来自维基百科,自由的百科全书
安全增強式Linux(SELinux,Security-Enhanced Linux)是一個Linux核心的安全模組,其提供了訪問控制安全策略機制,包括了強制訪問控制(Mandatory Access Control,MAC)。
此條目翻譯品質不佳。 |
SELinux是一組核心修改和使用者空間工具,已經被添加到各種Linux發行版中。其軟體架構力圖將安全決策的執行與安全策略分離,並簡化涉及執行安全策略的軟體的數量。[2][3]SELinux的核心概念可以追溯回美國國家安全局(NSA)的一些早期專案。
美國國家安全局的安全增強式Linux團隊稱:[4]
安全增強式Linux是一組給Linux核心的修補程式,並提供一些更強、更安全的強制存取控制架構來和核心的主要子系統共同運作。基於機密及完整性原則,它提供一個架構來強制資訊的分離,以對付入侵的威脅或任何企圖略過安全架構的應用程式。藉此限制惡意或設計不良的程式可能造成的破壞。它包含一組安全性原則組態設定檔的範本以符合一般的安全性目標
整合SELinux的Linux核心將執行限制使用者程式和系統伺服器訪問檔案與網路資源的強制訪問控制策略。將權限限制到最小以減少或完全清除程式和守護行程在失效或出錯的情況(如快取區溢位或錯誤組態)下對系統造成危害的可能性。此種限制機制獨立與於傳統的Linux自主訪問控制(Discretionary Access Control, DAC)進行。SELinux沒有「root」使用者的概念,也沒有傳統Linux安全機制的缺點。(如依賴於setuid/setgid庫)
「未修改過的」Linux系統安全性(即未整合SELinux的系統)依賴於核心、授權應用與其組態的正確性。三者中任意一個發生問題都將有可能導致整個系統被破解。相反,「修改過的」系統安全性(基於SELinux核心)主要基於其核心和組態的正確性。雖然當應用程式的正確性或組態出現問題可能會導致獨立的使用者程式和系統守護行程發生有限破解,但是它們並不會對其他使用者程式和系統守護行程或整個系統的安全性造成威脅。
純粹來看,SELinux提供了一個從強制訪問控制、強制完整性控制、以角色為基礎的存取控制和類型強制架構提取出的概念與功能的混合體。第三方工具可以使開發者構建多種安全策略。
早期工作主要指向在UNIX計算環境(準確而言是POSIX)下標準化強制和自主訪問控制條款的方法。這歸因於美國國家安全局受信UNIX(TRUSIX)工作群組,他們在1987到1991年間接觸並發布了一本彩虹書 (#020A),並製造了一個原初模型和最初未發布的關聯評估證據原型(#020B)。
SELinux最初設計向Linux社群展示強制訪問控制的價值和這些控制加入Linux的方法。起初,組成SELinux的修補程式只能通過明確添加在Linux核心原始碼中來工作;在2.6系列的Linux核心中SELinux已被整合入。
作為最初SELinux的主要開發者,美國國家安全局於2000年12月22日基於GNU通用公共許可證發行了第一版SELinux給了開放原始碼開發社群。[5]
SELinux隨後被整合進了Linux核心2.6.0-test3版本的主分支,並在2003年8月8日發布。其他的顯要貢獻者有紅帽公司、邁克菲、安全計算公司、特瑟思科技(Tresys Technology)和可信電腦解決方案(Trusted Computer Solutions)。FLASK/TE實現通過FreeBSD專案成功移植到了FreeBSD和Darwin作業系統上。
SELinux實現了通量進階安全核心。這種核心包含了以錨爪作業系統為原型的架構部件。這些提供給了強制執行多種強制訪問控制策略許多通常支援,包括了基於類型強制、以角色為基礎的存取控制和多層安全概念的策略。FLASK基於馬赫衍生的(Mach-derived)分散式受信作業系統(DTOS)和來自對DTOS的設計和實現有著影響的受信資訊系統的一個研究專案——受信馬赫(Trusted Mach)。
SELinux使用者和角色不需要與實際系統使用者與角色相關。對每個正在進行的使用者或行程,SELinux分配一個三字串上下文,包含了使用者名稱、角色和域(或者類型)。此系統比通常所需要的系統更靈活:作為規定之一,大多數真實使用者享有著相同的SELinux使用者名稱,且所有的訪問控制都經由第三個標籤——域來進行。在一個行程被允許進入域的情況下必須在策略中組態。命令runcon
允許啟動行程進入一個顯性定義上下文(使用者、角色和域)環境中,但如果政策中未允許的話那麼SELinux可能會拒絕此請求。
檔案、網路埠和其他硬體均有可能含有SELinux上下文,由一個名字、角色(不常使用)和類型組成。檔案系統在檔案和安全上下文之間的對映被稱為標記(Labeling)。標記在策略檔案中被定義但也可以在不更改策略的情況下手動調整。硬體類型十分詳細,比如bin_t
(顯示/bin下的所有檔案)或postgresql_port_t
(PostgreSQL埠5432)。遠端檔案系統的SELinux上下文可以在被掛載時顯性定義。
SELinux給Shell命令ls
、ps
等中添加了-Z
開關使得檔案或行程的安全上下文可見。
典型的政策規則包含了顯性權限;使用者必須擁有哪些域才能用給定目標進行特定的行為(讀、執行,網路埠中則是繫結或連接)等等。也可以進行更多複雜的對映,包括在角色級和安全級進行。
一個典型的策略包含了一個對映檔案(標記)檔案、一個規則檔案和一個定義域過渡的介面檔案。這三個檔案必須被同時使用SELinux工具編譯來生成單一的策略檔案。生成的策略檔案可以被載入到核心中並工作。載入和解除安裝策略並不需要重新啟動。策略檔案既有可能是手打也可能是用容易使用的SELinux管理工具生成。它們通常先在允許模式(Permissive Mode)下測試,在此模式下違反策略的行為都將被記錄但被允許。audit2allow
工具可以隨後使用來生成擴充SELinux策略以允許受限應用的合法活動的附加規則。
SELinux特性包含了:
SELinux通過Red Hat Enterprise Linux第四版及其所有未來的發行版中的商業支援得以可用。它的存在也在對應版本的CentOS和Scientific Linux中呈現。RHEL4中所支援的策略目標為最大化簡易使用程度而並沒有它能成為的那樣有約束性。RHEL的未來版本準備將在目標策略中寫入更多的目標,也就意味著有更多的限制策略。SELinux在Android4.3版本中就已得以實現。[7]
在自由社群所支援的GNU/Linux發行版中,Fedora (作業系統)Fedora是最早採用SELinux的,在Fedora Core 2中就已預設包含了對其的支援。其他發行版中,Debian在Etch發行版中包含了對它的支援[8],Ubuntu則在8.04版代號堅強的蒼鷺(Hardy Heron)中加入。[9]截止openSUSE版本11.1中,它包含了SELinux的「基礎實現」。[10] SUSE Linux Enterprise 11將SELinux作為「技術預覽」。[11]
SELinux在基於Linux容器的系統中流向,比如CoreOS和rkt。[12]其作為額外的安全控制來幫助隔離容器和它們的主機十分有用。
SELinux可以潛在地通過詳細的參數來控制允許系統每個使用者的活動、行程以及守護行程。但是,它主要用於限制守護行程比如被更顯著定義資料訪問和活動權限的資料庫引擎或者網頁伺服器。這限制了被破解的限制守護行程的潛在危害。普通的使用者行程通常執行於受限域中,不被SELinux所限制但被經典Linux存取權限所限制。
命令列工具包含:[13]
chcon
,[14]
restorecon
,[15]
restorecond
,[16]
runcon
,[17]
secon
,[18]
fixfiles
,[19]
setfiles
,[20]
load_policy
,[21]
booleans
,[22]
getsebool
,[23]
setsebool
,[24]
togglesebool
[25]
setenforce
,
semodule
,
postfix-nochroot
,
check-selinux-installation
,
semodule_package
,
checkmodule
,
selinux-config-enforcing
,[26]
selinuxenabled
,[27]
及 selinux-policy-upgrade
[28]
將SELinux設定為強制模式(Enforcing Mode):
$ sudo setenforce 1
查詢SELinux狀態:
$ getenforce
SELinux代表了多個可能解決限制安裝軟體活動的方法之一。另外一個受歡迎的替代品被稱為AppArmor,它在SUSE Linux Enterprise Server(SLES)、OpenSUSE和其他Linux平台中可用。AppArmor原初是作為現不存在的Immunix Linux平台組件之一開發的。由於AppArmor和SELinux大相逕庭,它們產生了兩種完全不同的軟體訪問限制軟體。雖然SELinux重新提出了特定的概念以提供更豐富的策略選擇表達集,但AppArmor通過擴充用於自主訪問控制級的特定相同自主訪問控制管理語言設計來簡化其使用。
它們之間存在幾個顯著的不同:
CAP_FOWNER
或CAP_DAC_OVERRIDE
。在SELinux下,管理員或平台供應商可以通過組態SELinux禁止所有其他未受限使用者的能力,然後新建一個給員工的受限域以在登陸後進行過渡。這種情況可以給員工修改權限的能力,但僅限於合適類型的檔案。孤立行程也可以通過類似作業系統層虛擬化的機制實現;比如在OLPC專案的首次實現中[31]它使用了沙盒技術在輕量的Vserver環境中隔離獨立的應用程式。同樣美國國家安全局也在安全增強型Android中採用了一些SELinux概念。[32]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.