防火墙防火墙软件

防火墙软件  时间:2021-04-02  阅读:()
第24卷第1期华侨大学学报(自然科学版)Vol.
24No.
12003年1月JournalofHuaqiaoUniversity(NaturalScience)Jan.
2003文章编号1000-5013(2003)01-0092-06利用VC++编程实现防火墙数据包过滤吴金龙(华侨大学信息科学与工程学院,福建泉州362011)摘要随着计算机网络深入社会、经济、国防、科技与文教等各个领域,计算机系统的安全问题正变得日益复杂和突出.
资源共享和网络分部更增加了网络收到威胁和攻击的可能性,于是基于包过滤加状态检测的防火墙系统成为保护网络安全的工具.
文中介绍一种集数据包过滤、日志、代理服务于一体的复合型防火墙系统,着重论述利用VC++编程技术实现数据包过滤的软件方法.
关键词复合型防火墙,包过滤,网络安全中图分类号TP393.
08∶TP312文献标识码A防火墙(Firewall)是一种有效的网络安全模型.
实现防火墙的技术有多种,最主要的技术包括数据包过滤和代理服务.
传统的包过滤在遇到利用动态端口的协议时会发生困难,如文件传输协议FTP.
它需要实现将所有可能用到的端口打开,这又会给安全带来不必要的隐患.
动态包通过状态检测检查应用程序的信息(如FTP的PORT和PASS命令),以便判断此端口是否允许需要临时打开;而当传输结束时,端口又恢复为关闭状态.
组成复合型防火墙有两个基本要素——自适应代理服务器与动态包过滤器.
代理可以提供极好的访问控制、登录以及地址转换功能,对进出防火墙的信息进行记录,便于管理员监视和管理系统.
1系统模块的设计根据小型实用的特性,我们利用1台Cisco2600路由器和3台PC兼容机,构建主机过滤型的防火墙.
Cisco2600路由器作为内部网络和外部网络的中间接口,充当过滤路由器.
运行防火墙程序的PC机作为堡垒主机,充当代理服务器,提供HTTP代理.
另外两台PC机作为内部网络主机.
过滤路由器使用了两个Ethernet口,其中Ethernet0/0口的IP地址设为210.
34.
251.
80,连接电脑系的路由器,Ethernet0/1口的IP地址设为192.
168.
0.
1.
它们作为两台内部网络主机的网关,两台内部网络主机通过交换机连接在一起,交换机的UpLink口连接路由器.
系统规定,任何外部网络的主机只能与内部网络的堡垒主机建立连接.
防火墙软件自带一个简单的包过滤系统.
当个人上网时,如用户机器装有支持NDIS规范的网卡,则可以启动软件包过滤系统,为用户提供防火墙级的安全保障.
代理服务进行基本身份验证和用户管理,限收稿日期2002-09-17作者简介吴金龙(1943-),男,教授制最大连接数目,避免系统超载.
防火墙的体系结构,如图1所示.
图1复合型防火墙的体系结构系统共分为4个模块:包过滤模块、用户管理模块、日志模块和代理模块.
其中包过滤模块在OSI模型的网络层实现,它分为监听模块和过滤模块.
两个子模块有选择的让数据包在内部和外部主机间进行交换,根据设定的IP地址或端口号,允许某些数据包通过,同时又阻断某些数据包.
日志模块对监听子线程和代理子线程建立详细的日志记录,管理员可以查看这些日志,并可根据需要将其保存成SQL数据库表格,建立永久日志,以备日后检查.
代理模块提供HTTP1.
1代理,代理过程中要求基本认证,用户名及密码从用户管理模块取得,限制最大连接数为80.
用户管理模块登记要求使用代理的用户,代理用户缴纳一定金额后可以获得用户密码.
代理用户在使用代理过程中,程序自动根据其使用代理的下行流量来进行计费〔1〕.
2利用VC++的多线程特性编程实现数据包过滤大家知道,VC++6.
0对网络通信、硬件驱动等方面的程序开发提供了强大的支持,使用DDK和Winsock可以开发底层的网卡驱动程序.
VC++具有多种优良的编程特性,主要体现在下列几方面.
2.
1多线程编程和执行系统的各个进程在自己的程序空间内运行可以包括一个或多个线程,其中至少有一个主线程.
这些线程之间互不干扰.
操作系统根据系统核心的调度算法,轮流将确定的时间片分配给处于就绪状态的线程,使得每个线程均有机会执行.
使用多线程可以利用Windows的并发执行特点,极大地提高程序运行效率.
2.
2NDIS网络驱动程序NDIS(NetworkDriverInterfaceSpecification)是MicroSoft和3COM公司联合制定的网络驱动规范,并提供了大量的操作函数.
它为上层的协议驱动提供服务,同时屏蔽了下层各种网卡的差别.
NDIS向上支持TCP/IP,NWLinkIPX/SPX,NETBEUI等多种网络协议,向下支持不同厂家生产的多种网卡.
NDIS还支持多种工作模式,支持多处理器,提供一个完备的NDIS库.
库中所提供的各个函数都是工作在核心模式的,不宜直接操作,需要寻找另外的接口〔2〕.
2.
3采用VXD技术WindowsXX使用IntelCPU的两个保护级Ring0和Ring3.
系统进程运行于Ring0,因而具有对系统全部资源的访问权和管理权.
普通用户进程运行于Ring3,只能访问自己的程序空间,不允许对系统资源进行直接访问,许多操作受到限制.
要实现对网卡的直接读写,进程必须93第1期吴金龙:利用VC++编程实现防火墙中的数据包过滤运行在Ring0优先级,为此必须采用VXD虚拟设备驱动程序作为WindowsXX系统和物理设备之间的接口.
它不仅适用于硬件设备,也适用于按VXD规范所编制的各种软件"设备".
WindowsXX系统的底层功能只能在VXD中调用,应用程序如果要用,必须编个VXD作为中介.
VXD作为应用程序在系统中的一个代理,应用程序通过它来完成自己做不到的事情,并通过这一手段,WindowsXX系统为普通应用程序留下了扩充接口.
2.
4建立Winsock2规范建立Winsock2规范的目的是提供一个与协议无关的传送接口,它包含了一组针对Win-dows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程.
Winsock规图2应用程序与Winsock关系图范定义并记录了如何使用扩展库函数与Internet协议族的连接,所有的WindowsSockets实现都支持数据流套接口和数据报套接口,并支持多线程的Windows进程.
一个进程包含了一个或多个同时执行的线程.
它有利于多个应用程序在多任务情况下更好地运作.
Windows应用程序调用WindowsSockets的API实现相互之间的通信,它们之间的关系如图2所示〔3〕.
根据C++的特性,结合防火墙的运行机理,我们的研究集中到数据包的过滤和捕获上.
在通常情况下,以太网在同一网络线段的所有网络接口都可以侦听到物理媒体上传输的所有数据,而每一个网卡都有一个唯一的48比特的MAC地址.
一个网络接口只响应与自己硬件地址相匹配的数据帧或发向所有机器的广播帧.
在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,再根据网卡驱动程序设置的接收模式判断该不该接收.
认为该接收的数据就接收,并产生中断信号通知CPU,认为不该接收的数据就丢掉不管,或者说数据被截断了.
驱动程序接收数据后放入信号堆栈,让操作系统处理.
网卡的接收模式包括广播方式、小组传播、直接发送和混杂模式.
在混杂模式下的网卡能够接收一切通过它的数据,而不管该数据是否要传给它的.
我们正希望网卡能接收一切它所能接收的数据.
如图3所示,机器A,B,C与集线器HUB相连接,集线器HUB通过路由器访图3典型的小型局域网联入互联网的模式问外部网络.
几个部门的集线器通过路由器连接.
假设机器A的管理员为了维护机器C,使用FTP命令向机器C进行登录.
其FTP口令经过应用层FTP协议、传输层TCP协议、网络层IP协议、数据链路层上的以太网驱动程序逐层的包裹,最后送到了物理层上.
接下来,数据帧再由HUB向每一个节点广播由机器A发出的数据帧,机器B接收到由HUB广播发出的数据帧,并检查地址是否和自己的地址相匹配,如不是发向自己的数据帧,则丢弃不予理睬.
而机器94华侨大学学报(自然科学版)2003年C也接收到数据帧,在比较之后发现是发给自己的,因此C就对数据帧进行分析处理.
如果机器B上的管理员想知道究竟登录机器C上FTP口令是什么,则只需把网卡置于混杂模式,并对接收到的数据帧进行分析,从而找到包含在数据帧中的口令信息.
综上所述,我们对数据包的拦截,只要把网卡置于混杂模式,然后捕获数据包,最后分析数据包.
为节省篇幅,以下仅列出实现将网卡置于混杂模式,捕获数据包和分析数据包各项功能的部分源程序代码为#include"headers.
h"#defineINTERFACE"eth0"/*Prototypearea*/intOpenRawSocket(void)自己定义函数,intSetPromisc(char*interface,intsock)将网卡置成混杂模式intmain(获取流经网卡的数据的主程序intsock,bytesrecieved,fromlen;charbuffer[65535]数据缓冲structsockaddrinfrom;structip*ip;structtcp*tcp;sock=OpenRawSocket();SetPromisc(INTERFACE,sock);while(1){fromlen=sizeoffrom;bytesrecieved=recvfrom(sock,buffer,sizeofbuffer,0,(structsockaddr*)&from,&fromlen);printf("\nBytesreceived:::%5d\n",bytesrecieved);printf("Sourceaddress:::%s\n",inetntoa(from.
sinaddr));ip=(structip*)buffer;/*SeeifthisisaTCPpacket(看是否为TCP包)*/if(ip->ipprotocol==6){printf("IPheaderlength:::%d\n",ip->iplength);printf("Protocol:::%d\n",ip->ipprotocol);tcp=(structtcp*)(buffer+(4*ip->iplength));printf("Sourceport:::%d\n",ntohs(tcp->tcpsourceport));printf("Destport:::%d\n",ntohs(tcp->tcpdestport)以下是设置过滤端口的程序.
请注意,设置过滤IP和设置过滤端口的程序大同小异:voidCFilterDlg::OnAddport(){UpdateData(TRUE)刷新数据95第1期吴金龙:利用VC++编程实现防火墙中的数据包过滤if(!
meditport.
IsEmpty(输入端口非空{//最大的端口数为32if(mlistport.
GetCount()SetSel(0,-1);return;}//将端口加入列表mlistport.
InsertString(mlistport.
GetCount(),meditport);/*CStringstrsec=GetKeyName("FilterPort");intpos=strsec.
ReverseFind('t');if(pos!
=-1){strsec.
Delete(0,pos+1);inti;char*buf=strsec.
GetBuffer(MAXBUF);sscanf(buf,"%d",&i);i=i+1;strsec.
Format("%d",i);strsec.
ReleaseBuffer();}elsestrsec="1";WritePrivateProfileString("FilterPort","Port"+strsec,meditport,file);*/meditport="";}elseAfxMessageBox("对不起,超过最大数目!
");}elseAfxMessageBox("请输入端口号");}如果输入的端口号为空,则提示出错.
其次,如果已经设置了32个端口,同样将提示出错.
96华侨大学学报(自然科学版)2003年最后,检查输入的端口号是否已设置,如果端口号已经设置,再次提示出错.
反之,将输入的端口号加入.
3结束语如上所述,我们设计的防火墙是一种供个人和小型LAN使用的复合型防火墙.
其主要功能是帮上网用户抵挡来自外部网络的入侵和攻击,防止信息泄露.
它可以探测数据包.
当收到攻击时可以自动报警,并提供强大的反追踪功能,将入侵者的踪迹显示出来,包括时间、端口号、MAC和IP地址等.
它能够对企图入侵的数据包详细的日志记录,并发出各种攻击警告.
它提供HTTP等协议的代理服务,避免局域网内部主机直接访问外部的因特网,造成网络系统的安全隐患.
最后应当指出的是,由于防火墙假设了网络边界和服务,对内部的非法访问难以有效地控制.
因此,防火墙适合于相对独立的Intranet.
另外,由于网络实验室所提供的设备和条件限制,我们所研制的防火墙仅实现常用的部分协议的代理.
代理的验证模式为基本验证模式,它的认证内容在网络上以数据包的形式发送,容易被一些居心不良的网络用户窃取.
因此,包过滤系统的功能还应进一步完善,代理的效率和速度还有待提高.
但是,随着网络技术的不断发展,利用软件方法实现简单而实用的防火墙是完全能办得到的.
目前,动态包过滤技术可以与其数据流相适应,向着更具柔和性和多功能的方向发展.
例如,CiscoPIX防火墙的过滤规则可由路由器快速配置.
在操作系统的内核级实现了代理服务,做到协议透明和应用透明,并提供加密的IP通信,所有这些都是我们的研究内容.
参考文献1李海泉,李健.
计算机网络安全与加密技术[M].
北京:科学出版社,2001.
95~1092ChrisC著.
WindowsWDM设备驱动程序开发指南[M].
孙义等译.
北京:机械工业出版社,2000.
152~2753薛静锋.
VC++高级开发教程[M].
北京:人民邮电出版社,1999.
407~465ImplementationofFirewallPacketFiltrationbyApplyingVC++ProgrammingWuJinlong(CollegeofInfo.
Sci.
&Eng.
,HuaqiaoUniv.
,362011,Quanzhou,China)AbstractThesafetyofcomputersystembecomesincreasinglycomplexandprominentinpacewiththepene-trationofcomputernetworkintosociety,economy,nationaldefense,scienceandtechnology,cultureandeduca-tion,andsomeotherfields.
Resourcesharingandnetworksubsectionaggrandizethepossibililythatthenetworkwillbemenacedandattacked.
Thusthefirewallsystembasedonpackfiltrationandstatusdetectionbecomestoolforprotectingthesecurityofnetwork.
Theauthorpresentshereacompositetypefirewallsystemintowhichdatapacketfiltration,dailyrecordandproxyserviceareintegrated.
EmphasisisputuponthesoftwaremethodintheimplementationofdatapacketfiltrationbyapplyingVC++programmingKeywordscompositetypefirewall,packetfiltration,securityofcomputernetwork97第1期吴金龙:利用VC++编程实现防火墙中的数据包过滤

10gbiz:香港/洛杉矶CN2直连线路VPS四折优惠,直连香港/香港/洛杉矶CN2四折

10gbiz怎么样?10gbiz在本站也多次分享过,是一家成立于2020的国人主机商家,主要销售VPS和独立服务器,机房目前有中国香港和美国洛杉矶、硅谷等地,线路都非常不错,香港为三网直连,电信走CN2,洛杉矶线路为三网回程CN2 GIA,10gbiz商家七月连续推出各种优惠活动,除了延续之前的VPS产品4折优惠,目前增加了美国硅谷独立服务器首月半价的活动,有需要的朋友可以看看。10gbiz优惠码...

CYUN(29元/月)美国、香港、台湾、日本、韩国CN2,续费原价

关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...

buyvm迈阿密机房VPS国内首发测评,高性能平台:AMD Ryzen 9 3900x+DDR4+NVMe+1Gbps带宽不限流量

buyvm的第四个数据中心上线了,位于美国东南沿海的迈阿密市。迈阿密的VPS依旧和buyvm其他机房的一样,KVM虚拟,Ryzen 9 3900x、DDR4、NVMe、1Gbps带宽、不限流量。目前还没有看见buyvm上架迈阿密的block storage,估计不久也会有的。 官方网站:https://my.frantech.ca/cart.php?gid=48 加密货币、信用卡、PayPal、...

防火墙软件为你推荐
哈利波特罗恩升级当爸电影哈利波特中罗恩一家的红头发为什么后来变成金色的了西部妈妈网啊,又是星期天甲骨文不满赔偿如果合同期不满被单位辞退,用人单位是否需要赔偿同ip网站查询服务器禁PING 是不是就可以解决同IP网站查询问题7788k.com以前有个网站是7788MP3.com后来改成KK130现在又改网站域名了。有知道现在是什么域名么?网站检测如何进行网站全面诊断5xoy.com求个如月群真汉化版下载地址www.baitu.com我看电影网www.5ken.com为什么百度就不上关键字呢se95se.comwww.sea8.com这个网站是用什么做的 需要多少钱广告法请问违反了广告法,罚款的标准是什么
Oray域名注册服务商 服务器租用托管 域名交易网 qq云存储 hkbn yardvps 256m内存 免备案空间 国外空间服务商 好玩的桌面 debian6 2017年万圣节 长沙服务器 个人免费空间 七夕促销 isp服务商 购买国外空间 网购分享 万网主机 godaddy空间 更多