日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SElinux安全加固:保護(hù)重要文件免遭攻擊(selinux文件保護(hù))

介紹SElinux安全加固的重要性

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比尤溪網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式尤溪網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋尤溪地區(qū)。費用合理售后完善,10年實體公司更值得信賴。

隨著信息技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)安全問題日益嚴(yán)峻,黑客攻擊、病毒入侵、木馬病毒等安全威脅層出不窮,對各種網(wǎng)站、服務(wù)器、操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備等資產(chǎn)的安全威脅也變得更加嚴(yán)重。面對這些安全威脅,除了安裝殺毒軟件、加強口令強度等基礎(chǔ)防護(hù)措施,運維人員還需要深入研究安全技術(shù),提升系統(tǒng)安全性。而SElinux安全加固就是其中的一種重要技術(shù)手段,可以幫助運維人員保護(hù)重要文件免遭安全攻擊。

SElinux的基礎(chǔ)概念及架構(gòu)介紹

SElinux是Security-Enhanced Linux的縮寫,它是一種在內(nèi)核級別實現(xiàn)的強制訪問控制(MAC)機(jī)制。SElinux機(jī)制的基本思想是:在識別和驗證身份和權(quán)限的基礎(chǔ)上,進(jìn)行更為細(xì)致的訪問控制。根據(jù)最小必要特權(quán)原則,SElinux機(jī)制使程序可以被授予最小的訪問權(quán)限,這樣可以在一定程度上減少不安全代碼或未知風(fēng)險的影響。

SElinux的架構(gòu)主要包括內(nèi)核模塊、SElinux策略和用戶空間工具三個組成部分。其中,內(nèi)核模塊負(fù)責(zé)實現(xiàn)SElinux模型中的強制訪問控制規(guī)則,定義對象的安全屬性,并建立與用戶空間之間的溝通橋梁。SElinux策略則包含了一個或多個策略文件,通過這些文件來提供系統(tǒng)安全策略,增加系統(tǒng)的完整性和可靠性。用戶空間工具主要是一些SElinux擴(kuò)展的命令行工具和GUI工具,它們可以用于調(diào)試和監(jiān)控SElinux工作情況,幫助運維人員更好地管理安全策略。

SElinux的安全加固思路

對于運維人員來說,SElinux的安全加固思路主要包括以下三個方面:

1. 安全策略優(yōu)化:運維人員要通過SElinux的策略來實現(xiàn)訪問控制,因此在安全加固中,策略優(yōu)化是關(guān)鍵步驟。具體來說,運維人員可以通過執(zhí)行命令semanage login -a -s user_u -r s0-s0:c0.c1023 user_name,將用戶關(guān)聯(lián)到ACL條目中,從而實現(xiàn)對用戶權(quán)限的控制;可以通過執(zhí)行命令auditctl -w -p rwax -k file_change,設(shè)置針對特定文件的審計規(guī)則,實現(xiàn)對文件存取的記錄和警告等。

2. 安全相關(guān)配置:運維人員還需要通過配置文件實現(xiàn)SElinux安全加固。其中,/etc/selinux/config是SElinux的主要配置文件之一,運維人員可以通過修改該文件中的各種參數(shù)值來實現(xiàn)SElinux的安全加固。例如,通過將SELINUX=enforcing改為SELINUX=permissive,可以將SElinux級別從強制模式改為寬容模式,以便在應(yīng)用程序出現(xiàn)問題時繞過SElinux的強制訪問控制。此外,還可以通過安裝一些工具,如SELinux Policy Editor、SETools等,來幫助運維人員管理策略和分析日志。

3. 實時監(jiān)控和日志審計:SElinux的安全加固不僅僅是一次性的設(shè)置,更需要實時監(jiān)控和日志審計。運維人員需要通過監(jiān)控SElinux的日志來了解系統(tǒng)變化和發(fā)生的各種安全事件,從而及時發(fā)現(xiàn)和解決安全問題。而監(jiān)控工作包括定期檢查SElinux日志、設(shè)置報警機(jī)制、檢查安全事件記錄等多個方面。此外,如何對日志進(jìn)行審計,也是SElinux安全加固的關(guān)鍵之一。主要包括對日志的收集、存儲與傳輸,對日志數(shù)據(jù)進(jìn)行分析和加工等多個任務(wù)。

SElinux的安全加固案例

在實際操作中,有很多應(yīng)用場景需要使用SElinux來實施安全加固。例如,在RedHat企業(yè)版Linux系統(tǒng)中,運維人員可以使用setsebool命令來增強SElinux的安全性,從而保護(hù)求不得外泄的文件或目錄。具體來說,可以執(zhí)行命令setsebool -P httpd_read_user_content 1,啟用httpd的SELinux訪問控制權(quán)限,即httpd可以讀取用戶文件和目錄,并且可以相互訪問與修改;還可以通過執(zhí)行命令setsebool -P httpd_can_network_connect 0,禁用httpd進(jìn)程的網(wǎng)絡(luò)連接權(quán)限,以增強網(wǎng)絡(luò)安全性。

此外,在CentOS系統(tǒng)中,可以通過以下方法對SElinux進(jìn)行安全加固:

1. 設(shè)定安全主策略:運維人員需要使用selinux-policy-targeted策略文件才能進(jìn)行SElinux安全加固,因此需要先檢查該策略文件是否已經(jīng)安裝。通常情況下,運維人員可以通過yum安裝,例如執(zhí)行命令yum install policycoreutils-python,安裝常用的SElinux工具。然后,將安全主策略設(shè)置為targeted,具體命令為sed -i ‘s/.*/SELINUX=targeted/g’ /etc/selinux/config。

2. 設(shè)定文件和目錄的安全屬性:在Linux系統(tǒng)中,SElinux機(jī)制的基本思想是以過程為中心的訪問控制,因此需要為每個進(jìn)程和文件設(shè)置安全屬性。運維人員可以通過執(zhí)行命令chcon -R system_u:object_r:httpd_sys_content_t:/var/www,將/var/www目錄及其子目錄的安全屬性設(shè)置為”httpd_sys_content_t”,即可實現(xiàn)對/var/www目錄下的所有文件和目錄進(jìn)行安全控制;還可以通過命令chcon -u system_u -r object_r -t httpd_sys_script_exec_t /path/to/cgi-bin/file.cgi,將cgi-bin下的可執(zhí)行文件的安全屬性設(shè)為httpd_sys_script_exec_t,以保證安全性。

3. 安裝和配置auditd:auditd是一個Linux安全審計單元軟件,它可以監(jiān)視文件系統(tǒng)修改、進(jìn)程啟動和關(guān)閉事件等,以便快速發(fā)現(xiàn)異常事件。運維人員可以通過命令yum install audit,安裝auditd,然后在/etc/audit/auditd.conf文件中設(shè)置審計規(guī)則和事件過濾器,以定制化監(jiān)控和審計。

結(jié)語

相關(guān)問題拓展閱讀:

  • 詳解 SEAndroid 以及 Hack 其規(guī)則(sepolicy)
  • 安卓文件訪問控制的安全服務(wù)位于哪一層

詳解 SEAndroid 以及 Hack 其規(guī)則(sepolicy)

之前在搞Xposed的時候遇到一個問題是Xposed的卸載原本需要root權(quán)限,但是Xposed的原理是hack了zygote這個進(jìn)程(xposed原理以后有時間再寫),而zygote本身是有root權(quán)限的,所以Xposed應(yīng)該是可以利用zygote的root權(quán)限來卸載自身。但是實際操作中發(fā)現(xiàn)并不可以。經(jīng)過一番研究發(fā)現(xiàn)這是由于SEAndroid的緣故,zygote的一些操作會被SEAndroid限制,它的root權(quán)限并不是為所欲為的。下面就要詳細(xì)的談一下SEAndroid這個東西,然后再談一談如何去更改這個規(guī)則。

本文章有三個目的:

1.理解SEAndorid的工作原理

2.能夠看懂SEAndroid的規(guī)則

3.能夠自己增添刪改其規(guī)則(這一條估計大多數(shù)人都御好悶用不到,所以前兩條是主要目的)

SEAndroid 是SELinux 在Android 上面的一個移植。SELinux 是Linux上系統(tǒng)保護(hù)機(jī)制,SELinux 全稱 Security Enhanced Linux (安全強化 Linux),是MAC (Mandatory Access Control,強制訪問控制系統(tǒng))的一個實現(xiàn)。其目的在于明確的指明某個進(jìn)程可以訪問哪些資源(文件、網(wǎng)絡(luò)端口等)。Android系統(tǒng)基于Linux實現(xiàn)。針對傳統(tǒng)Linux系統(tǒng),NSA開發(fā)了一套安全機(jī)制SELinux,用來加強安全性。然而,由于Android系 統(tǒng)有著獨特的用戶空間運行時,因此SELinux不能完全適用于Android系統(tǒng)。為此,NSA同Google一起針對Android系統(tǒng),在SELinux基礎(chǔ)上開發(fā)了 SEAndroid。

Android 4.4首次引入了這一機(jī)制,SEAndroid與SELinux更大的不同在于SEAndroid對Android系統(tǒng)中的Binder做來了適配。進(jìn)入adb shell 之后可以通過getenforce命令來查看其是否應(yīng)用。root之后可以鎮(zhèn)彎通過setenforce 0關(guān)閉SEAndroid。但是目前好像關(guān)閉了這一功能。

理解SEAndorid的概念不得不提到DAC 和 MAC。

DAC是傳統(tǒng)的Linux的訪問控制方式,DAC可以對文件、文件夾、共享資源等進(jìn)行訪問控制。 在DAC這種模型中,文件客體的所有者(或者管理員)負(fù)責(zé)管理訪問控制。DAC使用了ACL(Access Control List,訪問控制列表)來給非管理者用戶提供不同的權(quán)限,而root用戶對文件系統(tǒng)有完全自由的控制權(quán)。

通俗的說就是,小明如果建立的某個文件他就對這個文件擁有絕對的控制權(quán),他能夠自主的控制其他人對該文件的權(quán)限。一個文件權(quán)限有讀(r)寫(w)執(zhí)行(x)三種。我們可以通過ls -l 這個命令看到各個文件的權(quán)限情況。然后通過 chmod 這個命令可以指定這個其他人對這個文件的權(quán)限。(chmod.txt 這個命令大家應(yīng)該都明白就不細(xì)說了)

但是這個機(jī)制有個不好的地方就是root用戶可以控制任意文件的權(quán)限,可以為所欲為。而且控制粒度較粗,如果我只想讓另一個人讀我的文件,而這個人跟我不是同一用戶組,我只能通過chmod XX4 XX 才能達(dá)到這一目的,但是這樣的話其他任何人都可以讀我的文件。所以說它粒度比較粗。

所以Linux就引入了MAC機(jī)制,即強制控制訪問。 MAC核心思想 : 即任何進(jìn)程想在SELinux系統(tǒng)中干任何事情,都必須先在安全策略配置文件中賦予權(quán)限。凡是沒有出現(xiàn)在安全策略配置文件中的權(quán)限,進(jìn)程就沒有該權(quán)限。這個機(jī)制相當(dāng)于一個白名單,這個白名單上配置了所有進(jìn)程的權(quán)限,進(jìn)程只能做白名單上權(quán)限內(nèi)的事情,一旦它想做一個不屬于它權(quán)限的操作就會被拒絕。

MAC不再像DAC一樣簡單的把進(jìn)程分為root others等,而是每個進(jìn)程(Subject,主體)襪空和文件(Object,客體)都配置了一個類型(Type),當(dāng)一個進(jìn)程去操控(讀寫等)一個文件時,系統(tǒng)會檢測該進(jìn)程類型是否有對該文件類型的操作權(quán)限。

通過命令ps -Z 可以查看進(jìn)程的安全label,ls -Z 可以看到文件的label(安全上下文)。

比如進(jìn)程安全上下文中的init進(jìn)程,他的type為init,下面的進(jìn)程的type為kernel。( 其實進(jìn)程的type也被稱為Domain )

文件安全上下文中的 123.txt 的 type為 tootfs。

(進(jìn)程和文件安全上下文label格式為 user:role: type :security_level 中的其它幾列不用管。這個涉及到SELinux中其它幾種訪問控制模型,在SEAndroid中我們只用關(guān)心他的type就好,比如init進(jìn)程的  u:r: init: s0,我們只用知道他的type為init。)

知道進(jìn)程和文件的安全上下文,那具體是怎么通過他們的安全上下文來控制權(quán)限的呢?

在手機(jī)上有個文件叫做sepolicy,這個文件就是SEAndroid的安全策略配置文件,里面有所有進(jìn)程的權(quán)限配置,進(jìn)程只能進(jìn)行它的權(quán)限規(guī)定內(nèi)的操作。這個文件就有root權(quán)限也刪不掉。把這個文件的內(nèi)容dump出來后會發(fā)現(xiàn)里面有好多條規(guī)則(我逆過魅族的4000條,三星的20230條)??磧蓷l例子。

allow untrusted_app system_app_data_file : file { read }

allow zygote sdcard_type : file { read write creat rename }

它的具體格式為: allow Domain Type : Class { Permission }   (Domain 是指進(jìn)程的type)

通過這個格式解讀上面的三條規(guī)則就是,

1. 允許 untrusted_app類型的進(jìn)程對 system_app_data_file類型的文件進(jìn)行read。

2.允許zygote類型的進(jìn)程對sdcard_type的file進(jìn)行 read write creat rename。

所以MAC控制方式是這個樣子的:當(dāng)一個進(jìn)程去操作一個文件的時候,系統(tǒng)會去檢測這個進(jìn)程和文件的上下文,看看這個進(jìn)程的所屬的type有沒有對這個的文件的type操作的權(quán)限。比如:zygote如果要去讀sdcard上的一個文件,這個文件的type為sdcard,zygote的type(Domain)為zygote, 系統(tǒng)去檢測看看發(fā)現(xiàn)這條規(guī)則 allow zygote sdcard_type : file { read write creat rename }。那么這個操作就會被允許執(zhí)行。zygote要是想刪除一個sdcard上的文件,系統(tǒng)發(fā)現(xiàn)對應(yīng)的規(guī)則里沒有delete,那么就會被deny。(上面的兩條規(guī)則和這個例子是我自己編的,只是為了說明情況,真實情況下zygote是有權(quán)限刪除sdcard上的文件的。)

DAC和MAC是同時作用的,一個操作會先后根據(jù)DAC和MAC檢測完再去執(zhí)行,不滿足任何一個機(jī)制的條件都會被拒絕。

上面一節(jié)解釋了SEAndroid的工作原理,這下知道為什么zygote的root權(quán)限并不能為所欲為了,但是如何去更改SEAndroid的規(guī)則,擴(kuò)大zygote的權(quán)限。直接更改sepolicy是不行的,因為sepolicy在boot.img里面,每次開機(jī)都會重寫讀取sepolicy這個文件,無法更改成功。

所以要直接解壓boot.img替換里面的sepolicy然后重打包。Linux上有一套解壓打包工具,windows解壓工具為Android-Image-Tools-windows.zip  先找到手機(jī)廠商的官方ROM刷機(jī)包,找到boot.img解壓。里面有個文件是sepolicy。修改sepolicy然后替換它重新打包刷入手機(jī)。(好吧其實蠻復(fù)雜的,但是我覺得大多數(shù)人可能用不到就先這樣寫吧,以后有需要的話會詳細(xì)寫。本來打算上傳自己工具,不知道怎么上傳文件。。。 我找不到我工具的鏈接了,可以去這里找找))

  1.sepolicy-inject:插入規(guī)則

2.sesearch:反編譯sepolicy

3.seinfo: 查看sepolicy版本

修改sepolicy的命令:push到手機(jī)上 直接輸入./(相應(yīng)文件)即可查看其使用方式 (下面是我插入的其中一條命令)

./sepolicy-inject -s zygote -t labeledfs -c filesystem -p remount,getattr,relabelto,transition,quotamod,unmount -P /sepolicy -o /sdcard/sepolicy1

博客是學(xué)習(xí)的起點而不是終點。。。 這篇文章只是入門SEAndroid,目的性較強,只講了主要部分,很多內(nèi)容沒有涉及。深入了解SEAndroid的話可以去看看老羅的文章。

**最后, 同學(xué)點個贊吧!?。?加個關(guān)注好么**

參考鏈接:

SEAndroid安全機(jī)制簡要介紹和學(xué)習(xí)計劃 強烈推薦老羅

SEAndroid策略分析 推薦

Android的安全機(jī)制

深入理解SELinux

安卓文件訪問控制的安全服務(wù)位于哪一層

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現(xiàn),是 Linux歷散臘脊史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問控制體系,在這種訪問控制體系的限制下,進(jìn)程只能訪問那些在他的任務(wù)中所需要文件。SELinux 默認(rèn)安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發(fā)行版上容易安裝的包得到。   SELinux 是 2.6 版本的 Linux 內(nèi)核中提供的強制訪問局慶控制(MAC)系統(tǒng)。對于目前可用的 Linux安全模塊來說,SELinux 是功能最全面,而且測試最充分的,它是在 20 年的 MAC 研究基礎(chǔ)上建立的。SELinux 在類型強制服務(wù)器中合并了多級安全性或一種可選的多類策略,并采用了基于角色的訪問控制概念。   大部分使用 SELinux 的人使用的都是 SELinux 就緒的發(fā)行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它們都是在內(nèi)核中啟用 SELinux 的,并且提供一個可定制的安全策略,還提供很多用戶層的庫和工具,它們都可以使用 SELinux 的功能。   SELinux是一種基于 域-類型 模型(domain-type)的強制訪問控制(MAC)安全系統(tǒng),它由NSA編寫并設(shè)計成內(nèi)核模塊包含到內(nèi)核中,相應(yīng)的某些安全相關(guān)的應(yīng)用也被打了SELinux的補丁,最后還有一個相應(yīng)的安全策略。任何程序?qū)ζ滟Y源享有完全的控制權(quán)。假設(shè)某個程序打算把含有潛在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒人能阻止他。SELinux提供了比傳統(tǒng)的UNⅨ權(quán)限更好的訪問控制。   1. 簡介   SELinux帶給Linux的主要價值是:提供了一個靈活的,可配置的MAC機(jī)制。   Security-Enhanced Linux (SELinux)由以下兩部分組成:   1) Kernel SELinux模塊(/kernel/security/selinux)   2) 用戶態(tài)工具   SELinux是一個安全體系結(jié)構(gòu),它通過L(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區(qū)的聯(lián)合項目。   SELinux提供了一種靈活的強制訪問控制(MAC)系統(tǒng),且內(nèi)嵌于Linux Kernel中。SELinux定義了系統(tǒng)中每個【用戶】、【進(jìn)程】、【應(yīng)用】和【文件】的訪問和轉(zhuǎn)變的權(quán)限,然后它使用一個安全策略來控制這些實體(用戶、進(jìn)程、應(yīng)用和文件)之間的交互,安全策略指定如何嚴(yán)格或?qū)捤傻剡M(jìn)行檢查。   SELinux對系統(tǒng)用戶(system users)是透明的,只有系統(tǒng)管理員需要考慮在他的服務(wù)器中如何制定嚴(yán)格的策略。策略可以根據(jù)需要是嚴(yán)格的或?qū)捤傻摹?  只有同時滿足了【標(biāo)準(zhǔn)Linux訪問控制】和【SELinux訪問控制】時,主體才能訪問客體。   1.1 DAC與MAC的關(guān)鍵區(qū)別(root用戶)   安 全增強型Linux(SELinux)開始是由NSA(國家安全局)啟動并加入到Linux系統(tǒng)中的一套核心組件及用戶工具,可以讓應(yīng)用程序運行在其所需的更低權(quán)限上。未 經(jīng)修改過的Linux系統(tǒng)是使用自主訪問控制的,用戶可以自己請求更高的權(quán)限,由此惡意軟件幾乎可以訪問任何它想訪問的文件,而如果你授予其root權(quán) 限,那它就無所不能了。   在SELinux中沒有root這個概念,安全策略是由管理員來定義的,任何軟件都無法取代它。這意味著那些潛在的惡意軟件所能造成的損害可以被控制在最小。一般情況下只有非常注重數(shù)據(jù)安全的企業(yè)級用戶才會使用SELinux。   操作系統(tǒng)有兩類訪問控制:自主訪問沖滲控制(DAC)和強制訪問控制(MAC)。標(biāo)準(zhǔn)Linux安全是一種DAC,SELinux為Linux增加了一個靈活的和可配置的的MAC。   所有DAC機(jī)制都有一個共同的弱點,就是它們不能識別自然人與計算機(jī)程序之間最基本的區(qū)別。簡單點說就是,如果一個用戶被授權(quán)允許訪問,意味著程序也被授權(quán)訪問,如果程序被授權(quán)訪問,那么惡意程序也將有同樣的訪問權(quán)。 DAC最根本的弱點是主體容易受到多種多樣的惡意軟件的攻擊,MAC就是避免這些攻擊的出路,大多數(shù)MAC特性組成了多層安全模型。   SELinux實現(xiàn)了一個更靈活的MAC形式,叫做類型強制(Type Enforcement)和一個非強制的多層安全形式(Multi-Level Security)。   在Android4.2中,SELinux是個可選項,谷歌并沒有直接取消root權(quán)限或其他功能。這是一個為企業(yè)級用戶或是對隱私數(shù)據(jù)極為重視的用戶提供的選項,普通消費者則完全可以關(guān)閉它。   2. SELinux的運行機(jī)制   SELinux決策過程如下圖所示:當(dāng)一個subject(如: 一個應(yīng)用)試圖訪問一個object(如:一個文件),Kernel中的策略執(zhí)行服務(wù)器將檢查AVC (Access Vector Cache), 在AVC中,subject和object的權(quán)限被緩存(cached)。如果基于AVC中的數(shù)據(jù)不能做出決定,則請求安全服務(wù)器,安全服務(wù)器在一個矩陣中查找“應(yīng)用+文件”的安全環(huán)境。然后根據(jù)查詢結(jié)果允許或拒絕訪問,拒絕消息細(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 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是一個符號鏈接,真正的配置文件為:/etc/selinux/config   配置SELinux有如下兩種方式:   1) 使用配置工具:Security Level Configuration Tool (system-config-selinux)   2) 編輯配置文件 (/etc/sysconfig/selinux).   /etc/sysconfig/selinux中包含如下配置選項:   1) 打開或關(guān)閉SELinux   2) 設(shè)置系統(tǒng)執(zhí)行哪一個策略(policy)   3) 設(shè)置系統(tǒng)如何執(zhí)行策略(policy)   4.2 配置文件選項   4.2.1 SELINUX   SELINUX=enforcingpermissivedisabled —定義SELinux的高級狀態(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í)行哪一個策略   ? targeted — 只有目標(biāo)網(wǎng)絡(luò)daemons保護(hù)。每個daemon是否執(zhí)行策略,可通過system-config-selinux進(jìn)行配置。保護(hù)常見的網(wǎng)絡(luò)服務(wù),為SELinux默認(rèn)值。   可使用如下工具設(shè)置每個daemon的布爾值:   1) getsebool -a: 列出SELinux的所有布爾值   2) setsebool: 設(shè)置SELinux布爾值,如:setsebool -P dhcpd_disable_trans=0,-P表示即使用reboot之后,仍然有效。   ? strict — 對SELinux執(zhí)行完全的保護(hù)。為所有的subjects和objects定義安全環(huán)境,且每一個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來自于文件/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運行模式,例子如下:   ? setenforce 1 — SELinux以強制(enforcing)模式運行   ? setenforce 0 — SELinux以警告(permissive)模式運行   為了關(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 — 在一個新的context或role中運行一個新的shell   4) /in/restorecon — 通過為適當(dāng)?shù)奈募虬踩h(huán)境標(biāo)記擴(kuò)展屬性,設(shè)置一個或多個文件的安全環(huán)境   5) /in/fixfiles — 檢查或校正文件系統(tǒng)中的安全環(huán)境數(shù)據(jù)庫   6) getsebool — getsebool -a:查看所有布爾值   7) setsebool — 參數(shù)-P,永久性設(shè)置   8) chcon 修改文件、目錄的安全上下文   chcon –u   chcon –r   chcon –t   chcon –R 遞歸   6. 類型強制的安全上下文(Type Enforcement Security Context)   安全上下文是一個簡單的、一致的訪問控制屬性,在SELinux中,類型標(biāo)識符是安全上下文的主要組成部分,由于歷史原因,一個進(jìn)程的類型通常被稱為一個域(domain),”域”和”域類型”意思都一樣,我們不必苛刻地去區(qū)分或避免使用術(shù)語域,通常,我們認(rèn)為【域】、【域類型】、【主體類型】和【進(jìn)程類型】都是同義的,即都是安全上下文中的“TYPE”。   SELinux對系統(tǒng)中的許多命令做了修改,通過添加一個-Z選項顯示客體和主體的安全上下文。   1) 系統(tǒng)根據(jù)PAM子系統(tǒng)中的pam_selinux.so模塊設(shè)定登錄者運行程序的安全上下文;   2) 文件的Security Contex規(guī)則如下:   ? rpm包安裝的:會根據(jù)rpm包內(nèi)記錄來生成安全上下文;   ? 手動創(chuàng)建的文件:會根據(jù)policy中規(guī)定的來設(shè)置安全上下文;   ? cp:會重新生成安全上下文;   ? mv:安全上下文則不變。   3) id -Z   顯示了你的shell的安全上下文;   4) ps -Z   檢查進(jìn)程的安全上下文;   5) ls -Z   檢查文件、目錄的安全上下文;   6.1 安全上下文格式   所有操作系統(tǒng)訪問控制都是以關(guān)聯(lián)的客體和主體的某種類型的訪問控制屬性為基礎(chǔ)的。在SELinux中,訪問控制屬性叫做安全上下文。所有客體(文件、進(jìn)程間通訊通道、套接字、網(wǎng)絡(luò)主機(jī)等)和主體(進(jìn)程)都有與其關(guān)聯(lián)的安全上下文,一個安全上下文由三部分組成:用戶、角色和類型標(biāo)識符。常常用下面的格式指定或顯示安全上下文:   USER:ROLE:TYPE>   安全上下文中的用戶和角色標(biāo)識符除了對強制有一點約束之外對類型強制訪問控制策略沒什么影響,對于進(jìn)程,用戶和角色標(biāo)識符顯得更有意義,因為它們是用于控制類型和用戶標(biāo)識符的聯(lián)合體,這樣就會與Linux用戶賬號關(guān)聯(lián)起來;然而,對于客體,用戶和角色標(biāo)識符幾乎很少使用,為了規(guī)范管理,客體的角色常常是object_r,客體的用戶常常是創(chuàng)建客體的進(jìn)程的用戶標(biāo)識符,它們在訪問控制上沒什么作用。   標(biāo)準(zhǔn)Linux安全中的用戶ID和安全上下文中的用戶標(biāo)識符之間的區(qū)別,就技術(shù)而論,它們是正交標(biāo)識符,分別用于標(biāo)準(zhǔn)的和安全增強的訪問控制機(jī)制,這兩者之間的任一相互關(guān)聯(lián)都是通過登陸進(jìn)程按照規(guī)范嚴(yán)格規(guī)定的,而不是通過SELinux策略直接強制實施的。   6.1.1 USER   1) user identity:類似Linux系統(tǒng)中的UID,提供身份識別,用來記錄身份;安全上下文的一部分;   2) 三種常見的 user:   ? user_u :普通用戶登錄系統(tǒng)后的預(yù)設(shè);   ? system_u :開機(jī)過程中系統(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) 用戶的role:targeted policy為system_r; strict policy為sysadm_r、staff_r、user_r;用戶的role,類似系統(tǒng)中的GID,不同角色具備不同的的權(quán)限;用戶可以具備多個role;但是同一時間內(nèi)只能使用一個role;   4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用來存儲角色信息   6.1.3 TYPE   1) type:用來將主體(subject)和客體(object)劃分為不同的組,給每個主體和系統(tǒng)中的客體定義了一個類型;為進(jìn)程運行提供更低的權(quán)限環(huán)境;   2) 當(dāng)一個類型與執(zhí)行中的進(jìn)程相關(guān)聯(lián)時,其type也稱為domain;   3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心臟,預(yù)設(shè)值以_t結(jié)尾;   LEVEL和CATEGORY:定義層次和分類,只用于mls策略中   ? LEVEL:代表安全等級,目前已經(jīng)定義的安全等級為s0-s15,等級越來越高   ? CATEGORY:代表分類,目前已經(jīng)定義的分類為c0-c.2 對比SELinux和標(biāo)準(zhǔn)Linux的訪問控制屬性   在標(biāo)準(zhǔn)Linux中,主體的訪問控制屬性是與進(jìn)程通過在內(nèi)核中的進(jìn)程結(jié)構(gòu)關(guān)聯(lián)的真實有效的用戶和組ID,這些屬性通過內(nèi)核利用大量工具進(jìn)行保護(hù),包括登陸進(jìn)程和setuid程序,對于客體(如文件),文件的inode包括一套訪問模式位、文件用戶和組ID。以前的訪問控制基于讀/寫/執(zhí)行這三個控制位,文件所有者、文件所有者所屬組、其他人各一套。   在SELinux中,訪問控制屬性總是安全上下文三人組(用戶:角色:類型)形式,所有客體和主體都有一個關(guān)聯(lián)的安全上下文。需要特別指出的是,因為SELinux的主要訪問控制特性是類型強制,安全上下文中的類型標(biāo)識符決定了訪問權(quán)。   注意:SELinux是在標(biāo)準(zhǔn)Linux基礎(chǔ)上增加了類型強制(TE: Type Enforcement),這就意味著標(biāo)準(zhǔn)Linux和SELinux訪問控制都必須滿足先要能訪問一個客體,例如:如果我們對某個文件有SELinux寫入權(quán)限,但我們沒有該文件的w許可,那么我們也不能寫該文件。下表總結(jié)了標(biāo)準(zhǔn)Linux和SELinux之間訪問控制屬性的對比: 標(biāo)準(zhǔn)LinuxSELInux 進(jìn)程安全屬性真實有效的用戶和組ID安全上下文 客體安全屬性訪問模式、文件用戶和組ID安全上下文 訪問控制基礎(chǔ)進(jìn)程用戶/組ID和文件的訪問模式, 此訪問模式基于文件的用戶/組ID在進(jìn)程類型和文件類型 之間允許的許可.3 小結(jié)   1) 系統(tǒng)中每個文件、目錄、網(wǎng)絡(luò)端口等都被指定一個安全上下文,policy 則給出各安全上下文之間的作用規(guī)則。   2) SELinux根據(jù)policy及security context規(guī)則來決定存取行為是否可執(zhí)行;   3) Subject(主體):系統(tǒng)進(jìn)程,比如/usr/in/httpd;   4) Object(客體):被存取的項目,比如File、Directory、IP、Socket等;   7. 類型強制(TE)訪問控制   在SELinux中,所有訪問都必須明確授權(quán),SELinux默認(rèn)不允許任何訪問,不管Linux用戶/組ID是什么。這就意味著在SELinux中,沒有默認(rèn)的超級用戶了,與標(biāo)準(zhǔn)Linux中的root不一樣,通過指定主體類型(即域)和客體類型使用allow規(guī)則授予訪問權(quán)限,allow規(guī)則由四部分組成:   ? 源類型(Source type(s) ) 通常是嘗試訪問的進(jìn)程的域類型   ? 目標(biāo)類型(Target type(s) ) 被進(jìn)程訪問的客體的類型   ? 客體類別(Object class(es)) 指定允許訪問的客體的類型   ? 許可(Permission(s)) 象征目標(biāo)類型允許源類型訪問客體類型的訪問種類   舉例如下:   代碼如下:   allow user_t bin_t : file {read execute getattr};   這個例子顯示了TE allow規(guī)則的基礎(chǔ)語法,這個規(guī)則包含了兩個類型標(biāo)識符:源類型(或主體類型或域)user_t,目標(biāo)類型(或客體類型)bin_t。標(biāo)識符file是定義在策略中的客體類別名稱(在這里,表示一個普通的文件),大括號中包括的許可是文件客體類別有效許可的一個子集,這個規(guī)則解釋如下:   擁有域類型user_t的進(jìn)程可以讀/執(zhí)行或獲取具有bin_t類型的文件客體的屬性。   SELinux allow規(guī)則如之前的例子在SELinux中實際上都是授予訪問權(quán)的,真正的挑戰(zhàn)是如何保證數(shù)以萬計的訪問正確授權(quán),只授予必須的權(quán)限,實現(xiàn)盡可能的安全。   7.1 標(biāo)準(zhǔn)Linux安全中的setuid程序   精通用戶joe想安全地修改現(xiàn)有的密碼問題,Linux解決這個問題的方法是通過給passwd賦一個setuid值,使其執(zhí)行時具有root權(quán)限,如果你在一個普通Linux系統(tǒng)上列出密碼文件,你看到的會是:   復(fù)制代碼   代碼如下:   # ls -l /usr/bin/passwd   -rwsr-xr-x. 1 root rootSep/usr/bin/passwd   這里注意兩件事,之一個是在所有者權(quán)限的x位置被設(shè)置為s了,這就是所謂的setuid位,意思是任何執(zhí)行這個文件的進(jìn)程,它的有效UID(即用戶ID)將會被改為文件所有者。這里,root是文件所有者,因此當(dāng)執(zhí)行密碼程序時實際上將會以root用戶的ID運行。其執(zhí)行過程如下圖所示:從上面的分析中可以看出,passwd以root權(quán)限的身份運行, 它可以訪問系統(tǒng)的任何資源,這給系統(tǒng)帶來了安全問題,其實它只需要訪問shadow及其相關(guān)的文件就可以了。而且shadow只需要接受passwd的訪問即可。這在標(biāo)準(zhǔn)Linux中是無法做到的,而TE(類型強制)可實現(xiàn)此功能。   8. 基于角色的訪問控制   SELinux也提供了一種基于角色的訪問控制(RBAC),SELinux的RBAC特性是依靠類型強制建立的,SELinux中的訪問控制主要是通過類型實現(xiàn)的,角色基于進(jìn)程安全上下文中的角色標(biāo)識符限制進(jìn)程可以轉(zhuǎn)變的類型,如此,策略編寫器可以創(chuàng)建一個角色,允許它轉(zhuǎn)變?yōu)橐惶子蝾愋?假設(shè)類型強制規(guī)則允許轉(zhuǎn)變),從而定義角色的限制。   9. SELinux中的多級安全(Multi-Level Security)   類型強制(Type Enforcement)無疑是SELinux引入的最重要的強制訪問控制(MAC)機(jī)制,然而,在某些情況下,主要是保密控制應(yīng)用程序的一個子集,傳統(tǒng)的多級安全(MLS)MAC與類型強制一起使用顯得更有價值,在這些情況下,SELinux總是包括某種格式的MLS功能,MLS特性是可選的,在SELinux的兩個MAC機(jī)制中,它通常不是最重要的那個,對大多數(shù)安全應(yīng)用程序而言,包括許多非保密數(shù)據(jù)應(yīng)用程序,類型強制是最適合的安全增強的機(jī)制,盡管如此,MLS對部分應(yīng)用程序還是增強了安全性。   在大多數(shù)SELinux策略中,敏感度(s0,s1,…)和范疇(c0,c1,…)使用通配名,將它留給用戶空間程序和程序庫,以指定有意義的用戶名。(例如:s0可能與UNCLASSIFIED 關(guān)聯(lián),s1可能與SECRET關(guān)聯(lián))   為了支持MLS,安全上下文被擴(kuò)展了,包括了安全級別,如:   復(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安全上下文至少必須有一個安全級別(它由單個敏感度和0個或多個范疇組成),但可以包括兩個安全級別,這兩個安全級別分別被叫做低(或進(jìn)程趨勢)和高(或進(jìn)程間隙),如果高安全級別丟失,它會被認(rèn)為與低安全級別的值是相同的(最常見的情況),實際上,對于客體和進(jìn)程而言,低和高安全級別通常都是相同的,通常用于進(jìn)程的級別范圍被認(rèn)為是受信任的主體(即進(jìn)程信任降級信息)或多層客體,如一個目錄,它又包括了不同安全級別的客體。為了使描述簡單,假設(shè)所有的進(jìn)程和客體都只有一個安全級別。. 策略分析工具apol   apol(即yze policy【分析策略】)工具是一個成熟的SELinux策略分析工具,它位于setools工具包中。使用它打開policy.xx文件即可分析所有的相關(guān)策略。xx為策略編譯器(checkpolicy)的版本號。. 小結(jié)   SELinux訪問控制是基于與所有系統(tǒng)資源(包括進(jìn)程)關(guān)聯(lián)的安全上下文的,安全上下文包括三個組件:用戶、角色和類型標(biāo)識符。類型標(biāo)識符是訪問控制的主要基礎(chǔ)。   在SELinux中,訪問控制的主要特性是類型強制,在主體(即進(jìn)程)與客體之間通過指定allow規(guī)則(主體的類型【也叫做域類型】是源,客體的類型是目標(biāo))進(jìn)行訪問授權(quán),訪問被授予特定的客體類別,為每個客體類別設(shè)置細(xì)粒度的許可。   類型強制的一個關(guān)鍵優(yōu)勢是它可以控制哪個程序可能運行在給定的域類型上,因此,它允許對單個程序進(jìn)行訪問控制(比起用戶級的安全控制要安全得多了),使程序進(jìn)入另一個域(即以一個給定的進(jìn)程類型運行)叫做域轉(zhuǎn)變,它是通過SELinux的allow規(guī)則緊密控制的,SELinux也允許通過type_transition 文件使域轉(zhuǎn)變自動發(fā)生。   SELinux在訪問控制安全上下文中不直接使用角色標(biāo)識符,相反,所有的訪問都是基于類型的,角色用于關(guān)聯(lián)允許的域類型,這樣可以設(shè)置類型強制允許的功能組合到一起,將用戶作為一個角色進(jìn)行認(rèn)證。   SELinux提供了一個可選的MLS訪問控制機(jī)制,它提供了更多的訪問限制,MLS特性依靠TE機(jī)制建立起來的,MLS擴(kuò)展了安全上下文的內(nèi)容,包括了一個當(dāng)前的(或低)安全級別和一個可選的高安全級別。selinux 文件保護(hù)的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于selinux 文件保護(hù),SElinux安全加固:保護(hù)重要文件免遭攻擊,詳解 SEAndroid 以及 Hack 其規(guī)則(sepolicy),安卓文件訪問控制的安全服務(wù)位于哪一層的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)頁題目:SElinux安全加固:保護(hù)重要文件免遭攻擊(selinux文件保護(hù))
本文路徑:http://www.dlmjj.cn/article/cojisgj.html