SELINUX工作原理詳解

發(fā)布時(shí)間:2024-07-23
服務(wù)器
1. 簡(jiǎn)介
selinux帶給linux的主要價(jià)值是:提供了一個(gè)靈活的,可配置的mac機(jī)制。
security-enhanced linux (selinux)由以下兩部分組成:
1) kernel selinux模塊(/kernel/security/selinux)
2) 用戶態(tài)工具
selinux是一個(gè)安全體系結(jié)構(gòu),它通過(guò)lsm(linux security modules)框架被集成到linux kernel 2.6.x中。它是nsa (united states national security agency)和selinux社區(qū)的聯(lián)合項(xiàng)目。
selinux提供了一種靈活的強(qiáng)制訪問(wèn)控制(mac)系統(tǒng),且內(nèi)嵌于linux kernel中。selinux定義了系統(tǒng)中每個(gè)【用戶】、【進(jìn)程】、【應(yīng)用】和【文件】的訪問(wèn)和轉(zhuǎn)變的權(quán)限,然后它使用一個(gè)安全策略來(lái)控制這些實(shí)體(用戶、進(jìn)程、應(yīng)用和文件)之間的交互,安全策略指定如何嚴(yán)格或?qū)捤傻剡M(jìn)行檢查。
selinux對(duì)系統(tǒng)用戶(system users)是透明的,只有系統(tǒng)管理員需要考慮在他的服務(wù)器中如何制定嚴(yán)格的策略。策略可以根據(jù)需要是嚴(yán)格的或?qū)捤傻摹?br>只有同時(shí)滿足了【標(biāo)準(zhǔn)linux訪問(wèn)控制】和【selinux訪問(wèn)控制】時(shí),主體才能訪問(wèn)客體。
1.1 dac與mac的關(guān)鍵區(qū)別(root用戶)
安 全增強(qiáng)型linux(selinux)開(kāi)始是由nsa(國(guó)家安全局)啟動(dòng)并加入到linux系統(tǒng)中的一套核心組件及用戶工具,可以讓應(yīng)用程序運(yùn)行在其所需的最低權(quán)限上。未 經(jīng)修改過(guò)的linux系統(tǒng)是使用自主訪問(wèn)控制的,用戶可以自己請(qǐng)求更高的權(quán)限,由此惡意軟件幾乎可以訪問(wèn)任何它想訪問(wèn)的文件,而如果你授予其root權(quán) 限,那它就無(wú)所不能了。
在selinux中沒(méi)有root這個(gè)概念,安全策略是由管理員來(lái)定義的,任何軟件都無(wú)法取代它。這意味著那些潛在的惡意軟件所能造成的損害可以被控制在最小。一般情況下只有非常注重?cái)?shù)據(jù)安全的企業(yè)級(jí)用戶才會(huì)使用selinux。
操作系統(tǒng)有兩類訪問(wèn)控制:自主訪問(wèn)控制(dac)和強(qiáng)制訪問(wèn)控制(mac)。標(biāo)準(zhǔn)linux安全是一種dac,selinux為linux增加了一個(gè)靈活的和可配置的的mac。
所有dac機(jī)制都有一個(gè)共同的弱點(diǎn),就是它們不能識(shí)別自然人與計(jì)算機(jī)程序之間最基本的區(qū)別。簡(jiǎn)單點(diǎn)說(shuō)就是,如果一個(gè)用戶被授權(quán)允許訪問(wèn),意味著程序也被授權(quán)訪問(wèn),如果程序被授權(quán)訪問(wèn),那么惡意程序也將有同樣的訪問(wèn)權(quán)。 dac最根本的弱點(diǎn)是主體容易受到多種多樣的惡意軟件的攻擊,mac就是避免這些攻擊的出路,大多數(shù)mac特性組成了多層安全模型。
selinux實(shí)現(xiàn)了一個(gè)更靈活的mac形式,叫做類型強(qiáng)制(type enforcement)和一個(gè)非強(qiáng)制的多層安全形式(multi-level security)。
在android4.2中,selinux是個(gè)可選項(xiàng),谷歌并沒(méi)有直接取消root權(quán)限或其他功能。這是一個(gè)為企業(yè)級(jí)用戶或是對(duì)隱私數(shù)據(jù)極為重視的用戶提供的選項(xiàng),普通消費(fèi)者則完全可以關(guān)閉它。
2. selinux的運(yùn)行機(jī)制
selinux決策過(guò)程如下圖所示:
當(dāng)一個(gè)subject(如: 一個(gè)應(yī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ù)查詢結(jié)果允許或拒絕訪問(wèn),拒絕消息細(xì)節(jié)位于/var/log/messages中。
3. selinux偽文件系統(tǒng)
/selinux/偽文件系統(tǒng)kernel子系統(tǒng)通常使用的命令,它類似于/proc/偽文件系統(tǒng)。系統(tǒng)管理員和用戶不需要操作這部分。/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 booleans --w------- 1 root 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 create --w------- 1 root root 0 sep 22 13:14 disable -rw-r--r-- 1 root root 0 sep 22 13:14 enforce -rw------- 1 root 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=enforcing|permissive|disabled —定義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=targeted|strict — 指定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=0|1 — 控制如何設(shè)置本地定義(users and booleans)。
1:這些定義由load_policy控制,load_policy來(lái)自于文件/etc/selinux/<policyname>
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/sbin/seten
上一個(gè):貼片電阻與插件電阻之間有哪些區(qū)別?
下一個(gè):優(yōu)勢(shì)供應(yīng)parteq監(jiān)測(cè)器es-3020

20公斤電鍍砝碼,25公斤圓柱形鍍鉻砝碼
HMA六價(jià)鉻重金屬分析儀在鋼鐵行業(yè)廢水監(jiān)測(cè)中的應(yīng)用
建筑工程竣工驗(yàn)收程序(消防工程)有哪些?
無(wú)機(jī)纖維噴涂棉近期價(jià)格多少錢一立方?廠家報(bào)價(jià)
碩美科g936n評(píng)測(cè)(碩美科g936pro怎么樣)
生物質(zhì)顆粒燃料熱值大卡化驗(yàn)儀的正確使用步驟詳解
隧道排水作業(yè)安全要求有哪些?
離婚糾紛開(kāi)庭后多久判
732陽(yáng)離子交換樹(shù)脂價(jià)格 d201離子樹(shù)脂
鋸骨機(jī)使用應(yīng)注意的事項(xiàng)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos