Linux安全网关接口SGI的设计与实现_第1页
Linux安全网关接口SGI的设计与实现_第2页
Linux安全网关接口SGI的设计与实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux安全网关接口 SGI的设计与实现曲波1 胡混2(x XX晓庄学院信息技术学院)(航空航天大学电子信息匸程学院)摘要:嗨口唤 /proc 文站关键字:安全网关接口. Linux防火墙、内核接口模块、防火墙钩子函数./proc文件系统内核接口随着计算机网络技术的不断提臥汁算机网络的应用也越來越普及.对iI算机网络系统的安全管理也越來越重 要。、勺前流行的各种操作系统都在汁算机安全管理方而提供了丰富的功能。Linux操作系统不仅在其内核中提供了 丰富的防火墙功能,还以钩子函数的方式为用户提供了防火墻内核接口。用户根据Linux防火墙内核接口规X设计 内核接口模块装入内存,就可实现用户自行设

2、讣的防火墙功能或其它网络访问控制功能。笔者利用Linux内核防火墻内核接口模块.实现J'一个通用的安全网关接口(以下简称SGI)。SGI类似一个专 用的防火咼 控制流经的网络IP数据包的转发。笔者在女个网络应用系统中利用该接口实现网络的安全访问控制. 收到了很好的效果。1. 安全网关接口 SGI的基本结构安全网关接口 SGI的目标是实现一个通用的安全网关内核接口模块.实现对流经的IP数据包的转发控制c实现 的方法是采用Linux的防火增内核模块I妾口,通过防火墙钩子函数将自己挂接在系统的IP转发控制链中。SGI在内部维护一个Hash表,每一个表项包含一个代表着放行的IP地址。圉1安全网

3、关接口 SGI结构因1.1 SGI防火墙内核接口模块Lmux防火墻Neuler提供了一个抽瓠 通用化的框架,以DM为例,一共有5个防火墙钩子函数,分别为: NF IP PRE ROUTING、NF IP LOCAL IN、NF IP FORWARD、NF IP POST ROUTING 和 NF IP LOCAL OUT。数据报进入系统进行IP校验后,经过第一个钩子函数NFP_PRE_ROUTING进行处理:然后就进入路由代码. 其决定该数据包需要转发还是发给木机:若该数据报是发给木机的,则该数据报经过钩子函数NFJP_LOCAL_IN 处理后传递给上层协议:若该数据报应该被转发则被NF_IP

4、_FORWARD处理:经过转发的数据报经过辰后一个钩 子函数NF_IP_POST_ROUTING处理后,再传输到网络上。木地产生的数据报经过钩子函数NFJP丄OCAL_OUT 处理后,进行路由选择处埋.然后经过NFP_POST_ROUTING处理后发送到网络上。内核模块可以对一个或篡个这样的钩子函数进行注册挂接.并且在数据报经过这些钩子函数时被调用。SGI就 是利用这种钩子函数实现内核接口模块并到防火墙内核接口钩子链上。1. 2 Hash 表SGI防火墻内核接口模块的任务是确定对流经的IP数据包是否转发。所以.SGI需嬰维护一个数据表,该数据 表中保存着需要转发的IP地址°每XSGI

5、接口模块收到IP数据包后,立即在该数据表中査找该IP地址°若找到则 转发放行,找不到则丢弃该IP包。显然,数据表的结构是决定查找速度的关键。一方面.数据表的内容是由用户进程动态确定的,要随时变化。 另一方血,查找的速度要快,不降低系统效率。尽管二叉检索树可以满足t谜要求.但其实现代价较臥所以笔者 采用Hash表方法实现。使用Hash表结构一方面可提岛在IP转发过程中的查询速度.另一方而也可简化数抑結构. 节约内存资源°1. 3 /proc文件系统内核接口如前所述,Hash表的内容是由用户进程动态确定的.而SGI模块属于内核层。在Lmux操作系统下用户进程 不能直接存取系统内

6、核数据.也不能直接调用内核函数。一般有两种方法可实现111户进程与内核进程的通信:一是 使用设备文件,二是使用/proc文件系统。对于防火增钩子函数來说,还可以通过套接字存取内核数据°笔者采用 /proc文件系统实现用户进程与SGI接口模块的数据交换。由于/proc文件系统的主要作用是允许内核向应用进程报告它的状态,所以没有专门向内存输入数据而设逍的机 制。为能够写入的 文件,在内核程序中要为相应的伽c文件提供专用的处理程序,即伽c文件系统内核接口。1.4网络管理用户进程网络管理用户进程的任务是通过SGI提供的/pec文件,向SGI内核模块设宜所需转发的IP地址,包括插入. 删除、查

7、找等操作。采用标准的文件读写操作.按照SGI规定的数据格式与SGI内核模块交换数据。2. SGI的实现技术2.1 Linux内核模块一个Linux内核模块至少包括两个函数:一个是初始化函数imt.moduleO,在模块被插入到内核时调用:另 一个是淸除函数cleanup.moduleO,在模块从内核移走时调用。一股情况下.初始化函数或者在内存中注册一个处 理程序.或者使用自己的代码替换一个内核函数:而清除函数的作用是淸除初始化函数所作的任何爭情.使内存模 块可以安全地卸载°2.2 Linux防火墙钩子函数及其注册Linux防火增钩子函数是一个回调函数.其参数是系统内核调用用户钩子函数

8、时由系统传进來的。由用户设讣 的钩子函数根据其挂接的位宜及对流经的数据报的处理,回送不同的返回值。如果用钩子函数实现访问控制,则满足放行条件时返回NF.ACCEPT.继续正常传输数据报:否则返回 NF_DROP,丢弃该数据报,不再传输。如果用钩子函数实现数据采集则对数据报内容转储之后,返回NF_ACCEPT,继续正常传输数据报。防火增钩子函数必须注册挂扌妬才能匚作。注册使用的函数为nf_register_hook(),所带参数为指向下列结构 体的指针:struct nf_hook_ops iplimitfilter = NULL,NULL, /* structlistj)eadlist. 总是

9、初始化为NULL,NULL */fra.PF.INET,NF.IP.FORWARD, NF_IP_PRI_FILTER;其中fwm为钩子函数:PF_INET表示钩子函数11作在IP层:NF_IP_FORWARD为钩子函数的挂接点此例表示钩 子函数在数据报转发时被调用:NF.IP.PRI.FILTER (=0)为函数优先级。取消注册的函数为nf_unregister_hookO,在卸载内存模块之前调用.拆掉掏妾的钩子函数。2.3 SGI内扌劳妾口模块与应用程序间的通信在Linux里有一个文件系统注册的标准机制。每个文件系统都有自己的函数來处理索引节点和文件操作,由一 个特殊的结构体struct

10、fileoperaiions來存放扌斤向所有函数的指针。该结构体里包含对/proc文件的打开、关闭、读. 写等函数的指针。用C2a(e_proc_entiy()函数创建新的/proc文件。在SGI内核模块接口中使用copy_froin_user和copy_lo_user函数实现内核与应用进程的数据交换。使用 copy_froin_user和copyo_user的原I対是由于Linux系统中的内存是分段你所以指针不能抬向内存中一个唯一的地 址.只能抬向内存段中唯一的地址。系统中有一个供系统内核使用的内存段,而每一个进程还有一个社独的内存段。 进程只能存取自己的内存段。片需要将一个内存缓冲区中的内

11、容在、“I前进程向内核传递时,内核函数接收到一个抬 向进程内存段中内存缓冲区的指针。此外.由SGI内核接口模块创建的/proc文件还应具备进程阻塞机制。X用户进程请求SGI内核模块服务时. 若此时内核模块正忙,则将用户进程放入睡眠状态直到内核模块空闲。笔者采用的方法是/proc文件每次只可被一个 进程写操作。如果用户进程要求写伽c文件时该文件正在被其它用户进程写操作.SGI内核模块就调用 inienup(ible_sleep_oii函数将十前用户进程放入WaitQ队列中。十前一用户进程对/pmc文件的写操作结束后,SGI 内核模块调用mkjup唤醒等待队列中的用户进程。2.4 SGI接口模块的

12、编译及安装SGI接口模块是一种内核模块,不能按普通应用程序的方法进行编译°另外在程序中大虽使用了内核函数.需 要使用内核函数的包含文件。一般Linux操作系统在安装过程中会将操作系统源码安/usr/src/linux-XXX子目 录下.其中XXX是Lmux的内核版木号。所以对防火增模块的编译命令应如下所示:gcc "I /usr/src/1inux-XXX -02 -DMODULE D KERNEL -c sgi c "o sgi o 其中sgi. c是SGI接口模块的C程序名。使用系统命令insmod装入模块.用named卸戦模块°3.纟詆语SGI注册

13、了防火墙钩子函数.可对流经的IP数据报加以控制.决定取舍.实现多种网络控制功能。笔者在所研制的网络计费.安全审讣、远程监控等女个讣算机网络应用系统中,使用木文提出的安全网关接口 SGI实现网络信息流的访问控制,收到了良好的效果。参考文献1| Andrew S. lanenbauni puter Nelworks(Third Edition) 1996 by Prentice Hall. Inc2 Douglas E.er & David LS忙vens.Internetworking With TCP/IP Vbl. HI: Clieiit-Serer Programming andA

14、pplicaiions(Second Edition) 1996 by Prentice Hall. Iik.DESIGN AND REALIZATION OF THE LINUX SECURITY GATEWAY INTERFACEQu Bo 1 Hu Shi2(JScliool of Information Technology. NaiijingXiaozlmaiigCollege Nanjing 210017)School of Electronics Information Engineering. BeijingUnivereity of Aeronautics and Astronautics, Beijing 100083)Abstract The paper describes the structure ai)d realization of the Linux security gateway interface (SGI), and the critical techniques involved in SGI such as the kennel interlace n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论