姚立红, 邱卫东, 薛 质, 李建华
(上海交通大学 信息安全工程学院, 上海 200240)
随着各行各业信息化进程的推广深入,随之而来的信息安全问题越来越成为人们关注的焦点,影响着人们工作和生活的方方面面,甚至一些特殊行业(如电网、核电、交通等)的信息安全关乎着整个国家的安全。
为实施国家安全战略,加快信息安全高层次人才的培养,国务院学位委员会和教育部今年增设了“网络空间安全”一级学科,各高校也在积极开展网络空间安全专业的学科建设和人才培养。
操作系统作为信息系统的支撑软件,统一管理着信息系统重要资源(文件、网络数据、设备等),提供访问这些资源的服务接口(系统调用、API等),应用程序通过调用操作系统的服务接口来完成资源访问操作[1,2]。系统关键资源的安全保护离不开操作系统的支持,在操作系统中进行系统资源访问的安全增强能有效保障信息系统的安全,是网络空间安全的一个重要研究方向。
因此,在网络空间安全专业的建设中,在操作系统课程教学基础上开展操作系统安全增强实验,一方面能贴合网络空间安全的实际需求,另一方面能培养学生的动手实践能力,激发他们对学习和钻研信息安全技术的兴趣和热情,还能在很大程度上加深他们对信息安全基本原理和技术的理解[3,4]。
相较于其它专业,网络空间安全专业具有多学科交叉性的特点,更侧重于解决实际的安全工程问题。除相关理论基础知识学习之外,网络空间安全专业的学生更要注重实际动手能力和解决实际问题能力的培养。
为此,本文的操作系统安全增强实验定位为设计型实验,需要学生直接参与到实验实施过程中的每个环节。这项设计型实验具有如下的要求:
(1)指导教师为每个实验确定出总体目标和要求,实验方法和具体流程由学生自己规划和完成,实验结果并不唯一,而是随所采用的实验方法和流程而变化,因而在这项设计型实验的完成过程中,需要学生发挥较高的主观能动性。
(2)实验过程中不集中提供现成的实验平台。个人电脑在学生中的普及使学生在课下开展这项设计型实验成为可能。这项实验需要学生按照教学指导,自己搭建具体的实验环境和平台,这能更进一步地锻炼学生的实践动手能力。
(3)遵循软件工程流程完成这项设计型实验,实验本身就是一个完整过程:开发目标和需求分析、软件总体设计、软件详细设计、代码编程、功能及测试等。在实验完成之后,这些软件工程流程产生的文档、软件工具源代码以及实验报告等需在相应的时间节点提交,并由指导教师进行审查或阶段评审。另外,在实验开展过程中的关键节点,如需求分析及总体设计、中期进展、实验完成等,学生需要就实验的进度或成果向指导教师进行汇报或演示。
设计型实验难度是否合适对顺利开展操作系统安全增强实验教学以及培养学生动手能力至关重要,如果实验题目难度过大,很容易挫损学生参加实验的积极性,甚至会产生学生抄袭别人作业的情况。如果题目过于简单,则很难体现出锻炼学生的动手能力以及实践创新能力的效果。
因此设计型实验题目应该以中等水平的学生经过一定的努力(如查阅资料、向教师或同学请教等)后能够完成的难度为准。
在现有的操作系统中,Linux系统由于其出色的性能和稳定性、开放源代码特性带来的灵活性和可扩展性以及较低廉的成本,受到计算机业界的广泛关注和应用。本文所设计的操作系统安全增强实验也是基于Linux操作系统实施。实验分为两大类,一是基于Linux安全模块LSM(Linux Security Module)的操作系统内核安全增强类实验,一类是基于系统调用重载的操作系统内核安全增强类实验。
LSM是Linux内核的一个轻量级通用访问控制框架,用户可以根据需求选择合适的安全模块加载到Linux内核中,或者设计和实现相应的安全模块,从而提高Linux访问控制机制的灵活性和易用性[5,6]。
为实现对系统关键资源进行按策略的、细粒度的安全控制,本文基于LSM设计如下的操作系统内核安全增强类实验:
1)基于LSM的文件访问控制
本实验基于Linux LSM机制,通过向LSM框架注册文件访问类操作钩子函数,在钩子函数中依据所制定的安全策略对这些文件访问类操作进行是否允许的控制。安全控制策略要素可包括用户、进程、文件或目录、操作、时间等。
2)基于LSM的程序运行权限管理
本实验基于Linux LSM机制,通过实现一组相关的钩子函数,对特定应用程序的运行权限进行限定,如只能访问指定目录下的文件、不能对外发起网络连接等。本实验可用于为不可信或来历不明的程序提供一个受限的、可控的程序运行环境。
3)基于LSM的程序完整性保护
本实验基于Linux LSM机制,通过实现一组钩子函数,以达到程序的静态完整性保护和动态完整性保护。前者主要是保证应用程序的可执行文件和相关资源文件(如配置文件等)不被其它程序破坏,后者主要是保证应用程序在其运行过程中不被其它程序干扰,如该应用程序运行时的进程不被非法终止等。
4)基于LSM的网络连接控制
本实验通过基于Linux LSM机制,实现与网络通信操作相关的LSM钩子函数,实现对各种网络连接和通信操作的控制,从而实现类似于Windows系统中个人防火墙的功能。
系统调用是操作系统对应用程序提供的服务接口,是获得系统操作相关信息,以及进行操作控制和操作记录的理想之处。
本文基于系统调用重载的操作系统内核安全增强类实验包括如下的几个实验:
1)基于系统调用重载的系统级资源访问审计
本实验的目标是基于系统调用重载的方法实现一个系统级的资源访问审计,即通过修改系统调用入口地址表,实现对系统资源访问的相关系统调用处理函数的重载,完成操作上下文信息的收集,并对收集到的信息进行格式化存储、按条件查询、统计等,从而实现系统级的资源访问审计。
2)基于系统调用重载的系统关键程序保护
本实验通过系统调用重载方式来实现系统关键程序的安全保护,即保证程序所需要的资源(如可执行文件、配置文件等)不被非法删除、运行过程不被其它程序干扰,从而为一些系统重要程序的运行提供更加安全的执行环境。
3)基于系统调用重载的基本型文件保险箱
本实验通过系统调用重载方式实现文件保险箱,为用户的重要数据提供严格的安全保障。本实验的目标是设置一个文件夹(即保险箱文件夹)用作文件保险箱的数据存储,同时开发一个保险箱数据管理程序,实现保险箱内文件的管理。保险箱文件夹对其它任何程序都不可见,其它程序也无法访问、操作保险箱内的文件,从而保护用户的重要数据。
4)基于系统调用重载的加密型文件保险箱
本实验的目标是要实现一个加密型文件保险箱,该保险箱除实现基本型文件保险箱的所有安全功能外,还实现对保险箱数据文件的加密和解密,即将文件放入到文件保险箱时对文件内容进行加密,当从文件保险箱中取出文件时,对文件进行解密以恢复文件的原始内容。
该实验在一个学期内完成,总课时设定为54个学时,以学生自主进行特定实验项目的软件开发为主,教师以组织实验课堂汇报和讨论、检查阶段性报告和考核评审等手段来了解和指导实验项目开发的进程,并针对性地解决学生在实验中所遇到的具体问题,同时辅以必要的少量的课堂集中教学。
具体的教学形式有如下三个方面:
(1)课堂集中教学:主要包含三部分内容:①实验概述,向学生明确实验背景、教学目标、教学形式、考核方式、组织和选题、项目控制等内容;②软件工程知识回顾,重点强调软件工程流程,讲解学生在完成实验项目过程中如何遵循软件工程的流程;③逐一讲解实验的具体题目,包括每个题目的具体目标和要求,以及注意事项。
(2)软件设计与开发实践:学生按照自己所选定的实验题目完成相应的实验系统设计,并基于合适的程序设计语言来具体实现。考虑到目前学生个人电脑的普及,不再统一安排上机时间,由学生自己安排时间完成软件设计和开发过程。教师提供网络在线指导,以便于解决学生在进行软件设计和开发中遇到的问题和困惑。
(3)课堂汇报和讨论:学生在进行每个实验的软件设计和开发过程中,至少进行三次的课堂汇报,以便于教师及明发现学生在实验项目实施过程中的问题,并给予相应的提示和指导。具体包括:①开题报告,就选题、开发目标、需求分析、进度计划、关键问题和解决方案汇报;②软件开发中期进展汇报;③软件功能展示和结题汇报。
操作系统安全增强实验涉及到操作系统内核编程,涉及到的知识点多并且编码和调试难度大。为了帮助学生能尽快地展开实验,指导教师事先开发出基于LSM机制以及系统调用重载的框架Demo供学生参考,这样学生就可将工作重心放到如何设计和实现安全功能上,而不在如何注册LSM钩子函数以及重载系统调用处理函数问题上花费过多的时间。
考虑到操作系统安全增强实验的难度以及对学生沟通和协调能力的培养,指导教师组织学生以小组的形式开展相应的实验项目,即2-3个学生组成一个小组,合作完成一个实验项目。为了尽可能减少小组内部的“搭车”现象,教师需限制每个实验题目选择的组数,采用抢选原则确定实验题目。并且在实验题目选定后,要求小组内每个成员都要独立负责其中相应的开发模块,在期末实验成果检查时,每个学生需要对自己负责的设计和开发工作进行汇报和答辩。
前已述及,该设计型实验的课时规划为54个学时(对应于18个教学周),课堂教学只安排3个学时,其余的学时数全部用于实验项目的具体实施。实验项目开展过程中,按如下阶段和进度安排。
1)选题
经过指导教师的课堂授课,学生了解所设置各实验题目的目标和要求后,通过评估实验题目所需的工作量以及根据自身的实际情况,选取合适的实验题目,并组成实验小组。
确定实验题目和小组成员后,填写选题表,其中包括所选择实验题目的目标和功能概述、 小组成员及组长等相关信息。选题表在第二教学周内提交。
2)开题报告
每组成员就所选择的实验题目,查阅参考资料,进行实验题目相关功能的软件需求和可行性分析,明确实验项目的关键问题以及相应的解决方案,并为后继的工作制定合理的规划安排。最后撰写开题报告,并在第三教学周内提交。
3)总体设计
各小组要对实现的实验系统进行总体设计,确定实验系统的体系结构、各组成部分的模块组成及接口规范、各模块的概要设计等,并明确小组成员的任务分工,形成总体设计报告,并在第五教学周内提交。
4)详细设计
每个成员按任务分工,设计实验系统的全局数据结构,并进行各模块的功能设计、接口(内部接口、外部接口)设计、数据库设计、出错处理等。所撰写的详细设计报告在第八教学周内提交。
5)编码与测试
依据总体设计报告和详细设计报告,各组成员按任务分工,编码实现和调试实验系统的各模块,并进行系统的集成调试和测试。
在系统成功实现后,撰写课程设计报告(包括:项目概述、软件需求和可行性分析、总体设计、详细设计、软件系统测试结果以及课程心得体会等),并与源码一起打包提交。这部分工作持续到第十五教学周。
6)结题汇报和演示
每个项目组准备好演示环境以及汇报PPT,在课堂上集中进行汇报、系统演示和答辩,实验系统的实际演示结果可作为系统实现效果的直接评定依据。这部分工作在第十八教学周完成。
由于实验持续时间较长,并且实验方式比较灵活,即不集中在机房统一实验,而是由各实验小组根据自身条件选择时间和地点开展实验,为了保证教学效果,我们采用多种方式对实验过程进行监督和管理,具体措施有:
(1)文档评审按照实验实施规划安排在各个时间节点(包括选题、开题报告、总体设计、详细设计等),要求学生提交相应的文档材料,指导教师对文档材料进行评审;
(2)每个小组在实验过程中要进行三次课堂汇报,即开题报告、中期检查报告、结题汇报与演示。每次5-10分钟,指导教师对实验内容及执行进度进行监督和指导;
(3)开展在线交流,为便于实验的有序进行,同时便于指导教师与学生之间、各小组成员之间的技术交流,师生组建微信群,在群里学生可就实验进度、技术难点、实验心得等进行交流,也可向指导教师寻求帮助。
实验结束后,由指导教师对实验成绩进行评定,成绩评定时主要考虑如下几个因素:①实验的复杂度,主要考虑实验系统的功能、实现难度和代码量等;②实验效果,主要考虑实验系统的实际安全控制效果以及用户体验;③报告质量,主要考虑报告的格式和内容。
由于实验是按实验小组验收的,除考虑整个实验小组实验系统的完成情况外,还要考虑每组成员实际的任务分工和个人表现,综合评定出每个学生的成绩。
在网络空间安全专业的学科建设中,开展信息安全实验课程的教学是不可或缺的一个环节,它能有效提高学生的动手能力和解决实际问题的能力,同时加深学生对所学安全理论知识的理解。本文从操作系统安全增强实验设计的基本要求出发,设计了两类增强实验,每类实验又具体分为几个子实验。本文还就实验的开展方式、进度安排、课程指导以及成绩评定等方面进行探讨,从而为各高校相关专业的课程建设提供有益的参考。
[1] 陆松年, 薛质等. 操作系统教程 (第3版):原理、应用、开发、系统、网络管理[M]. 北京:电子工业出版社. 2010.2.
[2] William Stallings. Operating System Internal and Design Principles (3rd Edition)[M]. New Jersey: Prentice-Hall, International, Inc. 2008.4.
[3] 訾小超, 薛质, 陆松年. “系统软件开发实践”课程的教学探索[ J].南京:电气电子教学学报, 2010, Vol32(3),5-6.
[4] 龚玲, 陆松年, 薛质.“操作系统”课程教学探索[ J] .南京:电气电子教学学报, 2007, 29 (5):1-3 .
[5] Michael Beck, Harald Bohme, et al. Linux Kernel Programming (3rd Edition)[M]. Boston: Addison-Wesley Professional. 2002.9.
[6] 訾小超, 薛质等. 信息安全技术解析与开发实践[M]. 北京:清华大学出版社. 2011.7.