Linux下的Capabilities安全机制分析

更新时间:2023-07-19 22:33:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux下的Capabilities安全机制分析

笪已墅型埋一——‘≤运画爱爹一——

Capabmties安全机制分析

解放军信息工程学院

巫晓明

郭玉东

摘要熟悉和掌握Lmux操作系统所提供的安全机制.对于提高系统安全以及开发出高安全性的应用软件是非常关键的.

本文从内核源码角度分析了Lmux下的capabl|_ties的实现机制,同时分析了如何利用capab_|it惜安全机制来提高系

统安全性.

关键词:L『nux

capabf|_tles

安全机制文件访问权限

引言

L nux是典型的多用户操作系统.早期Llnux中的访问控制机制主要是传统uNIx中的基于用户身份鉴别的自主访问控制DAc(DIscreIlonary

AccesscontroI】.uNl×将文件的访

身份.从而可以进行任伺特权操作。目前.置有seIu,d标志

的root用户程序是L川x最大的安全隐患,攻击者最常用的

攻击途径就是利用r。ot用户的se㈨d程序存在的安全漏洞来获取root身份.从而获得整个系统的控制权.

问者分为三类群体即文件属主(Dwner)与文件属主同组的用户(group).以及其他用户(other).同时将对文件的操作分为读、写执行三种因此不同的访问者与不同的操作方式组成了不同文件访问权限.DAc的主要思想是由文件属

se㈨d机制所带来的安全问题主要在于L川x系统将权限

过分集中于root用户为此.人们提出了种分割root用户

权限的称为capab…t啪的安全访问控制模型.

主来指定文件的访问权限.在L…x中.文件node节点中的

mod8域的第九位用来存储文件访问权限.

同样的.Lmux在系统中设立了

个超级用户root用于

系统管理.root用户对系统具有一切特权操作.比如,可以访问系统中的任何文件.修改任何文件的文件访问权限、加载{或卸载)系统模块等等.

对于普通用户的一些只有root用户才能完成的操作需要(如用户修改口令时.就需要root权限来读写系统的口令文

一.Cap.biIities安全模型介绍

capabI㈨es的主要思想在于分割root用户的特权.即将r00t的特权分割成不同的capabIlIty(本文译为权能),每种权能代表一定的特权操作.例如.权能cAP—sYs—MoDuLE表示用户能够加载(或卸载)内核模块操作的特权操作.而cAP—sETuID表示用户能够修改进程用户身份的特权操作.

在c日pab㈨嘲中系统将根据进程拥有的权能来进行特权操作

的访问控制.

在capabl|It|es中,只有进程和可执行文件才具有权能.每个进程拥有三组权能集.分别称为c

ap—effe

cll

ve

件).L川×提供了一种称为setuId的机制来解决.setuid机

制即允许进程在运行过程中改变用户身份,从而可以获得不同的访问权限.L-nux中的进程因此拥有丰富的用户身份信息uld(真实用户号}euld(有效用户号).suId(保存用户号}.fsu-d(文件系统用户号】,通过这些用户号进程可以方便灵活地对其用户身份做暂时改变或恢复等操作.进程改变用户身份有两种方式一种是给可执行文件置上某种标志C称为se㈨d标志).进程执行这些文件时便拥有与文件属主

cap—mhe…able、cap—permⅢed(分别简记为:pEp.pP).

其中.cap—permltted表示进程所能拥有的最大权能集.cap—effectlve表示进程当前可用的权能集.而cap—lnheⅢ曲Je则表示进程可以传递给其子进程的权能集.系统根据进程的c8p—effectlve权能集来进行访问控制,cap—effect_ve为cap—permmed的子集.进程可以通过取消cap—effecllve中的某些权能来放弃进程的一些特权。

可执行文件也拥有三组权能集.对应于进程的三组权能集,分别称为cap—effectl”.cap—aIlowed和c印一forced(分别简记为fE.玑伊).其中.cap—alfowed表示程序运行时可从原进程的caP—mherltable中继承的权能集,capjorced表示运行文件时必须拥有才能完成其服务的权能集cap—effectIve则表示文件开始运行时可以使用的权能.

相同的有效用户身份.另一种是通过调用LⅢx提供的系统

调用setuld()

sefeuld().se仃euIdf】,setresuld(),setfsuid

{)等I统称为setⅧd())来改变进程用户身份.

setuId机制既解决了普通用户访问系统特殊资源的需要.同时又通过具体程序来限制用户的访问行为从而保证了这些系统资源的安全性.

但是.setu-d机制在提供方便的同时也带来了安全问题.如普通用户在执行root用户的selurd程序时.便拥有了root

18计算机安全20。3

万方数据 

Linux下的Capabilities安全机制分析

———_互亟旷—J墅型幽

改变执行映象后的新进程的各权能集将由原进程的权能信息和可执行文件的权能信息来共同决定.这种决定关系可公式化为:

DI=DI

DP

=fP

(f&p|)

OE=DP

&fE

其中.oDpE.叫为新进程的权能信息.DP

pE

pl

为原进程的权能信息;而fPfl

fE则为可执行文件的权能

信息.

从公式可看出.可以通过配置可执行文件的权能集来指定进程的权能集.

=.L.nux内核中capabiIities的实现机制

nux内核从22版本开始就加进了c8p8b¨Ites的概念

与机制并随着版本升高逐步得到改进(本文以L州x24内核为分析对象).但是.到目前为止L川x还不支持可执行文

件的权能集因此还不能通过具体配置可执行文件的权能

集来配置进程的权能集系统只是简单地根据进程的用户身

份来默认进程的权能集.即赋予root用户的进程权能的全集.而将清空普通用户进程的权能集.

1.相关的数据结构

(1)进程控制结构task—struct中与capab…ti s相关的数据结构

struct

task—struct{

kerneI—cap—t

cap—effectIve.cap—InherIt8ble

0ap—perm『lled,

Int

keep—capabi|Itles

目前.LInux定义了29种权能.因此在进程控制结构

ta

SK—s”ucl中用三个32位的整数:cap—effectfve,

cap—Inher旧bk

c8p—permltfed来分别表示进程的三组权能

集,整数的每位代表种权能(高3位没有定义).

在taSK—struct中还目进了~个控制位keep—capabI|:ties.用于控制进程的用户身份由ro。t特权用户变为普通用户时是否保持其权能信息不变.keep—capabI|Ities的值可以通过系统调用prcf【{)来改变。

(2)cap-bset权能边界集(capab;ljty

bounding

set)

Lmux使用一个全局变量cap-bs叭.甩来限定系统中所有进程所能拥有的权能.将c印-bset中的某权能位清0则系统所有进程不会再拥有此权能,cap—bset的值只能在内核编译前改变.

(3)

3ecurebits安全位

secure

blts为个3

2位的位图.目前只定义了

万 

方数据sEcuRE—NoR00T和sEcuRE—N0一sETu旧一FIxuP两位.sEcuRE—NoROOT位.用于控制是否将属主为r。ot的可执行文件的各权能集调整为全集.而sEcuRE—NO—sETuD—Fl×uP位则用于控制进程改变了用户身份后是否对其权能集作相应的调整。securebts的值也只能在内核编译前改变.

2、进程权能集的计算与调整

(1)㈨t进程的具体赋值

州进程是系统启动后运行的第一个用户进程.它的各权能集和keep—capabl【_ties的值在宏定义㈨T—TAsK中具体赋值.具体值为:

cap—e什ectIve=cap—permItted;cap—bseI.cap—lnherltabIe=0.

keep—capab…tles=0

(2)进程调用fo咄()、vfork()或cIone()等函数生成子进程时.子进程复制父进程的各权能集

(3)改变进程映象后的新进程各权能集的重新计算进程调用execve()执行新程序映象后的权能信息将根据可执行文件的权能信息和进程原来的权能信息来共同计算,计算公式为

=DI

pP

;(fP&cap—bset)I(fI&pJ)

DE‘=pP’&fE

其中,pP

pE

pI表示进程调用execve()前的各权能

集DP、pE‘,∥表示调用execve()成功后进程的各权能

集.伊、¨fE表示可执行文件的各权能集cap』se1为系统的权能边界集.

由于目前L川x还不支持可执行文件的权能集,因此系统

将所有可执行文件的各权能集均默认为权能的空集,但是在sEcuRE—NOR00T位的控制下系统可将r001用户进程执行的文件的各权能集调整全集.目前Lmux必须root用户进程所执行

的文件的权能集置为全集。因此.在L㈨x内核中虽是根据进

程拥有的权能进行特权操作的访问控制.但由于可执行文件的杈能集的未实现,系统实际上仍然是按照用户身份进行特权操作的访问控制.因此.如果不能具体配置可执行文件的权能信息,并不能充分发挥capabI¨tes卓越的安全性能。

(4)进程改变用户身份后各权能集的调整

进程改变用户身份后其各权能集是否进行调整将由

ec

reblts中的sEcuRE—N0一sETu|D—FlxuP位和

keep—cap8bi|ites来共同控制.由于在LInux中还不能具体配置

可执行文件的权能集.因此将secureblts和keep—capablI

tes

都设为O,即进程改变用户身份后其权能要作相应的调整.

具体的调整由内核函数cap-emu胁e—set圳d()来完成调整

规则为:

1)如果将进程的euld从0调整为非0(r00t用户的用户号为O),则清空进程的cap

effectIvej

2003

11计算机安全19

Linux下的Capabilities安全机制分析

技7It论坛 毫题

Linu×安金

2)如果进程由特权用户进程(进程的ul。洲dⅫd至

少有一个为o)变为普通用户进程(进程的u旧eu|a都不为。)时

即取消进程的任伺特权:

3)如果进程的e

cap

su

由内核函数c印ableC)来完成c8pab|e(J函数检测进程的有

效权能集(cap—effect岍)来确定进程是否拥有相应的权能。

对于又什访司请求系统主要检查进程的用户身份以及所请求的操作方式是否符合又件访问权限.文件访问请求权限的检查在Lnu×内核中主要由函数vk—per丌1瞰m()来完成。

vh—permcAP—DAc

ss

洁空进程的cap—efreclIve和c印perm…ea

d从非。调整为。

ve。

则将进程的

permmed赋给进程的cap—effect

on()忽略了对拥有cAP—DAc一0VERRD和

sEARCH权能的进程的DAc常规权限的检查。

而如果将进程的keep—capaD…t哦置为1时进程改变

用户身份后不进行权能集的调整.在这种情况下普通用户进程也可拥有权能即也可进行特权操作。

(5)进程各权能集的直接修改

Llnux提供了谩置进程权能集的系统调用capseI()进程可以调用c8pseI()来直接修改除眦进程以外的任何进程的各权能寨。但只有拥有cAP—sETPcAP权能的进程才有此特权操作而且修改后的新权能集必须为该进程cap

permmed的子

READ

总结

从上面的分析我们可以看到

由于还不能具体配置

LInux下的可执行文件的权能集因此Lnu×系统中的进程基木上进是分为拥有所有权能的超级用户进程和没有任何权能的普通用户进程,从某种程度上说.Lnux实际上仍然是根据进程的用户身份来进行特权操作的访问控制。

不过.我们还是可以利用Lnux对Cap8D¨Ies安全模型

即进程不能调用c3pset()为自己增加新的权能。考验

到权能cAP—sETPcAP的可能带来的安全威胁Lmu×在权能边界集cap_Dset中屏蔽了cAPsETPcAP权能。

的现有支持通过正确配置与权能相关的数据结构来提高

nux的安全性。比如从全局变量c印bset中●蔽掉系统不

三、Linux中的访问控制

系统将对所有的文件访问请求或特权操作请求进行相应的权限检查.只有通过相应的的权限检查进程才能进行相应的访问或操作。

对于进程的特权操作请求系统将检查进程的权能信息来

常用的权能就可以保证这些权能所代表的特权操作小会被攻击者滥用.从而可性提高整’个系统的安全性.将系统需要的所有功能模块都编译进内核

cAP

然后清除ca

p—b

eI中的

sYs—MoDuL[权能位就叫以禁止任何进程进行加载(或

卸载)内核模块的特权操作这样就可以杜绝些通过L川x

的可加载内核模块机制来实现的内核木马。删除系统或进程中多余的权能对系统的安全性总是很有好处的。o

决定是否允许进程进行相关操作。mux对进程的权能的检查

袋电子政务挺求与安全]》

出版日期:2003—5—1译作者:陈兵

出版社:北京犬学出版社定价:人民币23元

[内容提要]

本书主要围绕电子政务的开发技术和安全技术两方面进行展开.开发技术主要包括电子政务系统的硬件环境软件环境以及各种信息处理技术.电子政务的安全技术则探讨了安全防范技术.信息加解密技术和高可用性技术等内容.并给出电子政务的总体安全廨决方案和安全管理方案。

本书适合国家公务员。党校与行政学院师生。MPA.MBA公共管理及电子商务等相关专业高等院校师生使用也适合人事相关电子政务工作的管理人员、信息技术人员使用.

20,f算机安全2003

万方数据 

Linux下的Capabilities安全机制分析

Linux下的Capabilities安全机制分析

作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:

巫晓明, 郭玉东解放军信息工程学院

计算机安全

NETWORK & COMPUTER SECURITY2003,""(11)0次

本文链接:/Periodical_dzzwyjc200311008.aspx授权使用:浙江大学(wfzjdx),授权号:d941da5f-896c-4c0d-9c19-9df100dd403c

下载时间:2010年9月14日

本文来源:https://www.bwwdw.com/article/5y61.html

Top