新聞中心
SELinux是Linux內(nèi)核的一種安全機(jī)制,它能夠控制進(jìn)程的訪(fǎng)問(wèn)權(quán)限,防止惡意代碼的攻擊。在Android系統(tǒng)中,SELinux也扮演著重要的安全角色。但是,在某些情況下,我們需要修改SELinux配置以達(dá)到一些目的。那么,如何手把手地修改手機(jī)SELinux配置呢?本文將會(huì)給出具體步驟和注意事項(xiàng)。

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、鎮(zhèn)平網(wǎng)站維護(hù)、網(wǎng)站推廣。
之一步:獲取root權(quán)限和Termux
在修改SELinux配置之前,需要先獲取root權(quán)限。假設(shè)讀者已經(jīng)掌握了這個(gè)過(guò)程,并且擁有一款可以運(yùn)行命令行的應(yīng)用程序。在這里,我們推薦使用Termux,它是一個(gè)輕量級(jí)的、基于Linux的終端模擬器,能夠在Android系統(tǒng)上運(yùn)行與Linux操作系統(tǒng)相同的命令。在Google Play商店搜索“Termux”即可下載并安裝。
第二步:安裝SELinux工具
在Termux中安裝SELinux工具有兩種方法。之一種是使用包管理器apt-get,通過(guò)以下命令來(lái)安裝:
“`
apt-get update
apt-get install selinux-utils
“`
第二種是通過(guò)GitHub倉(cāng)庫(kù)下載安裝,首先需要安裝git:
“`
apt-get install git
“`
然后,使用git從GitHub倉(cāng)庫(kù)下載selinux-utils:
“`
git clone https://github.com/terminalforlife/SELinux-Utils.git
“`
進(jìn)入SELinux-Utils目錄,執(zhí)行以下命令來(lái)安裝:
“`
bash install.sh
“`
安裝完成后,我們就可以使用selinux-utils中的命令來(lái)修改SELinux配置了。
第三步:查看和修改SELinux狀態(tài)
在Termux中,輸入以下命令來(lái)查看SELinux的狀態(tài):
“`
su -c getenforce
“`
輸出結(jié)果有三種可能:Enforcing,Permissive,和Disabled。其中,Enforcing表示SELinux正在以強(qiáng)制模式運(yùn)行,Permissive表示SELinux正在以寬容模式運(yùn)行,在寬容模式下,SELinux不會(huì)強(qiáng)制執(zhí)行權(quán)限規(guī)則,但是會(huì)記錄觸發(fā)規(guī)則的事件;Disabled表示SELinux已經(jīng)被禁用。
如果需要切換SELinux的狀態(tài),可以使用以下命令:
“`
su -c setenforce [Enforcing/Permissive]
“`
上述命令中,將[Enforcing/Permissive]替換為需要切換到的狀態(tài)即可。需要注意的是,切換到Enforcing狀態(tài)需要保證系統(tǒng)中所有進(jìn)程和文件的權(quán)限配置已經(jīng)符合SELinux的標(biāo)準(zhǔn),否則可能會(huì)導(dǎo)致應(yīng)用程序無(wú)法運(yùn)行或文件權(quán)限被錯(cuò)誤地限制。
第四步:添加或修改SELinux規(guī)則
在Termux中,使用以下命令來(lái)添加或修改SELinux規(guī)則:
“`
su -c semanage [command] [targets]
“`
其中,[command]可以是fcontext、port、login、user等,表示添加或修改不同類(lèi)型的規(guī)則。[targets]則表示需要添加或修改規(guī)則的目標(biāo)對(duì)象,可以是路徑、端口、登錄名、用戶(hù)等。例如,添加一個(gè)新的文件訪(fǎng)問(wèn)規(guī)則的命令如下:
“`
su -c semanage fcontext -a -t [type] [path]
“`
上述命令中,將[type]替換為一個(gè)規(guī)則類(lèi)型,比如httpd_sys_content_t或sys_data_file_t等;將[path]替換為需要添加規(guī)則的文件路徑即可。需要注意的是,添加規(guī)則后,需要執(zhí)行以下命令來(lái)刷新SELinux的規(guī)則緩存:
“`
su -c restorecon -v [path]
“`
上述命令中,將[path]替換為需要刷新規(guī)則的文件路徑即可。
第五步:備份和恢復(fù)SELinux配置
在編輯SELinux規(guī)則之前,更好先備份當(dāng)前的SELinux配置。在Termux中,可以使用以下命令來(lái)備份SELinux配置:
“`
su -c semanage export > [file]
“`
上述命令中,將[file]替換為備份文件的路徑即可。備份完成后,如果修改出現(xiàn)問(wèn)題,可以使用以下命令來(lái)恢復(fù)上一個(gè)可用的SELinux配置:
“`
su -c semanage import
“`
上述命令中,將[file]替換為需要恢復(fù)的備份文件即可。
本文介紹了如何手把手地修改手機(jī)SELinux配置,包括獲取root權(quán)限、安裝SELinux工具、查看和修改SELinux狀態(tài)、添加和修改SELinux規(guī)則,以及備份和恢復(fù)SELinux配置。需要注意的是,在修改SELinux規(guī)則之前,需要仔細(xì)了解規(guī)則的類(lèi)型和意義,以避免修改錯(cuò)誤導(dǎo)致系統(tǒng)出錯(cuò)。同時(shí),盡量使用備份和恢復(fù)功能來(lái)保證修改的安全性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220android之SELinux小記
SELinux是安全增強(qiáng)型 Linux(Security-Enhanced Linux)簡(jiǎn)稱(chēng) SELinux。它是一個(gè) Linux 內(nèi)核模塊,也是 Linux 的一個(gè)安全子系統(tǒng)。
SELinux 主要由美國(guó)國(guó)家安全局開(kāi)發(fā)。2.6 及以上版本的 Linux 內(nèi)核都已經(jīng)集成了 SELinux 模塊。
SELinux 的結(jié)構(gòu)及配置非常復(fù)雜,而且有大量概念性的東西,要學(xué)精難度較大。很多 Linux 系統(tǒng)管理員嫌麻煩都把 SELinux 關(guān)閉了。
SELinux目的在于明確的指明某個(gè)進(jìn)程可以訪(fǎng)問(wèn)哪些資源(文件、網(wǎng)絡(luò)端口等)。強(qiáng)制訪(fǎng)問(wèn)控制系統(tǒng)的用途在于增強(qiáng)系統(tǒng)抵御 0-Day 攻擊(利用尚未公開(kāi)的漏洞實(shí)現(xiàn)的攻擊行為)的能力。
在目前的大多數(shù)發(fā)行版中,已經(jīng)默認(rèn)在內(nèi)核集成了SELinux。
舉例來(lái)說(shuō),系統(tǒng)上的 Apache 被發(fā)現(xiàn)存在一個(gè)漏洞,使得某遠(yuǎn)程用戶(hù)可以訪(fǎng)問(wèn)系統(tǒng)上的敏感文件(比如 /etc/passwd 來(lái)獲得系統(tǒng)已存在用戶(hù)) ,而修復(fù)該安全漏洞的 Apache 更新補(bǔ)丁尚未釋出。此時(shí) SELinux 可以起到彌補(bǔ)該漏洞的緩和方案。因?yàn)?/etc/passwd 不具有 Apache 的 訪(fǎng)問(wèn)標(biāo)簽,所以 Apache 對(duì)于 /etc/passwd 的訪(fǎng)問(wèn)會(huì)被 SELinux 阻止。
相比其他強(qiáng)制性訪(fǎng)問(wèn)控制系統(tǒng),SELinux 有如下優(yōu)勢(shì):
SELinux for Android在架構(gòu)和機(jī)制上與SELinux完全一樣,考慮到移動(dòng)設(shè)備的特點(diǎn),所以移植到Android上的只是SELinux的一個(gè)子集。SELinux for Android的安全檢查幾乎覆蓋了所有重要的系統(tǒng)資源,包括
域轉(zhuǎn)換,類(lèi)型轉(zhuǎn)換,進(jìn)程、內(nèi)核、文件、目錄、設(shè)備,App,網(wǎng)絡(luò)及IPC相關(guān)的操作
。
Android分為 寬容模式 (僅記錄但不強(qiáng)制執(zhí)行 SELinux 安全政策 )和 強(qiáng)制模式 (強(qiáng)制執(zhí)行并記錄安全政策。如果失敗,則顯示為 EPERM 錯(cuò)誤。 );在選擇強(qiáng)制執(zhí)行級(jí)別時(shí)只能二擇其一。
您的選擇將決定您的政策是采取操作,還是僅允許您收集潛在的失敗事件。寬容模式在實(shí)現(xiàn)過(guò)程中尤其有用。
DAC是傳統(tǒng)的Linux的訪(fǎng)問(wèn)控制方式,DAC可以對(duì)文件、文件夾、共享資源等進(jìn)行訪(fǎng)問(wèn)控制。
在DAC這種模型中,文件客體的所有者(或者管理員)負(fù)責(zé)管理訪(fǎng)問(wèn)控制。
DAC使用了ACL(Access Control List,訪(fǎng)問(wèn)控制列表)來(lái)給非管理者用戶(hù)提供不同的權(quán)限,而root用戶(hù)對(duì)文件系統(tǒng)有完全自由的控制權(quán)。
MAC是任何進(jìn)程想在SELinux系統(tǒng)中干任何事情,都必須先在安全策略配置文件中賦予權(quán)限。
凡是沒(méi)有出現(xiàn)在安全策略配置文件中的權(quán)限,進(jìn)程就沒(méi)有該權(quán)限。
這個(gè)機(jī)制相當(dāng)于一個(gè)白名單,這個(gè)白名單上配置了所有進(jìn)程的權(quán)限,進(jìn)程只能做白名單上權(quán)限內(nèi)的事情,一旦它想做一個(gè)不屬于它權(quán)限的操作就會(huì)被拒絕。
這就需要使用到配置文件和其對(duì)應(yīng)的te語(yǔ)法。
語(yǔ)法解析:
指定一個(gè)“域”(domain),一般用于描述進(jìn)程,該域內(nèi)的的進(jìn)程,受該條TE語(yǔ)句的限制。
用 type 關(guān)鍵字,把一個(gè)自定義的域與原有的域相關(guān)聯(lián),最簡(jiǎn)單地定義一個(gè)新域的方式為:
意思為賦予shell給domain屬性,同時(shí),shell與屬于domain這個(gè)里。
例如:有一個(gè)allow domain xxxxx 的語(yǔ)句,同樣地也給了shell xxxxx的屬性。
進(jìn)程需要操作的客體(文件,文件夾等)類(lèi)型(安全上下文),同樣是用type與一些已有的類(lèi)型,屬性相關(guān)聯(lián)。
type有兩個(gè)作用,定義(聲明)并關(guān)聯(lián)某個(gè)屬性。
可以把這兩個(gè)作用分開(kāi),type定義,typeattribute進(jìn)行關(guān)聯(lián)。
class定義在文件 system/sepolicy/private/security_classes 中.
定義在 system/sepolicy/private/access_vectors 。有兩種定義方法。
SELinux中,每種東西都會(huì)被賦予一個(gè)安全屬性,它就是SecurityContext(Security Context以下簡(jiǎn)稱(chēng)SContext,安全上下文或安全屬性)是一個(gè)字符串,主要由三部分組成。
例如在 SELinux for Android中,進(jìn)程的SContext可以通過(guò)PS-Z命令查看,如下:
其中:
1. kernel/m-3.18/security/selinux/
2. external/selinux/
3. 用BOARD_SEPOLICY_DIRS添加的各te文件和安全配置文件,主要包括device//sepolicy//和system/sepolicy/,以及其他功能模塊添加的配置文件。
一文徹底明白linux中的selinux到底是什么
SELinux之一:SELinux基本概念及基本配置
Android selinux配置和用法
詳解 SEAndroid 以及 Hack 其規(guī)則(sepolicy)
SELinux/SEAndroid 實(shí)例簡(jiǎn)述(二) TE語(yǔ)言規(guī)則
根目錄build.prop文件里的ro.build.display.id改了會(huì)怎樣
改了沒(méi)事,這是版本號(hào),就是在關(guān)于手機(jī)里的版本號(hào)內(nèi)容
安卓文件訪(fǎng)問(wèn)控制的安全服務(wù)位于哪一層
SELinux(Security-Enhanced Linux) 是美國(guó)國(guó)家安全局(NSA)對(duì)于強(qiáng)制訪(fǎng)問(wèn)控制的實(shí)現(xiàn),是 Linux歷散臘脊史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開(kāi)發(fā)了一種訪(fǎng)問(wèn)控制體系,在這種訪(fǎng)問(wèn)控制體系的限制下,進(jìn)程只能訪(fǎng)問(wèn)那些在他的任務(wù)中所需要文件。SELinux 默認(rèn)安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發(fā)行版上容易安裝的包得到。 SELinux 是 2.6 版本的 Linux 內(nèi)核中提供的強(qiáng)制訪(fǎng)問(wèn)局慶控制(MAC)系統(tǒng)。對(duì)于目前可用的 Linux安全模塊來(lái)說(shuō),SELinux 是功能最全面,而且測(cè)試最充分的,它是在 20 年的 MAC 研究基礎(chǔ)上建立的。SELinux 在類(lèi)型強(qiáng)制服務(wù)器中合并了多級(jí)安全性或一種可選的多類(lèi)策略,并采用了基于角色的訪(fǎng)問(wèn)控制概念。 大部分使用 SELinux 的人使用的都是 SELinux 就緒的發(fā)行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它們都是在內(nèi)核中啟用 SELinux 的,并且提供一個(gè)可定制的安全策略,還提供很多用戶(hù)層的庫(kù)和工具,它們都可以使用 SELinux 的功能。 SELinux是一種基于 域-類(lèi)型 模型(domain-type)的強(qiáng)制訪(fǎng)問(wèn)控制(MAC)安全系統(tǒng),它由NSA編寫(xiě)并設(shè)計(jì)成內(nèi)核模塊包含到內(nèi)核中,相應(yīng)的某些安全相關(guān)的應(yīng)用也被打了SELinux的補(bǔ)丁,最后還有一個(gè)相應(yīng)的安全策略。任何程序?qū)ζ滟Y源享有完全的控制權(quán)。假設(shè)某個(gè)程序打算把含有潛在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒(méi)人能阻止他。SELinux提供了比傳統(tǒng)的UNⅨ權(quán)限更好的訪(fǎng)問(wèn)控制。 1. 簡(jiǎn)介 SELinux帶給Linux的主要價(jià)值是:提供了一個(gè)靈活的,可配置的MAC機(jī)制。 Security-Enhanced Linux (SELinux)由以下兩部分組成: 1) Kernel SELinux模塊(/kernel/security/selinux) 2) 用戶(hù)態(tài)工具 SELinux是一個(gè)安全體系結(jié)構(gòu),它通過(guò)L(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區(qū)的聯(lián)合項(xiàng)目。 SELinux提供了一種靈活的強(qiáng)制訪(fǎng)問(wèn)控制(MAC)系統(tǒng),且內(nèi)嵌于Linux Kernel中。SELinux定義了系統(tǒng)中每個(gè)【用戶(hù)】、【進(jìn)程】、【應(yīng)用】和【文件】的訪(fǎng)問(wèn)和轉(zhuǎn)變的權(quán)限,然后它使用一個(gè)安全策略來(lái)控制這些實(shí)體(用戶(hù)、進(jìn)程、應(yīng)用和文件)之間的交互,安全策略指定如何嚴(yán)格或?qū)捤傻剡M(jìn)行檢查。 SELinux對(duì)系統(tǒng)用戶(hù)(system users)是透明的,只有系統(tǒng)管理員需要考慮在他的服務(wù)器中如何制定嚴(yán)格的策略。策略可以根據(jù)需要是嚴(yán)格的或?qū)捤傻摹? 只有同時(shí)滿(mǎn)足了【標(biāo)準(zhǔn)Linux訪(fǎng)問(wèn)控制】和【SELinux訪(fǎng)問(wèn)控制】時(shí),主體才能訪(fǎng)問(wèn)客體。 1.1 DAC與MAC的關(guān)鍵區(qū)別(root用戶(hù)) 安 全增強(qiáng)型Linux(SELinux)開(kāi)始是由NSA(國(guó)家安全局)啟動(dòng)并加入到Linux系統(tǒng)中的一套核心組件及用戶(hù)工具,可以讓?xiě)?yīng)用程序運(yùn)行在其所需的更低權(quán)限上。未 經(jīng)修改過(guò)的Linux系統(tǒng)是使用自主訪(fǎng)問(wèn)控制的,用戶(hù)可以自己請(qǐng)求更高的權(quán)限,由此惡意軟件幾乎可以訪(fǎng)問(wèn)任何它想訪(fǎng)問(wèn)的文件,而如果你授予其root權(quán) 限,那它就無(wú)所不能了。 在SELinux中沒(méi)有root這個(gè)概念,安全策略是由管理員來(lái)定義的,任何軟件都無(wú)法取代它。這意味著那些潛在的惡意軟件所能造成的損害可以被控制在最小。一般情況下只有非常注重?cái)?shù)據(jù)安全的企業(yè)級(jí)用戶(hù)才會(huì)使用SELinux。 操作系統(tǒng)有兩類(lèi)訪(fǎng)問(wèn)控制:自主訪(fǎng)問(wèn)沖滲控制(DAC)和強(qiáng)制訪(fǎng)問(wèn)控制(MAC)。標(biāo)準(zhǔn)Linux安全是一種DAC,SELinux為L(zhǎng)inux增加了一個(gè)靈活的和可配置的的MAC。 所有DAC機(jī)制都有一個(gè)共同的弱點(diǎn),就是它們不能識(shí)別自然人與計(jì)算機(jī)程序之間最基本的區(qū)別。簡(jiǎn)單點(diǎn)說(shuō)就是,如果一個(gè)用戶(hù)被授權(quán)允許訪(fǎng)問(wèn),意味著程序也被授權(quán)訪(fǎng)問(wèn),如果程序被授權(quán)訪(fǎng)問(wèn),那么惡意程序也將有同樣的訪(fǎng)問(wèn)權(quán)。 DAC最根本的弱點(diǎn)是主體容易受到多種多樣的惡意軟件的攻擊,MAC就是避免這些攻擊的出路,大多數(shù)MAC特性組成了多層安全模型。 SELinux實(shí)現(xiàn)了一個(gè)更靈活的MAC形式,叫做類(lèi)型強(qiáng)制(Type Enforcement)和一個(gè)非強(qiáng)制的多層安全形式(Multi-Level Security)。 在Android4.2中,SELinux是個(gè)可選項(xiàng),谷歌并沒(méi)有直接取消root權(quán)限或其他功能。這是一個(gè)為企業(yè)級(jí)用戶(hù)或是對(duì)隱私數(shù)據(jù)極為重視的用戶(hù)提供的選項(xiàng),普通消費(fèi)者則完全可以關(guān)閉它。 2. SELinux的運(yùn)行機(jī)制 SELinux決策過(guò)程如下圖所示:當(dāng)一個(gè)subject(如: 一個(gè)應(yīng)用)試圖訪(fǎng)問(wèn)一個(gè)object(如:一個(gè)文件),Kernel中的策略執(zhí)行服務(wù)器將檢查AVC (Access Vector Cache), 在AVC中,subject和object的權(quán)限被緩存(cached)。如果基于AVC中的數(shù)據(jù)不能做出決定,則請(qǐng)求安全服務(wù)器,安全服務(wù)器在一個(gè)矩陣中查找“應(yīng)用+文件”的安全環(huán)境。然后根據(jù)查詢(xún)結(jié)果允許或拒絕訪(fǎng)問(wèn),拒絕消息細(xì)節(jié)位于/var/log/messages中。 3. SELinux偽文件系統(tǒng) /selinux/偽文件系統(tǒng)kernel子系統(tǒng)通常使用的命令,它類(lèi)似于/proc/偽文件系統(tǒng)。系統(tǒng)管理員和用戶(hù)不需要操作這部分。/selinux/目錄舉例如下: 代碼如下: -rw-rw-rw- 1 root root 0 Sep 22 13:14 access dr-xr-xr-x 1 root root 0 Sep 22 13:14 booleanswroot root 0 Sep 22 13:14 commit_pending_bools -rw-rw-rw- 1 root root 0 Sep 22 13:14 context -rw-rw-rw- 1 root root 0 Sep 22 13:14 createwroot root 0 Sep 22 13:14 disable -rw-r–r– 1 root root 0 Sep 22 13:14 enforce -rwroot root 0 Sep 22 13:14 load -r–r–r– 1 root root 0 Sep 22 13:14 mls -r–r–r– 1 root root 0 Sep 22 13:14 policyvers -rw-rw-rw- 1 root root 0 Sep 22 13:14 relabel -rw-rw-rw- 1 root root 0 Sep 22 13:14 user 如cat enforce其值可能如下: 1: enforcing mode 0: permissive mode 4. SELinux配置文件 SELinux配置文件(configuration)或策略文件(policy)位于/etc/目錄下。 4.1 /etc/sysconfig/selinux配置文件 /etc/sysconfig/selinux是一個(gè)符號(hào)鏈接,真正的配置文件為:/etc/selinux/config 配置SELinux有如下兩種方式: 1) 使用配置工具:Security Level Configuration Tool (system-config-selinux) 2) 編輯配置文件 (/etc/sysconfig/selinux). /etc/sysconfig/selinux中包含如下配置選項(xiàng): 1) 打開(kāi)或關(guān)閉SELinux 2) 設(shè)置系統(tǒng)執(zhí)行哪一個(gè)策略(policy) 3) 設(shè)置系統(tǒng)如何執(zhí)行策略(policy) 4.2 配置文件選項(xiàng) 4.2.1 SELINUX SELINUX=enforcingpermissivedisabled —定義SELinux的高級(jí)狀態(tài) ? enforcing — The SELinux security policy is enforced. ? permissive — The SELinux system prints warnings but does not enforce policy. ? disabled — SELinux is fully disabled. SELinux hooks are disengaged from the kernel and the pseudo-file system is unregistered. 4.2.2 SELINUXTYPE(安全策略) SELINUXTYPE=targetedstrict — 指定SELinux執(zhí)行哪一個(gè)策略 ? targeted — 只有目標(biāo)網(wǎng)絡(luò)daemons保護(hù)。每個(gè)daemon是否執(zhí)行策略,可通過(guò)system-config-selinux進(jìn)行配置。保護(hù)常見(jiàn)的網(wǎng)絡(luò)服務(wù),為SELinux默認(rèn)值。 可使用如下工具設(shè)置每個(gè)daemon的布爾值: 1) getsebool -a: 列出SELinux的所有布爾值 2) setsebool: 設(shè)置SELinux布爾值,如:setsebool -P dhcpd_disable_trans=0,-P表示即使用reboot之后,仍然有效。 ? strict — 對(duì)SELinux執(zhí)行完全的保護(hù)。為所有的subjects和objects定義安全環(huán)境,且每一個(gè)Action由策略執(zhí)行服務(wù)器處理。提供符合Role-based-Access Control(RBAC)之policy,具備完整的保護(hù)功能,保護(hù)網(wǎng)絡(luò)服務(wù)、一般指令及應(yīng)用程序。 4.2.3 SETLOCALDEFS SETLOCALDEFS=01 — 控制如何設(shè)置本地定義(users and booleans)。 ? 1:這些定義由load_policy控制,load_policy來(lái)自于文件/etc/selinux/? 0:由semanage控制 4.3 /etc/selinux/目錄 /etc/selinux/是存放所有策略文件和主要配置文件的目錄。其例子如下: 代碼如下: -rw-r–r– 1 root root 448 Sep 22 17:34 config drwxr-xr-x 5 root root 4096 Sep 22 17:27 strict drwxr-xr-x 5 root root 4096 Sep 22 17:28 targeted 5. SELinux工具 1) /usr/in/setenforce — 修改SELinux運(yùn)行模式,例子如下: ? setenforce 1 — SELinux以強(qiáng)制(enforcing)模式運(yùn)行 ? setenforce 0 — SELinux以警告(permissive)模式運(yùn)行 為了關(guān)閉SELinux,你可以修改配置文件:/etc/selinux/config或/etc/sysconfig/selinux 2) /usr/in/sestatus -v — 顯示系統(tǒng)的詳細(xì)狀態(tài),例子如下: SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version:Policy from config file: targeted Process contexts: Current context: user_u:system_r:unconfined_t:s0 Init context: system_u:system_r:init_t:s0 /in/mingetty system_u:system_r:getty_t:s) /usr/bin/newrole — 在一個(gè)新的context或role中運(yùn)行一個(gè)新的shell 4) /in/restorecon — 通過(guò)為適當(dāng)?shù)奈募虬踩h(huán)境標(biāo)記擴(kuò)展屬性,設(shè)置一個(gè)或多個(gè)文件的安全環(huán)境 5) /in/fixfiles — 檢查或校正文件系統(tǒng)中的安全環(huán)境數(shù)據(jù)庫(kù) 6) getsebool — getsebool -a:查看所有布爾值 7) setsebool — 參數(shù)-P,永久性設(shè)置 8) chcon 修改文件、目錄的安全上下文 chcon –u chcon –r chcon –t chcon –R 遞歸 6. 類(lèi)型強(qiáng)制的安全上下文(Type Enforcement Security Context) 安全上下文是一個(gè)簡(jiǎn)單的、一致的訪(fǎng)問(wèn)控制屬性,在SELinux中,類(lèi)型標(biāo)識(shí)符是安全上下文的主要組成部分,由于歷史原因,一個(gè)進(jìn)程的類(lèi)型通常被稱(chēng)為一個(gè)域(domain),”域”和”域類(lèi)型”意思都一樣,我們不必苛刻地去區(qū)分或避免使用術(shù)語(yǔ)域,通常,我們認(rèn)為【域】、【域類(lèi)型】、【主體類(lèi)型】和【進(jìn)程類(lèi)型】都是同義的,即都是安全上下文中的“TYPE”。 SELinux對(duì)系統(tǒng)中的許多命令做了修改,通過(guò)添加一個(gè)-Z選項(xiàng)顯示客體和主體的安全上下文。 1) 系統(tǒng)根據(jù)PAM子系統(tǒng)中的pam_selinux.so模塊設(shè)定登錄者運(yùn)行程序的安全上下文; 2) 文件的Security Contex規(guī)則如下: ? rpm包安裝的:會(huì)根據(jù)rpm包內(nèi)記錄來(lái)生成安全上下文; ? 手動(dòng)創(chuàng)建的文件:會(huì)根據(jù)policy中規(guī)定的來(lái)設(shè)置安全上下文; ? cp:會(huì)重新生成安全上下文; ? mv:安全上下文則不變。 3) id -Z 顯示了你的shell的安全上下文; 4) ps -Z 檢查進(jìn)程的安全上下文; 5) ls -Z 檢查文件、目錄的安全上下文; 6.1 安全上下文格式 所有操作系統(tǒng)訪(fǎng)問(wèn)控制都是以關(guān)聯(lián)的客體和主體的某種類(lèi)型的訪(fǎng)問(wèn)控制屬性為基礎(chǔ)的。在SELinux中,訪(fǎng)問(wèn)控制屬性叫做安全上下文。所有客體(文件、進(jìn)程間通訊通道、套接字、網(wǎng)絡(luò)主機(jī)等)和主體(進(jìn)程)都有與其關(guān)聯(lián)的安全上下文,一個(gè)安全上下文由三部分組成:用戶(hù)、角色和類(lèi)型標(biāo)識(shí)符。常常用下面的格式指定或顯示安全上下文: USER:ROLE:TYPE> 安全上下文中的用戶(hù)和角色標(biāo)識(shí)符除了對(duì)強(qiáng)制有一點(diǎn)約束之外對(duì)類(lèi)型強(qiáng)制訪(fǎng)問(wèn)控制策略沒(méi)什么影響,對(duì)于進(jìn)程,用戶(hù)和角色標(biāo)識(shí)符顯得更有意義,因?yàn)樗鼈兪怯糜诳刂祁?lèi)型和用戶(hù)標(biāo)識(shí)符的聯(lián)合體,這樣就會(huì)與Linux用戶(hù)賬號(hào)關(guān)聯(lián)起來(lái);然而,對(duì)于客體,用戶(hù)和角色標(biāo)識(shí)符幾乎很少使用,為了規(guī)范管理,客體的角色常常是object_r,客體的用戶(hù)常常是創(chuàng)建客體的進(jìn)程的用戶(hù)標(biāo)識(shí)符,它們?cè)谠L(fǎng)問(wèn)控制上沒(méi)什么作用。 標(biāo)準(zhǔn)Linux安全中的用戶(hù)ID和安全上下文中的用戶(hù)標(biāo)識(shí)符之間的區(qū)別,就技術(shù)而論,它們是正交標(biāo)識(shí)符,分別用于標(biāo)準(zhǔn)的和安全增強(qiáng)的訪(fǎng)問(wèn)控制機(jī)制,這兩者之間的任一相互關(guān)聯(lián)都是通過(guò)登陸進(jìn)程按照規(guī)范嚴(yán)格規(guī)定的,而不是通過(guò)SELinux策略直接強(qiáng)制實(shí)施的。 6.1.1 USER 1) user identity:類(lèi)似Linux系統(tǒng)中的UID,提供身份識(shí)別,用來(lái)記錄身份;安全上下文的一部分; 2) 三種常見(jiàn)的 user: ? user_u :普通用戶(hù)登錄系統(tǒng)后的預(yù)設(shè); ? system_u :開(kāi)機(jī)過(guò)程中系統(tǒng)進(jìn)程的預(yù)設(shè); ? root :root 登錄后的預(yù)設(shè); 3) 在 targeted policy 中 users 不是很重要; 4) 在strict policy 中比較重要,所有預(yù)設(shè)的 SELinux Users 都是以 “_u” 結(jié)尾的,root 除外。 6.1.2 ROLE 1) 文件、目錄和設(shè)備的role:通常是 object_r; 2) 程序的role:通常是 system_r; 3) 用戶(hù)的role:targeted policy為system_r; strict policy為sysadm_r、staff_r、user_r;用戶(hù)的role,類(lèi)似系統(tǒng)中的GID,不同角色具備不同的的權(quán)限;用戶(hù)可以具備多個(gè)role;但是同一時(shí)間內(nèi)只能使用一個(gè)role; 4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用來(lái)存儲(chǔ)角色信息 6.1.3 TYPE 1) type:用來(lái)將主體(subject)和客體(object)劃分為不同的組,給每個(gè)主體和系統(tǒng)中的客體定義了一個(gè)類(lèi)型;為進(jìn)程運(yùn)行提供更低的權(quán)限環(huán)境; 2) 當(dāng)一個(gè)類(lèi)型與執(zhí)行中的進(jìn)程相關(guān)聯(lián)時(shí),其type也稱(chēng)為domain; 3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心臟,預(yù)設(shè)值以_t結(jié)尾; LEVEL和CATEGORY:定義層次和分類(lèi),只用于mls策略中 ? LEVEL:代表安全等級(jí),目前已經(jīng)定義的安全等級(jí)為s0-s15,等級(jí)越來(lái)越高 ? CATEGORY:代表分類(lèi),目前已經(jīng)定義的分類(lèi)為c0-c.2 對(duì)比SELinux和標(biāo)準(zhǔn)Linux的訪(fǎng)問(wèn)控制屬性 在標(biāo)準(zhǔn)Linux中,主體的訪(fǎng)問(wèn)控制屬性是與進(jìn)程通過(guò)在內(nèi)核中的進(jìn)程結(jié)構(gòu)關(guān)聯(lián)的真實(shí)有效的用戶(hù)和組ID,這些屬性通過(guò)內(nèi)核利用大量工具進(jìn)行保護(hù),包括登陸進(jìn)程和setuid程序,對(duì)于客體(如文件),文件的inode包括一套訪(fǎng)問(wèn)模式位、文件用戶(hù)和組ID。以前的訪(fǎng)問(wèn)控制基于讀/寫(xiě)/執(zhí)行這三個(gè)控制位,文件所有者、文件所有者所屬組、其他人各一套。 在SELinux中,訪(fǎng)問(wèn)控制屬性總是安全上下文三人組(用戶(hù):角色:類(lèi)型)形式,所有客體和主體都有一個(gè)關(guān)聯(lián)的安全上下文。需要特別指出的是,因?yàn)镾ELinux的主要訪(fǎng)問(wèn)控制特性是類(lèi)型強(qiáng)制,安全上下文中的類(lèi)型標(biāo)識(shí)符決定了訪(fǎng)問(wèn)權(quán)。 注意:SELinux是在標(biāo)準(zhǔn)Linux基礎(chǔ)上增加了類(lèi)型強(qiáng)制(TE: Type Enforcement),這就意味著標(biāo)準(zhǔn)Linux和SELinux訪(fǎng)問(wèn)控制都必須滿(mǎn)足先要能訪(fǎng)問(wèn)一個(gè)客體,例如:如果我們對(duì)某個(gè)文件有SELinux寫(xiě)入權(quán)限,但我們沒(méi)有該文件的w許可,那么我們也不能寫(xiě)該文件。下表總結(jié)了標(biāo)準(zhǔn)Linux和SELinux之間訪(fǎng)問(wèn)控制屬性的對(duì)比: 標(biāo)準(zhǔn)LinuxSELInux 進(jìn)程安全屬性真實(shí)有效的用戶(hù)和組ID安全上下文 客體安全屬性訪(fǎng)問(wèn)模式、文件用戶(hù)和組ID安全上下文 訪(fǎng)問(wèn)控制基礎(chǔ)進(jìn)程用戶(hù)/組ID和文件的訪(fǎng)問(wèn)模式, 此訪(fǎng)問(wèn)模式基于文件的用戶(hù)/組ID在進(jìn)程類(lèi)型和文件類(lèi)型 之間允許的許可.3 小結(jié) 1) 系統(tǒng)中每個(gè)文件、目錄、網(wǎng)絡(luò)端口等都被指定一個(gè)安全上下文,policy 則給出各安全上下文之間的作用規(guī)則。 2) SELinux根據(jù)policy及security context規(guī)則來(lái)決定存取行為是否可執(zhí)行; 3) Subject(主體):系統(tǒng)進(jìn)程,比如/usr/in/httpd; 4) Object(客體):被存取的項(xiàng)目,比如File、Directory、IP、Socket等; 7. 類(lèi)型強(qiáng)制(TE)訪(fǎng)問(wèn)控制 在SELinux中,所有訪(fǎng)問(wèn)都必須明確授權(quán),SELinux默認(rèn)不允許任何訪(fǎng)問(wèn),不管Linux用戶(hù)/組ID是什么。這就意味著在SELinux中,沒(méi)有默認(rèn)的超級(jí)用戶(hù)了,與標(biāo)準(zhǔn)Linux中的root不一樣,通過(guò)指定主體類(lèi)型(即域)和客體類(lèi)型使用allow規(guī)則授予訪(fǎng)問(wèn)權(quán)限,allow規(guī)則由四部分組成: ? 源類(lèi)型(Source type(s) ) 通常是嘗試訪(fǎng)問(wèn)的進(jìn)程的域類(lèi)型 ? 目標(biāo)類(lèi)型(Target type(s) ) 被進(jìn)程訪(fǎng)問(wèn)的客體的類(lèi)型 ? 客體類(lèi)別(Object class(es)) 指定允許訪(fǎng)問(wèn)的客體的類(lèi)型 ? 許可(Permission(s)) 象征目標(biāo)類(lèi)型允許源類(lèi)型訪(fǎng)問(wèn)客體類(lèi)型的訪(fǎng)問(wèn)種類(lèi) 舉例如下: 代碼如下: allow user_t bin_t : file {read execute getattr}; 這個(gè)例子顯示了TE allow規(guī)則的基礎(chǔ)語(yǔ)法,這個(gè)規(guī)則包含了兩個(gè)類(lèi)型標(biāo)識(shí)符:源類(lèi)型(或主體類(lèi)型或域)user_t,目標(biāo)類(lèi)型(或客體類(lèi)型)bin_t。標(biāo)識(shí)符file是定義在策略中的客體類(lèi)別名稱(chēng)(在這里,表示一個(gè)普通的文件),大括號(hào)中包括的許可是文件客體類(lèi)別有效許可的一個(gè)子集,這個(gè)規(guī)則解釋如下: 擁有域類(lèi)型user_t的進(jìn)程可以讀/執(zhí)行或獲取具有bin_t類(lèi)型的文件客體的屬性。 SELinux allow規(guī)則如之前的例子在SELinux中實(shí)際上都是授予訪(fǎng)問(wèn)權(quán)的,真正的挑戰(zhàn)是如何保證數(shù)以萬(wàn)計(jì)的訪(fǎng)問(wèn)正確授權(quán),只授予必須的權(quán)限,實(shí)現(xiàn)盡可能的安全。 7.1 標(biāo)準(zhǔn)Linux安全中的setuid程序 精通用戶(hù)joe想安全地修改現(xiàn)有的密碼問(wèn)題,Linux解決這個(gè)問(wèn)題的方法是通過(guò)給passwd賦一個(gè)setuid值,使其執(zhí)行時(shí)具有root權(quán)限,如果你在一個(gè)普通Linux系統(tǒng)上列出密碼文件,你看到的會(huì)是: 復(fù)制代碼 代碼如下: # ls -l /usr/bin/passwd -rwsr-xr-x. 1 root rootSep/usr/bin/passwd 這里注意兩件事,之一個(gè)是在所有者權(quán)限的x位置被設(shè)置為s了,這就是所謂的setuid位,意思是任何執(zhí)行這個(gè)文件的進(jìn)程,它的有效UID(即用戶(hù)ID)將會(huì)被改為文件所有者。這里,root是文件所有者,因此當(dāng)執(zhí)行密碼程序時(shí)實(shí)際上將會(huì)以root用戶(hù)的ID運(yùn)行。其執(zhí)行過(guò)程如下圖所示:從上面的分析中可以看出,passwd以root權(quán)限的身份運(yùn)行, 它可以訪(fǎng)問(wèn)系統(tǒng)的任何資源,這給系統(tǒng)帶來(lái)了安全問(wèn)題,其實(shí)它只需要訪(fǎng)問(wèn)shadow及其相關(guān)的文件就可以了。而且shadow只需要接受passwd的訪(fǎng)問(wèn)即可。這在標(biāo)準(zhǔn)Linux中是無(wú)法做到的,而TE(類(lèi)型強(qiáng)制)可實(shí)現(xiàn)此功能。 8. 基于角色的訪(fǎng)問(wèn)控制 SELinux也提供了一種基于角色的訪(fǎng)問(wèn)控制(RBAC),SELinux的RBAC特性是依靠類(lèi)型強(qiáng)制建立的,SELinux中的訪(fǎng)問(wèn)控制主要是通過(guò)類(lèi)型實(shí)現(xiàn)的,角色基于進(jìn)程安全上下文中的角色標(biāo)識(shí)符限制進(jìn)程可以轉(zhuǎn)變的類(lèi)型,如此,策略編寫(xiě)器可以創(chuàng)建一個(gè)角色,允許它轉(zhuǎn)變?yōu)橐惶子蝾?lèi)型(假設(shè)類(lèi)型強(qiáng)制規(guī)則允許轉(zhuǎn)變),從而定義角色的限制。 9. SELinux中的多級(jí)安全(Multi-Level Security) 類(lèi)型強(qiáng)制(Type Enforcement)無(wú)疑是SELinux引入的最重要的強(qiáng)制訪(fǎng)問(wèn)控制(MAC)機(jī)制,然而,在某些情況下,主要是保密控制應(yīng)用程序的一個(gè)子集,傳統(tǒng)的多級(jí)安全(MLS)MAC與類(lèi)型強(qiáng)制一起使用顯得更有價(jià)值,在這些情況下,SELinux總是包括某種格式的MLS功能,MLS特性是可選的,在SELinux的兩個(gè)MAC機(jī)制中,它通常不是最重要的那個(gè),對(duì)大多數(shù)安全應(yīng)用程序而言,包括許多非保密數(shù)據(jù)應(yīng)用程序,類(lèi)型強(qiáng)制是最適合的安全增強(qiáng)的機(jī)制,盡管如此,MLS對(duì)部分應(yīng)用程序還是增強(qiáng)了安全性。 在大多數(shù)SELinux策略中,敏感度(s0,s1,…)和范疇(c0,c1,…)使用通配名,將它留給用戶(hù)空間程序和程序庫(kù),以指定有意義的用戶(hù)名。(例如:s0可能與UNCLASSIFIED 關(guān)聯(lián),s1可能與SECRET關(guān)聯(lián)) 為了支持MLS,安全上下文被擴(kuò)展了,包括了安全級(jí)別,如: 復(fù)制代碼 代碼如下: user:role:type:sensitivity > 例子如下所示: 復(fù)制代碼 代碼如下: root@luohj-virtual-machine:~# ps -aZ LABEL PID TTY TIME CMD unconfined_u:system_r:inod_t:s0-s0:c0.cpts/0 00:00:00 passwd 注意MLS安全上下文至少必須有一個(gè)安全級(jí)別(它由單個(gè)敏感度和0個(gè)或多個(gè)范疇組成),但可以包括兩個(gè)安全級(jí)別,這兩個(gè)安全級(jí)別分別被叫做低(或進(jìn)程趨勢(shì))和高(或進(jìn)程間隙),如果高安全級(jí)別丟失,它會(huì)被認(rèn)為與低安全級(jí)別的值是相同的(最常見(jiàn)的情況),實(shí)際上,對(duì)于客體和進(jìn)程而言,低和高安全級(jí)別通常都是相同的,通常用于進(jìn)程的級(jí)別范圍被認(rèn)為是受信任的主體(即進(jìn)程信任降級(jí)信息)或多層客體,如一個(gè)目錄,它又包括了不同安全級(jí)別的客體。為了使描述簡(jiǎn)單,假設(shè)所有的進(jìn)程和客體都只有一個(gè)安全級(jí)別。. 策略分析工具apol apol(即yze policy【分析策略】)工具是一個(gè)成熟的SELinux策略分析工具,它位于setools工具包中。使用它打開(kāi)policy.xx文件即可分析所有的相關(guān)策略。xx為策略編譯器(checkpolicy)的版本號(hào)。. 小結(jié) SELinux訪(fǎng)問(wèn)控制是基于與所有系統(tǒng)資源(包括進(jìn)程)關(guān)聯(lián)的安全上下文的,安全上下文包括三個(gè)組件:用戶(hù)、角色和類(lèi)型標(biāo)識(shí)符。類(lèi)型標(biāo)識(shí)符是訪(fǎng)問(wèn)控制的主要基礎(chǔ)。 在SELinux中,訪(fǎng)問(wèn)控制的主要特性是類(lèi)型強(qiáng)制,在主體(即進(jìn)程)與客體之間通過(guò)指定allow規(guī)則(主體的類(lèi)型【也叫做域類(lèi)型】是源,客體的類(lèi)型是目標(biāo))進(jìn)行訪(fǎng)問(wèn)授權(quán),訪(fǎng)問(wèn)被授予特定的客體類(lèi)別,為每個(gè)客體類(lèi)別設(shè)置細(xì)粒度的許可。 類(lèi)型強(qiáng)制的一個(gè)關(guān)鍵優(yōu)勢(shì)是它可以控制哪個(gè)程序可能運(yùn)行在給定的域類(lèi)型上,因此,它允許對(duì)單個(gè)程序進(jìn)行訪(fǎng)問(wèn)控制(比起用戶(hù)級(jí)的安全控制要安全得多了),使程序進(jìn)入另一個(gè)域(即以一個(gè)給定的進(jìn)程類(lèi)型運(yùn)行)叫做域轉(zhuǎn)變,它是通過(guò)SELinux的allow規(guī)則緊密控制的,SELinux也允許通過(guò)type_transition 文件使域轉(zhuǎn)變自動(dòng)發(fā)生。 SELinux在訪(fǎng)問(wèn)控制安全上下文中不直接使用角色標(biāo)識(shí)符,相反,所有的訪(fǎng)問(wèn)都是基于類(lèi)型的,角色用于關(guān)聯(lián)允許的域類(lèi)型,這樣可以設(shè)置類(lèi)型強(qiáng)制允許的功能組合到一起,將用戶(hù)作為一個(gè)角色進(jìn)行認(rèn)證。 SELinux提供了一個(gè)可選的MLS訪(fǎng)問(wèn)控制機(jī)制,它提供了更多的訪(fǎng)問(wèn)限制,MLS特性依靠TE機(jī)制建立起來(lái)的,MLS擴(kuò)展了安全上下文的內(nèi)容,包括了一個(gè)當(dāng)前的(或低)安全級(jí)別和一個(gè)可選的高安全級(jí)別。關(guān)于ro.build.selinux=1的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過(guò)多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專(zhuān)業(yè)從事IT產(chǎn)品開(kāi)發(fā)和營(yíng)銷(xiāo)公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!
網(wǎng)頁(yè)標(biāo)題:手把手教你修改手機(jī)SELinux配置(ro.build.selinux=1)
文章URL:http://m.fisionsoft.com.cn/article/cosgisj.html


咨詢(xún)
建站咨詢(xún)
