视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
网络安全审计系统开发
2025-10-02 04:47:28 责编:小OO
文档
  西安郵電學院

  科研训练报告

    题    目:_网络安全审计系统开发__

    

学    院:_  通信与信息工程学院     

 专    业:_      信息安全       _    

班    级: _     安全0705    _ _     

学生姓名1:___    董建姣06073144_    

   学生姓名2:__     聂媛媛 06073176  _ 

          指导老师:           张雪峰             

         起止时间:  2010年  月 日至2010年12月17日

摘要

   随着对网络安全的认识和技术的发展,为了防止内部的非法违规行为,需要在网络中实现对网络资源的使用进行审计。

本文对信息系统中安全审计系统的概念、内容、实现原理、存在的问题做出了讨论。第一,通过对审计系统要求的分析和对Linux内核版本升级的考虑,提出了通过扩展LSM机制来构造审计系统。第二,论述了审计模块的设计与实现,就审计记录结构、审计规则等关键问题进行了阐述。第三,探讨了审计文件的处理和审计对系统性能的影响。

关键词: 信息安全技术 、网络、安全审计、钩子函数、LSM机制、接口。

一、什么是安全审计

  国内通常对计算机信息安全的认识是要保证计算机信息系统中信息的机密性、完整性、可控性、可用性和不可否认性。安全审计对计算机信息系统中的所有网络资源进行安全审计,记录所有发生的事件,提供给系统管理员作为系统维护以及安全防范的依据。一旦有突发事件可以快速的查阅进出记录和行为记录,确定问题所在,以便采取相应的处理措施。

  为了能够方便地对整个计算机信息系统进行审计,就需要设计综合的安全审计系统。它的目标是通过数据挖掘和数据仓库等技术,实现在不同网络环境中对网络设备、终端、数据资源等进行监控和管理,在必要时通过多种途径向管理员发出警告或自动采取排错措施,并且能够对历史审计数据进行分析、处理和追踪。

二、安全审计系统的特点

安全审计系统的主要特点如下:

1.安全审计系统可对可对系统访问及操作、网站访问、邮件收发、远程终端访问、数据库访问、论坛发帖等进行关键信息监测、还原。

2.安全审计系统可对网络行为,如网站访问、邮件收发、数据库访问、远程终端访问、即时通讯、论坛、在线视频、P2P下载、网络游戏等,提供全面的行为监控,方便事后追查取证。

3.安全审计系统可对网络流量进行综合分析,为网络带宽资源的管理提供可靠策略持。

三、审计系统需要解决的问题

    根据对审计的要求和整个安全操作系统的设计需要,审计系统需要解安全审计系统的设计与实现需解决的问题主要有:

(l)审计系统对内核的影响

    Linux内核是不断升级的,在系统中也可能加载其他的安全模块,因此,审计系统要能适应内核的升级,也不能对内核的其他功能影响过多。同时,为了适应不同的Linux用户的需要,避免内核的庞大,审计系统需要做成单独的LKM(loadablekemelmodule  可加载内核模块)的形式。但另一方面,审计信息需要从内核系统调用中分散收集,审计系统又是和内核紧密相关的,从这方面来说,很难将审计系统“分”出来。因此,如何建立对内核影响较小而又能收集到全面的审计信息的模块化审计系统成为一个难点。

(2)审计文件的超出问题

    审计文件最终要存储在永久存储介质上,通常是存放在磁盘中。一旦审计面广了,审计记录更为详尽了,就不可避免的要考虑审计记录文件所占的磁盘空间。怎样防止审计记录文件大小超出限定的磁盘空间,SunBSMt4]中对这个问题进行了讨论。可以考虑从以下几个方面来解决:1、从审计配置方面来看,尽量减少审计事件。当然要考虑到比较重要的、与安全相关的事件要审计到。可以提供灵活的审计配置方式,让用户根据使用的安全要求来选择。

2、专门设定一台存储审计记录的计算机,通过网络传输,将审计记录存放到该机器上。

四、安全审计系统结构及模型

   安全审计系统(Security Auditing System)由审计中心、审计控制台和审计Agent组成.

   审计中心使整个审计系统的数据进行集中存储和管理,并使用应急响应的专用软件,它基于数据库平台,采用数据库方式进行审计数据管理和系统控制,并在无人看守的情况下长期运行。审计控制台是提供给管理员用于对审计数据进行查阅,对审计系统进行规则设置,实现报警功能的界面软件。可以有多个审计控制台软件同时运行。审计Agent是直接同被审计网络和系统连接的部件,不同的审计Agent完成不同的功能。审计Agent将报警数据和需要记录的数据自动保送到审计中心,并由审计中心进行统一的调度管理。

   根据通用入侵检测框架的模型,作者认为安全审计系统由事件产生器、事件分析器、响应单元、事件数据库组成。 

   其中,事件是需要分析的数据统称,它可以是网络中的数据包,也可以是从系统日志等其他途径得到的信息等等。事件产生器的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件。事件分析器的作用是分析得到的数据,并产生分析结果。响应单元则是对分析结果作出反应的功能单元,它可以作出切断连接、改变文件属性等强烈反应,也可以只是简单的报警。事件数据库是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。 

五、设计方向:

LSM框架总体结构

    LSM框架是随着安全操作系统的不断发展而出现的。针对这种各自为政的情况,Linus提出一个安全框架的概念,通过它能够以可加载内核模块(LKM)的形式实现任何安全模型,同时,他建议现有的安全操作系统项目都移植到这个统一的框架下。LSM由此应运而生。LSM框架在内核中增加了两个部分:在内核数据结构中加入了安全域来存放安全属性;在内核代中加入对钩子函数的调用(这些调用称为“钩子”),这些钩子函数是操作安全域和实现访问控制的。安全域一般就是在数据结构中增加的*vd指针,具体指向的数据结构由设计安全模块的开发者定义。同时,LSM定义了一个全局表,钩子就是该表中的函数指针,该指针具体指向哪个函数,采用什么安全也是由具体的安全模块定义的。LSM仅仅定义了每个钩子的参数和它们的位置。

    当加载一个安全模块时,必须使用register_seeurity()函数向Linux安全模块(LSM)框架注册这个安全模块:这个函数将设置全局表security_oPS,使其指向这个安全模块的钩子函数指针,从而使内核向这个安全模块询问访问控制决策。一旦一个安全模块被加载,就成为系统的安全策略决策中心,而不会被后面的register_security()函数覆盖,直到这个安全模块被使用unr。gister_security()函数向框架注销:这简单的将钩子函数替换为缺省值,系统回到UNIX超级用户机制。另外,Linux安全模块(LSM)框架还提供了函数mod_reg_seeurity()和函数mod_unreg_seeurity(),

审计系统设计思想

      系统调用

    用户在系统中的一切活动都需要系统调用的支持。在系统调用中设立审计能够把用户在系统中的所有活动记录下来。同时,所有隐蔽信道都是开发者通过内核调用找到并利用的。如果通过审计与隐蔽信道有关的系统调用,那么利用隐蔽信道时可能被使用的事件也就被审计了。这些系统调用涵盖进程控制、文件系统控制、扩展属性控制、IPC控制、用户管理等几大类。

    根据国家标准中对审计内容的要求,审计内容主要包括四个方面:事件基本信息、主体信息、客体信息和事件特殊信息。具体如下:

l)审计事件基本信息:时间,审计号,审计类别等

2)主体信息:事件发出的用户uid,安全级别等

3)客体信息、:事件作用的客体(可以是文件,进程等),安全级别

4)事件特殊信息:参数等

   审计钩子机制

    LSM是访问控制的一个框架。将这个增强的访问控制框架加入到内核中,可以增进机安全,避免服务器遭受恶意攻击。当然它本身并不能增进安全,它只是提供一个支持安全块的基础。使用LSM可以使访问控制模块以可加载内安全审计系统的设计与实现核模块的式加入内核。

    LSM框架是在内核中增加了两个部分:在内核数据结构中加入了安全域来存放安全属性;在内核代码中加入对钩子函数的调用(这些调用称为“钩子”),这些钩子函数是操作安全域实现访问控制的。安全域一般就是在数据结构增加的*void指针,具体指向的数据结构由设安全模块的开发者定义。同时,LSM定义了一个全局表se。urity_。ps,钩子就是该表中的数指针,该指针具体指向哪个函数,采用什么安全也是由具体的安全模块定义的。LS仅仅定义了每个钩子的参数和它们的位置。

    我们可以具体来看一个例子sys-ppen。我们在函数sy纱pen中加入审计钩子。原来的函数用伪代码写出来如下:

sys一open

{

getfilenamefromuserspace;

if(!filename){

penprocessing;

out:endingwork;

}

relumvalue;

handleerr;

go to out;

}

加入审计钩子后,函数结构如下:

sys一open

{

getfilenamefromuserSPace;

aud-clteck(AUDes0PEN,args

if(!filename){

OpenPfocesslllg;

endingwork;

将钩子插在此处是为了

利用上一步得到的复制

到内核空间的函数名

out:

}

aud--toeebuf(Value);

retumvalue;

out of:

handleerr;

go to ollt;}

   我们来看看通过这两个钩子是否能收集到审计信息。open事件的客体信息包括:文件(包括路径)、当前路径、打开的文件描述符、文件属主(uid)、文件模式(mode)、安全标记,数是打开参数和模式。通过aud_.heck钩子我们可以收集到信息有:文件名、当前路径、打标志和模式。打开的文件描述符、文件属主、文件模式不能直接得到,需要经过一些处理才得到。但这些工作并不需要审计函数来完成,在原来的内核函数处理中可以得到结果。得到些结果也不需要增加新的审计钩子,可以利用LSM的访问控制钩子。

六、审计的具体实现

审计记录结构

每个审计事件主要记录以下四个方面的内容:

1)审计事件基本信息:时间,审计号,审计类别,审计记录大小等

2)主体信息:事件发出的用户uid,安全级别等

3)客体信息:事件作用的客体(可以是文件,进程等),安全级别

4)事件特殊信息:参数等

    其中,前两个是所有审计记录共有的信息,后两个是根据不同审计事件有不同的内容。根据每个审计事件所要求收集的审计信息不同,我们将审计事件分成了39个审计类。考虑到很多审计事件都有共性的地方,比如文件系统控制方面的审计事件,他们的客体都是文件。借鉴SUNBSM和SNARE系统的方法,我们先将一些基本信息组装成不同的数据结构(我们称之为token),审计记录就由这些token组成。其中,最重要的一个token就是header_token这个token是每个记录都带有的一个部分。它的结构如下:

1)事件基本信息

Event_c1ass事件类别

Event_id事件

Event_1ze审计记录大小

time;事件发生时间

2)主体信息

USer1

ellserid

grouP_id

egrouP_id

sub_range

Pid

主体(用户)id

主体(用户)euid

主体(用户)gid

主体(用户)安全标记

主体(进程)pid安全审计系统的设计与实现

Pflaflle主体(进程)名,该变量长度跟系统规定的长度一样,见头

文件/usr/inelude/linux/sehed.h中eurrent->onun

3)返回值

returneode

数据结构

审计内核线程启动后读配置文件,在内存中建立如下数据结构:

(1)void*smos_aud_attri

审计属性指针,指向下面的结构

typedefstruet{

all_event_tall_event;/*全局审计事件向量*/

/*主体审计事件*/

sub_namesub_name_header:/*根据主体名称审计链表头*/

sub_gidSub_gid--header;/*根据主体组标识审计链表头*/

intSub_name_count:/*主体名称审计项个数*/

intSub_gid_count;/*主体组标识审计项个数*/

/*客体审计事件*/

obj_fd__name*obj_fd_name_header;/*根据文件名称审计链表头*/

obj_u_name*obj_u_name_header;/*根据用户名称审计链表头*/

/*如果定义了安全标记,则增加根据安全级别审计*/

#ifdefMLSTYPESH

obj_u_level*obj_u_level_header;/*根据用户安全级别审计链表头*/

obj_fd_level*obj_fd_level_header:/*根据文件安全级别审计链表头*/

#end if

intobj_fd_

intobj_fd_

name

level

count;

couflt

intobj_u_name_eount:

intobj_u_level_eount:

/*文件名称审计项个数*/

/*文件安全级别审计项个数*/

/*用户名称审计项个数*/

/*用户安全级别审计项个数*/

Smos_aud_eonfig_t:第4章审计的具体实现

(2)主体审计向量链表

a)根据主体名审计

每个节点中有两项:用户id,审计事件向量

向量每一位代表与主体有关的事件,和全局审计事件向量一样,共128位。

b)根据主体组标识审计

每个节点中有两项:组id,审计事件向量

向量每一位代表与主体有关的事件,和全局审计事件向量一样,共128位。

(3)客体审计向量链表

a)根据客体名称审计

每个节点中有2项:客体路径(包括名称),客体审计事件向量

b)根据客体安全级别审计

每个节点中有2项:客体安全级别,客体审计事件向量

向量数据结构:

文件相关的事件有:文件管理

设备相关的事件有:mknod,模块操作的4个系统调用,文件管理

用户相关的事件有:用户管理

审计记录的存放

    我们将收集到的审计信息整理成记录形式,最终是要存放到磁盘文件中保留的。在这个过程中,审计记录要经过三个状态:收集审计信息状态、在审计记录链表中、在磁盘文件中。

重要命令的审计

    审计系统应该对关系到系统安全的重要shell命令进行审计,它们包括:

login用户登录

su改变用户

passwd改用户密码

sudo改变身份执行操作

useradd加入新用户

userdel删除用户

    这些命令实际上都是用户层应用程序,它们的功能也是通过调用系统调用来完成的。如果对系统调用进行审计,实际上可以把这些事件记录下来,例如运行1.gin程序,涉及到的系统调用可能包括:sys_xe,sys_en等。

    在/etc/sys10g.conf中与这些命令有关的审计配置如下:

*.info;mail.none;news.none:authPriv.none:eron.none

/var/109/messages

#TheauthPrivfilehasrestrietedaecess.

authPriv.*

/var/109/seeure

login,su,passwd产生的记录级别都是KERN_INFO,因此记录在ar/109/meSSages中,Sudo,useradd,userdel都是和文件/ete/passwd等有关的操作,产生的记录在secure文件中。

用户层审计接口

    除了这些重要命令外,审计系统还向用户层提供审计接口。为了避免增加新

的系统调用,我们可以利用系统调用syslog来实现审计接口。

_syseall3(int,syslog,int,type,ehar*,bufp,int,len):

intsyslog(inttype,ehar*bufp,intlen);

原有的syslog系统调用处理的type有9种:0-8。我们设定当type为10-13时为审计系统的用户接口。

具体的调用有:

type=10:用户可以在程序中使用该系统调用来审计

type=n:授权用户在审计运行过程中更新审计配置

type=12:授权用户开启审计

type=13:授权用户关闭审计

LsM框架在Syslog系统调用中已经插入一个LSM钩子seeurity_syslog。我们利用这个钩子接口来增加审计功能。在这个钩子对应的函数中,检查type的值,如果其值为10-13,则执行相应的审计系统操作。否则不做任何操作返回。审计系统设定了两个用户audoPr和audadm

审计模块的装载

(l)以内核方式装载

   在编译内核时,在配置文件中将AUDIT模块选为编入内核,则可把审计系统代码编入内核,这种内核运行后只要用audon命令就可使审计系统工作。

(2)以模块方式装载

   在编译内核时,在配置文件中将AUDIT选成模块方式,则在内核运行后用insmod命令可加载审计模块。

审计配置

(l)启动:在shen命令提示符下输入命令audeeconfig

(2)功能描述:审计配置可以对基本信息、全局审计、主体审计、客体审计进行配置。基本信息包括设定审计文件的大小和报警比例。主体审计和客体审计都包含对主体和客体的安全级别来进行审计的功能。审计配置可以在审计启动后更新审计配置。

审计查看

(l)启动:在sheU命令提示符下输入命令aud_check

(2)功能描述:审计查看包括顺序查看和条件查看。条件查看可以选择时间段、事件类型、客体类型、客体安全级别等条件来查询审计记录。

小结

安全审计作为一门新的信息安全技术,能够对整个计算机信息系统进行监控,如实记录系统内发生的任何事件,能够有效防范内部攻击,保护计算机信息系统的安全。一个完善的安全审计系统可以根据一定的安全策略记录和分析历史操作事件及数据,有效的记录攻击事件的发生,提供有效改进系统性能和的安全性能的依据。

参考文献

 【1】毛德操,胡希明  Linux内核源代码情景分析   浙江大学出版社   2001

【2】孙钦东等   网络信息内容审计     电子工业出版社  2010

【3】张常有   网络安全体系结构   电子科技大学出版社  2006

【4】Jeffrey Richter  Window核心编程  机械工业出版社  2003 

【5】夏宏  陆逵利用LSM框架保护文件与进程《计算机安全》 2009年04期 

【6】昔小超,姚立红,曾庆凯,茅兵,谢立   操作系统安全增强技术研究进展--《高技术通讯》   2003年07期

【7】刘登科,唐毅.网络安全审计系统.上海大学学报(自然科学版)第5卷增刊,1999 

【8】浅议电子数据安全审计  http://www.teachercn.com/lunwen/2005/2-3/1631088.Html

【9】徐宝强  网络审计的现状及发展对策

http://www.doc88.com/p-31278482838.html

【10】张霆军 浅析网络审计的结构及发展对策 http://www.cnki.com.cn/Article/CJFDTotal-KJJJ200604056.html下载本文

显示全文
专题