防火墙防火墙软件
防火墙软件 时间: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++编程实现防火墙中的数据包过滤
目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...
2021年各大云服务商竞争尤为激烈,因为云服务商家的竞争我们可以选择更加便宜的VPS或云服务器,这样成本更低,选择空间更大。但是,如果我们是建站用途或者是稳定项目的,不要太过于追求便宜VPS或便宜云服务器,更需要追求稳定和服务。不同的商家有不同的特点,而且任何商家和线路不可能一直稳定,我们需要做的就是定期观察和数据定期备份。下面,请跟云服务器网(yuntue.com)小编来看一下2021年国内/国...
速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...
防火墙软件为你推荐
sonicchatwe chat和微信区别安徽汽车网安徽什么汽车网站比较好?地图应用谁知道什么地图软件好用,求 最好可以看到路上行人广东GDP破10万亿在已披露的2017年GDP经济数据中,以下哪个省份GDP总量排名第一?百度关键词工具如何通过百度官方工具提升关键词排名m.kan84.net那里有免费的电影看?kb123.net连网方式:wap和net到底有什么不一样的baqizi.cc曹操跟甄洛是什么关系莱姿蔓格莱姿蔓化妆品孕妇能用吗雀嘴鳝怎么饲养雀鳝鱼?
过期备案域名查询 网站域名备案查询 秒解服务器 directadmin godaddy优惠券 php探针 商家促销 权嘉云 linux空间 什么是刀片服务器 网站cdn加速 域名评估 国外代理服务器软件 七夕快乐英语 彩虹云 国外网页代理 1美元 512内存 建站技术 海外加速 更多