论文部分内容阅读
摘 要: 安全Linux操作系统是基于Linux操作系统的基础上增加了相关安全性能维护机制,安全模式的开发可以为Linux操作系统内核加载提供更方便的通道。本文通过对Linux操作系统的机制分析,通过对LSM安全模块的研发避免系统操作运行中遇到各种不同安全隐患,旨在增强系统的安全性能。
关键词: 操作系统安全;Linux安全模块;策略
1 LSM的设计理念
在安全性能上,因Linux内核系统仅提供UNIXDAC自主访问控制机制,及POSIX.1e中capabilities机制,只具备标识、识别及简单的日志功能,这对计算机系统安全要求是不够的,也会对计算机的发展和应用起阻碍作用。在这一缺陷被发现之后,为增强系统安全性能,各种安全模型都在不断的研发中,其中,应用比较广泛的有域和类型增强(DTE)、安全增强型Linux(SE Linux)、Linux入侵检测系统(LIDS)等,但在和Linux内核配套使用中还是存在一定的缺陷。2001年3月份,美国国家安全局在Linux内核峰会上展示了他们对SE Linux的最新研究成果,新研发出的SE Linux系统使系统的访问控制变得更灵活,而且还能在和Linux的配套使用中相互协调,基于这些突出的优势,Linux安全模块(Linux security module,LSM)很快应运而生。LSM是依附于Linux内核中较为轻便的通用访问控制架构,使Linux可以加载各种不同的安全访问控制模型,并且实现用户自由加载安全模块,在一定程度上使Linux安全访问控制机制更便捷。Linux内核和Linux安全构架存在的差异性,给LSM的设计带来技术上困扰,因此研发出的安全模式必须要符合以下要求:
1)计算机系统操作的过程是在不同环境中进行工作,需要的安全模块保护要多元化,所以必须能够支持不同模块的加载。
2)能够跟现存的POSIX.1e和capabilities配合使用,并且可以把它加入可选的安全模块进行储备。
3)技术在使用中对内核设置没有太大的冲突,尽量降低对Linux的影响,支持内核的高速运转。
2 LSM的设计突破
基于以上的设计限制条件,LSM在研发的过程中就得满足上述的内容才可能让计算机拥有一个更好的发展前景。对钩子(Hook)结构的了解,可以对关键性技术的修改进行难点突破。
1)隐藏安全区域防御性措施。这里的隐藏区域指在系统中不透明的安全区域。可以在内核关键的数据结构中添加void*字符的类型数据,安全模块就能通过含有这些字符的数据把具体作用对象和安全属性相连接而发挥作用。由于一些内核携带对象在先前就已经存在安全模块的初始内容中,所以内核被输入新模块时也不能影响到原模块的对象安全处理。但另一些钩子在面对内核数据结构的解析和分配时,free_security钩子和alloc_security钩子也会跟着释放和分配安全数据,这时其他的钩子就会融入安全数据的更新中,进行数据的改写导致安全模式瘫痪。对这样的情况可以采取以下方案进行解决:① 在模块的初读使用中要仔细了解内核的数据结构,对已经存在安全模块进行安全区域分组,避免数据混淆。② 对经常使用的原模块进行检测,并对其进行隔离安全设置避免在工作时遭受其他困扰。③ 另一种方法可以忽视这种情况的发生,因为它们只是作为基本的访问控制机制来设置。
2)安全系统的调用:与安全应用相关联的新系统调用安全模块通过LSM内核提供的安全系统机制来支持。SELinux模块的研发为系统调用提供更多可能性。这个系统的调用参数为(unsignedintcall,unsignedintid,unsignedlong*args)分别代表:特定的系统调用call、安全模块ID、传递给系统调用call,而系统的命名是security()。
3)钩子函数:LSM中安全钩子函数的数据提供只有一个组合,这个组合构建的具体安全模块给内核对象进行区域式的保护。钩子是全局表中的函数指针,系统调用内部的安全钩子函数通过钩子来实现。在include/1inux/security.h中被定义的security_operations结构是全局表的类型。内核源代码中,钩子函数的调用就是出现security_ops->前缀的地方。
4)Capabilities机制:在内核机制中POSIX.1ecapabilities
机制被用来实现最小的特权使用,区分出超级用户和传统用户的权限范围,为避免全部特权拥有的用户出现滥用权限的情况,POS把不同分工的权限分配到不同的进程中,实现特权的最小化。Linux内核虽然实现POSIX.1ecapabilities机制,但LSM还要把capabilities相关部分从内核中抽取出来,形成单独可选的安全模块。对机制进行改变就可以允许不想继续使用capabilities机制的用户将该机制的整个代码从内核系统中移除出来。让capabilities机制的研发者在维护和增强这些代码时拥有更自由的空间来操作。
5)安全模块的注册:虚拟钩子函数是LSM框架初始化后的数值,这一系列的虚拟钩子函数可以实现传统的UNIX超级用户机制。当resister_security()函数在LSM框架注册一个模块时,就提供一个安全模块的加载渠道。安全模块设置全局表security_ops必须由resister_security()函数提供相关联因子。模块的注销,只需要unregister_security用缺省值替换掉钩子函数,恢复系统的初始状态就能实现。系统安全在模块没有被重置时,就不会被没有使用不透明安全域的缺省钩子函数牵制住。这种机制被用来做安全模块的设定,给每个钩子做最后的审判权和最终维护。LSM还给安全模块增加额外的简单机制,主要机构组成为在全局表security_operations结构中设置unregister_security钩子和register_security,提供mod_reg_security函数和mod_unreg-security为全面检查坐函数钩子的调用时做准备。为了避免LSM模块因堆叠的细节问题引发内核修改麻烦,LSM可以把mod_unreg_security(mod _Reg_security)设定到主安全模块的unregister_security
(register_security)钩子函数中[1]。
3 基于LSM的安全机制下得设计和实现
对LSM内核系统的分析才能为安全系统的研发制作营造新
的发展机会,同时为构架在LSM内核系统的安全模式能被更灵活运用提供契机。基于互联网的不断壮大,网络使用的安全问题也越来越受到重视。如果计算机的系统没有安装上适当的安全防护设置,一些恶意的操作就会阻碍到计算机的工作,进而影响到工作、学习、生活的效率。大多的网络恶意攻击是为盗取机主存入计算机系统中的机密文件,来谋取不正当利益。为了避免这些恶意的网络攻击给我们带来不必要损失,就需要通过对操作系统建立起安全的网络保护体系来实现。
这里制定一套关于网络安全机制的设计。当用户空间中的API被调用后,就会通过相关联的安全钩子,把调用的相关信息传递到安全模块中,策略引擎在接受到消息后会对信息进行相应的配对检查。如果和安全策略相比配,就会进行套接字API的继续链接,与之相反则返回错误代码,终止链接。对Backdoor及Worm的攻击阻止,可以在策略检查机制中加入API的绑定跟踪。策略引擎系统不允许端口能够被非法入侵并进行程序打开的非法操作,通过添加API的绑定,攻击者就更加不容易攻破安全模式,打开计算机的入侵端口进而控制住主机盗取数据。针对Worm攻击,也可以在内核中构建一个机制相仿的安全模块,阻止Worm程序对计算机系统的入侵,避免Worm程序通过互联网,形成连带的病毒传播方式危害到其他主机的网络安全系统,对非法程序的阻止才能中断掉Worm病毒的网络连接通道,使网络安全系统得到很好的维护[2]。
4 结束语
在对LSM进行的研究中,通过对LSM访问控制系统的特点分析,为增强Linux操作系统的安全性研究提供科学依据。文中设计的网络安全保护机制是在系统思路的分析后拟定出的较为深入的研究方案,笔者坚信通过对计算机的安全系统更深入细致的研究时,Linux操作系统也必将更好的满足用户需求。
参考文献:
[1]龙亚星、王一川,Linux操作系统安全策略模拟的研究与设计[J].工业控制计算机,2012,25(2):80-81.
[2]邓明强、章勇,基于LSM的Linux安全性研究[A].第十五届全国青年通信学术会议论文集[C].2010:140-144.
关键词: 操作系统安全;Linux安全模块;策略
1 LSM的设计理念
在安全性能上,因Linux内核系统仅提供UNIXDAC自主访问控制机制,及POSIX.1e中capabilities机制,只具备标识、识别及简单的日志功能,这对计算机系统安全要求是不够的,也会对计算机的发展和应用起阻碍作用。在这一缺陷被发现之后,为增强系统安全性能,各种安全模型都在不断的研发中,其中,应用比较广泛的有域和类型增强(DTE)、安全增强型Linux(SE Linux)、Linux入侵检测系统(LIDS)等,但在和Linux内核配套使用中还是存在一定的缺陷。2001年3月份,美国国家安全局在Linux内核峰会上展示了他们对SE Linux的最新研究成果,新研发出的SE Linux系统使系统的访问控制变得更灵活,而且还能在和Linux的配套使用中相互协调,基于这些突出的优势,Linux安全模块(Linux security module,LSM)很快应运而生。LSM是依附于Linux内核中较为轻便的通用访问控制架构,使Linux可以加载各种不同的安全访问控制模型,并且实现用户自由加载安全模块,在一定程度上使Linux安全访问控制机制更便捷。Linux内核和Linux安全构架存在的差异性,给LSM的设计带来技术上困扰,因此研发出的安全模式必须要符合以下要求:
1)计算机系统操作的过程是在不同环境中进行工作,需要的安全模块保护要多元化,所以必须能够支持不同模块的加载。
2)能够跟现存的POSIX.1e和capabilities配合使用,并且可以把它加入可选的安全模块进行储备。
3)技术在使用中对内核设置没有太大的冲突,尽量降低对Linux的影响,支持内核的高速运转。
2 LSM的设计突破
基于以上的设计限制条件,LSM在研发的过程中就得满足上述的内容才可能让计算机拥有一个更好的发展前景。对钩子(Hook)结构的了解,可以对关键性技术的修改进行难点突破。
1)隐藏安全区域防御性措施。这里的隐藏区域指在系统中不透明的安全区域。可以在内核关键的数据结构中添加void*字符的类型数据,安全模块就能通过含有这些字符的数据把具体作用对象和安全属性相连接而发挥作用。由于一些内核携带对象在先前就已经存在安全模块的初始内容中,所以内核被输入新模块时也不能影响到原模块的对象安全处理。但另一些钩子在面对内核数据结构的解析和分配时,free_security钩子和alloc_security钩子也会跟着释放和分配安全数据,这时其他的钩子就会融入安全数据的更新中,进行数据的改写导致安全模式瘫痪。对这样的情况可以采取以下方案进行解决:① 在模块的初读使用中要仔细了解内核的数据结构,对已经存在安全模块进行安全区域分组,避免数据混淆。② 对经常使用的原模块进行检测,并对其进行隔离安全设置避免在工作时遭受其他困扰。③ 另一种方法可以忽视这种情况的发生,因为它们只是作为基本的访问控制机制来设置。
2)安全系统的调用:与安全应用相关联的新系统调用安全模块通过LSM内核提供的安全系统机制来支持。SELinux模块的研发为系统调用提供更多可能性。这个系统的调用参数为(unsignedintcall,unsignedintid,unsignedlong*args)分别代表:特定的系统调用call、安全模块ID、传递给系统调用call,而系统的命名是security()。
3)钩子函数:LSM中安全钩子函数的数据提供只有一个组合,这个组合构建的具体安全模块给内核对象进行区域式的保护。钩子是全局表中的函数指针,系统调用内部的安全钩子函数通过钩子来实现。在include/1inux/security.h中被定义的security_operations结构是全局表的类型。内核源代码中,钩子函数的调用就是出现security_ops->前缀的地方。
4)Capabilities机制:在内核机制中POSIX.1ecapabilities
机制被用来实现最小的特权使用,区分出超级用户和传统用户的权限范围,为避免全部特权拥有的用户出现滥用权限的情况,POS把不同分工的权限分配到不同的进程中,实现特权的最小化。Linux内核虽然实现POSIX.1ecapabilities机制,但LSM还要把capabilities相关部分从内核中抽取出来,形成单独可选的安全模块。对机制进行改变就可以允许不想继续使用capabilities机制的用户将该机制的整个代码从内核系统中移除出来。让capabilities机制的研发者在维护和增强这些代码时拥有更自由的空间来操作。
5)安全模块的注册:虚拟钩子函数是LSM框架初始化后的数值,这一系列的虚拟钩子函数可以实现传统的UNIX超级用户机制。当resister_security()函数在LSM框架注册一个模块时,就提供一个安全模块的加载渠道。安全模块设置全局表security_ops必须由resister_security()函数提供相关联因子。模块的注销,只需要unregister_security用缺省值替换掉钩子函数,恢复系统的初始状态就能实现。系统安全在模块没有被重置时,就不会被没有使用不透明安全域的缺省钩子函数牵制住。这种机制被用来做安全模块的设定,给每个钩子做最后的审判权和最终维护。LSM还给安全模块增加额外的简单机制,主要机构组成为在全局表security_operations结构中设置unregister_security钩子和register_security,提供mod_reg_security函数和mod_unreg-security为全面检查坐函数钩子的调用时做准备。为了避免LSM模块因堆叠的细节问题引发内核修改麻烦,LSM可以把mod_unreg_security(mod _Reg_security)设定到主安全模块的unregister_security
(register_security)钩子函数中[1]。
3 基于LSM的安全机制下得设计和实现
对LSM内核系统的分析才能为安全系统的研发制作营造新
的发展机会,同时为构架在LSM内核系统的安全模式能被更灵活运用提供契机。基于互联网的不断壮大,网络使用的安全问题也越来越受到重视。如果计算机的系统没有安装上适当的安全防护设置,一些恶意的操作就会阻碍到计算机的工作,进而影响到工作、学习、生活的效率。大多的网络恶意攻击是为盗取机主存入计算机系统中的机密文件,来谋取不正当利益。为了避免这些恶意的网络攻击给我们带来不必要损失,就需要通过对操作系统建立起安全的网络保护体系来实现。
这里制定一套关于网络安全机制的设计。当用户空间中的API被调用后,就会通过相关联的安全钩子,把调用的相关信息传递到安全模块中,策略引擎在接受到消息后会对信息进行相应的配对检查。如果和安全策略相比配,就会进行套接字API的继续链接,与之相反则返回错误代码,终止链接。对Backdoor及Worm的攻击阻止,可以在策略检查机制中加入API的绑定跟踪。策略引擎系统不允许端口能够被非法入侵并进行程序打开的非法操作,通过添加API的绑定,攻击者就更加不容易攻破安全模式,打开计算机的入侵端口进而控制住主机盗取数据。针对Worm攻击,也可以在内核中构建一个机制相仿的安全模块,阻止Worm程序对计算机系统的入侵,避免Worm程序通过互联网,形成连带的病毒传播方式危害到其他主机的网络安全系统,对非法程序的阻止才能中断掉Worm病毒的网络连接通道,使网络安全系统得到很好的维护[2]。
4 结束语
在对LSM进行的研究中,通过对LSM访问控制系统的特点分析,为增强Linux操作系统的安全性研究提供科学依据。文中设计的网络安全保护机制是在系统思路的分析后拟定出的较为深入的研究方案,笔者坚信通过对计算机的安全系统更深入细致的研究时,Linux操作系统也必将更好的满足用户需求。
参考文献:
[1]龙亚星、王一川,Linux操作系统安全策略模拟的研究与设计[J].工业控制计算机,2012,25(2):80-81.
[2]邓明强、章勇,基于LSM的Linux安全性研究[A].第十五届全国青年通信学术会议论文集[C].2010:140-144.