Linux安全增强身份认证系统的需求分析与设计
2019-10-21喻子豪
喻子豪
摘 要:从功能方面和性能方面来分析 Linux 安全增强身份认证系统的需求,并针对系统的安全性,可靠性,不增加操作复杂度等特点,来设计 Linux 安全增强身份认证系统的总体结构。
随着Linux系统的应用场景越来越多,也对Linux系统的安全方面的需求也有所增加,不难发现Linux系统的安全问题已然成为众多关注方向之一了。本论文只选取某安全保密机构对系统安全需求中的一项,即身份认证的安全增强。针对身份认证的安全增强需求从功能需求和性能要求这两个方面进行说明。
通过用户对普通Linux操作系统的使用的调研,包括多种不同发行版本Linux操作系统的使用,对于身份认证方向的安全增强功能,总结的需求如下:(1)把用户相关的处理都在BIOS阶段进行处理,操作系统只是接受BIOS传递过来的用户信息进行系统中的同步,保证用户信息的单方向传递。(2)从用户角度来看,登陆系统时在BIOS阶段输入用户名及密码,直接登陆系统,这一过程为一个整体操作,即系统登陆身份认证过程。用户从此过程中看不到GRUB2的存在。(3)确保BIOS传递的用户信息与系统中的用户信息一致,且做好用户操作的容错处理,要保证BIOS创建的用户不能与系统中的账户冲突。(4)做好用户信息传递失败的容错处理,如果信息传递失败则不能再有后续的操作运行,功能必须中断。(5)在登陆认证并进入系统的整个过程中,不能有与人交互的操作。
把系统登陆的时机从操作系统登陆服务启动的时候提前到BISO加电后,那么从输入用户名及密码后,到进入系统桌面这一过程,从时间上看肯定本方案的时间要长些,但只要相对时长不超过60秒,还是可以接受的。
本方案在设计最初,根据总结得出的需求分析,在系统设计上要遵循以下几点原则:不增加操作复杂度、功能必须可扩展、不引入其他非安全问题和功能必须稳定。上述设计原则具体描述如下:不增加操作复杂度;功能必须可扩展;不引入其他非安全问题;功能必须稳定。
本系统从总体设计角度,分别从逻辑结构和数据流程两个方面对系统总体结构进行设计与阐述。
本系统的总体结构从逻辑上可分为以下三个方面:用户信息创建及保存;用户信息传递;用户信息处理与身份认证。
(1)用户信息创建、保存:这部分工作主要在机器上电后BISO阶段进行的处理。本方案的设计不仅把用户的登陆的功能从系统登陆服务启动后开始提前到BISO阶段,而且把用户的管理,从系统中进行管理,到当前提前到BISO阶段。这样做的目的是保证用户信息来源的唯一性,而且保证用户信息流的单项传递。如果进入系统后再进行用户管理,不仅系统的特定应用可以进行用户管理,一些应用程序也可以进行创建用户,这样一来用户的来源就不唯一,增加不稳定因素。这里的用户信息保存,包括两个方面,一个是创建新用户的保存,另一个是在BIOS登陆时的用户信息的保存。
(2)用户信息传递:本系统的用户信息传递,不是通常意义的把数据从一个功能模块传递到另外一个功能模块,也就是后一个功能模块从前一个功能模块处来获取数据。而是把数据保存到内存中,这部分内存在整个从硬件加电到认证结束进入系统桌面这一个过程中不会被覆盖,各部分功能是有运行先后的,他们之间的交替是通过执行权限的交替来保证连续运行的,而没有相互调用的关系。在整个过程中各部分在需要用户数据时,通过对内存的操作来获取,通过这种方式变相实现了用户信息的传递。用户信息传递主要有GRUB2、应用层用户信息处理服务传递。
(3)用户信息处理及身份认证:当文件系统启动后其系统所有程序的父进程systemd进行把系统服务启动后,用户信息处理服务需要根据BIOS传递过来的用户信息进行处理,包括传递过来的用户信息与系统的用户信息同步;如BIOS创建的新用户与系统中用户冲突的解决和通过传递过来的用户设置此次登陆用户等。在身份认证阶段,每次认证时都需要重新从BIOS传递过来的用户信息解析出的用户名及密码来进行对比校验,这样可以保证信息源的一致性。如此处理身份认证过程,不仅是上述原因,也统一了锁屏后解锁和注销后登陆的身份认证方式。
本系统的数据流程主要指的是用户信息的传递的过程,这部分用到的主要技术就是内存中的E820表。BIOS阶段创建用户或用已有用户登陆,把用户信息保存到内存中的E820表中。BIOS执行结束并把执行权限移交给GRUB2时,GRUB2在加载内核及Initrd之前获取用户信息,如果用户信息获取失败则停止后续的操作返回BIOS阶段,如果能够获取用户信息则继续加载内核及Initrd,并把執行权限交给内核及Initrd继续执行。当文件系统初始化完成Initrd中的脚本切换到文件系统中启动1号进程systemd,并把执行权限移交给systemd进程,并启动用户信息处理服务。用户信息处理服务获取E820表中的信息,与系统中用户进行同步并设置登陆用户。如果用户信息处理服务无法获取到E820表中信息则停止后续身份认证及系统登陆的操作,并返回到BIOS阶段。
Linux安全增强身份认证系统是由以下五部分组成:初始化模块BIOS、引导模块GRUB2、Linux内核、应用层用户信息处理服务及认证模块PAM,其中除了应用层用户信息处理服务,其他几部分均是在当前各自功能基础上进行深度定制增加功能,来满足身份认证的安全增强的目的,也就是本论文选择实现安全增强的方向即通过把功能相关的几个部分联通起来,起到安全增强的作用。
初始化模块BIOS上电自检主要由硬件部分完成,此时操作系统并没有启动。当电脑接通电源即开始执行BIOS(基本输入输出系统)的上电自检(POST)过程。如果自检过程失败,则引导过程也将就此中断。BIOS上电自检确认硬件的基本功能正常,包括对内存的初始化。此时用户在BIOS输入用户名及密码或创建用户后输入用户名及密码后,BIOS进行第一次身份验证,验证未通过则返回BIOS等待重新输入,如验证通过则BIOS请求INT15H中断获取物理地址信息,把用户信息保存在E820表内存地址的一个段中。然后再产生一个BIOS中断INT13H,该中断指向某个可引导设备的引导扇区。它所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码上,至此BIOS自检工作结束,程序退出交给下一部分继续执行。引导扇区是引导加载程序真正的第一阶段,本方案所使用的主引导加载程序是GRUB2
在对Linux安全增强身份认证系统的需求分析进行整理,对要实现的功能有了明确的目标,对实现完成后的功能展示有了实质的概念和了解。在进行总体结构的设计时一直遵循那几点设计原则。可以看出本方案对身份认真的安全增强的功能的设计是可行的,完全满足需求点,能够实现本方案要实现的安全增强的目标。
参考文献:
[1] 李洋. Linux 安全技术内幕[M]. 清华大学出版社,2010 .
[2] 刘海燕,王子强,邵立嵩. Linux 系统的安全检测与增强技术分析[J],《计算机工程与设计》,2005,26(1):100-102 .
[3] 龙亚星,王一川. Linux 操作系统多安全策略研究与设计[C],陕西省通讯学会,陕西省通信学会 2011 年学术年会论文集,西安,2011 .
[4] 高朝勤. 信息系统等级保护中的多级安全技术研究[D],北京:北京工业大学,2012 .