Linux 安全网关接口SGI 的设计与实现.docVIP

Linux 安全网关接口SGI 的设计与实现.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux安全网关接口SGI的设计与实现 曲 波1 胡 湜2 (1 南京晓庄学院信息技术学院) (2 北京航空航天大学电子信息工程学院) 摘 要:文章阐述了Linux安全网关接口SGI的基本结构和实现方法,以及实现SGI涉及的Linux防火墙?内核接口模块、/proc文件系统内核接口等关键技术。 关键字:安全网关接口、Linux防火墙、内核接口模块、防火墙钩子函数、/proc文件系统内核接口 随着计算机网络技术的不断提高,计算机网络的应用也越来越普及,对计算机网络系统的安全管理也越来越重要。当前流行的各种操作系统都在计算机安全管理方面提供了丰富的功能。Linux操作系统不仅在其内核中提供了丰富的防火墙功能,还以钩子函数的方式为用户提供了防火墙内核接口。用户根据Linux防火墙内核接口规范设计内核接口模块装入内存,就可实现用户自行设计的防火墙功能或其它网络访问控制功能。 笔者利用Linux内核防火墙内核接口模块,实现了一个通用的安全网关接口(以下简称SGI)。SGI类似一个专用的防火墙,控制流经的网络IP数据包的转发。笔者在多个网络应用系统中利用该接口实现网络的安全访问控制,收到了很好的效果。 安全网关接口SGI的基本结构 安全网关接口SGI的目标是实现一个通用的安全网关内核接口模块,实现对流经的IP数据包的转发控制。实现的方法是采用Linux的防火墙内核模块接口,通过防火墙钩子函数将自己挂接在系统的IP转发控制链中。 SGI在内部维护一个Hash表,每一个表项包含一个代表着放行的IP地址。 1.1 SGI防火墙内核接口模块 Linux防火墙Netfilter提供了一个抽象、通用化的框架,以IPv4为例,一共有5个防火墙钩子函数,分别为:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、NF_IP_FORWARD、NF_IP_POST_ROUTING和NF_IP_LOCAL_OUT。 数据报进入系统进行IP校验后,经过第一个钩子函数NF_IP_PRE_ROUTING进行处理;然后就进入路由代码,其决定该数据包需要转发还是发给本机;若该数据报是发给本机的,则该数据报经过钩子函数NF_IP_LOCAL_IN处理后传递给上层协议;若该数据报应该被转发则被NF_IP_FORWARD处理;经过转发的数据报经过最后一个钩子函数NF_IP_POST_ROUTING处理后,再传输到网络上。本地产生的数据报经过钩子函数NF_IP_LOCAL_OUT处理后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理后发送到网络上。 内核模块可以对一个或多个这样的钩子函数进行注册挂接,并且在数据报经过这些钩子函数时被调用。SGI就是利用这种钩子函数实现内核接口模块并链接到防火墙内核接口钩子链上。 1.2 Hash表 SGI防火墙内核接口模块的任务是确定对流经的IP数据包是否转发。所以,SGI需要维护一个数据表,该数据表中保存着需要转发的IP地址。每当SGI接口模块收到IP数据包后,立即在该数据表中查找该IP地址。若找到则转发放行,找不到则丢弃该IP包。 显然,数据表的结构是决定查找速度的关键。一方面,数据表的内容是由用户进程动态确定的,要随时变化。另一方面,查找的速度要快,不降低系统效率。尽管二叉检索树可以满足上述要求,但其实现代价较高,所以笔者采用Hash表方法实现。使用Hash表结构一方面可提高在IP转发过程中的查询速度,另一方面也可简化数据结构,节约内存资源。 1.3 /proc文件系统内核接口 如前所述,Hash表的内容是由用户进程动态确定的,而SGI模块属于内核层。在Linux操作系统下,用户进程不能直接存取系统内核数据,也不能直接调用内核函数。一般有两种方法可实现用户进程与内核进程的通信:一是使用设备文件,二是使用/proc文件系统。对于防火墙钩子函数来说,还可以通过套接字存取内核数据。笔者采用/proc文件系统实现用户进程与SGI接口模块的数据交换。 由于/proc文件系统的主要作用是允许内核向应用进程报告它的状态,所以没有专门向内存输入数据而设置的机制。为能够写入/proc文件,在内核程序中要为相应的/proc文件提供专用的处理程序,即/proc文件系统内核接口。 1.4 ?网络管理用户进程 网络管理用户进程的任务是通过SGI提供的/proc文件,向SGI内核模块设置所需转发的IP地址,包括插入、删除、查找等操作。采用标准的文件读写操作,按照SGI规定的数据格式与SGI内核模块交换数据。 SGI的实现技术 2.1 Linux内核模块 一个Linux内核模块至少包括两个函数:一个是初始化函数init_module(),在模块被插入到内核时调用;另一个是清除函数cleanup_

您可能关注的文档

文档评论(0)

smdh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档