首页 嵌入内核式状态检测防火墙的研究与实现

嵌入内核式状态检测防火墙的研究与实现

举报
开通vip

嵌入内核式状态检测防火墙的研究与实现 嵌入内核式状态检测防火墙的研究与实现 袁 暋 1, 2 ,侯整风 1 ,钟伯成 2 ,檀 明 2 (1. 合肥工业大学 计算机与信息学院 , 合肥  230009; 2. 合肥学院 计算机科学与技术系 ,合肥  230601) 摘  要 :利用过滤器挂钩驱动程序 ( Ipfltdrv)机制 ,在 W indows 2000 /XP内核嵌入用户自定义状态检测模块来过 滤数据包. 使用 TCP包 SYN /ACK标志位和 UDP包虚连接建立方式维护状态监测表 ,实现了状态检测 .根据状态 表存量实时对时间溢出值进...

嵌入内核式状态检测防火墙的研究与实现
嵌入内核式状态 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 防火墙的研究与实现 袁 暋 1, 2 ,侯整风 1 ,钟伯成 2 ,檀 明 2 (1. 合肥工业大学 计算机与信息学院 , 合肥  230009; 2. 合肥学院 计算机科学与技术系 ,合肥  230601) 摘  要 :利用过滤器挂钩驱动程序 ( Ipfltdrv)机制 ,在 W indows 2000 /XP内核嵌入用户自定义状态检测模块来过 滤数据包. 使用 TCP包 SYN /ACK标志位和 UDP包虚连接建立方式维护状态监测表 ,实现了状态检测 .根据状态 表存量实时对时间溢出值进行动态调控 ,控制状态表内表项的存量 ,避免遭受拒绝服务 (DoS)攻击 ,提高了防火 墙抗攻击性能. 关键词 :防火墙 ;状态检测 ;过滤钩子驱动 中图分类号 : TP309. 5    文献标识码 : A    文章编号 : 1673 - 162X (2009) 02 - 0033 - 05 防火墙是广泛使用的网络安全防御工具 ,它可识别并阻挡恶意攻击行为. 目前 ,应用最为普遍的是包 过滤防火墙和应用代理防火墙. 包过滤防火墙传输性能高 ,扩展能力强 ,但安全性较差 ;应用代理防火墙安 全性好 ,但可伸缩性差. 状态检测防火墙可克服前两种防火墙技术的不足 ,具有高效、高安全性和良好的可 扩展性等优点 [ 1 ] . 国内外许多机构研究已推出若干这类防火墙产品 ,如 : Cisco公司的 P IX系列防火墙、 ChechPoint公司的 FireW all21系列防火墙以及 NetScreen公司的 NS系列防火墙等. 但此类产品价格昂贵 , 且配置、管理和维护专业技术要求高. 所以低价、高效、易于使用的嵌入式状态检测防火墙应运而生. 一般每个网络连接包括以下信息 :源地址、目的地址、源端口、目的端口、 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 类型、连接状态 ( TCP协 议 )和时间溢出值等. 防火墙通常把这些信息称作状态 ( state) ,能够检测每个连接状态的防火墙称作状态 检测防火墙 [ 2 ] . 嵌入内核式状态检测防火墙是采用可动态加载内核技术 ,利用操作系统底层驱动机制 ,将 状态检测模块嵌入到操作系统内核模式下执行的防火墙 [ 3 ] . 本防火墙是在 W indows 2000 /XP操作系统内 核下 ,采用 Ipfltdrv底层驱动 ,将自定义的状态检测模块嵌入内核运行的防火墙. 1 过滤器挂钩驱动程序 过滤器挂钩驱动程序 ( Ipfltdrv. sys) 是 W indows组件 ,运行在内核模式. 通过使用过滤器挂钩驱动程 序 ( Ipfltdrv. sys)接口 (AP I) ,过滤传入和传出的 IP数据包. Ipfltdrv. sys启用后 ,允许用户使用路由和远程 图 1 持接在操作系统上的钩子函数 访问管理单元 ,对每个接口配置单独的入站和出站 IP数据包过滤器. Ipfltdrv. sys会同时检查本地主机 IP流量和中转 IP流量 (不发往本地主机的数据包 ). W indows 2000 /XP嵌入内核式状态检测防火墙 是架构在 Ipfltdrv基础上的. Ipfltdrv定义了过滤器 ,当 数据包通过过滤器时 ,首先检查过滤器中是否挂接 (注册 )了钩子函数 (回调函数 ) ,如有 ,调用注册的钩 子函数过滤数据包. 如图 1所示. 2 状态检测防火墙 状态检测防火墙由三部分组成 :包截获、包状态 检测和界面及操作功能. 包截获部分完成两项任务 ,一是利用操作系统 Ipfltdrv接口 ,挂接用户自定义状态 检测模块 ;二是将操作系统 Ipfltdrv接口截获的数据包传入用户自定义状态检测模块以供过滤使用 . 状态 收稿日期 : 2008 - 11 - 12  修回日期 : 2009 - 03 - 13 作者简介 :袁  暋 (1956—) ,女 ,安徽合肥人 ,合肥学院计算机科学与技术系副教授 ,研究方向 :网络与信息安全 ;侯整风 (1958—) ,男 ,安徽和县人 ,合肥工业大学计算机与信息学院教授、硕士生导师 ,研究方向 :计算机网络. 合肥学院学报 (自然科学版 ) Journal of Hefei University(Natural Sciences)  2009年 5月  第 19卷 第 2期                             May 2009 Vol. 19 No. 2  检测部分对已截获数据包进行协议分析 ,若是 TCP包 ,因其自身含有状态信息 ,可直接实行状态检测. 对 未建立连接的请求包 ,进行规则检查 ,并在状态表中新建状态结点 (表项 ) ;对已建立连接的数据包进行状 态检测 ,并修改表值. 若是 UDP包 ,因其不含状态信息 ,要先建立虚连接保存状态信息后 ,再按 TCP包类似 处理. 界面及操作功能部分是用户与防火墙交互的部分 ,用户可通过界面启动 /停止过滤 ,对过滤规则进行 维护 (如安装 /卸载、添加 /删除 )等. 2. 1 数据包截获  首先在操作系统底层驱动 ( Ipfltdrv)接口 ,注册过滤器钩子函数 (回调函数 ) ,然后在回 调函数中自定义代码即状态检测模块 ,以此实现在操作系统内核嵌入用户自定义模块. 当网络数据包经过 操作系统底层驱动 ( Ipfltdrv)接口时被截获 , Ipfltdrv查找接口是否有注册的钩子函数 ,如有 ,将数据包转给 该注册钩子函数中定义的虚拟设备进行处理. 该虚拟设备让操作系统认为是一台设备 ,将数据发往该设备 处理. 实际上 ,虚拟设备是钩子函数 (回调函数 )接收操作系统转发来数据包的接口. 此方式使回调函数中 的状态 检 测 模 块 , 可 以 轻 易 截 获 网 络 数 据 包. 钩 子 函 数 (回 调 函 数 ) 实 现 方 法 : 利 用 IoBuildDevice IoControlRequest函数向过滤器挂钩驱动程序 ( Ipfltdrv. sys)提交一个带 IOCTL _ PF _ SET_ EXTENSION_PO INTER控制请求的 I/O请求包 ( IRP) ,这个 IRP将在过滤器挂钩驱动程序 ( Ipfltdrv. sys)里 面注册一 PF_SET_EXTENSION_HOOK_ INFO结构 ,而这个结构包含一个 PF_FORWARD _ACTION类型的 回调函数指针 ,即在过滤器挂钩驱动程序 ( Ipfltdrv. sys)中注册了一个 PF_FORWARD _ACTION回调函数 , 以后就可以在这个回调函数里对数据包进行操作实现过滤. 2. 2 状态检测原理  状态检测防火墙技术是在包过滤防火墙技术架构基础上的改进 ,不仅检查数据包 , 而且检查数据包的连接状态 ,将属于同一连接的所有包作为一个整体的数据流看待 ,并在内存中建立和维 护一个跟踪数据包连接状态的状态监测表 ,将进出网络的数据当成一个个会话 ,利用状态表跟踪每一个会 话状态 [ 4 ] . 2. 3 包过滤状态检测  当防火墙接收到一个 TCP初始化连接请求包 ( SYN标志位判断 )时 ,与规则表中 规则进行检查比较 ,不符合 ,丢弃包 ,否则 ,接受包 ,并在状态表中新建一个状态结点 (表项 ) ,并为该表项 设置一个时间溢出值 (如 Timeout = 60秒 ). 时间溢出值表示允许这次连接的时间 ,当连接超时 (如 Timeout > 60秒 ) ,删除这个表项. 当防火墙收到返回确认连接包 ( SYN /ACK标志位判断 )时 ,与规则表中规则进行 检查比较 ,不符合 ,丢弃包 ,否则 ,接受包 ,并进行状态检测 (因为这时的连接请求包已建立过状态表项 ,所 以要进行状态检测 ) ;随后的数据包 (不带 SYN标志 ) ,仅需要与状态表中表项进行比较 ,通过比较源地 址、目的地址和端口号来区分是否是同一个会话 ,如果是状态表内已有会话的一部分 ,该包被接受 ,否则被 丢弃 [ 1 ] . 因 TCP包自身含连接状态标志位 (如 SYN /ACK) ,状态检测很容易实现. 而 UDP包自身并不含连接 状态标志位 ,所以需要建立虚连接保留连接状态信息 ,供状态检测使用. UDP包从防火墙打开端口并为其 建立连接状态、交换数据到连接结束 ,关闭相应端口并删除其状态信息的一次完整的通信过程称为一次虚 连接. 一次虚连接状态信息用一个状态表项 ( Item数组 )保存 ,数组 Item ( sa , da , sp , dp , Timeout , N)中 参数 sa 、da 、sp 、dp分别代表该虚连接的源地址、目的地址、源端口号和目的端口号 , Timeout值为该虚连 接时间溢出值 , N为通过的与该状态表项匹配的 UDP包的数目 [ 5 ] . 当 UDP包进入防火墙并且状态表中没 有与之匹配的状态结点 (表项 )时 ,则在状态表中新建一个状态结点 (表项 ) ,为该表项设置一个时间溢出 值 (如 Timeout = 60秒 ) ,并使记录值 N 加 1;如果状态表中有与之匹配的状态结点 (表项 ) ,表示是同一个 会话 ,接受该包 ,改变状态表中该表项 N值 ,并根据 N值修改结点时间溢出值 ( Timeout) ;如果在 Timeout 时间内没有与之匹配的后继 UDP包到达 ,则删除该状态结点 (表项 ) ,表示该虚连接结束. 防火墙的所有数 据包与状态检测表的比较都在内核模式下进行 ,所以包过滤速度与传统包过滤防火墙相比具有速度快、效 率高等显著优势 [ 6 ] . 包过滤状态检测流程如图 2所示. 包过滤状态检测的部分实现代码 : / /拒绝外来 SYN的包过滤. 抵达数据带 SYN标志 ,则过滤   if ( ( ( IPHeader 3 ) PacketHeader) - > iph_p rotocol = = PROT_TCP)   { if ( Packet[ 13 ] = = 0x2 && Send Interface Index = = INVAL ID_PF_ IF_ INDEX) return PF_DROP; 43 合肥学院学报 (自然科学版 ) 第 19卷  }    return PF_FORWARD;  } 图 2 包过滤状态检测流程 2. 4 过滤规则表维护  过滤规则表中的规则是由用户通过窗口界面添加 /删除的 ,通过 ADD _F ILTER和 CLEAR_F ILTER设备控制代码将过滤规则表传递至钩子函数 (回调函数 ) ,并在钩子函数 (回调函数 )中维 护该过滤规则表 ,数据包的过滤就是根据过滤规则表中的规则进行的. 过滤规则表维护的部分实现代码 : void CMainFrame: : OnRulesInstall ( ) { m_pFilterD rv - > IoControl(CLEAR_F ILTER, NULL, 0, NULL, 0) ; int nRet; / /从文档对象取出数据 ,安装过滤规则 CFriewallDoc3 pDoc = (CFriewallDoc3 ) GetActiveDocument( ) ; for ( int i = 0; i < pDoc - >m_nRules; i + + ) {  / /转换字节顺序 C IPFilter pf; memcpy( &pf, &(pDoc - >m _rules[ i ] ) , sizeof (C IPFilter) ) ; pf. sourcePort = (USHORT) htonl(pDoc - >m_rules[ i ]. sourcePort) ; pf. destinationPort = (USHORT) htonl(pDoc - >m_rules[ i]. destinationPort) ; / /发送设备控制代码 nRet =m_pFilterD rv - > IoControl(ADD_F ILTER, &pf, sizeof (pf) , NULL, 0) ; if ( nRet = = - 1) {   AfxMessageBox ( "安装过滤规则出错 ! " ) ; break;  } else  MessageBox( "安装过滤规则成功 ! " , "提 示 " , MB_ ICON INFORMATION) ; } } 2. 5 状态监测表维护  状态监测表 (状态表 )是状态检测的基础 ,是驱动程序内部动态维护 ,存放数据包 连接状态信息的表. 状态表结构包括“源 IP地址 ”、“目标 IP地址 ”、“源开放端口号 ”、“时间溢出值 ( Timeout) ”等. 状态表用 AddStateToL ist添加状态结点到表内 ; IsInStateL ist判断数据包是否记录在状态表 中 ;同时对每个结点存在的时间进行时间溢出值检测. 如果此状态结点连接超时 ,调用 DeleteStateL istNode 53第 2期 袁  暋 ,等 :嵌入内核式状态检测防火墙的研究与实现 删除超时结点. 状态表维护的部分实现代码 : NTSTATUS AddStateToL ist (ULONG source IP, ULONG destination IP, ULONG highPort) {{ StateL ist3 pNew = ( StateL ist3 ) ExA llocatePool(NonPagedPool, sizeof ( StateL ist) ) ; if (pNew = = NULL)   return STATUS_ INSUFF IC IENT_RESOURCES; pNew - > stateN. destination IP = destination IP; / / 填充这块内存 pNew - > stateN. source IP = source IP; pNew - > stateN. highPort = highPort; KeQuerySystemTime ( &pNew - > stateN. time) ; pNew - > pNext = state_Header; / / 连接到状态列表中 state_Header = pNew; return STATUS_SUCCESS; } 状态表中存放的是网络数据包的连接状态 ,一条连接状态 ,存放一个表项 ,每个表项设有一个时间溢 出值 ( Timeout) ,此值可控制该表项在状态表中存留的时间 ,而状态表容量空间是最容易遭受拒绝服务 (DoS)攻击的地方. Timeout为数据包允许的连接时间 (例如初值为 60秒 ) ,相当于定时器 ,当 Timeout = 0 时 ,断开连接 ,清除该表项. 可通过调控时间溢出值 ( Timeout) ,来控制状态表中表项的存量. 例如取出状态 表中允许的最大表项值 (如 A)和当前已存表项值 (如 B ) ,当 B等于 A的 2 /3时 ,将 Timeout的值减少为 20 秒 ;当 B =A时 , Timeout的值设为 0,以避免 DoS攻击 ,可提高防火墙抗攻击性能. 2. 6 界面及主要操作功能  用户通过窗口界面发送设备控制代码 ( IOCTL )至钩子函数 (回调函数 ,也称 过滤器 )调用防火墙的各操作功能 ,实现用户模式与内核模式的交互. 回调函数中专门设计一个函数接受 IOCTL设备控制代码 ,并调用执行相关操作功能. 此部分的核心是使用 CD river类 (这个类封装了加载该过滤器和与之交互的 W in32数 ) ,向过滤器发 送相应设备控制代码 ( IOCTL) ,如图 3所示. 防火墙主要操作功能如图 4所示. 3 结束语 在 W indows 2000 /XP操作系统内核模式下 ,采用 Ipfltdrv机制的过滤钩子技术实现数据包状态检测过 滤. 使用过滤钩子实现数据包过滤具有较强的灵活性 ,它可以过滤所有的 IP数据包以及上层的数据包. 通 过状态表时间溢出值调控 ,减少不必要的连接 ,提高了防火墙抗拒绝服务 (DoS)的性能. 使用 SYN /ACK标 志位和虚连接 ,维护 TCP和 UDP包的状态监测表 ,支持 TCP和 UDP协议的数据包的状态检测 ,比传统防 火墙不仅包过滤效率高 ,成本低 ,且抗 DoS攻击能力强. 今后还可以在内核模式加入其他更多协议的过滤 模块 ,扩展防火墙对数据包的过滤范围. 63 合肥学院学报 (自然科学版 ) 第 19卷 参考文献 : [ 1 ] 李伟 ,董冰. 基于状态检测的防火墙技术 [ J ]. 兵工自动化 , 2005, 24 (6) : 55256. [ 2 ] 李永禄 ,秦华 ,王巍. L inux内核状态检测防火墙的研究与分析 [ J ].无线电通信技术 , 2005, 31 (1) : 123. [ 3 ] 刘宝旭 ,毕学尧 ,许榕 ,等.嵌入内核式动态防火墙的设计与实现 [ J ]. 计算机工程 , 2002, 28 (2) : 11212. [ 4 ] 浪涛. 什么是状态检测防火墙 [ J ].网络安全技术与应用 , 2003, 2 (2) : 35. [ 5 ] 李俊娥 ,王婷 ,雷公武. UDP状态检测防火墙及实现算法 [ J ]. 武汉大学学报 :工学版 , 2004, 37 (2) : 69273. [ 6 ] 文俊浩 ,姬楷 ,高存志 ,等.嵌入式 L inux防火墙系统研究与实现 [ J ]. 计算机工程与应用 , 2007, 43 (28) : 1442146. [责任编校 :李  军 ] Research and Im plem en ta tion of the Em bedded Kernel Sta te In spection F irewa ll YUAN M in1, 2 , HOU Zheng2feng1 , ZHONG Bo2cheng2 , TAN M ing2 (1. School of Computer and Information, Hefei University of Technology, Hefei 230009; 2. Department of Computer Science and Technology, Hefei University, Hefei 230601, China) Abstract: By using the mechanism of Ipfltdrv, a state inspection module was embedded in the kernel of W indows 2000 /XP to filter data packet. State monitor table can be maintained by using TCP SYN / ACK flag and UDP virtual connection. Thus, state detection can be realized. The overflow value of time can be dynam ically adjusted according to the state remainder value. In this way, the remainder value can be controlled and Dos attack can also be avoided, which enhance the performance of the anti2attack of firewall. Key words: firewall; state inspection; filter2hook driver (上接第 20页 ) [ 6 ] Calvis D. The Inner Radius of Univalence of Normal Circular Triangles and Regular Polygons[ J ]. Comp lex Variables, 1985 (4) : 2952304. [ 7 ] Leila M iller2Van W ieren. Univalence Criteria for Classes of Rectangles and Equiangular Hexagons[ J ]. Ann Acad Sci Fenn Math, 1997, 22: 4072424. [ 8 ] Ahlfors Lars V. Comp lex Analysis[M ]. 3 rd ed. 北京 :机械工业出版社 , 2005: 184. [责任编校 :罗季重 ] A Br ief A lgor ithm for Un iva lent Inner Radius of Rhom bus L I Hui2p ing, LAN Shi2yi (College ofMathematics and Computer Science, Guangxi Nationalities University, Nanning 530006, China) Abstract: The A lgorithm for univalent inner radius of rhombus with the inequality of comp lex modulus was studied. A calculation formula was found, which simp lify the calculation method of univalent inner radius of rhombus p roposed by Zhu Huacheng. W ith the method, it p roves that rhombus is Nehari disk. Key words: schwarz derivative; nehari disk; univalent inner radius 73第 2期 袁  暋 ,等 :嵌入内核式状态检测防火墙的研究与实现
本文档为【嵌入内核式状态检测防火墙的研究与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_092656
暂无简介~
格式:pdf
大小:460KB
软件:PDF阅读器
页数:5
分类:工学
上传时间:2010-09-09
浏览量:20