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

技术编号:14742132 阅读:331 留言:1更新日期:2017-03-01 17:14
本发明专利技术公开了一种基于强制访问控制与权能结合以去除Root权限的方法,包括以下步骤:1)将具有S位的程序进行归类;2)将完成归类的具有S位的程序按照需要赋予权能,赋给程序相对应的二进制可执行文件权能;3)对发出操作执行的用户和将要执行的目标程序的类型进行对比验证,如果对比验证通过、即用户和目标程序相关联,则运行目标程序;如果对比验证不通过、即用户和目标程序不关联,则拒绝用户的操作执行请求并退出。本发明专利技术的基于强制访问控制与权能结合以去除Root权限的方法,使用Linux的S位程序机制,实现强制访问控制,使得普通用户执行程序后将获得超级用户的特权,通用性强,兼容性好,灵活性高,提升操作系统安全性。

【技术实现步骤摘要】

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

技术介绍
自主访问控制(DAC,DiscretionaryAccessControl)是一种最为普遍的访问控制手段,DAC的主要特征体现在:主体可以自主的把自己所拥有的客体的访问控制权限授予其他主体;或者从其他主体回收所授予的权限;用户可以按照自己的意愿对系统的参数做适当修改以决定哪些用户可以访问他们的文件,即一个用户可以有选择的与其他用户共享他的文件。用户有自主的决定权。Linux操作系统的访问控制模式以自主访问控制为主。强制访问控制(MAC,MandatoryAccessControl)是根据客体的敏感级和主体的许可级来限制主体对客体地访问,进程和文件都有一个固定的安全属性。系统通过安全属性来判断进程是否可以访问某个文件。安全属性是强制性的规定,是由安全管理员或操作系统根据特定的规则确定的,用户和用户的程序不能加以修改。如果系统认为具有某一个安全属性的用户不适用于访问某个文件,那么包括文件拥有者在内的所有人都无法使该用户获得访问该文件的权力。随着计算机领域不断向其他领域的渗透,其安全需求是不可预知的,需要传统的DAC和MAC相结合来描述和控制。另外,Sandhu等学者提出了一套以角色为基础的存取控制(Role-basedAccessControl,RBAC)模型,其基本组件包括使用者(User)、角色(Role)、授权(Authorization)和会话(Session)。第一个RBAC模型公布于1992年,95年重新修订。1996年,Sandhu提出了一个公认的较为全面的RBAC框架模型,之后一些的新的在其之上改进的模型相继提出并得到了很好的应用。最小特权原则是系统安全中最基本的原则之一。最小特权原则(LeastPrivilegeTheorem)就是“应限定网络中每个主体所必须的最小特权,确保可能的事故、错误、网络部件的篡改等原因造成的损失最小”。角色管理机制依据“最小特权原则”对系统管理员的特进行分化,每个用户只能拥有刚够完成工作的最小特权。然后根据系统管理任务设立角色,依据角色划分权限,每个角色各负其责,权限各自分离,一个管理角色不拥有另一个管理角色的特权。最小特权原则即为每个使用者分配相应的权利(即授权)的行为准则。草案标准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)根据所述特权程本文档来自技高网
...
基于强制访问控制与权能结合以去除Root权限的方法

【技术保护点】
一种基于强制访问控制与权能结合以去除Root权限的方法,其特征在于,包括以下步骤:1)将具有S位的程序进行归类;2)将完成归类的具有S位的程序按照需要赋予权能,赋给程序相对应的二进制可执行文件权能;3)对发出操作执行的用户和将要执行的目标程序的类型进行对比验证,如果对比验证通过、即用户和目标程序相关联,则运行目标程序;如果对比验证不通过、即用户和目标程序不关联,则拒绝用户的操作执行请求并退出。

【技术特征摘要】
1.一种基于强制访问控制与权能结合以去除Root权限的方法,其特征在于,包括以下步骤:1)将具有S位的程序进行归类;2)将完成归类的具有S位的程序按照需要赋予权能,赋给程序相对应的二进制可执行文件权能;3)对发出操作执行的用户和将要执行的目标程序的类型进行对比验证,如果对比验证通过、即用户和目标程序相关联,则运行目标程序;如果对比验证不通过、即用户和目标程序不关联,则拒绝用户的操作执行请求并退出。2.根据权利要求1所述的基于强制访问控制与权能结合以去除Root权限的方法,其特征在于:所述步骤1)的具体实施步骤为,1-1)明确每个权能位的作用;1-2)分析每个具有S位的程序的功能和源代码,按照赋予权能的种类对具有S位的程序进行分类,屏蔽掉多余的权能位。3.根据权利要求1所述的基于强制访问控制与权能结合以去除Root权限的方法,其特征在于:所述步骤2)的具体实施步骤为,2-1)给特权程序的二进制可执行文件赋予权能,并将权能和可执行文件在文件系统中的节点信息中的权能字段联系起来;2-2)对设置权能后的特权程序进行测试,以确保在运行特权程序时,能够获取特权程序的权能许可集。4.根据权利要求3所述的基于强制访问控制与权能结合以去除Root权限的方法,其特征在于:所述步骤2-1)的具体实施步骤为,在inode结构体中增加一个32位的整型变量file_permitted作为文件的权能字段来扩充文件属性,将特权程序所需权能赋予file_permitted变量;在do_execve()函数中,通过binprm结构获得可执行文件的文件名filename,找到该文件后,在compute_creds()函数的权能计算中,使用这个file_permitted变量表示的文件的权能集合来屏蔽掉进程多余...

【专利技术属性】
技术研发人员:宋子锋杨维永黄益彬纪元刘苇李斌斌李炜键屠正伟
申请(专利权)人:南京南瑞集团公司南京南瑞信息通信科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有1条评论
  • 来自[广东省深圳市电信] 2019年12月05日 14:47
    6666
    1
1