VC421 简易Windows防火墙的设计与实现VC++
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
当今时代是飞速发展的信息时代,计算机与信息处理技术日渐成熟。随着Internet和计算机网络技术的蓬勃发展,网络安全问题现在已经得到普遍重视。网络防火墙系统就是网络安全技术在实际中的应用之一。本设计实现的防火墙采用IP过滤钩子驱动技术,过滤钩子驱动是内核模式驱动,它实现一个钩子过滤回调函数,并用系统提供的IP过滤驱动注册它,IP过滤驱动随后使用这个过滤钩子来决定如何处理进出系统的数据包。本防火墙由以下几个模块组成:过滤规则添加模块,过滤规则显示模块,过滤规则存储模块,文件储存模块,安装卸载规则模块,IP封包过滤驱动功能模块。用户只需要通过主界面菜单和按钮就可以灵活地操作防火墙,有效地保护Windows系统的安全。
〖本文来自:计算机毕业网 〗
随着计算机技术和网络技术的发展,计算机网络给人们带来了很多便利,于此同时网络安全的问题也伴随着网络技术的发展而日趋严重。使用防火墙能很好的提高系统的安全性,减少系统受到网络安全方面的威胁。本毕业设计选择开发一个Windows下的防火墙,它能够对网络IP数据包按照用户的设置进行过滤。通过此防火墙的开发锻炼了学生的实际动手能力对以后的学习和工作能力的培养具有重要意义。 think58.com [来源:http://www.think58.com]
1.3 本课题研究方法
本设计是使用VC++ 6.0的开发环境,运用IP过滤钩子驱动技术设计和实现的。本次毕业设计应首先分析防火墙的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;同时,在开发设计与实现中,要保存好相关的设计文档。 [资料来源:http://think58.com]
2、允许有限的从Internet上访问到公司网络,如从Internet上只能访问公司的WWW和FTP服务器。
作为防火墙策略,就是定义实现服务访问策略的具体规则。在实现防火墙策略时,用户可以采用以下两个原则之一:
1、除了允许的事件之外,拒绝其它的任何事件。
2、除了拒绝的事件之外,允许其它的任何事件。
制定的策略是由一条条规则构成的,防火墙的规则可分为三条链:输入链、输出链和转发链。
2.3 包过滤防火墙
2.3.1 数据包
数据包是指IP网络消息。IP标准定义了在网上两台计算机之间发送的消息的结构.结构上,一个包包含了一个信息头和应被传送数据的一段消息体。Linux中包含的IP防火墙机制3种IP消息类型:ICMP(Internet控制消息协议)、UDP(用户数据报协议)和 TCP(传输控制协议)。所有的IP包头包含了源、目的IP地址、IP协议消息类型。包头里根据协议类型还包括了不同的字段。ICMP数据包包含了一个类型字段,用来标识控制或状态消息类型。UDP和TCP包包含了源和目的服务端口号。
think58.com
[来源:http://www.think58.com]
[资料来源:THINK58.com]4.4.5 文件载入功能模块
相对于文件储存功能模块,该功能是实现用户可以导入一个后缀名为.rul的并且保存了有效规则的文件。
4.4.6 安装卸载功能摸块
防火墙要过滤数据包,就需要将IP过滤驱动按照定义的规则进行过滤。用户通过添加规则将规则存储于防火墙的存储功能模块中,想要将规则发送给IP过滤驱动,就需要对该规则进行安装。安装和卸载的功能就是将过滤规则传送给IP过滤驱动或是将已安装的规则从过滤驱动中删除。
4.4.7 IP封包过滤驱动功能模块
该功能模块是整个包过滤防火墙的核心部分,IP封包过滤驱动能按照用户定义的规则对数据包做出阻止或是放行的选择。
5 防火墙设计
5.1 程序关键类
5.1.1 应用程序类CFireWallAPP
每个MFC应用程序都必须包括一个从CWinApp派生的应用程序类,在本程序中的应用程序类就是CFireWAllApp。应用程序类构成了应用程序的主执行线程,它封装了一个Windows应用程序的初始化、运行和终止。
5.1.2 主框架类CMainFrame
主框架类CMainFrame构成整个程序的框架,包括菜单、工具、按钮等。它构成了程序功能的主框架。下面列出了CmainFrame类中的主要方法和变量。
class CMainFrame:public CFrameWnd
think58好,好think58
[资料来源:http://www.THINK58.com]
[来源:http://think58.com]else if(m_protocol == "所有")
protocol = 0;
if(m_action == "放行")
cAction = 0;
else
cAction = 1;
srcP〖本文来自:计算机毕业网 〗 ort = m_portDestination;//目的端口
2、将取得的数据添加到文档类中:
BOOL CFireWallDoc::AddRule(unsigned long srcIp,
unsigned long srcMask,
unsigned short srcPort,
unsigned long dstIp,
unsigned long dstMask,
unsigned short dstPort,
unsigned int protocol,
int action)
{
rules[nRules].sourceIp = srcIp;
rules[nRules].sourceMask = srcMask;
rules[nRules].sourcePort = srcPort;
rules[nRules].destinationIp = dstIp;
rules[nRules].destinationMask = dstMask;
rules[nRules].destinationPort = dstPort;
rules[nRules].protocol = protocol;
rules[nRules].action = action; 本文来自think58 [来源:http://think58.com]
nRules++;
return TRUE;
}
think58好,好think58 [来源:http://think58.com]
[来源:http://www.think58.com]