自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SELinux進(jìn)階篇 應(yīng)用目標(biāo)策略管理非限制進(jìn)程和用戶

原創(chuàng)
安全 網(wǎng)站安全
非限制的進(jìn)程運(yùn)行在非限制域中。比如,init進(jìn)程運(yùn)行在非限制的initrc_t域中,非限制的kernel進(jìn)程運(yùn)行在kernel_t域中,非限制的用戶運(yùn)行在unconfined_t域中。對于非限制的進(jìn)程,SELinux策略規(guī)則仍然適用...

一、管理非限制進(jìn)程

非限制的進(jìn)程運(yùn)行在非限制域中。比如,init進(jìn)程運(yùn)行在非限制的initrc_t域中,非限制的kernel進(jìn)程運(yùn)行在kernel_t域中,非限制的用戶運(yùn)行在unconfined_t域中。對于非限制的進(jìn)程,SELinux策略規(guī)則仍然適用,然而有關(guān)允許進(jìn)程運(yùn)行在非限制域中的規(guī)則允許幾乎所有的訪問。因此,如果一個非限制進(jìn)程被黑客控制的話,那么SELinux將不能阻止黑客獲取對系統(tǒng)資源和數(shù)據(jù)的訪問權(quán)限,當(dāng)然DAC規(guī)則仍然適用,因?yàn)镾ELinux機(jī)制是在DAC層次上附加一層對Linux的增強(qiáng),而不是簡單地替代DAC。

下面將給出一個具體的例子來說明Apache Http服務(wù)器(httpd進(jìn)程)在非限制的條件下運(yùn)行,是如何能夠訪問本應(yīng)由Samba服務(wù)器訪問的數(shù)據(jù)的。值得注意的是:在Fedora 10中,httpd進(jìn)程默認(rèn)是限制運(yùn)行在httpd_t域中的。下面的例子假設(shè)用戶系統(tǒng)中安裝了httpd、wget(一種類似于Windows系統(tǒng)下Flashget軟件的多線程下載工具)、settroubleshoot-server、audit等工具包,并且SELinux機(jī)制運(yùn)行在enforcing模式下。

(1)運(yùn)行sestatus命令來確認(rèn)Linux中SELinux是運(yùn)行的,且運(yùn)行在enforcing模式下,運(yùn)行結(jié)果與圖1所示一致:

圖1  運(yùn)行sestatus命令來確認(rèn)Linux中SELinux是否運(yùn)行

(2)以root用戶身份,創(chuàng)建一個新的測試文件testfile2,該文件路徑為httpd進(jìn)程的工作目錄下,如下所示:

  1. #touch /var/www/html/testfile2 

(3)使用ls -z命令來查看新創(chuàng)建的文件的SELinux上下文信息,如圖2所示:

圖2  使用ls-Z命令查看新創(chuàng)建文件的SELinux上下文信息

從上述結(jié)果中可以清楚看到:Linux用戶默認(rèn)運(yùn)行在非限制域中,所以testfile2文件上下文信息標(biāo)識為unconfined_u。并且,RBAC用于進(jìn)程,而不是文件。另外,對于文件來說角色也沒有特別的含義,因此賦予其object_r為較為通用的角色。而httpd_sys_content類型則允許httpd進(jìn)程對該文件進(jìn)行訪問。

(4)采用chron命令暫時(shí)對文件的標(biāo)識進(jìn)行改變。一旦系統(tǒng)重啟,該改變將會失效。若要***改變文件的標(biāo)識,可以采用semanage命令進(jìn)行操作。使用root用戶身份,運(yùn)行如下命令來將文件類型改為由Samba服務(wù)器可訪問的類型:

  1. #chcon -t samba_share_t /var/www/html/testfile2 

然后,采用ls -z命令來查看修改后的結(jié)果:

  1. # ls -Z /var/www/html/testfile2  
  2. -rw-r--r--  root root unconfined_u:object_r:samba_share_t:s0 /var/www/html/testfile2 

(5)在將httpd進(jìn)程從限制修改為非限制之前,需要將該進(jìn)程停止,使用如下命令:

  1. #/sbin/service httpd stop 

(6)以root用戶身份運(yùn)行如下命令,來改變httpd進(jìn)程的類型,以將其從限制改為非限制:

  1. #chcon -t unconfined_exec_t /usr/sbin/httpd 

然后,使用ls -z命令來查看進(jìn)程,以確保修改生效,如下所示:

  1. # ls -Z /usr/sbin/httpd  
  2. -rwxr-xr-x  root root system_u:object_r:unconfined_exec_t:s0 /usr/sbin/httpd 

(7)為了使httpd在運(yùn)行時(shí)該修改生效,需要重新啟動httpd進(jìn)程,如圖6-22所示:

(8)采用ps -ez | grep httpd命令來查看httpd進(jìn)程運(yùn)行在非限制域中的情況,如圖3所示:

圖3  啟動httpd進(jìn)程并查看#p#

(9)在有權(quán)限許可的目錄下,運(yùn)行如下命令來測試httpd進(jìn)程運(yùn)行在非限制情況下的效果,如圖4所示:

圖4  wget命令成功執(zhí)行

上述的運(yùn)行結(jié)果顯示,該命令能夠成功運(yùn)行。雖然httpd進(jìn)程原來沒有訪問標(biāo)記為samba_share_t類型文件的權(quán)限,然而由于修改,httpd進(jìn)程現(xiàn)在運(yùn)行在非限制環(huán)境下(unconfined_t),所以SELinux轉(zhuǎn)為執(zhí)行DAC機(jī)制,而wget命令可以訪問該文件,所以成功執(zhí)行。

(10)測試結(jié)束后,需要使用如下命令來恢復(fù)該httpd進(jìn)程本來的運(yùn)行限制:

  1. #restorecon -v /user/sbin/httpd 

然而,采用如下命令來進(jìn)行查看,發(fā)現(xiàn)httpd進(jìn)程又從非限制狀態(tài)恢復(fù)為限制狀態(tài):

  1. # ls -Z /usr/sbin/httpd  
  2. -rwxr-xr-x  root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/httpd   

(11)使用如下命令重新啟動httpd,以時(shí)修改在httpd進(jìn)程運(yùn)行時(shí)生效,并通過ps -ez命令來查看進(jìn)程的運(yùn)行狀態(tài),如圖5所示:

  1. #/sbin/service httpd restart  
  2. # ps -eZ | grep httpd  
  3. unconfined_u:system_r:httpd_t:s0 2963 ?        00:00:00 httpd  
  4. unconfined_u:system_r:httpd_t:s0 2965 ?        00:00:00 httpd  
  5. unconfined_u:system_r:httpd_t:s0 2966 ?        00:00:00 httpd  
  6. unconfined_u:system_r:httpd_t:s0 2967 ?        00:00:00 httpd  
  7. unconfined_u:system_r:httpd_t:s0 2968 ?        00:00:00 httpd  
  8. unconfined_u:system_r:httpd_t:s0 2969 ?        00:00:00 httpd  
  9. unconfined_u:system_r:httpd_t:s0 2970 ?        00:00:00 httpd  
  10. unconfined_u:system_r:httpd_t:s0 2971 ?        00:00:00 httpd  
  11. unconfined_u:system_r:httpd_t:s0 2972 ?        00:00:00 httpd  
  12. unconfined_u:system_r:httpd_t:s0 2973 ?        00:00:00 httpd 

圖5  恢復(fù)httpd進(jìn)程的運(yùn)行限制

到此為止,上述例子詳細(xì)的演示了SELinux是如何通過限制進(jìn)程的運(yùn)行來保證Linux系統(tǒng)安全的,也看到了如果將進(jìn)程改為unconfined運(yùn)行狀態(tài)的安全隱患,因此提醒廣大用戶在實(shí)際應(yīng)用過程中切忌不要隨便將進(jìn)程默認(rèn)的限制運(yùn)行狀態(tài)改為非限制狀態(tài),以免給Linux系統(tǒng)帶來不必要的麻煩和安全隱患。

二、管理限制和非限制用戶

在前面的介紹中曾經(jīng)提到過,每個傳統(tǒng)的Linux用戶在SELinux中都被映射為一個SELinux用戶。這使得Linux用戶能夠繼承在SELinux用戶上的訪問控制。用戶可以使用semanage login -l命令來查看兩類用戶之間的具體映射情況,如圖6所示:

圖6  使用semanage命令查看用戶映射#p#

舉個例子,在Fedora 10中,Linux用戶默認(rèn)被映射到SELinux的_default_login中,從而映射為unconfined_u用戶類型。

下面通過一個更加具體的在SELinux中添加新用戶的例子,來說明SELinux是怎么來映射Linux用戶的。該例子的具體操作步驟如下,如圖7所示:

圖7  在SELinux中添加新用戶

(1)以root用戶身份,運(yùn)行useradd命令,添加一個新用戶liyang:

  1. #useradd liyang 

(2)以root用戶身份,運(yùn)行passwd命令,修改該用戶的密碼:

  1. #passwd liyang 

(3)退出當(dāng)前的root運(yùn)行身份,以liyang的身份重新登錄Linux。重新登錄后,SELinux將為用戶liyang生成SELinux上下文,查看該用戶的上下文:

  1. # id -Z  
  2. unconfined_u:unconfined_r:unconfined_t:s0  
  3.  

可以清楚地看到,當(dāng)Linux添加一個新用戶時(shí),SELinux將默認(rèn)地映射該用戶為unconfined_u類型,角色為unconfined_r,以及unconfined_t級別。

限制和非限制用戶都需要接受可執(zhí)行和可寫的內(nèi)存檢查,并且受MCS和MLS機(jī)制的約束。如果一個非限制的用戶執(zhí)行了一個從unconfined_t域向一個允許的域轉(zhuǎn)變的應(yīng)用程序,非限制用戶仍要接受那個轉(zhuǎn)表到的域的限制。這個就保證了即使一個用戶是非限制的,這個應(yīng)用也是受限的,因此,軟件的漏洞所引起的風(fēng)險(xiǎn)就能得到限制

【51CTO.com獨(dú)家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處及出處!】

責(zé)任編輯:佟健 來源: 51CTO.com
相關(guān)推薦

2011-10-10 10:17:16

2017-09-19 15:01:06

PHP漏洞滲透測試

2023-03-26 09:08:36

2015-10-20 15:57:48

ReactiveCociOS

2023-01-12 08:50:46

2024-05-08 08:59:02

2023-07-10 07:22:16

2021-01-01 09:20:20

操作DjangoORM

2016-09-07 18:42:02

Linux進(jìn)程監(jiān)控

2023-08-29 10:27:32

2019-08-23 12:55:03

AI微軟AlphaStar

2011-07-28 16:27:48

域控制器組策略

2017-09-19 15:45:39

2010-07-05 13:08:42

用Visio畫UML圖

2022-09-13 09:02:19

SpringBootStarter機(jī)制

2011-07-25 17:20:51

組策略本地組策略

2012-11-28 11:14:52

網(wǎng)絡(luò)流量安全管理網(wǎng)絡(luò)流量

2011-05-31 14:22:23

2023-03-05 15:28:39

CFSLinux進(jìn)程

2017-03-23 10:24:33

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號