基于MFC的包过滤防火墙设计实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于MFC的包过滤防火墙设计实验报告课程名称:移动网络安全目录一、实验题目...........................................................................................................................1二、实验内容...........................................................................................................................12.1实验配置....................................................................................................................12.2实验任务....................................................................................................................22.2.1基础功能一:直接过滤进出本机所有包............................................................22.2.2基础功能二:一键通过进出本机所有包............................................................22.2.3基础功能三:过滤掉ICMP包.............................................................................32.2.4基础功能四:根据用户规则过滤........................................................................3三、实验结果及分析...............................................................................................................53.1实验前提....................................................................................................................53.2直接过滤进出本机的所有包(BlockALL).............................................................63.3允许通过本机的所有包(AllowALL)....................................................................73.4过滤掉icmp包(blockping).................................................................................73.5用户添加过滤规则....................................................................................................8一、实验题目实现基于MFC的包过滤防火墙,主要包含以下功能:一键禁止/通过所有包一键禁止ICMP包自定义用户规则过滤二、实验内容2.1实验配置本次实验总共两种配置方案:两台机器均为虚拟机(网络类型为NAT模式)一台为虚拟机(网络类型为NAT或桥接模式),一台为主机我采用了方案二,其中主机IP为(172.16.67.43),虚拟机IP为(192.168.28.131),不论对于哪种方案,实验中均需要将两台机器的防火墙都关掉。查询到的IP地址如下:(虚拟机的IP)(主机的以太网本地IP)(主机连接虚拟机虚拟网卡的接口IP)2.2实验任务2.2.1基础功能一:直接过滤进出本机所有包实验原理所谓“过滤掉所有包”的意思就是对于任何的IP地址的任意端口进来的任意类型的包都丢弃,而在实际情况中,任意情况往往用0来表示,代码中只需要将这些项设置为0,是否丢包设置为true即可。实验方法在fireView.cpp文件中补充函数OnBlockall():2.2.2基础功能二:一键通过进出本机所有包实验原理要让所有的包都通过,这个实现方法却不太一样,原因在于底层filter-hookdriver是有过滤顺序的,这个顺序是根据添加到底层规则表的先后顺序确定的,对于一个进来的包,首先匹配第一条过滤规则,匹配上了就应用,否则才会转向下一条,因此这里要通过所有包,就相当于不给过滤规则,不拦截任何包。所以首先是要清空所有的过滤规则,然后设置一些界面状态。实验方法在fireView.cpp文件中补充函数OnAllowall():2.2.3基础功能三:过滤掉ICMP包实验原理要过滤到特定类型的包只需要根据IP协议号中的协议类型判断包的类型然后过滤即可。方法同过滤所有包,只是把协议号稍作变换。实验方法在fireView.cpp文件中补充函数OnBlockping():2.2.4基础功能四:根据用户规则过滤实验原理首先,用户需要添加的规则包括:源IP,源端口,目的IP,目的端口,协议类型(IP,ICMP,TCP),是否通过(ALLOW,DENY);然后将这些规则存到文件saved.rul并写入底层设备文件中去。待用户启用防火墙后,规则生效。那么,要做的事首先是要做用户的规则输入合法性进行检测(IP检测),然后对将这些规则整理成一段字符串并写入文件保存,在写入底层设备中去。同时,由于要让用户能够知道自己的规则确实添加进去了,在界面上要有一个规则显示,这个时候就要将我们存在saved.rul文件中的规则进行字符串分割并读出来,添加到界面上对应的位置中去。实验方法首先,用户输入IP的合法性检测,通过AddRuleDlg.cpp文件中的Verify()函数:其次,用户保存文件并将规则写入底层设备文件中,通过AddRuleDlg.cpp文件中的OnAddsave()函数最后,将规则显示在界面上,通过fireView.cpp文件中的函数ImplementRule():这里又需要用到函数ParseToIp():三、实验结果及测试分析3.1实验前提开始,主机和虚拟机互相ping通,虚拟机网络模式为NAT。功能界面(主界面)(添加规则界面)实验现象:(虚拟机ping主机)(主机ping虚拟机)(虚拟机打开浏览器上网)结果分析虚拟机网络设置,虚拟机可以访问外网服务器,主机和虚拟机相互ping通,且主机与虚拟机在不同的网段。3.2直接过滤进出本机的所有包(BlockALL)测试方法虚拟机主机互相ping,同时虚拟机通过浏览器打开外网。实验现象(虚拟机ping主机)(主机ping虚拟机)(虚拟机上网)结果分析当禁掉所有包之后,虚拟机在ping主机的时候,由于发包时就被阻塞了,所以会显示目标不可达,而主机ping虚拟机时,发出去ping包却没有得到回复,也就是等待了timeout时间还没有回复,因为主机显示请求超时。最后由于是BlockAll,虚拟机中打开其他网页,发现无法访问了,说明HTPP请求的包也被丢弃了,这说明确实是Block了所有的包。3.3允许通过本机的所有包(AllowALL)测试方法虚拟机主机互相ping,同时虚拟机通过浏览器打开外网。实验现象(虚拟机ping主机)(虚拟机ping外网)(主机ping虚拟机)(虚拟机上网)结果分析虚拟机和主机可以相互ping通,说明ping请求(ICMP包)有效,同时虚拟机可以上外网,说明HTTP请求通过,那就是说可以通过不止一种包,我们认为AllowAll的功能实现了。3.4过滤掉icmp包(blockping)测试方法虚拟机主机互相ping,同时虚拟机通过浏览器打开外网。实验现象(主机ping虚拟机)(虚拟机ping主机)(虚拟机上外网)结果分析虚拟机ping主机显示目标不可达,说明虚拟机在发包的时候就被丢包了,由于在虚拟机启用的防火墙禁掉了往来的ICMP,因此虚拟机的ping逻辑正确,主机ping虚拟机的情况下,由于主机没有防火墙(实验前提中主机的防火墙被关闭),主机可以顺利发包到虚拟机,但是虚拟机判定这个是ICMP包,于是丢掉这个包,那么自然不会给出相应的ping回复包,所以主机在timeout时间内没能等到虚拟机的回复包因此显示请求超时。而打开虚拟机的浏览器发现可以正常上外网,这说明http请求被通过了,证明禁用的仅仅是ICMP包。3.5用户添加过滤规则实验现象一添加过滤规则为:利用主机本地IP添加过滤规则测试方法:虚拟机与主机本地IP互相ping代表:丢弃从主机(172.16.67.43)到虚拟机(192.168.28.131)的ICMP包(任意端口)通过ViewRules显示:(虚拟机ping主机)(主机ping虚拟机)添加过滤规则:利用主机与虚拟机的接口IP添加过滤规则测试方法:虚拟机与主机虚拟机接口IP互相ping,同时虚拟机ping主机本地IP过滤掉所有从主机(192.168.28.1)到虚拟机(192.168.28.131)的ICMP包(主机ping虚拟机)(虚拟机ping主机本地连接)(虚拟机ping主机虚拟机接口)结果对比分析一情况一(主机本地IP):虚拟机ping主机时,虚拟机可以发出ping包,但是由于主机到虚拟机的ICMP包被拦截(因为丢弃了从主机到虚拟机的ICMP回复包),因次不能ping成功,虚拟机显示timeout,而虚拟机ping主机时是可以ping通的。情况二(主机虚拟机接口IP):虚拟机ping主机时,由于在接口那里主机的ping回复包被拦截,因此虚拟机显示“timeout”,而主机显示“请求超时”是因为主机发往虚拟机接口的包被丢弃主机没有在timeout时间内得到回复。情况分析:按理说在情况一,如果虚拟机ping主机不能成功的收到回复而导致请求超时,那么同理主机ping虚拟机的时候其发出去的包也同样会被虚拟机丢弃掉,从而现象应为“请求超时”,可是并没有,其原因是主机到虚拟机有多条路径,而虚拟机到主机只有一条路径,主机到虚拟机的包利用到的实际上并不是本地IP发出去的,而是经过了别的路径(比如通过虚拟机接口192.168.28.1),而此时并没有过滤掉虚拟机与主机接口的ICMP包,因此主机成功ping通;对于情况二,就比较容易理解了,但是注意的是如果此时虚拟机ping的是主机的本地IP,仍然是可以ping通的,其原因是没有相应IP的拦截,因为在拦截的时候只针对sourceIP和destinationIP只要不符合就不会拦截了。实验现象二添加规则为:利用主机本地IP添加过滤规则测试方法:虚拟机与主机本地IP互相ping过滤掉从虚拟机(192.168.28.131)到主机(172.16.67.43)的所有ICMP包(虚拟机ping主机)(主机ping虚拟机)用户添加规则:利用主机与虚拟机接口添加IP添加规则测试方法:虚拟机与主机虚拟机接口IP互相ping,同时虚拟机ping主机本地IP过滤掉从虚拟机(192.168.28.131)到主机(192.168.28.1)的所有ICMP包(虚拟机ping主机本地IP)(虚拟机ping主机接口)(主机ping虚拟机)结果对比分析二由于有上一个实验结果的参照,我们这个实验结果也比较好理解了。情况一(主机本地IP):虚拟机ping主机本地IP,在发包时被虚拟机的防火墙拦截

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功