基于强制访问控制与权能结合以去除Root权限的方法与流程

文档序号:12158302阅读:324来源:国知局
基于强制访问控制与权能结合以去除Root权限的方法与流程

本发明涉及一种去除Root权限的方法,特别是涉及一种基于强制访问控制与权能结合以去除Root权限的方法,属于操作系统安全技术领域。



背景技术:

自主访问控制(DAC,Discretionary Access Control)是一种最为普遍的访问控制手段,DAC的主要特征体现在:主体可以自主的把自己所拥有的客体的访问控制权限授予其他主体;或者从其他主体回收所授予的权限;用户可以按照自己的意愿对系统的参数做适当修改以决定哪些用户可以访问他们的文件,即一个用户可以有选择的与其他用户共享他的文件。用户有自主的决定权。Linux操作系统的访问控制模式以自主访问控制为主。

强制访问控制(MAC,Mandatory Access Control)是根据客体的敏感级和主体的许可级来限制主体对客体地访问,进程和文件都有一个固定的安全属性。系统通过安全属性来判断进程是否可以访问某个文件。安全属性是强制性的规定,是由安全管理员或操作系统根据特定的规则确定的,用户和用户的程序不能加以修改。如果系统认为具有某一个安全属性的用户不适用于访问某个文件,那么包括文件拥有者在内的所有人都无法使该用户获得访问该文件的权力。

随着计算机领域不断向其他领域的渗透,其安全需求是不可预知的,需要传统的DAC和MAC相结合来描述和控制。另外,Sandhu等学者提出了一套以角色为基础的存取控制(Role-based Access Control,RBAC)模型,其基本组件包括使用者(User)、角色(Role)、授权(Authorization)和会话(Session)。第一个RBAC模型公布于1992年,95年重新修订。1996年,Sandhu提出了一个公认的较为全面的RBAC框架模型,之后一些的新的在其之上改进的模型相继提出并得到了很好的应用。

最小特权原则是系统安全中最基本的原则之一。最小特权原则(Least Privilege Theorem)就是“应限定网络中每个主体所必须的最小特权,确保可能的事故、错误、网络部件的篡改等原因造成的损失最小”。角色管理机制依据“最小特权原则”对系统管理员的特进行分化,每个用户只能拥有刚够完成工作的最小特权。然后根据系统管理任务设立角色,依据角色划分权限,每个角色各负其责,权限各自分离,一个管理角色不拥有另一个管理角色的特权。最小特权原则即为每个使用者分配相应的权利(即授权)的行为准则。草案标准POSIX1003.1e所定义的能力机制正是实施最小特权的一种方式。

POSIX1003.1e规定操作系统的每个进程关联一个权能状态。其中继承集表示子进程从父进程获得的权能,进程间通过权能继承形成一个继承链。通过继承集,子孙进程能够继承来自父辈进程的权能。许可集表示进程能够使用的权能。如果某个权能属于许可集,不属于有效集,则表示权能暂时禁止这个能力;有效集表示进程真正具有的特权,当一个进程试图进行特权操作时,操作系统将检查进程有效集是否具有相应的权能,如果有,则允许操作,否则拒绝操作。

POSIX1003.1e虽然规范了权能机制,为它的实现提供了指南,但POSIX1003.1e仅仅把权能与进程和文件关联,按照这种方式实现的操作系统是很难使用的,因为操作系统一般都是以基于用户身份的访问控制为基础的。

Linux操作系统部分实现了遵循POSIX1003.1e的权能机制,但他只支持进程权能,不支持文件权能。仅有进程权能很难约束超级用户及setuid程序(执行该程序的用户可以获得程序拥有者的权限)和setgid程序(执行该程序可以获得程序拥有者所在用户组的权限),这些程序很容易造成特权滥用。

系统中实现了基于角色的强制访问控制模型,但由于系统是基于Linux操作系统的,所以需要先进行DAC检查,然后进行MAC检查。所以有些程序的执行需要root权限的支持,而root权限的存在对系统又会产生另外一个安全隐患。

在Linux系统中用户可以分为两类:超级用户(root)和普通用户。超级用户具有配置、控制系统的全部特权,也可以不受DAC限制以任何方式访问任何文件,而普通用户没有这样的特权。这样可以防止普通用户修改系统,从而保证系统的安全。但在某些时候需要允许普通用户拥有超级用户的特权,去执行某些特殊操作。

当前Linux内核支持Capability的体现相当于原子操作的性质:即进程如果是特权的,则有所有权能;如果是普通的,则没有任何权能。这样使capability形同虚设。而攻击者利用S位乘虚而入并没有得到实质的阻隔,使得缓冲区溢出攻击成为可能。例如,ping只需要CAP_NET_RAW,如果它放弃除这个能力之外的其他能力,即便这个进程存在安全缺陷,也不会对系统造成太大的损害;反之,于安全则没有任何限制的意义。而在vfs_permission()中可以看到,内核对进程身份的检查是粗糙的,只要和文件属主一致,就没有针对权能的检查。而在权能部分的检查恰恰也是粗糙的,只要有权能,就无关进程的身份,两者并没有互相制约。

需要解决的主要问题表现在:

1、Linux在文件系统访问控制中对euid=0的情况检测的不够详细,对权能位过于大意;

2、在运行S位程序时候,将root的权能过于粗糙的分配给了进程,而没有从实际出发。



技术实现要素:

本发明的主要目的在于,克服现有技术中的不足,提供一种基于强制访问控制与权能结合以去除Root权限的方法,使用Linux的S位程序机制,实现强制访问控制,使得普通用户执行程序后将获得超级用户的特权,提升操作系统安全性。

为了达到上述目的,本发明所采用的技术方案是:

一种基于强制访问控制与权能结合以去除Root权限的方法,包括以下步骤:

1)将具有S位的程序进行归类;

2)将完成归类的具有S位的程序按照需要赋予权能,赋给程序相对应的二进制可执行文件权能;

3)对发出操作执行的用户和将要执行的目标程序的类型进行对比验证,如果对比验证通过、即用户和目标程序相关联,则运行目标程序;如果对比验证不通过、即用户和目标程序不关联,则拒绝用户的操作执行请求并退出。

本发明进一步设置为:所述步骤1)的具体实施步骤为,

1-1)明确每个权能位的作用;

1-2)分析每个具有S位的程序的功能和源代码,按照赋予权能的种类对具有S位的程序进行分类,屏蔽掉多余的权能位。

本发明进一步设置为:所述步骤2)的具体实施步骤为,

2-1)给特权程序的二进制可执行文件赋予权能,并将权能和可执行文件在文件系统中的节点信息中的权能字段联系起来;

2-2)对设置权能后的特权程序进行测试,以确保在运行特权程序时,能够获取特权程序的权能许可集。

本发明进一步设置为:所述步骤2-1)的具体实施步骤为,

在inode结构体中增加一个32位的整型变量file_permitted作为文件的权能字段来扩充文件属性,将特权程序所需权能赋予file_permitted变量;在do_execve()函数中,通过binprm结构获得可执行文件的文件名filename,找到该文件后,在compute_creds()函数的权能计算中,使用这个file_permitted变量表示的文件的权能集合来屏蔽掉进程多余的权能位。

本发明进一步设置为:所述步骤3)的具体实施步骤为,

3-1)预先强制将操作系统的特权程序按功能进行分类;

3-2)根据所述特权程序的分类,将分类后的每一类特权程序分别与对应的管理员角色进行关联,得到每一个特权程序与管理员角色之间的关联关系;

3-3)将所述每一个特权程序赋予安全标记,并将其与管理员角色之间的角色对应关系写入安全策略文件,在内核启动时加载入内核,对安全策略文件提供修改配置文件的特权程序,将修改配置文件的特权程序与指定的管理员角色进行关联,使得只有指定的管理员角色才能对安全策略文件进行修改、编译和加载;

3-4)用户请求运行特权程序时,将查询安全策略来确定特权程序与管理员角色是否关联,如果关联、则继续执行目标程序;如果不关联、则拒绝用户执行请求并退出。

本发明进一步设置为:所述步骤3-2)中的管理员角色,具体包括系统管理员、安全管理员和审计管理员三个;所述步骤3-1)中的预先强制将操作系统的特权程序按功能进行分类,具体是指将操作系统的特权程序按功能分类为由系统管理员执行、由安全管理员执行和由审计管理员执行三类。

本发明进一步设置为:所述步骤3-3)中的指定的管理员角色,具体是指安全管理员。

本发明进一步设置为:该方法基于Linux权能和基于角色的强制访问控制模型实现。

本发明进一步设置为:该方法所有的访问控制均在Linux内核层执行。

与现有技术相比,本发明具有的有益效果是:

1、使用Linux的S位程序机制,实现强制访问控制,使得普通用户执行程序后将获得超级用户的特权,通用性强,兼容性好,灵活性高,能很好地提升操作系统的安全性。

2、通过预先强制将操作系统的特权程序进行分类,并将分类后的每一类特权程序分别与不同的管理员角色进行关联,限定了特权程序的访问权限,实现了强制访问控制,提升了操作系统的安全性。

3、通过赋予特权程序相应的权能,使得程序在执行过程中不用再给予其root权限,从而降低了特权程序对操作系统的威胁。

4、通过增强管理员对安全策略文件的安全管理,防止未经授权的恶意程序修改、编译和加载安全策略文件,从而保证操作系统的安全。

上述内容仅是本发明技术方案的概述,为了更清楚的了解本发明的技术手段,下面结合附图对本发明作进一步的描述。

附图说明

图1为本发明实施例的访问原理示意图;

图2为本发明实施例中Linux权能实现过程的判定流程图;

图3为本发明实施例中特权程序与管理员角色关联关系示意图。

具体实施方式

下面结合说明书附图,对本发明作进一步的说明。

本发明提供一种基于强制访问控制与权能结合以去除Root权限的方法,基于Linux权能和基于角色的强制访问控制模型实现,所有的访问控制均在Linux内核层执行,如图1所示,包括以下步骤:

1)将具有S位的程序进行归类;

具体实施步骤为,

1-1)明确每个权能位的作用;

1-2)分析每个具有S位的程序的功能和源代码,按照赋予权能的种类对具有S位的程序进行分类,屏蔽掉多余的权能位。

2)将完成归类的具有S位的程序按照需要赋予权能,赋给程序相对应的二进制可执行文件权能;

具体实施步骤为,

2-1)给特权程序的二进制可执行文件赋予权能,并将权能和可执行文件在文件系统中的节点信息中的权能字段联系起来;

如图2所示,关于权能的设置如何实现:在/fs/exec.c中有一个prepare_binprm()的函数,这个函数在进程加载可执行代码之前要填写binprm数据结构,这个结构将直接影响到允许S文件时,进程的有效身份是如何变化的。内核根据这个结构的值来改写进程task结构。内核在load二进制可执行文件时,调用compute_creds()函数来完成对id和权能的校正。在可执行映像将要被加载的时候,exe.c()函数中还有一个子函数load_a.out_binary()将会根据bprm结构中的数据和当前进程的特征做出判断,决定给当前进程身份和能力进行切实有效地修正。

但是,当前Linux内核,需要解决的主要问题表现在:Linux在文件系统访问控制中对euid=0的情况检测的不够详细,对权能位过于大意;在运行S位程序时候,将root的权能过于粗糙的分配给了进程,而没有从实际出发。

针对所存在的问题,将具有S位的程序重新归类,将inode的权能信息控制字段利用起来,将运行S位程序安装所需进行权能赋予,减少权能的任意赋予,减少该进程由于多余的无用的权能给系统造成的隐患。

具体实施步骤为,

在inode结构体中增加一个32位的整型变量file_permitted作为文件的权能字段来扩充文件属性,将特权程序所需权能赋予file_permitted变量;在do_execve()函数中,通过binprm结构获得可执行文件的文件名filename,找到该文件后,在compute_creds()函数的权能计算中,使用这个file_permitted变量表示的文件的权能集合来屏蔽掉进程多余的权能位。

2-2)对设置权能后的特权程序进行测试,以确保在运行特权程序时,能够获取特权程序的权能许可集。

3)对发出操作执行的用户和将要执行的目标程序的类型进行对比验证,如果对比验证通过、即用户和目标程序相关联,则运行目标程序;如果对比验证不通过、即用户和目标程序不关联,则拒绝用户的操作执行请求并退出;

具体实施步骤为,

3-1)预先强制将操作系统的特权程序按功能进行分类;

3-2)根据所述特权程序的分类,将分类后的每一类特权程序分别与对应的管理员角色进行关联,得到每一个特权程序与管理员角色之间的关联关系;

3-3)将所述每一个特权程序赋予安全标记,并将其与管理员角色之间的角色对应关系写入安全策略文件,在内核启动时加载入内核,对安全策略文件提供修改配置文件的特权程序,将修改配置文件的特权程序与指定的管理员角色进行关联,使得只有指定的管理员角色才能对安全策略文件进行修改、编译和加载;

3-4)用户请求运行特权程序时,将查询安全策略来确定特权程序与管理员角色是否关联,如果关联、则继续执行目标程序;如果不关联、则拒绝用户执行请求并退出。

其中,管理员角色,具体包括系统管理员、安全管理员和审计管理员三个;预先强制将操作系统的特权程序按功能进行分类,具体是指将操作系统的特权程序按功能分类为由系统管理员执行、由安全管理员执行和由审计管理员执行三类;指定的管理员角色,具体是指安全管理员。

根据特权程序的功能,将操作系统的特权程序划分为由系统管理员执行、由安全管理员执行和审计管理员执行三类,分类后的特权程序再与对应的管理员角色进行关联,即由系统管理员执行的特权程序与系统管理员角色关联,以此类推。系统中存在多个特权程序,每个特权程序只能与一个管理员角色关联,一个管理员角色则可关联多个特权程序,如图3所示。

本发明的创新点在于,通过对特权程序进行分类,明确不同特权需要赋予相对应的权能,防止赋予权能过大使得操作系统安全受到威胁,也避免赋予权能过小导致程序无法正常使用的问题;给特权程序的二进制可执行文件赋予权能,将权能和可执行文件在文件系统中的节点信息中的权能字段联系起来,在运行特权程序时,能够获取特权程序的权能许可集;将特权程序进行分类并与不同的管理员角色进行关联,使得特定的特权程序只能由特定的管理员角色执行,而特权程序由于强制访问控制和权能限制了其访问权限,有力的提升了操作系统的安全性。

以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1