《基于Linux操作系统的审计增强.pdf》由会员分享,可在线阅读,更多相关《基于Linux操作系统的审计增强.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 49 基于 L i n u x操作系统的审计增强 刘 嘉訾小超潘 理李建华 上海交通大学信息安全学院上海 200030 摘 要论述了基于 Linux 基础平台开发高可靠性安全操作系统中审计系统的设计思想与实现在此审计系统中通过审计系统调用实现了细粒度的系统级审计数据的收集并且基于 B/S架构实现了具有自动分析功能的图形化安全远程审计管理平台 关键词审计收集远程审计管理审计分析 Enhancement of Auditing in Linux LIU Jia,ZI Xiaochao,PAN Li,LI Jianhua(College of Information Security,Shangh
2、ai Jiaotong University,Shanghai 200030)AbstractThis paper discusses how to develop the audit module for secure operating system based on the Linux kernel.This audit subsystem can collect all the core-level information by mounting audit points in the kernel,and provide secure audit management with au
3、tomate analysis from remote terminal through website.Key wordsAudit collect;Audit remote management;Audit analysis 计 算 机 工 程 Computer Engineering 第31卷 第12期Vol.31 12 2005年6月June 2005基金项目论文 文章编号10003428(2005)12004903文献标识码A 中图分类号TP393;TP312 随着互联网的蓬勃发展计算机系统遭受入侵的可能性急剧增加安全问题变得日益复杂和突出审计系统作为安全操作系统的重要组成部分保证了
4、操作系统对各种与安全相关事件的跟踪分析及反应能力目前半数以上的网络服务器以 Linux 作为操作系统然而迄今为止Linux 还没有提供除 syslog 和 acct(或 pacct)以外的独立的审计子系统因而 Linux 也就无法达到 C1 级以上的安全级别 本文针对 Linux审计功能的不足进行分析和改进介绍了一种符合 B1 级安全操作系统需求的具有完整审计机制的远程审计系统详细说明了其中的关键技术 1 基于Linux操作系统审计系统的设计 为使 Linux 的审计系统满足 B1 级的安全需要必须对上述 Linux 系统的不足进行彻底改进一个功能完善的审计系统应包括 3 个部分(1)审计收集
5、子系统能够收集满足系统安全需要的细粒度的审计数据(2)审计数据存储审计数据组织的形式应便于检索并且受到安全保护(3)包含自动分析功能在内的比较完善的远程审计处理平台审计系统的总体结构见图 1其中箭头表示数据的流向 图1 审计系统总体结构 1.1 审计收集的设计 设计的原则(1)能以独立于应用的方式获取审计数据以保证审计过程不会受到非法用户的干扰或取得一定权限用户绕过(2)对内核的修改尽量少(3)系统的效率不能有大的损失 按照 POSIX1003.Le 审计标准 需对两类操作进行审计一类是核心级的安全操作事件如 openexecreadwrite等系统调用另一类为应用层中执行的某些重要事件如lo
6、ginpasswduseradd 等系统命令和特权命令它们跟系统的安全密切相关因此可从总体上采取以下技术路线(1)应用层的审计事件收集直接利用 Linux 原有的审计功能即应用进程主动调用相应的审计收集函数把自己的事件汇报给审计系统或利用大型服务器自带的审计系统收集对某些特殊的应用程序(initlogiuserdel 等)则需要在程序相应的地方增加审计代码 (2)核心事件的审计收集利用 Linux 系统的 LKM(Loadble Kernel Modules)机制编写核心事件的收集模块这部分是需要对Linux审计系统进行增强的主要部分 细化后的审计收集模型见图2 图2 审计收集结构图 1.2
7、审计数据的格式及存储 审计收集的数据可先放在内存缓冲区中等达到一定长度一次性以记录的形式写入审计数据库参照 POSIX 1e 标准每条审计记录由 4 个部分组成 基金项目国家863计划信息安全重大基金资助项目(2002AA145090)上海市科委科技攻关项目(025115039)作者简介刘 嘉(1973)女工程师硕士生主研方向为通信与信息訾小超博士潘 理讲师博士李建华教授 博导 定稿日期2004-05-30 E-maillily_(1)(2)审计 收集 审计数据库 安全远程分析管理平台 对审计数据进行分析或检索以记录方式 对审计数据库进行备份压缩 删除等返回相应的数据 检索分析等审计命令(3)
8、审计管理员 系统事件 写入 应 用 程 序 内存 缓冲区 内核级收集模块 系统调用 系 统 内 核 原 Linux 审计系统收集应用层事件 LKM 技术 50(1)头部(header)主要有事件类型(event type)发生时间(time)事件结果(result)(2)主体(subject)用来记录引起事件的主体(即用户进程)的信息如 uidpid等(3)客体(object)记录被事件影响的客体(文件设备进程)包括文件名设备pid等(4)与事件相关的数据(event_specific data)记录与事件有关的其他信息如 cmd_args(命令参数)exit_code返回码等 为防止非法用户
9、的读取或篡改必须对审计数据进行保护可以把审计数据转储到其它比较安全的机器上也可以进行数据隐藏例如可编写专门的 LKM 模块隐藏审计数据使除审计管理员外的任何其它用户均无法看到审计数据也不能通过 lsmod 以及 proc/modules 获得该特殊模块的信息审计管理员操作审计数据时仅需卸载该模块即可7 1.3 安全远程审计分析管理平台的设计 远程审计分析管理平台基于 B/S 架构包括前台及后台两个部分前台负责提供图形化的操作平台接收审计管理员用 CGI 表单发出的各种命令包括(1)浏览检索删除审计数据库(2)查看自动分析结果(3)设置自动审计的间隔(缺省是一天)加载何种审计工具等配置文件(4)
10、进行审计数据的转存压缩设置日志文件大小等管理前台按照接收的命令调度相应的后台服务程序并将数据结果返回给远程管理员此外前台在用户登录时连接认证服务器对用户进行数字认证并且负责对整个的通信过程进行加密安全远分析管理平台逻辑结构见图 3 图3安全远程分析管理平台结构 2 基于Linux操作系统审计系统的实现 按照审计系统的设计要求审计系统的实现主要包括 4个方面 2.1 核心级审计收集的实现 在 Linux 操作系统中用户态进程只有通过系统调用才能由用户态转为核心态进而访问系统资源所以若在系统调用的总入口处或出口处设置审计点对系统调用进行审计也就审计了所有内核服务事件8 Linux 中所有系统调用均
11、是经 0 x80 软中断 然后转入所对应的各自响应函数来实现的响应函数为 sys_加系统调用名 如 fork()的响应函数为sys_fork()(源文件为 kernel/fork.c)每个系统调用在源文件 include/asm-i386/unistd.h 中都定义了一个系统调用号当产生一个系统调用时以其调用号为索引 则系统调用表 sys_call_table 中对应的表项所指的恰是系统调用响应函数的入口地址在该文件中还有一宏定义 syscallN(),N 取 06表示参数的个数如open()有 3 个参数对应为 syscall3()syscallN()的第 1 个参数表示响应函数的返回值第
12、2 个参数为系统调用名剩下的部分是参数描述Ox80 号软中断的服务程序为 sys_call(源文件在arch/i386/kernel/entry.S 中)下面是其中的一小段源代码行首的数字表示语句在源文件的行号 197 SAVE_ALL#保存寄存器当前值 198 GET_CURRNT(%ebx)199 cmpl$(NR_syscalls),%eax#检查是否为合法的系统调用其中 eax 的内容系统调用号 200 jne badsys 201 testb$0 x02,tsk_ptrace(%ebx)202 jne tracesys?此处可插入审计收集代码 203 call*SYMBOL_NAME
13、(sys_call_table)(,%eax 4)#以调用号为索引转到响应函数 204 movel%eax,EAX(%esp)#用 eax 保存调用返回值 205 ENTRY(ret_from_sys_call)#跳转至 ret_from_sys_call 分析可知可在语句 202 之后插入审计收集代码在转入响应函数前审计收集模块就能得到系统调用号等有关的审计信息 并且这种作法只需对源 Linux 内核做较小的改动另外 所有的系统调用结束后 均会跳转至 ret_from_sys_call,在 此 处 可 获 得 系 统 调 用 操 作 是 否 成 功 的 信 息Ret_from_sys_cal
14、l在Linux进程管理中非常重要 也是entry.S中的一段代码所有的系统调用结束前 以及大部分中断服务程序返回前都会跳转至此入口地址即该段程序不仅为系统调用服务还要处理 cpu 调度 Schedule()处理中断嵌套 bottom half 队列及信号等 如果需要审计更多的信息如各种中断可在该代码中相应位置加入审计搜集代码由于 ret_from_sys_call 执行的频度大于 sys_call 操作系统的执行会慢些但可搜集的粒度更细 从进程上下文可以获得审计的信息 例如 若从 sys_call插入审计代码可从寄存器 eax 中获得系统调用名从syscallN()中的参数获得调用参数 从 t
15、ask_struct 获得有关进程号等我们要审计的信息若从 ret_from_sys_call 中则需事先保存 eax 的内容因为语句 204 已经使 eax 变成了返回结果值有时不能直接从syscallN()中获得有意义的信息如 open()中的文件为相对路径而审计需要的则是绝对路径信息read()write()系统调用其操作的对象为句柄 fd而我们需要的则是 fd 所对应的文件名等 这时需要进一步查找进程系统栈或用户栈例如可通过位于用户栈底的环境变量区获得进程工作路径与 open()所获得的相对文件名拼接得到完整的文件名(当然也可以用 getcwd()函数不过显然低效了)也可以利用 U 区
16、中的打开文件描述表把 fd 转换成需要的文件名 2.2 基于Webmin 二次开发实现远程安全管理平台 Webmin 是用 Perl 编写的基于 B/S 架构的 Linux(Unix)系统配置管理工具内嵌一个 Web 服务器主要利用 CGI表单执行系统管理任务它采用内嵌的自主安全协议和用户访问控制机制连接时 Webmin 时会连接认证服务器并对通信过程进行 SSL 加密 因而保证了远程操作的安全 因此Webmin 已提供了审计系统的远程管理平台的基本构架我们只需要再编写一些 CGI 程序做一些功能的添加使用Webmin 的优点是(1)功能扩展容易开发周期短(2)移植性好可用于几乎所有的 Uni
17、x 系统(3)集成性好可实现应用系统安全配置和操作系统底层功能调用的无缝连接容易与安全操作系统的其它管理平台整合到一起形成统一的GUI 管理界面图 4 是基于 Webmin 实现的安全远程管理平台的示意图 远程审计系统管理 平台 数据库引擎 压缩转存等服务程序自动分析结果 配置文件 审计数据库 自动分析程序 后 台 前 台 51 图4 远程审计管理示意图 需要指出的是 Webmin 的 Web 服务器不能识别标准的 CGI 程序 会直接在浏览器端打印perl 程序源代码 而不是生成动态网页分析其源程序可知 Webmin 所有的 CGI 程序都会有 do web-lib.pl或 requirew
18、eb-lib.plweb-lib.pl定义了各种环境变量及 sockettelnet&header&footer 等各种方法和函数目的是(1)方便二次开发开发者不用自己编写与自主安全协议或与访问控制有关的代码可直接利用环境变量及 web-lib.pl 中提供的函数即可(2)提供统一的显示风格和图形化界面开发者只需考虑 CGI 程序实现的功能不需考虑有关背景边框字体等设计工作Webmin通过修改环境变量 使系统管理员通过 Web 游览器修改显示风格若要移植标准 CGI 程序到 Webmin 中需要对原程序进行一些修改(1)去掉原 CGI 程序的头部包括print“Content-type:tex
19、t/htmlnn”及等表示CGI的格式语句 在程序开头部分加入require web-lib.pl及&header(title,image,)具体&header()后应该跟几个参数可查询 Webmin 变量定义文件(2)在结尾部分去掉有关等语句并以 footer作为替代如果是与身分鉴别有关的 CGI 程序则可在程序开头直接调用web-lib.pl中 定 义 的 3 个 子 例 程&init_config()&get_modul_acl&ReadParse来获取访问控制表及配置变量另外Webmin 中缺省的字符集为英文iso-8859-1汉字常用gb2312字符集 所以可直接修改web-lib.
20、pl 找到sub header函数将$current_lang_info-charset:“iso-8859-1”改成$current_lang_info-charset:“gb2312”即可 2.3 采用Perl DBI编程+Mysql技术实现审计数据库的快速检索 DBI是 Perl的标准数据库接口 与 ODBC(Open Database Connectivity)相比有如下优点(1)支持占位符和绑定参数这意味着对于大型数据库的检索ODBC 将比 DBI 慢得多(2)有 RaiseError 和 PrintRrror 机制适用于可靠性要求高的事务操作(3)有独立的语句句柄6并且由于远程审计
21、网络通信的不可测性对数据库的处理必需为事务型的(A.C.I.D)即一系列的操作或者全有效或者全无效DBI缺省的情况下AutoCommit 为真即每次语句句柄都会对数据库进行操作用户不可恢复所做的修改因此将AutoCommit 设为假以支持事务操作当远程操作发生错误时可使用 rollback()将最近没有提交的数据库进行恢复 2.4 利用基于规则集专家系统及统计的审计分析技术实现审计数据自动分析 审计分析的主要目的是提供事后初步分析的能力 方法采用已经较成熟的基于规则集的专家系统及统计的审计分析 技 术例 如 可 改 写 并 扩 展swatch(基于规则集 用 Perl 编写)的功能使其以后台运
22、行的方式对 Linux 原来的系统日志(如message,secure,cron 等)及新增的内核级的审计日志进行自动分析 并利用 AT&T BELL 实验室开发的 DOT 图形工具语言生成层次分明的图形报表2 包括把以时间为主轴的审计数据的空间形式(经过的系统资源时间次数)图形化描述当前用户进程的树状图显示各用户特权命令IO 操作读写文件的统计报表等使管理员能从海量的审计数据中提取有价值的 信息 由于计算机对数字进行模式匹配的处理速度远远快于对字符串的处理因此我们把审计的数据转换成数字表示如用 1 表示结果成功0 表示失败503 表示用户使用被禁用的账户登录尝试等由于数字信息不便理解因此需要
23、保留字符串的数据库审计文件方便审计管理员利用 SQL语句检索审计数据库原始文档获得审计数据的细节 同时审计管理员可根据需要在数据转换前进行数据过滤和精简如忽略运行时间微秒极的差别以减少数据位表示或转换时忽略某些数据以减少审计文件的大小某类文件某些用户的所有记录可不成生不同的审计分析工具可由审计管理员按照需要设定同时执行或部分执行 3 结束语 本文所论述的是针对电子政务系统中的关键服务器基于 Linux2.4.0内核开发安全操作系统中有关审计增强的一个具体实现本审计系统遵循 POSIX le 标准不仅实现了内核级的审计机制及细粒度审计信息的主动收集能力同时对Webmin 进行二次开发采用 per
24、l DBI 技术做为数据库引擎实现了基于 Web 的安全远程图形化审计管理控制系统与传统的 Linux 审计系统相比不论从审计系统的粒度功能或效率都有了显著的改善和提高 参考文献 1 Helm P,Liepins G.Statiscal Foundation of Audit Trail Analysis.IEEE Transactions on Software Engineering,1993,19:886-901 2 Hoagland J,Wee C,Levitt K.Audit Log Analysis Using the Visual Audit Browser Toolkit.ht
25、tp:/seclab.cs.ucdavis.edu/awb/AuditWork-Bench.html 3 Anderson J P.Computer Security Threat Monitoring and Surveillance.James P.Anderson Co.,Fort Washington,PA,1980 4 Bishop M,Wee C,Frank J.Goal-oriented Auditing and Logging.http:/seclab.cs.ucdavis.edu/awb/AuditWorkBench.html 5 Wetmore B.Paradigms fo
26、r the Reduction of Audit TrailsMasters Thesis.Davis:University of California,1993 6 Descartes A,Bunce T.Programing the Perl DBI.101 Morris Street Sebastopol.CA 95427:OReilly&Associates,Inc.,2000 7 贾春福,徐 伟,郑 辉.Linux 内核级安全审计方法研究.计算机工程与应用,2002-06:53-55 8 刘海峰,卿斯汉,刘文清.安全操作系统的设计与实现.计算机研究与发展,2001,38(10):12
27、62-1264 Webmin 服务器 远程审计管理员 DBI 自动分析 结果 调用相应 处理程序 登录要求认证 通过数字认证 发送 CGI 表单 返回数据并加密 CGI是 SQL 数据库语句返回审计检索数据 Mysql 审计数据库 后台运行自动分析工具 返回自动分析结果 返回操作是否成功 CGI 是查看分析结果 CGI 是对数据库压缩转储等操作 返回操作是否成功 CGI是对审计分析的策略设置基于Linux操作系统的审计增强基于Linux操作系统的审计增强作者:刘嘉,訾小超,潘理,李建华,LIU Jia,ZI Xiaochao,PAN Li,LI Jianhua作者单位:上海交通大学信息安全学院
28、,上海,200030刊名:计算机工程英文刊名:COMPUTER ENGINEERING年,卷(期):2005,31(12)参考文献(8条)参考文献(8条)1.贾春福;徐伟;郑辉 Linux内核级安全审计方法研究期刊论文-计算机工程与应用 2002(6)2.刘海蜂;卿斯汉;刘文清 安全操作系统的设计与实现期刊论文-计算机研究与发展 2001(10)3.Descartes A;Bunce T Programing the Perl DBI.101 Morris Street Sebastopol 20004.Wetmore B Paradigms for the Reduction of Audi
29、t Trails 19935.Bishop M;Wee C;Frank J Goal-oriented Auditing and Logging6.Anderson J P Computer Security Threat Monitoring and Surveillance 19807.Hoagland J;Wee C;Levitt K Audit Log Analysis Using the Visual Audit Browser Toolkit8.Helm P;Liepins G Statiscal Foundation of Audit Trail Analysis 1993 本文链接:http:/