基于数据包过滤技术的防火墙模型设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机光盘软件与应用
2010年第5期 Computer CD Software and Applications 软件设计开发
— 145 —基于数据包过滤技术的防火墙模型设计
肖 瑜,吕定辉
(濮阳职业技术学院,河南濮阳 457000)
摘 要:本文分三部分介绍了个人防火墙系统模型的设计。第一部分介绍了数据包过滤模块的设计;第二部分进程管理模块实现了与Windows操作系统的任务管理器的“任务管理”部分的功能;第三部分端口扫描模块在Windows平台下使用套接口(SOCKET)技术实现了把本机作为客户端,把需要扫描的IP地址所在的机器作为服务器端端口扫描。
关键词:防火墙;套接口;内核;NDIS;过滤器
中图分类号:TP393.08 文献标识码:A 文章编号:1007-9599 (2010) 05-0145-01
Firewall Model Design against Data Package Filtering Technology
Xiao Yu,Lv Dinghui
(Puyang Vocational&Technical Institute,Puyang 457000,China)
Abstract:This three-part model describes the design of a personal firewall.The first part describes the design of packet filtering module;second part of the process management module with the Windows operating system Task Manager"Task Manager"section of the function;third part of the port scan module in the Windows platform using the socket(SOCKET)technology has put the machine as the client,need to scan the IP address of the host machine as the server-side port scan.
Keywords:Firewall;Socket;Kernel;NDIS;Filter
一、系统模块的划分
系统由数据包过滤模块、进程管理模块及IP地址扫描功能三大部分组成。过滤模块是本系统工作的基础,在设计阶段充分考虑了系统在实际应用中的实际应用情况,设计了过滤规则的添加、修改,过滤数据包的实时性等,并详细描述了过滤钩子驱动的实现。进程管理模块可以在本系统查看并结束相应非法进程。客户端使用套接口技术实现了端口扫描功能。三部分结合在一起组成了个人防火墙系统的完整功能。
二、过滤模块
(一)过滤模块的功能
内核中将操作系统的网络传输所有出入包,都流入到虚拟设备中,按照一定的规则进行处理数据包,即可完成数据包过滤功能。
程序的过滤模块主要应实现的功能包括:
添加过滤规则;删除过滤规则;保存过滤规则;加载过滤规则;卸载过滤规则;安装过滤规则;启动过滤;停止过滤。
本文采用过滤钩子技术获取数据包,因此应当首先加载过滤钩子驱动。
(二)过滤钩子驱动
NDIS(网络驱动程序接口)提供了一种通过建立过滤器钩子驱动过滤IP包的方法。具体步骤是:在过滤器钩子驱动中建立一个普通的设备,通过IOCTL_PF_SET_TENSION_POINTER操作将其内核模式过滤钩子挂接到系统默认的IP过滤器驱动上,从而在其过滤钩子中实现完整的基于数据包的各种分析和过滤处理。该法仅能对IP包进行过滤,其他的协议不会经过该过滤钩子进行处理。下面对该步骤予以详细说明。
1.过滤钩子驱动的创建
首先由过滤器钩子驱动程序设置过滤器钩子回调函数,它是这类驱动程序的主体,通过系统提供的IP过滤器驱动注册这些过滤器钩子回调函数。接着,IP过滤器驱动就可以使用过滤器钩子决定如何处理传入或传出的数据包。
当过滤器钩子驱动通过系统提供的IP过滤器驱动注册其过滤钩子(的入口点时,它给出了过滤器钩子的符号(可变)地址。由于过滤器驱动程序并不提供过滤器钩子入口点的名称,因此,开发人员可以自由选择过滤器钩子名称。一般地,应根据过滤器钩子函数的基本功能来命名[51]。
过滤器钩子对传入和传出的数据包做一些特殊处理。首先是把数据包的特定信息和IP过滤器驱动提供给过滤器钩子的信息加以比较,以此决定下一步如何处理数据包。其次,在过滤器钩子检测完数据包后,向IP过滤器驱动回复三种响应代码,通知IP 过滤器驱动如何对数据包进行处理数据包。
2.初始化和卸载过滤器钩子驱动
像所有的内核模式驱动程序一样,过滤器钩子驱动程序为驱动对象创建和初始化一个设备对象例程是某个系统对外提供的功能接口或服务的集合。通过IP过滤器驱动注册驱动的过滤器钩子。如果用户模式应用程序(非核心态工作模式)或高层驱动程序通过向下层过滤钩子驱动程序发送一个I/O控制请求设置过滤钩,则必须设置和输出一个控制设备的入口点。当操作系统卸载过滤器钩子驱动程序时,卸载例程将函数中已创建的设备对象移走,而不是清除先前已注册的过滤器钩子。
3.设置和清除过滤器钩子
过滤器钩子驱动程序设置了过滤器钩子回调函数,并通知IP 过滤器驱动为每个传入或者传出的IP数据包调用这个钩子回调函数。过滤器钩子有可能清除先前注册的钩子回调。
4.过滤器钩子的I/O控制
当应用程序或者上层驱动程序通过向过滤器钩子驱动程序发送I/O控制请求建立过滤器钩子时,驱动程序自动会响应例程,例程处理发来的I/O控制请求。
三、进程管理模块
(一)进程管理模块的功能
程序的进程管理模块主要应实现的功能包括:
1.获取本机正在运行的系统进程的名称、ID号等,并显示在列表框中。
2.删除某个进程:指定需要删除的进程的唯一标志号进行删除。
(二)进程管理的实现
1.获取和显示系统进程
首先使用函数给当前系统内执行的进程拍快照(Snapshot),也就是获得一个进程列表,该列表中记录着进程的ID、进程对应的可执行文件的名称等数据。然后遍历快照中记录的列表。可显示每个进程的可执行文件名和进程ID号等。
2.删除系统进程
在对一个进程操作前,必须首先取得该进程的进程句柄。函数创建进程后会返回一个进程句柄,而对于一个已经存在的进程,只能使用固定函数来取得这个进程的访问权限,该函数打开一个存在的进程并返回其句柄。
四、基于套接口技术端口扫描模块的设计
端口扫描模块通过创建套接口、请求连接、套接口I/O状态查等一系列动作与其他IP地址建立连接。主要实现的功能为:对单个IP地址的端口进行扫描;对IP段地址的特定端口进行扫描。
五、小结
本章描述了个人防火墙系统的设计模型。用户可以根据基于钩子过滤技术的数据包过滤模块获得的数据和IP过滤器驱动提供给过滤器钩子的信息加以比较,以此决定数据包被如何被处理。进程管理模块可以让用户更便捷的判断当前的进程是否合法,并决定是否继续或者中断当前进程。使用套接口技术来扫描当前与用户主机进行通信的IP地址,设计了端口扫功能,描在一定程度上起到了更加全面的保护作用。