那家建设网站p2p公司最好,公司视频宣传片,全屋定制十大名牌衣柜,seo网站排名优化服务摘要 随着病毒、木马、黑客攻击等问题的出现#xff0c;网络安全形势日渐严峻#xff0c;网络安全产品也被人们重视起来。防火墙作为最早出现的网络安全产品和使用量最大的安全产品#xff0c;也受到用户和研发机构的青睐。防火墙放置在外部网络与计算机之间作为隔离设备网络安全形势日渐严峻网络安全产品也被人们重视起来。防火墙作为最早出现的网络安全产品和使用量最大的安全产品也受到用户和研发机构的青睐。防火墙放置在外部网络与计算机之间作为隔离设备可以识别并屏蔽非法请求有效防止跨越权限的数据访问。 本文先介绍了个人防火墙开发的研究现状、VC6.0和MFC程序的一些技术特点然后对基于包过滤个人防火墙的开发进行了详细的介绍和描述。通过本文可以清楚地看到一个普通个人防火墙的开发过程。本防火墙中用户可以自行设定过滤规则以达到对不同源和不同目标的IP地址、端口和协议的过滤。允许用户将当前规则保存为*.rul的文件格式供下次使用时直接导入。 本防火墙由以下几个模块组成过滤规则添加模块过滤规则显示模块过滤规则存储模块文件储存模块安装卸载规则模块IP封包过滤驱动功能模块。用户只需要通过主界面菜单和按钮就可以灵活地操作防火墙有效地保护Windows系统的安全。 关键词个人防火墙包过滤网络安全MFC Abstract With the development of the Internet security control equipment must be installed to ensure safety when the network involves a different level of trust. These control device are almost always some kind of firewall. With the growing problem of network security the most users are increasingly concerning about network security products. Firewall which is not only the first network security products but also has the most users has been favored by users and RD institutions. The personal firewall used in PC has largely become the protector of individual users’ security. This article describes the development of personal firewall status some technical characteristics of VC6.0 and the MFC program then gives a detailed introduction and description of a packet-filtering-based individual firewall’s development. A simple personal firewall development process can be clearly seen through this article. In the firewall users can set their own filtering rules in order to attain the filtering with different source IP destination IP source port destination port and protocol. Program can be minimized into the system tray icon protecting user in the background. It allows users to save the current rules into a file as *.rul. The firewall is composed of the following modules: adding filter rules module display filter rules module storage filter rules module storage file module installation and unloading rules module IP packet driver module. Users can finish the operation by using main menu and button and protect the system effectively. KeywordsPersonal Firewall Packet Filter Network Security MFC 目录 摘要 Abstract 目录 1 绪论 1.1 研究背景 1.2 研究意义 1.3 课题内容 2 包过滤防火墙技术 2.1 包过滤防火墙技术简介 2.2 防火墙包过滤技术的特点 2.3 包过滤防火墙工作原理 2.4 数据包过滤技术 2.5 数据包过滤类型 2.6开发工具 3 防火墙系统构成 3.1 需求分析 3.2 设计思路 3.3 功能模块构成 3.4 功能模块介绍 4 系统实现 4.1程序关键类 4.2详细设计 4.3驱动程序设计 5 程序结果测试 6 总结 参考文献 致谢 1 绪论
1.1 研究背景
随着网络技术的飞速发展网络安全问题日益突出。防火墙是目前广泛使用的一种网络安全技术已成为企业内部与公用网络之间的一道必备的屏障个人用户也纷纷安装了个人防火墙软件。防火墙往往放在网络的出口成为一个信息流量的阻塞点若造成网络阻塞再安全的防火墙也无法应用。在实现中需要解决的主要问题是如何提高包过滤的性能。
包过滤防火墙是最简单的一种防火墙它在网络层截获网络数据包根据防火墙的规则表来检测攻击行为。包过滤防火墙一般作用在网络层IP层故也称网络层防火墙Network Lev Firewall或IP过滤器IP filters。数据包过滤Packet Filtering是指在网络层对数据包进行分析、选择。通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合来确定是否允许该数据包通过。在网络层提供较低级别的安全防护和控制。
包过滤防火墙工作在网络层对数据包的源及目地 IP 具有识别和控制作用对于传输层也只能识别数据包是TCP还是UDP及所用的端口信息如下图所示。现在的路由器、Switch Router以及某些操作系统已经具有用Packet Filter控制的能力。
由于只对数据包的IP地址、TCP/UDP 协议和端口进行分析包过滤防火墙的处理速度较快并且易于配置。
防火墙大致可以分为两大类:包过滤防火墙和代理防火墙。其中包过滤技术由于可以与现有的路由器集成也可以用独立的包过滤软件实现使用较灵活应用比较广泛。
国内外常见的防火墙软件有
1GoldTach。这是一个体积小巧但功能强大的个人防火墙集成了4个主要的功能防火墙、进程控制、邮件保护和网页内容过滤。GoldTach可以在应用层、TDI层和NDIS层截取和捕捉数据根据现有的规则进行分析删除恶意的数据来保护网络安全。用户可以查看和控制进出网络的所有IP包控制网络应用的各种操作访问网站、充当服务器和收发电子邮件等通过改变电子邮件附件的扩展名来保护邮件安全过滤恶意或者无用的Http内容。
2Norton Personal Firewall。该防火墙能够提供完整的网络安全防止重要资料被窃并有过滤网站的功能还能够阻隔各种黑客可能的入侵方式以防止私人信息被窃取和损坏。
3Outpost Firewall Pro。这是一款短小精悍的网络防火墙软件功能是同类PC软件中较强的甚至包括了广告和图片过滤、内容过滤和DNS缓存等功能。它能够预防来自Cookies、广告、电子邮件病毒、后门、窃密软件、广告软件和其它Intemet威胁。该软件不需额外配置就可使用适合普通用户使用。
4天网个人防火墙。该防火墙提供多种预先设置的安全级别同时也支持用户自定义应用程序的安全规则与系统的安全策略支持应用程序通信控制同时具备自动识别功能。此外它还提供特洛伊木马和入侵检测功能可以通过厂商的安全数据库自动查找系统的漏洞。天网个人防火墙占用系统资源较少操作简单。
5费尔防火墙。费尔防火墙1.0版是完全基于SPI技术的是一款用于展示防火墙开发技术的开放原代码软件。费尔防火墙2.0除了使用SPI技术外在核心层还使用了NDIS HOOK技术因此功能上比1.0版本要强是一款不错的防火墙软件。
6瑞星防火墙和金山网镖。这是国内著名的商业防火墙软件功能比较强大工作原理都是规则匹配技术。国内个人电脑上主要安装的是这两类防火墙。
在技术日益成熟的今天网络安全尤为重要人们使用防火墙、入侵检测、数据保护、病毒防护和行为控制等多种安全保护措施使自己的计算机不受攻击。防火墙作为数据传入本地的第一过滤层其重要性不言而喻。
1.2 研究意义
目前市场上大多数的防火墙产品仅仅是网关型的虽然功能相当强大但大多基于下述的假设内部网是安全可靠的所有的威胁都来自网外。因此这些防火墙产品防外不防内难以实现对企业内部局域网内主机之间的安全通信也不能很好地解决每一个拨号上网用户所在主机的安全问题而大多数个人上网之时并没有置身于得到防护的安全网络内部。因此个人防火墙就显得尤为重要可以帮助用户抵御一切来自非本计算机的恶意数据包。
个人上网用户多使用Windows操作系统而Windows操作系统本身的安全性并不如人意。各种Windows漏洞不断被公布对用户计算机的攻击也越来越多。一般都是利用操作系统设计的安全漏洞和通信协议的安全漏洞来实现攻击。如假冒IP包对通信双方进行欺骗对主机大量发送IP数据包进行轰炸攻击使之崩溃以及蓝屏攻击等。因此为了保护主机的安全通信个人用户可以选择使用防火墙。服务于Windows系统基于包过滤的个人防火墙可以为世界上使用最广泛的Windows操作系统用户主机提供一定的网络安全保护。
1.3 课题内容
本文主要研究个人安全防御系统中包过滤系统的设计与实现通过对现有包过滤技术深入的研究与分析发现其中的不足之处并在设计实现的过程中对其进行改进和完善。
1全面深入的研究现有的包过滤技术分析比较每一种包过滤技术的优缺点结合个人安全防御系统的特点确定所要使用的技术。
2本次毕业设计应首先分析防火墙的相关功能结合本次毕业设计的相关要求写出需求分析其次综合运用以前所学的相关知识在设计中以需求分析为基础写出系统开发计划、实现流程及相关问题的实现方法同时在开发设计与实现中要保存好相关的设计文档。
2 包过滤防火墙技术
2.1 包过滤防火墙技术简介
防火墙是专用网络系统旨在防止未经授权的访问或从防火墙是用于防止未经授权的Internet网络的互联网连接的用户访问私营尤其是内部网。
本文只处理数据包过滤器包过滤字段的标题是基于对网络资源的众所周知的方法限制访问滤波要求的能力按照指定的数据包分类过滤规则。这些规则可以看作是头字段的逻辑功能的数据包。分类数据包也出现在计算其他领域如路由策略路由区分服务质量然而并非所有的都使用基础多包头中的字段。例如一个简单的包转发路由器只需要根据数据包进行分类在一个领域目的地的IP地址来执行正确的路线。过滤的概念和分类是紧密联系在一起。
防火墙是内部、外部两个网络之间的一个阻隔通过允许和拒绝经过防火墙的数据流防止不希望的、未授权的通信并实现对进、出内部网络的服务和访问的审计和控制防火墙对网络用户提供访问控制服务和通信安全服务对网络用户基本上是“透明”的并且只有授权的管理员方可对防火墙进行管理。
防火墙一般要解决的安全问题可分为被保护系统即内部网的安全问题和自身的安全问题。防火墙产品主要分为两类包过滤和应用级防火墙。
包过滤防火墙根据安全功能策略建立包过滤规则。过滤规则的主要要素有源IP地址、目的IP地址、协议号、源端口、目的端口、连接标志和另外一些IP选项以及包到达或发出的接口。
包过滤防火墙工作在网络层对数据包的源及目地 IP 具有识别和控制作用对于传输层也只能识别数据包是TCP还是UDP及所用的端口信息。现在的路由器、Switch Router 以及某些操作系统已经具有用 Packet Filter 控制的能力。由于只对数据包的IP地址、 TCP/UDP 协议和端口进行分析包过滤防火墙的处理速度较快并且易于配置。
包过滤防火墙是用一个软件查看所流经的数据包的包头由此决定整个包的命运。它可能会决定丢弃(DROP)这个包可能会接受(ACCEPT)这个包(让这个包通过)也可能执行其它更复杂的动作。
2.2 防火墙包过滤技术的特点
包过滤防火墙工作在网络层对数据包的源及目地IP具有识别和控制作用对于传输层也能识别数据包是TCP还是UDP及所用的端口信息。
由于只对数据包的IP地址、TCP/UDP协议和端口进行分析包过滤防火墙的处理速度较快并且易于配置。
(1)优点
对于一个小型的、不太复杂的站点包过滤比较容易实现。
因为过滤路由器工作在IP层和TCP层所以处理包的速度比代理服务器快。
过滤路由器为用户提供了一种透明的服务用户不需要改变客户端的任何应用程序也不需要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层而IP层和TCP层与应用层的问题毫不相关。所以过滤路由器有时也被称为“包过滤网关”或“透明网关”之所被称为网关是因为包过滤路由器和传统路由器不同它涉及到了传输层。
过滤路由器在价格上一般比代理服务器便宜。
(2)缺点
一些包过滤网关不支持有效的用户认证。
规则表很快会变得很大而且复杂规则很难测试。随着表的增大和复杂性的增加规则结构出现漏洞的可能性也会增加。
这种防火墙最大的缺陷是依赖一个单一的部件来保护系统。如果这个部件出现了问题会使得网络大门敞开而用户其至可能还不知道。在一般情况下如果外部用户被允许访问内部主机则它就可以访问内部网上的任何主机。
包过滤防火墙只能阻止一种类型的IP欺骗即外部主机伪装内部主机的IP对于外部主机伪装外部主机的IP欺骗却不可能阻止而且它不能防止DNS欺骗。虽然包过滤防火墙有如上所述的缺点但是在管理良好的小规模网络上它能够正常的发挥其作用。一般情况下人们不单独使用包过滤网关而是将它和其他设备(如堡垒主机等)联合使用。
综上可见包过滤防火墙技术面太过初级就好比一位保安只能根据访客来自哪个省市来判断是否允许他(她)进入一样难以履行保护内网安全的职责。
2.3 包过滤防火墙工作原理
包过滤防火墙工作在OSI网络参考模型的网络层和传输层它根据数据包头源地址目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地其余数据包则被从数据流中丢弃。
包过滤方式是一种通用、廉价和有效的安全手段。之所以通用是因为它不是针对各个具体的网络服务采取特殊的处理方式适用于所有网络服务;之所以廉价是因为大多数路由器都提供数据包过滤功能所以这类防火墙多数是由路由器集成的;之所以有效是因为它能很大程度上满足了绝大多数企业安全要求。
在整个防火墙技术的发展过程中包过滤技术出现了两种不同版本称为“第一代静态包过滤”和“第二代动态包过滤”。
第一代静态包过滤
这种类型的防火墙根据定义好的过滤规则审查每个数据包以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议TCP、UDP、ICMP等等、TCP/UDP目标端口、ICMP消息类型等。包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”即明确允许那些管理员希望通过的数据包禁止其他的数据包。
第二代动态包过滤
这种类型的防火墙采用动态设置包过滤规则的方法避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测(Stateful Inspection)技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪并且根据需要可动态地在过滤规则中增加或更新条目。
包过滤方式的优点是不用改动客户机和主机上的应用程序因为它工作在网络层和传输层与应用层无关。但其弱点也是明显的:过滤判别的依据只是网络层和传输层的有限信息因而各种安全要求不可能充分满足;在许多过滤器中过滤规则的数目是有限制的且随着规则数目的增加性能会受到很大地影响;由于缺少上下文关联信息不能有效地过滤如UDP、RPC一类的协议另外大多数过滤器中缺少审计和报警机制它只能依据包头信息而不能对用户身份进行验证很容易受到“地址欺骗型”攻击。
包过滤是一种内置于Linux内核路由功能之上的防火墙类型其防火墙工作在网络层。
1使用过滤器。数据包过滤用在内部主机和外部主机之间过滤系统是一台路由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。用于过滤数据包的路由器被称为过滤路由器。
数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的主要信息有
IP源地址
IP目标地址
协议(TCP包、UDP包和ICMP包)
TCP或UDP包的源端口
TCP或UDP包的目标端口
ICMP消息类型
TCP包头中的ACK位
数据包到达的端口
数据包出去的端口
在TCP/IP中存在着一些标准的服务端口号例如HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接例如可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。
2过滤器的实现。数据包过滤一般使用过滤路由器来实现这种路由器与普通的路由器有所不同。
普通的路由器只检查数据包的目标地址并选择一个达到目的地址的最佳路径。它处理数据包是以目标地址为基础的存在着两种可能性:若路由器可以找到一个路径到达目标地址则发送出去。
过滤路由器会更加仔细地检查数据包除了决定是否有到达目标地址的路径外还要决定是否应该发送数据包。“应该与否”是由路由器的过滤策略决定并强行执行的。路由器的过滤策略主要有
拒绝来自某主机或某网段的所有连接。
允许来自某主机或某网段的所有连接。
拒绝来自某主机或某网段的指定端口的连接。
允许来自某主机或某网段的指定端口的连接。
拒绝本地主机或本地网络与其它主机或其它网络的所有连接。
允许本地主机或本地网络与其它主机或其它网络的所有连接。
拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。
允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。
2.4 数据包过滤技术
这种技术是在网络中适当的位置对数据包实施有选择的通过选择依据即为系统内设置的过滤规则(通常称为访问控制表-----Access Control List)只有满足过滤规则的数据包才被转发至相应的网络接口其余数据包则被从数据流中删除。
包过滤在本地端接收数据包时一般不保留上下文只根据目前数据包的内容做决定。根据不同的防火墙的类型包过滤可能在进入、输出时或这两个时刻都进行。可以拟定一个要接受的设备和服务的清单一个不接受的设备和服务的清单组成访问控制表。在主机或网络级容易用包过滤接受或决绝访问例如可以允许主机A和主机B之间的任何IP访问或者拒绝除A外的任何设备对B的访问。
包过滤的设置:
⑴必须知道什么是应该和不应该被允许的即必须制定一个安全策略。
⑵必须正式规定允许的包类型、包字段的逻辑表达。
⑶必须用防火墙支持的语法重写表达式。
2.5 数据包过滤类型
2.5.1 IP包过滤
IP分段字段用来确定数据包在传输过程中是否被重新分段分段带来的问题是只有第一个段有高层协议的报头(如TCP头)而其他的段中没有。数据包过滤器一般是让非首段包通过而仅对第一个分段进行过滤因为目标主机如果得不到第一个分段也就不能组装一个完整的数据包因此这样做是可以接受的。强大的防火墙应该考虑非第一个分段有可能泄露有用的信息比如出站的NFS数据包几乎肯定要分段内部网中的敏感数据经过NFS传输可能会泄露因此防火墙要根据第一个分段的操作策略来决定是否转发非第一个分段。
IP分段也经常用来进行拒绝服务攻击。攻击者向目标主机发送第一个分段包防火墙对这种包不作处理直接让其通过目标主机得不到第一个分段来重组数据包时会放弃该包同时发一个ICMP“数据组装超时”的包给源主机。如果目标主机大量收到这种非第一个分段包它需要占用大量的CPU时间来处理。当达到一定极限之后目标主机就不能处理正常的服务了而造成拒绝服务攻击。此外返回的ICMP也会泄露有用的消息因此对这种ICMP防火墙应该过滤掉。
2.5.2 .TCP包过滤
TCP是面向联接的可靠传输协议TCP的可靠主要是通过下面三条来保证的:目标主机将按发送的顺序接受应用数据; 目标主机将接受所有的应用数据; 目标主机将不重复接受任何数据。
TCP协议通过对错误的数据重传来保证数据可靠到达并且事先要建立起联接才能传输。如果要阻止TCP的联接仅阻止第一个联接请求包就够了。因为没有第一个数据包接受端不会吧之后的数据组装程数据包且不会建立起联接。TCP的启动联接请求包中的ACK位为0而其他的数据包ACK位为1所以可以通过对ACK位的判断来确定是否是启动联接请求。
2.5.3. UDP数据包过滤
与TCP数据包结构相比 UDP数据包要比TCP数据包简单得多这是因为UDP是一种无联接得协议而TCP是一种有联接得协议。
UDP不向TCP那样可靠它得传输就像邮局发明信片一样发出去后得不到答复不知道明信片是否真的到达了目的地。UDP数据包到通过MTU(最大传输单元)小的网络需要分段然后各段分别传输任何一个片段丢失后数据包就损坏了而UDP没有重传机制这样就不能保证数据传输的完整性。即使数据包不分段数据包也可能由于错误路由或网络拥挤而丢失。
UDP的返回包的特点时目标端口是请求包的源端口目标地址是请求包的源地址源端口是请求包的目的端口源地址是请求包的目标地址。因此过程2的数据包被阻塞而过程1的数据包被允许进入。
2.5.4. 源端口过滤
在前面的例子中过滤规则用到了源端口如果防火墙在过滤数据包时不考虑源端口很容易给入侵者可乘之机。假设路由器不支持检查源端口要实现发送电子邮件的功能规则如表2.1所示。
表2.1 过滤规则示例 规则 方向 源地址 目标地址 协议 源端口 目标端口 动作 A 入 116.111.4.1 任意 TCP / 25 拒绝 B 出 116.111.4.1 任意 TCP / 1023 任意 C 出 116.111.4.1 任意 TCP / 25 允许 D 入 116.111.4.1 任意 TCP / 1023 允许
规则A、B允许入站的SMTP联接。 规则C、D允许出站的SMTP联接。
2.5.5.ACK位在数据包过滤中的作用
ACK位在数据包过滤中的作用是很关键的。假设防火墙不考虑ACK位那么对于允许内部网络主机利用Telnet服务访问Internet的策略可以以下方式实现。
如果有一个用户在他的主机上用端口号23联接到内部网主机的一个大于1023的端口上则这种联接将会被允许可见系统存在着安全缺口。
一般只检查返回包的ACK位因为联接请求包的ACK位可能不会被置位而返回包ACK位一定会被置位。当加上ACK位检测后得到如表2.2所示的规则。
表2.2 过滤规则示例 规则 方向 源地址 目标地址 协议 源端口 目标端口 ACK设置 动作 A 出 116.111.4.1 任意 TCP 1023 23 任意 允许 B 入 任意 116.111.4.1 TCP 23 1023 是 允许
当黑客试图通过端口23建立入站联接时因为第一个请求包的ACK不被置位所以该包回被禁止进入你的内部网络第一个联接请求包被拒绝后联接就很难建立起来了。
如果入侵者把第一个数据包的ACK位置位则该数据包可以通过防火墙但目标主机会把这个数据包当作以前联接中的一个数据包而不是建立一个新的联接。因为这个数据包不属于目标主机所知的任何联接(序列号不能匹配)所以它被抛弃掉。
2.6开发工具
2.6.1 VC 6.0
混合型面向对象程序设计语言既支持面向对象设计方法也支持面向过程设计方法和结构化设计方法最典型的是C语言。
C作为一种应用最广泛的面向对象程序设计语言具有类、对象、消息等概念全面支持面向对象技术的抽象性、封装性、继承性和多态性特征。
Visual C6.0是微软公司推出的开发Win32应用程序的、面向对象的可视化集成工具。该工具最大优点就是提供了功能强大的MFC类库MFC是一个很大的C类层次结构其中封装了大量的类及其函数很多Windows程序所共有的标准内容可以由M-FC的类来提供MFC类为这些内容提供了用户接口的标准实现方法程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓这将简化编程工作大大地减少程序员编写的代码数量使编程工作变得更加轻松容易。
Visual C6.0不仅是一个C编译器而且是一个基于Windows操作系统的可视化集成开发环境integrated development environmentIDE。Visual C6.0由许多组件组成包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为开发环境。Visual C具有发展历史长、开发范围广泛、开发的应用程序运行效率高以及具备成熟的开发技术模式等特点。
微软公司在Visual C6.0中保留了传统的开发模式同时扩展C语言让V-isual C6.0在编写纯粹的应用程序的同时依然可以利用现有的成熟技术进行非托管应用程序的开发。
2.6.2 MFC
MFCMicrosoft Foundation Classes微软基础类同VCL类似是一种Appl-ication Framework随微软Visual C 开发工具发布。该类库提供一组通用的可重用类库供开发人员使用。大部分类均从CObject直接或间接派生只有少部分类例外。
MFC 应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinA-pp类对象应用程序对象组成。MFC提供了MFC AppWizard自动生成框架。此外MFC的部分类为MFC/ATL通用可以在Win32 应用程序中单独包含并使用这些类。由于其易用性初学者常误认为VC开发必须使用MFC。这种想法是错误的。作为Application Framework MFC的使用只能提高某些情况下的开发效率只起到辅助作用而不能替代整个Win32 程序设计。
MFC实际上是微软提供的用于在C环境下编写应用程序的一个框架和引擎VC是Win OS下开发人员使用的专业C SDKMFC就是挂在这上面的一个辅助软件开发包。
MFC是Win API与C的结合是一种软件编程的规范但不是一种程序开发语言本身可以允许用户使用各种各样的第三方编程语言来进行对Win OS下应用程序的开发使这些被开发出来的应用程序能在Win OS下运行比如VB、VC、Java和Dehpi编程语言函数本质上全部源于API。
MFC是一个很大的C类层次结构其中封装了大量的类、接口及函数可以将诸如窗口类定义、注册及窗口创建等操作过程通过一定的处理机制自动完成。
从物理角度看MFC是一个类库对应于Windows下的一系列mfc*.dll文件M-FC编程的本质就是选择该类库中合适的类来完成指定功能。
从逻辑角度来看MFC是一个应用程序框架是一种新的程序开发模式。在该模式下对程序的控制主要由MFC框架完成。
因此程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓这将简化编程工作大大地减少程序员编写的代码数量使编程工作变得更加轻松容易。
3 防火墙系统构成
3.1 需求分析
该防火墙的主要功能是实现包过滤其他功能主要包括以下几个方面。
1、能设置过滤规则包括IP地址、子网掩码、端口号、协议。
2、能添加删除规则。
3、能将过滤规则保存。
4、能对过滤规则进行安装和卸载操作。
5、能正确完整的显示所添加的过滤规则。
3.2 设计思路
根据程序的需求来完成功能和模块化设计的思想总体设计思路如下
任何程序都必须具有和用户进行信息交互的功能因此用户接口部必须考虑根据功能要求该部分应具备用户操作的功能菜单、能对过滤规则进行设置、显示规则界面、添加规则界面。
这样程序的功能模块应该有过滤规则添加删除功能模块过滤规则显示功能模块过滤规则存储功能模块文件储存功能模块安装卸载规则功能模块。
3.3 功能模块构成 图3.1 防火墙模块构成
3.4 功能模块介绍
1过滤规则添加删除功能模块
包过滤防火墙要进行数据包过滤就需要按照用户定义的规则进行包过滤该功能模块就是使用户能够添加或删除过滤规则。过滤规则主要包括源IP地址、子网掩码、端口号目的IP地址、子网掩码、端口号协议以及对符合该规则的数据包是放行还是阻止进行设置。然后将设置好的规则添加到存储功能模块。
2过滤规则显示功能模块
该功能用于显示用户添加的规则能够对每一条规则进行删除、安装、卸载的操作使防火墙过滤规则能够很详细的显示给用户。
3过滤规则存储功能模块
该功能用于存储用户添加的过滤规则接受用户对每一条规则的操作并按照用户的操作将规则进行处理。如安装规则则把用户选择的规则安装到IP过滤驱动IP接收到此规则后按照此规则进行数据包过滤。
4文件存储功能模块
使用户添加的过滤规则能够保存成文件的形式方便储存在用户添加规则后可以选择某一条规则进行保存防火墙会将该规则保存为后缀名为.rul的文件在下次打开防火墙的时候可以直接加载该规则。
5文件载入功能模块
相对于文件储存功能模块该功能是实现用户可以导入一个后缀名为.rul的并且保存了有效规则的文件。
6安装卸载功能摸块
防火墙要过滤数据包就需要将IP过滤驱动按照定义的规则进行过滤。用户通过添加规则将规则存储于防火墙的存储功能模块中想要将规则发送给IP过滤驱动就需要对该规则进行安装。安装和卸载的功能就是将过滤规则传送给IP过滤驱动或是将已安装的规则从过滤驱动中删除。
7IP封包过滤驱动功能模块
该功能模块是整个包过滤防火墙的核心部分IP封包过滤驱动能按照用户定义的规则对数据包做出阻止或是放行的选择。 4 系统实现
4.1程序关键类
4.1.1应用程序类CFireWallAPP
每个MFC应用程序都必须包括一个从CWinApp派生的应用程序类在本程序中的应用程序类就是CFireWAllApp。应用程序类构成了应用程序的主执行线程它封装了一个Windows应用程序的初始化、运行和终止。
4.1.2主框架类CMainFrame
主框架类CMainFrame构成整个程序的框架包括菜单、工具、按钮等。它构成了程序功能的主框架。下面列出了CmainFrame类中的主要方法和变量。
class CMainFrame:public CFrameWnd
{
protected:
BOOL Installed;//规则安装标志TRUE-已安装FALSE-未安装
protected:
BOOL started;//开始过滤的标志TRUE-已开始FALSE-未开始
TDriver filterDriver;//定义一个TDriver类的变量
TDriver ipFltDrv;//
protected:
BOOL AddFilterToFw();//AddFilterToFw完成将过滤钩子安装到防火墙的功能。
//{{AFX_MSG(CMainFrame)
afx_msg void OnAppExit();//退出程序
afx_msg void OnButtonadd();//添加规则按钮
afx_msg void OnButtondel();//删除规则按钮
afx_msg void OnButtonstart();//开始过滤按钮
afx_msg void OnButtonstop();//停止过滤按钮
afx_msg void OnButtonInstall();//安装规则
afx_msg void OnButtonuninstall();//卸载规则
afx_msg void OnMenuAddRule();//添加规则菜单
afx_msg void OnMenuDelRule();//删除规则菜单
afx_msg void OnMenuInstallRules();安装菜单
afx_msg void OnMenuUninstallRules();//卸载规则菜单
afx_msg void OnMenuStart();//开始过滤菜单
afx_msg void OnMenuStop();//停止过滤菜单
afx_msg void OnMenuSaveRules();//保存规则菜单
afx_msg void OnMenuLoadRules();//加载规则菜单
//}}AFX_MSG
};
在主框架类CMainFrame中定义了应用程序的所有基本功能。
4.1.3文档类CFireWallDoc
MFC程序中的文档类是用来存储数据变量的。在本程序中CFireWallDoc主要用来存储用户添加的规则当用户添加规则或删除规则时就要向文档类CFireWallDoc中写入数据当视图类CFireWallView需要将用户添加的规则显示在规则列表时或者将规则安装到驱动就需要从文档类CFireWallDoc中读取数据。
class CFireWallDoc:public CDocument
{
public:
unsigned int nRules;//规则序数
RuleInfo rules[MAX_RULES];//最大规则数
int AddRule();//添加规则
void DeleteRule(unsigned int position);//删除规则
void ResetRules();//重置规则即在加载规则前需要删除规则列表中及存储在文档类CFireWallDoc中的所有规则
};
其中RuleInfo rule[MAX_RULES]是_RuleInfo结构体的一个变量该数组用来存储规则_RuleInfo类详细情况见5.1.5节介绍。
4.1.4视图类CFireWallView
视图类一般是用来显示信息的在本程序中CFireWallView主要用来在规则列表中显示存储在文档类CFireWallDoc中的规则。
class CFireWallView:public CFormView
{
public:
CFireWallDoc* GetDocument();//指针指向文档类和文档类CFireWallDoc关联。
//{{AFX_VIRTUAL(CFireWallView)
public:
protected:
virtual void OnInitialUpdate();//在这个函数中初始化规则列表
//}}AFX_VIRTUAL
public:
void UpdateList();//更新规则列表和Doc文档类保持一致
protected:
void AddRuleToList();//将文档类CFireWallDoc中的规则显示出来
};
4.1.5_RuleInfo类
_RuleInfo类是用来定义过滤规则的数据结构。
typedef struct _RuleInfo
{
unsigned long sourceIp;
unsigned long sourceMask;
unsigned short sourcePort;
unsigned long destinationIp;
unsigned long destinationMask;
unsigned short destinationPort;
unsigned int protocol;
int action;
}RuleInfo*PRuleInfo;
4.2详细设计
4.2.1主界面
程序主界面如图4.1所示。 图4.1 程序主界面
4.2.2添加过滤规则
添加过滤规则的功能是通过一个“添加规则”对话框完成如图4.2所示。 图4.2 添加规则对话框
添加规则功能是将对话框中的规则添加到存储数据的文档中。分两个步骤
1、取得添加规则对话框中的数据
int result;
UpdateData(TRUE);//使控件列表与控件关联
resultinet_addr(m_ipsourcesrcIp);//从源IP地址编辑框获取源IP地址赋给srcIp。
result inet_addr(m_srcMask srcMask);//从源IP掩码编辑框获取源IP地址掩码赋给srcMask。
resultinet_addr(m_ipdestination dstIp);//从目的IP地址编辑框获取目的IP地址赋给dstIp。
result inet_addr(m_dstMask dstMask);//从目的IP掩码编辑框获取目的IP掩码赋给dstMask。
if(m_protocol TCP)
protocol 6;
else if(m_protocol UDP)
protocol 17;
else if(m_protocol ICMP)
protocol 1;
else if(m_protocol 所有)
protocol 0;
if(m_action 放行)
cAction 0;
else
cAction 1;
srcPort m_portsource;//源端口
dstPort 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;
nRules;
return TRUE;
}
实现添加规则功能的程序流程图如图4.3所示。 图4.3 添加规则流程图
4.2.3删除过滤规则
删除规则时首先需要确定所要删除的规则再将其从文档类中删除同时更新视图类的显示。当正在进行过滤时则要先停止过滤才能删除规则。
删除规则
void CMainFrame::OnButtondel()
{
CFireWallView *view (CFireWallView *)GetActiveView();
CFireWallDoc *doc (CFireWallDoc *)GetActiveDocument();
POSITION pos view-m_rules.GetFirstSelectedItemPosition();//选中的规则
if(started TRUE)//如果正在过滤
{CString strTemp;
strTemp.Format(请先停止过滤);}
int position;
position view-m_rules.GetNextSelectedItem(pos);//position是当前选择的规则的下一条的序数
实现删除规则功能的程序流程如图4.4。 图4.4 删除规则流程图
其中调用DeleteRule()的代码为
CFireWallDoc *doco (CFireWallDoc *)GetActiveDocument();//关联文档类
doco-DeleteRule(position);//调用DeleteRule()函数删除规则
view-UpdateList();//更新规则列表的显示
} void CFireWallDoc::DeleteRule(unsigned int position)
{
if(position nRules)
return;
if(position ! nRules - 1)//如果删除的规则不是最后一条则将它删除后后面的规则要往前移动
{
unsigned int i;
for(i position 1;inRules;i)
{
rules[i - 1].sourceIp rules[i].sourceIp;
rules[i - 1].sourceMask rules[i].sourceMask;
rules[i - 1].sourcePort rules[i].sourcePort;
rules[i - 1].destinationIp rules[i].destinationIp;
rules[i - 1].destinationMask rules[i].destinationMask;
rules[i - 1].destinationPort rules[i].destinationPort;
rules[i - 1].protocol rules[i].protocol;
rules[i - 1].action rules[i].action;
}
}
nRules--;
}
DeleteRule()调用的流程图如图4.5所示。 图4.5 DeleteRule()的调用
4.3驱动程序设计
4.3.1简介
基于Firewall-Hook Driver的包过滤驱动程序位于核心态运行效率高主要用于在IP过滤驱动中拦截所有的网络数据包根据过滤规则判别是否接收或发送数据包。同时处理上层应用程序发送的IRP接收应用程序发送的过滤规则等。
安装过滤函数之前先将过滤函数的地址填入IP_SET_FIREWALL_HOOK_INFO结构的FirewallPtr指针中Add设置为TRUE并指定该过滤函数优先级Priority然后向IP设备发送IOCTL IOCTL_IP_SET_FIREWALL_HOOK控制码这样就完成了过滤函数的安装。卸载过滤函数的时候只用把Add设置为FALSE就行了其他参数和安装时一样。
每个过滤函数可以设置一个优先级系统调用这些函数的时候按照优先级的顺序进行直到某个函数返回“丢弃包”为止。如果所有的过滤函数都返回“允许包”那么这个包才能顺利通过系统。可以把这些过滤函数想象成一个过滤链所有的函数按照优先级排列如果一个函数返回“丢弃包”这条过滤链就断开了。
4.3.2结构图
驱动程序结构如图4.6所示。 图4.6 驱动结构图
4.3.3该驱动的优点
在Windows中这不是开发防火墙的唯一方法其它的有诸如 NDIS防火墙TDI防火墙Winsock分层防火墙包过滤API等等。而Filter-Hook Driver的优点在于
1、 这种方法所拥有的弹性可以使你过滤所有IP层或以上的通讯。但不能过滤更低层的头部数据例如不能过滤以太帧数据。需要用NDIS过滤器来做。
2、 这是一种简单的方法。安装防火墙和执行过滤功能非常简单。但包过滤API(Packet Filtering API)更加容易使用尽管它缺少弹性例如不能处理包的内容不能用包过滤API修改内容。
4.3.4本程序的驱动设计
本程序驱动的设计核心是通过使用TDriver类向DrvFltIp驱动程序发送控制代码START_IP_HOOK、STOP_IP_HOOK、ADD_FILTER、CLEAR_FILTER达到实现数据包过滤的目的。
1、程序初始化时调用LoadDriver()加载DrvFltIp驱动
CMainFrame::OnCreate()
{
ipFltDrv.LoadDriver(IpFilterDriverSystem32\\Drivers\\IpFltDrv.sysNULLTRUE);
}
2、当用户单击“开始过滤”按钮时程序向驱动发送START_IP_HOOK控制代码开始过滤
CMainFrame::OnButtonstart()
{
filterDriver.WriteIo(START_IP_HOOKNULL0);
}
3、当用户单击“停止过滤”按钮时程序向驱动发送START_IP_HOOK控制代码停止过滤
CMainFrame::OnButtonstop()
{
filterDriver.WriteIo(STOP_IP_HOOKNULL0);
}
4、当用户单击“安装规则”按钮时程序向驱动发送ADD_FILTER控制代码:
CMainFrame::OnButtonInstall()
{
AddFilterToFw();
}
AddFilterToFw()
{
filterDriver.WriteIo(ADD_FILTER pf sizeof(pf));
}
5、当用户单击“卸载规则”按钮时程序向驱动发送CLEAR_FILTER控制代码:
CMainFrame::OnButtonuninstall()
{
filterDriver.WriteIo(CLEAR_FILTER NULL 0);
} 5 程序结果测试
计算机位于网关地址为10.0.0.2的局域网内本地IP地址为10.0.0.15。通过局域网连接于外部网络可以PING通本地网关地址10.0.0.2和电信DNS服务器地址61.139.2.69如图5.1和图5.2所示。 图5.1 PING 10.0.0.2 图5.2 Ping 61.139.2.69
运行防火墙点击“添加”按钮进行过滤规则设置如图5.3所示。
源地址10.0.0.2 目的地址10.0.0.15
端口号0所有端口
协议由于PING命令基于ICMP协议所以协议选择ICMP
行为丢弃 图5.3 添加规则图
点击“添加”按钮将规则保存到防火墙如图5.4。 图5.4 规则示图
点击“安装”防火墙将过滤规则添加到过滤驱动点击“开始”防火墙开始按照规则进行数据包过滤如图5.5所示。 图5.5 开始过滤图
由图5.5可以看出原来本地计算机可以和本地网关路由器进行ICMP数据包收发也能和电信DNS服务器进行数据包收发。而当防火墙设置为过滤源地址为10.0.0.2、协议为ICMP的规则之后运行本地计算机将不能和本地网关路由器进行数据包收发PING命令显示为“Request timed out”。但是本地计算机还能和电信DNS服务器61.139.2.69进行数据收发。
6 总结
防火墙是建立在本地主机与外部网络的一道屏障可以根据用户需求来改变其自身既定过滤规则以满足用户的实际需求。
本防火墙实现了基本的包过滤功能。如设定本机IP为目的地址协议类型为ICMP那么别人就不能ping通本机。又如TCP协议的21端口关闭别人就不能和该主机使用FTP传输。
本防火墙还实现了用户手动选择导入导出防火墙规则、对当前规则的删除或修改、添加一条新的规则等功能。
本程序提供了基本的包过滤功能界面简单易用代码易读更有保存规则读取规则使用户每次使用不必重新输入规则加入注册表启动项使之能随系统启动而启动就能从用户开机为用户提供保护。
可以提高的地方有现在需要用户手动输入源或者目标IP地址、端口以及协议这对于一些不太了解计算机网络的用户来说使用起来就相对要困难些了保存规则时程序不懂得把后缀名自动添加上去使得如果不保存为*.rul文件下次读取时候可能不一定能注意到该文件是规则文件。
未来的防火墙必定继续向多元化功能和良好的性能及效率发展。随着硬件和网络的发展个人防火墙的作用和地位越发提高未来的防火墙将与入侵检测、病毒防护、数据保护以及程序行为控制等相结合来保证本地主机全方位不受外部的攻击。入侵检测是对防火墙有益的补充入侵检测系统能在入侵攻击对系统发生危害前检测到入侵并利用报警以及相关的数据保护和行为控制来驱逐该入侵减少入侵攻击所造成的损失。同时使用日志审计功能记录本次入侵特点使防御系统变得更为智能化从而可以避免系统再次受到相同的入侵。
参考文献
[1] 罗斌Visual C编程技巧精选集[M]北京中国水利水电出版社2008.9573-605
[2] 朱雁辉Windows防火墙与网络封包截获技术[M]北京电子工业出版社2002.8140-149
[3] 邓全良Winsock网络程序设计[M]北京中国铁道出版社2002.61-18
[4] 唐克MFC程序设计——Using Visual C6.0[M]. 北京北京希望电子出版社2002.6229-231
[5] 文东华进Visual C程序设计基础与项目实训[M]北京中国人民大学出版社2009.1276-80
[6] 唐彬刘超Visual C案例开发集锦[M]北京电子工业出版社2005.6123-125
[7] 曾宪权Visual C.NET程序设计使用教程[M]北京清华大学出版社2007.765-71
[8] 于永彦王志坚娄渊胜等Visual C程序设计实用案例教程[M]北京北京大学出版社2010.2250-255
[9] 叶树华网络编程实用教程[M]北京人民邮电出版社2010.165-73
[10] 方娇莉李向阳C语言程序设计[M]北京中国铁道出版社2010.1114-122
[11] 刘远生辛一计算机网络安全[M]北京清华大学出版社2009.4178-195
[12] 石磊赵慧然网络安全与管理[M]北京清华大学出版社2009.789-102
[13] 骆耀祖网络安全技术[M]北京北京大学出版社2009.6 186-206
[14] Ido DubrawksyChris CraytonMichael Cross等贾军保译网络安全保护[M]北京科学出版社2009.10208-214
[15] Raven AlderJosh BurkeChad Keefer等傅建明潘宣辰潘谧译开放资源安全工具实践[M]北京科学出版社2009.1036-41
[16] AndreasHooking into NDIS and TDI[OL]http://www.rootkit.com/newsread.php?newsid219
[17] Mohamed G.GoudaAlex X.LiuStructured firewall design[J]Computer Networks
2006.6
[18] Bruce EckelThinking in C(2nd Edition)[M]北京机械工业出版社2002.3
致谢
感谢本次毕业设计的指导老师***从项目启动开始一直孜孜不倦地给与我们整个小组成员悉心指导和耐心帮助为我们解决开发中遇到的困难提供了最大的支持使得我们能认真投入到开发工作中去。
感谢开题答辩时的三位老师提出的细化要求使整个毕业设计的方向更为明朗也让我实现本课题少走了很多弯路。
感谢毕业设计小组里其他同学给与的帮助在这里祝你们事业有成身体健康
最后再次向所有关心帮助过我的老师和同学表示诚挚的谢意 文章转载自: http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn http://www.morning.mlbn.cn.gov.cn.mlbn.cn http://www.morning.xqwq.cn.gov.cn.xqwq.cn http://www.morning.ghgck.cn.gov.cn.ghgck.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.dfwkn.cn.gov.cn.dfwkn.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.stsnf.cn.gov.cn.stsnf.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.wchsx.cn.gov.cn.wchsx.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.clkjn.cn.gov.cn.clkjn.cn http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.hyryq.cn.gov.cn.hyryq.cn http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn http://www.morning.skdhm.cn.gov.cn.skdhm.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.qxlgt.cn.gov.cn.qxlgt.cn http://www.morning.hqmfn.cn.gov.cn.hqmfn.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.wcghr.cn.gov.cn.wcghr.cn http://www.morning.cgtrz.cn.gov.cn.cgtrz.cn http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.dmcxh.cn.gov.cn.dmcxh.cn http://www.morning.brwwr.cn.gov.cn.brwwr.cn http://www.morning.brlcj.cn.gov.cn.brlcj.cn http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.mljtx.cn.gov.cn.mljtx.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.nwllb.cn.gov.cn.nwllb.cn http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.jppdk.cn.gov.cn.jppdk.cn http://www.morning.sdamsm.com.gov.cn.sdamsm.com http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.rttkl.cn.gov.cn.rttkl.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.nnwmd.cn.gov.cn.nnwmd.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.ymqrc.cn.gov.cn.ymqrc.cn http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn http://www.morning.cwgn.cn.gov.cn.cwgn.cn http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn http://www.morning.phnbd.cn.gov.cn.phnbd.cn http://www.morning.qkzdc.cn.gov.cn.qkzdc.cn http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn http://www.morning.tngdn.cn.gov.cn.tngdn.cn http://www.morning.xlpdm.cn.gov.cn.xlpdm.cn http://www.morning.mznqz.cn.gov.cn.mznqz.cn http://www.morning.zpstm.cn.gov.cn.zpstm.cn http://www.morning.lpppg.cn.gov.cn.lpppg.cn http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.bykqg.cn.gov.cn.bykqg.cn http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn http://www.morning.zxfdq.cn.gov.cn.zxfdq.cn http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn http://www.morning.zfcfx.cn.gov.cn.zfcfx.cn http://www.morning.ysckr.cn.gov.cn.ysckr.cn http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.tbqdm.cn.gov.cn.tbqdm.cn