网络安全课程设计
河南理工大学
计算机科学与技术学院
课程设计报告
2012— 2013学年第一学期
课程名称 网络安全
设计题目 简单防火墙设计
姓 名 孙亚飞
学 号
专业班级 网信10—3
指导教师 刘 琨
2013 年1月5日
目录
一、概述..................................................................... 3
1.1背景 ................................................................. 3
1.2开发环境 ............................................................. 4
1.3设计要求 ............................................................. 4
二、防火墙概述 ............................................................... 4
2.1防火墙的概念 ......................................................... 4
2.2防火墙的基本策略 ..................................................... 5
2.3包过滤防火墙的工作原理 ............................................... 5
2.4防火墙的性能指标——吞吐量 ........................................... 6
三、防火墙的分类 ............................................................. 7
3.1网络层防火墙 ......................................................... 7
3.2应用层防火墙 ......................................................... 7
四、防火墙的设计 ............................................................. 8
4.1防火墙的设计原理 ..................................................... 8
4.2常见的防火墙策略 ..................................................... 9
4.2.1筛选路由器 ..................................................... 9
4.2.2单宿主堡垒主机 ................................................. 9
4.2.3双宿主堡垒主机 ................................................. 9
4.2.4屏蔽子网 ...................................................... 10
五、调试.................................................................... 10
5.1测试概述 ............................................................ 10
5.2测试方法 ............................................................ 11
5.2.1黑盒原理 ...................................................... 11
5.2.2白盒原理 ...................................................... 12
5.3测试过程 ............................................................ 13
六、结束语.................................................................. 15
七、参考文献 ................................................................ 15
附录: ..................................................................... 16
简单防火墙设计
一、概述
1.1背景
随着计算机网络的饿普及和发展,以及政府和企业信息化艰涩步伐的加快,
现有企业的网络体系结构越来越复杂。复杂的网络结构暴露了众多的安全隐患,对网络安全的需求以前所未有的速度迅猛增长。如何试网络安全满足业务的高速推进,成为越来越热门的话题。
安全的网络系统对于现代企业来说是日常办公和业务应用的支撑体系。很多
企业曾饱尝网络系统遭受攻击的痛苦,意识到网络安全的重要性,实施了简单的基于防火墙技术的安全解决策略,但绝大多数企业还处于观望阶段,或者出于一种调研阶段。
尽管企业网络与个人网络所存在的主要安全隐患一样们都是计算机病毒感
染、木马和恶意程序的入侵和黑客攻击,但企业网络安全与个人计算机的网络安全相比,安全防护的重要性药高许多。一旦存在这些安全隐患。企业网络的损失可能是无法估计的。毕竟个人用户最多只是个人的计算机系统损坏,或者数据丢失,而对于企业网络远没有这么简单。企业网络一旦受到威胁,就可能使整个网络无法正常工作,服务器系统瘫痪,甚至所有网络数据损坏或丢失,其损失可能是灾难性的。作为网络管理员,应当根据当前的安全形式认清企业网络中主要需要防范的安全隐患。而不要以个人计算机网络安全来概括企业网络安全。
正是基于企业网络安全的重要性,企业网络安全防护成本要远比个人网络
高。在个人计算机的网络安全防护中通常只是安全个人版病毒防护程序和软件防火墙,而在企业网络中。仅靠这些事远远不够的。企业网络中通常部署的是硬件防火墙、网络版病毒防护程序和其他诸如入侵检测系统、网络隔离设备等。同时,部署企业网络的容灾系统也是非常必要要的,因为它是一切安全防护措施的最后的防线。
防火墙是一种隔离技术,是一类防范措施的总称,利用踏实的内部网络与
Internet或者其他外部网络之间相互隔离,通过限制网络互访来保护内部网络。防火墙是建立在内部网络与外部网络之间的唯一安全通道,简单的可以只用路由器实现,复杂的可以用主机甚至一个子网来实现,它可以在IP层设置屏障,也可以用应用软件来阻止外来攻击。通过制定相应的安全规则,可以允许符合条件的数据进入,同时将不符合条件的数据拒之门外,这样就可以阻止非法用户的侵入,保证内部网络的安全。
1.2开发环境
Windows xp Microsoft Visuai Studio 6.0
Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高
级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。
1.3设计要求
通过所学的知识与现实结合,在编程环境实现简单的防火墙的设计,并实现
简单的过滤功能
二、防火墙概述
2.1防火墙的概念
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之
间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,
防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)
分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。
2.2防火墙的基本策略
按照美国国家计算机安全协会(NCSA)的建议,制定安全计划必须包括服务访
问策略和防火墙设计策略。服务访问策略应包括控制用户对某些Internet服务的访问。另外,用户也需要限制访问的方式,如PPP或SLIP。在建立服务访问政策时,需要注意两个方式:
1.不允许从Internet上访问到用户的网络,但是允许个别用户(设定得到)
的网络访问有限Internet站点。但必须进行地址伪装;
2.允许有限的从Internet上访问到公司网络,如从Internet上只能访问公
司的WWW和FTP服务器。
作为防火墙策略,就是定义实现服务访问策略的具体规则。在实现防火墙策
略时,用户可以采用以下两个原则之一:
1.除了允许的事件之外,拒绝其他所有的事件。
2.除了拒绝的事件之外,允许其他的任何事件。
制定的策略是由一条条规则构成的,防火墙的规则可分为三条链:输入链、
输出链和转发链。
2.3包过滤防火墙的工作原理
数据包是指IP网络消息。IP标准定义了在网上两台计算机之间大宋的消息
的结构,结构上,一个包包含了一个信息头和应被传送数据的一段消息体。Linux
中包含的IP防火墙机制3种IP消息类型:ICMP(Internet控制消息协议)、UDP(用户数据报协议)和TCP(传输控制协议)。所有的IP包头包含了源、目的IP地址、IP协议消息类型。包头里根据协议类型还包括了不同的字段。ICMP数据包包含了一个类型字段,用来标识控制或状态消息类型。UDP和TCP包包含了源和目的服务端口号。
包过滤防火墙是通过在网络中的适当位置对数据包进行过滤,根据检查数据
流中每个数据包的源地址、目的地址、所有TCP端口号和TCP链路状态等要素,然后依据一组预定义的规则,以允许合乎逻辑的数据包通过防火墙进入到内部网络,而将不合乎逻辑的数据包加以删除。因为路由器通常分布在有不同安全需求和安全策略的网络的交界处,因此可以通过在路由器上使用包过滤在可能的情况下实现只允许授权网络的数据进入。在这些路由器上使用包过滤一种比较经济的在现有路由基础结构上增加防火墙功能的机制。顾名思义,包过滤在路由过程中对指定包进行过滤(丢弃)。对过滤的判断通常基于单个包的头部所包含的内容(例如源地址,目的地址,协议,端口等)。
包过滤防火墙通常在操作系统内部实现,并且操作在IP网络和传输协议层。
它在对基于IP包头信息实施过滤后,通常对包的路由作决策来保护系统。包过滤防火墙由一组接受或禁止规则列表组成。这些规则明确定义了哪个包将被允许或不允许通过网络接口。防火墙规则使用在上面描述的包头字段来决定是否允许路由一个包通过,以达到它的目的,或无声息的将包丢弃掉,或阻止包并向它的发送机器返回一个错误状态。这些规则是基于特定的网络接口卡和主机IP地址、网络层源和目的IP地址、传输层TCP和UDP服务端口、TCP链接标志、网络层ICMP消息类型及这些包是进入的还是发出的。
包过滤功能是所有的防火墙都具备的一个基本功能,实际上防火墙要完成的
功能从根本上来说,就是要按照用户的要求来控制网络所流通的数据包,屏蔽那些无益的连接。
2.4防火墙的性能指标——吞吐量
网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要耗费资
源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。其测试方法
是:在测试中以一定速率发送一定数量的帧,并计算待测设备传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最终结果。吞吐量测试结果以比特/秒或字节/秒表示。
吞吐量和报文转发率是关系防火墙应用的主要指标,一般采用FDT(Full
Duplex Throughput)来衡量,指64字节数据包的全双工吞吐量,该指标既包括吞吐量指标也涵盖了报文转发率指标。
三、防火墙的分类
3.1网络层防火墙
网络层防火墙可视为一种 IP 封包过滤器,运作在底层的 TCP/IP 协
议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
我们也能以另一种较宽松的角度来制定防火墙规则,只要封包不符合
任何一项“否定规则”就予以放行。现在的操作系统及网络设备大多已内置防火墙功能。
较新的防火墙能利用封包的多样属性来进行过滤,例如:来源 IP 地
址、来源端口号、目的 IP 地址或端口号、服务类型(如 WWW 或是 FTP)。也能经由通信协议、TTL 值、来源的网域名称或网段...等属性来进行过滤。
3.2应用层防火墙
应用层防火墙是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器
时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且封锁其他的封包(通常是直接
将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕
虫或是木马程序的快速蔓延。不过就实现而言,这个方法既烦且杂(软件有千千百百种啊),所以大部分的防火墙都不会考虑以这种方法设计。
四、防火墙的设计
4.1防火墙的设计原理
防火墙就是一种过滤塞,可以让喜欢的东西通过这个塞子,别的东西
都统统过滤掉。在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。
当构造防火墙设备时,经常要遵循下面两个主要的概念。第一,保持
设计的简单性。第二,要计划好一旦防火墙被渗透应该怎么办。
保持设计的简单性:
一个黑客渗透系统最常见的方法就是利用安装在堡垒主机上不注意的
组件。建立你的堡垒主机时要尽可能使用较小的组件,无论硬件还是软件。堡垒主机的建立只需提供防火墙功能。在防火墙主机上不要安装像WEB服务的应用程序服务。要删除堡垒主机上所有不必需的服务或守护进程。在堡垒主机上运行少量的服务给潜在的黑客很少的机会穿过防火墙。
安排事故计划:
如果你已设计好你的防火墙性能,只有通过你的防火墙才能允许公共
访问你的网络。当设计防火墙时安全管理员要对防火墙主机崩溃或危及的情况作出计划。如果你仅仅是用一个防火墙设备把内部网络和公网隔离开,那么黑客渗透进你的防火墙后就会对你内部的网络有着完全访问的权限。为了防止这种渗透,要设计几种不同级别的防火墙设备。不要依赖一个单独的防火墙保护惟独的网络。如果你的安全受到损害,那你的安全策略要确定该做些什么。采取一些特殊的步骤,包括:
创建同样的软件备份 :
配置同样的系统并存储到安全的地方
确保所有需要安装到防火墙上的软件都容易,这包括你要有恢复磁盘。
4.2常见的防火墙策略
常见的防火墙设计都提供一个确定的安全级别,一个简单的规则是越
敏感的数据就要采取越广泛的防火墙策略,这四种防火墙的实施都是建立一个过滤的距阵和能够执行和保护信息的点。这四种选择是:筛选路由器、单宿主堡垒主机、双宿主堡垒主机 、屏蔽子网。
4.2.1筛选路由器
即包过滤路由器并且至少有一个接口是连向公网的,如Internet。它
是对进出内部网络的所有信息进行分析,并按照一定的安全策略——信息过滤规则对进出内部网络的信息进行限制,允许授权信息通过,拒绝非授权信息通过。信息过滤规则是以其所收到的数据包头信息为基础的。采用这种技术的防火墙优点在于速度快、实现方便,但安全性能差,且由于不同操作系统环境下TCP和UDP端口号所代表的应用服务协议类型有所不同,故兼容性差。
4.2.2单宿主堡垒主机
是有一块网卡的防火墙设备。单宿主堡垒主机通常是用于应用级网关
防火墙。外部路由器配置把所有进来的数据发送到堡垒主机上,并且所有内部客户端配置成所有出去的数据都发送到这台堡垒主机上。然后堡垒主机以安全方针作为依据检验这些数据。这种类型的防火墙主要的缺点就是可以重配置路由器使信息直接进入内部网络,而完全绕过堡垒主机。还有,用户可以重新配置他们的机器绕过堡垒主机把信息直接发送到路由器上。
4.2.3双宿主堡垒主机
是围绕着至少具有两块网卡的双宿主主机而构成的。双宿主主机内外
的网络均可与双宿主主机实施通信,但内外网络之间不可直接通信,内外部网络之间的数据流被双宿主主机完全切断。双宿主主机可以通过代理或让用户直接注册到其上来提供很高程度的网络控制。它采用主机取代路由器执行安全控制功能,故类似于包过滤防火墙。双宿主机即一台配有多个网络接口的主机,它可以用来在内部网络和外部网络之间进行寻址。当一个黑客想要访问你内部设备时,他(她)必须先要攻破双宿主堡垒主机,这有希望让你有足够的时间阻止这种安全侵入和作出反应。
4.2.4屏蔽子网
是在内部网络和外部网络之间建立一个被隔离的子网,用两台分组过
滤路由器将这一子网分别与内部网络和外部网络分开。在很多实现中,两个分组过滤路由器放在子网的两端,在子网内构成一个“非军事区”DMZ。有的屏蔽子网中还设有一堡垒主机作为唯一可访问点,支持终端交互或作为应用网关代理。这种配置的危险带仅包括堡垒主机、子网主机及所有连接内网、外网和屏蔽子网的路由器。
如果攻击者试图完全破坏防火墙,他必须重新配置连接三个网的路由
器,既不切断连接又不要把自己锁在外面,同时又不使自己被发现,这样也还是可能的。但若禁止网络访问路由器或只允许内网中的某些主机访问它,则攻击会变得很困难。在这种情况下,攻击者得先侵入堡垒主机,然
后进入内网主机,再返回来破坏屏蔽路由器,整个过程中不能引发警报。
屏蔽子网防火墙能够帮助建立一个非防护区,这种类型防火墙利用堡
垒主机夹在两个路由器中间是最安全的防火墙系统。
五、调试
5.1测试概述
软件产品的质量自然是软件开发方和软件使用方共同关注的焦点。原因在于
不论软件的生产者还是软件的使用者,都生存在竞争的环境中,软件开发商为了
占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘 汰出局。
用户为了保证自己业务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使软件开发商的维护费用和用户的使用成本大幅增加,还会产生其他的责任风险,造成公司信誉下降,带来许多问题甚至还可能造成灾难性的后果。软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。平心而论,有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。这里我们就需要用到测试,测试是软件质量的保证,当前的软件测试方法有许多种,由于本系统模块功能较少,且结构相当清晰依据。因此,相对来说,测试比较容易。
5.2测试方法
5.2.1黑盒原理
主要指:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
是否有不正确或遗漏的功能?
在接口上,输入是否能正确的接受?能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?
采用黑盒法的优势很多:
(1)它在已知产品应具有的功能的条件下,通过测试来检测每个功能是否都 能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
(2)“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
黑盒测试是以用户的观点,从输入数据与输出数据的对应关系出发进行测试的,它不涉及到程序的内部结构。很明显,如果外部特性本身有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。黑盒测试法注重于测试软件的功能需求,主要试图发现几类错误:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误。
黑盒测试有两种基本方法,即通过测试和失败测试。在进行通过测试时,实际上是确认软件能做什么,而不会去考验其能力如何。软件测试人员只需运用最简单,最直观的测试案例。在设计和执行测试案例时,总是先要进行通过测试。在进行破坏性试验之前,看一看软件基本功能是否能够实现。这一点很重要,否则在正常使用软件时就会奇怪地发现,为什么会有那么多的软件缺陷出现?在确信了软件正确运行之后,就可以采取各种手段通过搞“垮”软件来找出缺陷。纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试或迫使出错测试。 5.2.2白盒原理
白盒测试主要指:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对
程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
对程序模块的所有独立的执行路径至少测试一遍。
对所有的逻辑判定,取。“真”与取“假”的两种情况都能至少测一遍。 在循环的边界和运行的界限内执行循环体。 测试内部数据结构的有效性,等等。
5.3测试过程
按照在概要设计中所设计的测试案例进行测试,并记录下相应的通过或者相应的失败信息交由开发程序员进行修改。软件测试按阶段可分为:单元测试、集成测试、系统测试和验收测试。设计测试用例主要针对单元测试和集成测试。 设计测试用例的原则是用尽量少的数据测出尽量多的、至今没有发现的错误,因此,对本系统测试时,主要采用基本路径法进行程序模块测试(对象测试),用等价类法和边界值法测试模块的功能测试和集成测试。最终取得测试结果为:
图1
图
2
图3
图4
六、结束语
经过半个月的网络信息安全课程设计实验,在实验过程中学到很多与实际相结合的知识,锻炼了动手的能力。从选题开始遇到该选哪一道题,又应该怎样去做等,遇到了一系列的问题,在此多谢给与我帮助的老师及同学,多谢他们在课程设计的过程中给与我无私的帮助。在此次的实验过程中又重新学习了以前的知识,了解并掌握了TCP、IP、网络安全等相关的知识。多谢老师指导着我尝试进行本次的实验项目,使我明白凡事都是一步一步的进行,只要肯吃苦耐劳、踏实肯干,就一定能完成所要的结果。
七、参考文献
1. 王正军. Visual C++6.0程序设计从入门到精通. 人民邮电出版社 2. 郑莉. C++语言程序设计(第二版). 清华大学出版社 3. 张仕斌,谭三,易勇,蒋毅. 网络安全技术. 清华大学出版社 4. 朱雁辉. Windows防火墙与网络封包截获技术. 电子工业出版社
5. 刘彬彬,李伟明.C语言开发实战宝典.清华大学出版社 6.贾宗璞,许合利.C语言程序设计.人民邮电出版社 7.黎连业,张维.防火墙及其应用技术.清华大学出版社
8.李丹程,刘莹,那俊.C语言程序设计案例实践.清华大学出版社
附录:
程序清单
#ifndef __IP_MONITER_H__ #define __IP_MONITER_H__ #define REG_INSTALL_KEY
_T("SYSTEM\\CurrentControlSet\\Services\\WinSock2\\MiniSPI") #define REG_INSTALL_PATH_ITEM _T("PathName") #define REG_PROTOCOL_CATALOG_KEY
_T("SYSTEM\\CurrentControlSet\\Services\\WinSock2\\Parameters\\Protocol_Catalog9\\Catalog_Entries")
#define REG_PROTOCOL_CATALOG_ITEM _T("PackedCatalogItem") #define MAX_PROTOCOL_CATALOG_LENTH #defineXERR_SUCCESS
#define XERR_PROVIDER_NOT_INSTALL #define XERR_PROVIDER_ALREADY_INSTALL #define XERR_PROVIDER_OPEN_REG_FAILED #define XERR_PROVIDER_SAVE_PATH_FAILED #define XERR_PROVIDER_READ_VALUE_FAILED #define XERR_PROVIDER_CREATE_ITEM_FAILED #define XERR_PROVIDER_SET_VALUE_FAILED #define XERR_PROVIDER_REG_DELETE_FAILED
#define XERR_CREATE_MUTEX_FAILED -809 #define XERR_RELEASE_MUTEX_FAILED -810 #define XERR_SET_ISFILT_FAILED #define XERR_MODIFY_RULE_ERR
#define WM_QUERY_FW_NOTIFY WM_USER+15 #define WM_INFO_FW_NOTIFY WM_USER+16 #defineWM_ADDMONITER WM_USER+17 #define XCTRL_IDLE #define XCTRL_PERMIT #define XCTRL_DENY #define XCTRL_USE //#define XCTRL_ENDUSE typedef struct _XFW_RULE{
0X00 0X01 0X02 0X04 0X08
-811 -812
-806
-807 -808
sizeof(WSAPROTOCOL_INFOW) + MAX_PATH
-801 -802 -803 -804 -805
int control;
TCHAR appName[MAX_PATH]; }XFW_RULE;
#define XFW_RULE_LEN 100 #define XIO_TYPE_NULL #define XIO_TYPE_INIT #define XIO_TYPE_END #define XIO_TYPE_GET_PATH #define XIO_TYPE_GET_RULE #define XIO_TYPE_MODE_TRUE #define XIO_TYPE_MODE_FALSE #define XIO_TYPE_SET_CONTROL #define XIO_TYPE_MODIFY_RULE #define XIO_TYPE_DELETE_RULE #define XIO_TYPE_BEGIN_LOAD_RULE 0X11
#define XIO_TYPE_END_LOAD_RULE #define XIO_TYPE_LOAD_RULE
typedef struct _XIO_CONTROL{ HWND hwnd; //界面窗口句柄 TCHAR *path; //应用程序路径 BOOL permit; XFW_RULE *pRule; }XIO_CONTROL; // 定义操作信息结构
typedef struct _OPERATE_INFO { SOCKET s ; // 套接字句柄
TCHAR szOperate[16] ;// 操作类型,即所调用的函数名 TCHAR szProcess[MAX_PATH] ;// 进程名称 DWORD dwThreadId ;// 线程ID sockaddr_in
LocalAddr ;// 本地地址信息
sockaddr_in RemoteAddr ;// 远程地址信息 int nErrorCode ;// 操作返回的错误码 DWORD dwDataSize ;// 传输数据的大小 LPBYTE lpData ;// 指向传输数据 } OPERATE_INFO, *LPOPERATE_INFO ;
typedef int (WINAPI *XF_IO_CONTROL)(int type, XIO_CONTROL *pContrl); #define QUERY_MUTEX_NAME _T("simple_fw_query_mutex") #define FILT_MUTEX_NAME _T("simple_fw_filt_mutex") #endif
0X00 0X01 0X02 0X04 0X05 0X06 0X07 0X08 0X09 0X10 0X12 0X13