金京犬,楊 憶(.安徽郵電職業技術學院 計算機系,合肥 3003;.淮北師范大學 計算機科學與技術學院,安徽 淮北 35000)
基于SELinux用戶角色管理機制的改進探討
金京犬1,楊憶2
(1.安徽郵電職業技術學院 計算機系,合肥 230031;2.淮北師范大學 計算機科學與技術學院,安徽 淮北 235000)
針對SELinux對用戶身份管理功能存在安全隱患,將Linux組概念作為SELinux身份確定可選項,提出了解決不同用戶之間不能靈活分配相同的角色集問題、用戶在不同的角色之間設置轉換模式不靈活問題及安全隱患問題的方法。
SELinux;RBAC;SELinux安全體系結構;用戶角色管理
SELinux(Security Enhanced Linux)由美國國家安全局(NSA)在2001研發的一個增強型安全模塊,當時NSA的主席就建議SELinux加入到Linux2.5內核中,由于有很多關于Linux安全模塊的機制正在構建中,Linux的創始人Linus Torvald并沒有接受這個建議,只是決定做一個“統一可加載安全模塊”。SELinux經過2 a的開發,到2003年12月,Linux安全模塊(LSM)真正成為Linux2.6內核標準,到2006年為止,只有SELinux依舊遵守LSM所有標準,SELinux順利成章的成為了Linux安全機制的代表。SELinux安全增強機制實現了基于用戶角色訪問的控制機制(RBAC)、類型增強模型(TE)和可選的多級訪問控制機制(MLS)。TE模型為SELinux機制提供了最小特權機制,RBAC模型是在TE模型的基礎上建立起來的,簡化了用戶的高層次管理[1-2]。
SELinux是在Linux2.6內核中額外加入的一個系統安全層,其主要目標是防止已經遭泄露的系統服務訪問用戶數據。SELinux采用的安全體系結構是Flask結構,如圖1所示,Flask結構由安全服務器、訪問向量緩存(AVC)、對象管理器3個部分組成。安全服務器是一個獨立邏輯單元的安全策略和通用接口封裝在一起形成的,對象管理器是詳細描述安全策略判定結果的單元,訪問向量緩存位于安全服務器和對象管理器中間,主要是把安全服務器上的一些安全策略提供給對象管理器應用。
SELinux用戶角色控制模型即 RBAC (Role-Based Access Control)模型[3-4],是由美國Ravis.sandhu教授提出的安全策略模型家族RBAC96,它由基本的RBAC0模型,等級RBAC1模型,約束RBAC2模型,組合RBAC模型組成?;镜腞BAC模型主要有4個組成部分:用戶,角色,權限,會話。RBAC控制模型如圖2所示。

圖1 Flask安全體系結構

圖2 RBAC模型
RBAC模型的基本思想是授權用戶的訪問,通常起到一個組織中的用戶確定的作用。RBAC授權授予角色,角色授權給用戶,用戶不直接與許可關聯。RBAC權限的管理由管理員統一執行,RBAC根據用戶在組織內的角色進行授權和訪問控制、授權規則強加給用戶,用戶無法自主訪問傳遞給其他人,這是一個非自治的集中訪問控制模式。
在RBAC用戶角色控制模型中,當每一個用戶進入系統取得操作控制權時候,就會得到一個會話用戶和角色之間的關系,如果用戶想獲得某個操作權限就必須通過會話機制激活。
Linux操作系統中的用戶身份有3類,第一類是特權用戶root,它享有無限的權限;第二類是系統用戶,改類系統是不能登錄用來登錄系統的;第三類就是普通用戶,該類用戶的權限有被約束。為了保證Linux操作系統的安全,Linux的用戶,密碼和組分別存放在/etc/passwd、/etc/shadow、/etc/group文件中。
在SELinux實現中,SELinux用戶身份與原有的Linux用戶身份是2個獨立的個體,SELinux訪問控制體系與原有的Linux訪問控制體系不同,雖然他們共存于同一個系統中,但是差別也是非常大的,SELinux用戶身份是一種安全上下文中的安全屬性,它主要是對主體進入什么樣的邏輯空間(域)產生影響。主要有3類SELinux的用戶身份類型,第一種是用system_u表示的系統進程和客體的身份;第二種是user_u表示的尚未定義的SELinux身份;第三種是用Linux系統本身的用戶名代表Linux 和SELinux對應的用戶身份。
當登錄Linux操作系統的時候,如果用戶存在,用戶(用戶名)都會被設定成一個SELinux身份,該身份定義了它能使用的角色。根據角色用戶被賦予默認的安全上下文,如果有多個安全上下文,則有用戶自行確定選擇哪種。如果在安全策略庫中沒有與用戶名對應的用戶申明規則,則使用缺省的SELinux身份(user_u)。SELinux用戶身份屬性確定過程如圖3所示。

圖3 SELinux身份確定過程
從現有的SELinux運行情況來看,SELinux用戶身份屬性確定過程存在一些問題
(1)在不同用戶之間不能靈活分配相同的角色集[5]。大型系統中需要用戶和角色數量非常多,按照目前的SELinux用戶確定過程來看,如果不考慮默認規則的話,需要為每一個用戶申請相應的用戶申明規則,這樣顯得非常繁瑣和麻煩。
(2)用戶在不同的角色之間設置轉換模式不靈活并且有安全隱患。完成一個工程項目,一個用戶需要多個角色集,根據現有的方式,或在每次重寫用戶指定的規則和重新加載安全策略,或將用戶所有的角色中都寫入用戶申明規則里。這樣一來就不能遵循RBAC模型的最小特權原則,從而導致用戶獲取多余的權限,致系統不穩定不安全。
針對上述可能存在的2個問題,通過引入組概念到SELinux身份確認過程,把用戶所在的主組和附屬組捆綁使之成為SELinux身份的選擇項,改進的SELinux身份確認過程如圖4所示。當加入Linux組作為SELinux用戶身份驗證時,可以為每個組指定相應的安全策略,即將組名和角色做一個映射關系,把相同的角色集集中加入到同一個組中,而不需要為每一個用戶指定相應的用戶申明規則,這就解決了在不同用戶之間不能靈活分配相同的角色集問題。

圖4 改進的SELinux身份確認過程
通過新建多個組,同時為它們把不同角色的用戶申明規則寫入到安全策略上下文中,當用戶在不同角色集中切換身份時,不需要為不同角色集重寫用戶申明規則和重加載安全策略,只需要添加用戶到主組或者附屬組就可以了。如果不需要用戶擁有某個角色集的時候,只需要從組中把用戶刪除即可。這就解決了用戶在不同的角色之間設置轉換模式不靈活并且有安全隱患的問題。
在SELinux的實現系統中,將用戶名與SELinux用戶身份關聯并確定安全上下文的工作主要是由登錄的login進程初始化完成的,由SELinux模塊中的pam_selinux.so模塊的pam_sm_open_session()等函數來實現的,并在此基礎上修改進和擴展該函數。另外由于把組名作為SELinux身份確定的一個特點,需要新增一個組名選擇函數selectAdd_group_context()。該函數的執行過程是:
第1步:根據列表*supgrouplist[]第一項的值獲取用戶所屬的主組名。
第2步:詢問用戶是否顯示其他的組名,如果是,則進入第3步,否則顯示主組名。
第3步:根據提示選擇組名,并把結果返回。
pam_sm_open_session函數偽代碼如下:
pam_sm_open_session()
{
調用pam_get_item()函數獲取會話的函數指針
{
if是根據有用戶確定SELinux身份
調用get_order_context_list()函數,用戶名和安全上下文關聯
if根據組名確定SELinux身份
{
fopen組文件/etc/group,并從中讀取記錄
求用戶的附屬組的個數;
求對應該用戶的主組名;
}
調用selectAdd_group_context()函數;
求該組名相對應的安全上下文;
}}
SELinux用戶管理其實就是SELinux強制訪問控制方面的管理,其核心管理就是對SELinux用戶身份的相關管理。SELinux支持的RBAC角色轉換模型,靈活的實現了用戶的強制訪問機制,但是在大型企業用戶和角色的數量很大的前提條件下,SELinux角色間的關系是非常復雜的,傳統的RBAC角色管理模型不能夠滿足。本文在SELinux身份確認過程中引入了linux組的概念,實驗表明,通過將Linux組名作為SELinux身份確定的可選項,解決了不同用戶之間不能靈活分配相同的角色集問題以及用戶在不同的角色之間設置轉換模式不靈活并且有安全隱患的問題,更好的增進了Linux操作系統的安全性。
[1]SMALLEY S,VANCE C,SALMON W.Implementing SELinux as a Linux Security Module[R].NAI Labs Report.2006.
[2]SANDHURS,COYNEEJ,FEINSTEINHL,etal.RoIe-based Access Control Models[J].IEEE Computer,1996,29(2):38-47.
[3]黃易冬,沈廷芝,朱亞平.SELinux安全機制和安全目的研究[J].微計算機信息,2004(7):115-117.
[4]肖永康,紀翠玲,謝寶恂,等.SELinux的安全機制和安全模型[J].計算機應用,29(S1):66-68.
[5]劉巖.SELINUX的研究與改進[D].南京:南京航空航天大學,2010.
Discussion on the Improvement of User's Role Management Mechanism Based on SELinux
JIN Jing-quan1,YANG Yi2
(1.Anhui Post and Telecommunication College,Computer Departments,Hefei 230031,China;
2.School of Computer Science and Technology,Huaibei Normal University,Huaibei,Anhui 235000,China)
This paper discusses the security vulnerability in SELinux's role management.Taking the Linux's group concept as options for identification,the author comes up with relevant solutions to the inflexible assignment of role set and conversion modes among different users as well as to the security vulnerability and this paper have certain references.
SELinux;RBAC;SELinux security architecture;user's role management
TP316.81
A
1673-1891(2016)02-0039-04
10.16104/j.issn.1673-1891.2016.02.012
2016-03-22
安徽省高校自然科學基金項目“企業Linux服務器的安全應用研究”(KJ2016A382)。
金京犬(1982—),男,安徽安慶人,碩士,講師,研究方向:嵌入式。