防火墙包过滤规则的优化和分析_第1页
防火墙包过滤规则的优化和分析_第2页
防火墙包过滤规则的优化和分析_第3页
防火墙包过滤规则的优化和分析_第4页
防火墙包过滤规则的优化和分析_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

. 精选文档 目 录 第一章第一章 引言引言.4 4 1.1 课题的国内外概况 .4 1.2 本论文题目的理论意义和实用价值.5 第二章第二章 包过滤防火墙技术包过滤防火墙技术.7 7 2.1 包过滤防火墙技术简介.7 2.2 防火墙包过滤技术的特点.8 2.3 包过滤防火墙工作原理.9 2.4 数据包过滤技术.12 2.5 数据包过滤类型.16 2.5.1. IP 包过滤.16 2.5.2 .TCP 包过滤.17 2.5.3. UDP 数据包过滤.17 2.5.4. 源端口过滤.17 第三章第三章 具体实现具体实现.2020 3.1 数据库表的建立.20 3.2 封包监视的设计.23 第四章第四章 防火墙系统的设计与实现防火墙系统的设计与实现.2828 4.1 总体框架模型设计.28 4.2 包过滤驱动程序设计.28 . 精选文档 4.3 上层应用程序的设计.29 4.4.防火墙的优化.29 第五章第五章 总结与展望总结与展望.3131 参考文献参考文献.3232 致谢致谢.3333 . 精选文档 第一章第一章 引言引言 1.1 课题的国内外概况 包过滤防火墙是最简单的一种防火墙,它在网络层截获网络数据包,根据防火 墙的规则表,来检测攻击行为。包过滤防火墙一般作用在网络层(IP层) ,故也称网 络层防火墙(Network Lev Firewall)或IP过滤器(IP filters) 。数据包过滤(Packet Filtering)是指在网络层对数据包进行分析、选择。通过检查数据流中每一个数据包 的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合 来确定是否允许该数据包通过。在网络层提供较低级别的安全防护和控制。 包过滤防火墙工作在网络层,对数据包的源及目地 IP 具有识别和控制作用, 对于传输层,也只能识别数据包是 TCP 还是 UDP 及所用的端口信息,如下图所 示。现在的路由器、Switch Router 以及某些操作系统已经具有用 Packet Filter 控制 的能力。 由于只对数据包的 IP 地址、 TCP/UDP 协议和端口进行分析,包过滤防火墙 的处理速度较快,并且易于配置。 简单介绍近年来,Internet的快速增长促进了信息技术的飞速发展,它的迅猛成长正 在使世界成为一个整体。但随之而来的是数据的完整性与安全性问题。人们一方面 要把自己的内部网接入Internet,以便公司成员可以最大可能地利用Internet 上的资源, 同时大家都需要把自己的数据有意识地保护起来,以防数泄密及受到外界对内部系统 的恶意破坏。而当前能采用的有效措施就是防火墙。防火墙大致可以分为两大类:包 过滤防火墙和代理防火墙。其中包过滤技术由于可以与现有的路由器集成,也可以用 独立的包过滤软件实现,使用较灵活,应用比较广泛。 . 精选文档 本文由此展开,主要介绍包过滤。开始文章介绍了一些网络的基本概念,数据包 截取需要用到的非常重要的库函数winpcap的结构。在此基础上回顾了当前包过滤技 术研究的进展和现状,着重介绍了包过滤的原理、以及优点和缺点。最后介绍了一 个在单机上实现的简单的对指定端口实现数据包抓取的程序。 随着网络技术的飞速发展,网络安全问题日益突出。防火墙是目前广泛使用的 一种网络安全技术,已成为企业内部与公用网络之间的一道必备的屏障,个人用户 也纷纷安装了个人防火墙软件。防火墙往往放在网络的出口,成为一个信息流量的 阻塞点,若造成网络阻塞,再安全的防火墙也无法应用。在实现中需要解决的主要 问题是如何提高包过滤的性能。 本文研究目标是实现一种基于Windows的包过滤型防火墙。其核心问题是如何基 于NDIS中间驱动程序在Windows内核中截获数据包,并提高包过滤的性能。 1.2 本论文题目的理论意义和实用价值 防火墙技术的发展离不开社会需求的变化,着眼未来,我们注意到以下几个新 的需求。 远程办公的增长。这次全国主要城市先后受到 SARS 病毒的侵袭,直接促成大 量的企事业在家办公,这就要求防火墙既能抵抗外部攻击,又能允许合法的远程访 问,做到更细粒度的访问控制。现在一些厂商推出的 VPN (虚拟专用网)技术就 是很好的解决方式。只有以指定方式加密的数据包才能通过防火墙,这样可以确保 信息的保密性,又能成为识别入侵行为的手段。 内部网络 “ 包厢化 ” ( compartmentalizing ) 。人们通常认为处在防火墙保 护下的内网是可信的,只有 Internet 是不可信的。由于黑客攻击技术和工具在 Internet 上随手可及,使得内部网络的潜在威胁大大增加,这种威胁既可以是外网的 . 精选文档 人员,也可能是内网用户,不再存在一个可信网络环境。 由于无线网络的快速应用以及传统拨号方式的继续存在,内网受到了前所未有的 威胁。企业之前的合作将合作伙伴纳入了企业网络里,全国各地的分支机构共享一 个论坛,都使可信网络的概念变得模糊起来。应对的办法就是将内部网细分成一间 间的 “ 包厢 ” ,对每个 “ 包厢 ” 实施独立的安全策略。 Internet 的迅速发展,为人们提供了发布信息和检索信息的场所,但同时它也带来 了信息污染和信息被破坏的危险,网络的安全性问题已成为一个重要研究课题。在 Internet上存在两种安全性问题:Internet服务本身所固有的脆弱性;主机配置和访问 控制难于实现或过于复杂而产生的安全漏洞。Internet 安全的脆弱性的表现形式主要 有Internet蠕虫(Worm) ,身份验证机制的脆弱性,网上传输的信息易窃取及易被欺骗等。 其中蠕虫程序与计算机病毒有区别,它是一个独立、完整的程序,本身并不损坏任何文 件或窃取信息,但它严重干扰了网络的正常操作,使受感染的计算机处于重负载状态,拒 绝其他机器用户的服务请求。而通过破译口令的加密方式和截获传递口令报文的方 法,就可以获得该帐户的权限,其身份验证机制的脆弱性由此表现出来。特别是一些TC 或UD 服务的身份验证仅仅依赖报文中的IP 地址,管理员不能对某个用户定义访问权 限,必须以主机为单位来定义访问权限,该主机上所有用户的权限都一样,这样就容易产 生安全问题. 当使用Telnet或FTP与远程主机相连并进行身份验证时,使用的用户口令 以明文的形式在Internet上传输,这样只需监视、截获连接中包含用户名和口令的IP 报 文,就很容易获得某台主机的帐户。E-mail在网上也是以明文传输,通过监视网上交换 的电子邮件可以获得有关某个站点的信息。 . 精选文档 第二章 包过滤防火墙技术 2.1 包过滤防火墙技术简介 防火墙是专用网络系统,旨在防止未经授权的访问或从。防火墙是用于防止未经 授权的 Internet 网络的互联网连接的用户访问私营,尤其是内部网,虽然使用防火墙 保护互联网从单一的电脑也越来越大,随着越来越多的电脑用户成为世界知道,网 络安全问题的。防火墙可以是即时通讯 在硬件和软件,或两者相结合的,一般可分 为下列之一类别: 数据包过滤 , 应用网关 , 电路级网关和代理服务器 。虽然 他们都 不同层次的不同情况在实用性和缺点,本文只处理数据包过滤器,如他们更 有可能得到有效的硬件实现研究。包过滤字段的标题是基于他们对网络资源的众所 周知的方法限制访问滤波要求的能力,按照指定的数据包分类过滤规则。这些规则 可以看作是头字段的逻辑功能的数据包。分类数据包也出现在计算其他领域,如路 由,策略路由,区分交通服务质量,然而,并非所有的人都使用或需要分类的基础 上多包头中的字段。例如,一个简单的包转发路由器只需要根据数据包进行分类在 一个领域(目的地的 IP 地址)来执行正确的路线。过滤的概念和分类是紧密联系在 一起,因此,这些条款将用于在本文件比较松散,除非区别要避免混淆。总的想法 包过滤,或分类,是人开始在后来扩大由他人创立和雅各布森,虽然包分类问题时, 防火墙的主要焦点本文件的背景是计算机网络在许多领域。快速和有效的数据包分 类在多个领域的头是一个具有挑战性的问题。主要有两种方法来实施该系统的过滤: 翻译为基础和模式为基础 。第一种方法由一个指令集的规范规则和一名翻译引擎 解释处理能力的指示表,而后者匹配图案用一些比较机制,不需要翻译引擎。它也 可以使用这些做法都一起实现方便和效率之间的平衡。 . 精选文档 防火墙是内部、外部两个网络之间的一个阻隔,通过允许和拒绝经过防火墙的数 据流,防止不希望的、未授权的通信,并实现对进、出内部网络的服务和访问的审 计和控制防火墙对网络用户提供访问控制服务和通信安全服务,对网络用户基本上 是“透明”的,并且只有授权的管理员方可对防火墙进行管理。 防火墙一般要解决的安全问题可分为被保护系统(即内部网)的安全问题和自身的 安全问题。防火墙产品主要分为两类:包过滤和应用级防火墙本标准规定了包过滤防 火墙的各级安全要求。 包过滤防火墙根据安全功能策略建立包过滤规则。过滤规则的主要要素有源 IP 地址、目的 IP 地址、协议号、源端口、目的端口、连接标志和另外一些 IP 选项, 以及包到达或发出的接口。 包过滤防火墙工作在网络层,对数据包的源及目地 IP 具有识别和控制作用,对 于传输层,也只能识别数据包是 TCP 还是 UDP 及所用的端口信息,如下图所示。 现在的路由器、 Switch Router 以及某些操作系统已经具有用 Packet Filter 控制的能 力。由于只对数据包的 IP 地址、 TCP/UDP 协议和端口进行分析,包过滤防火墙 的处理速度较快,并且易于配置。 包过滤防火墙是用一个软件查看所流经的数据包的包头(header) ,由此决定整 个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包 (让这个包通过) ,也可能执行其它更复杂的动作。 在 Linux 系统下,包过滤功能是内建于核心的(作为一个核心模块,或者直接内 建) ,同时还有一些可以运用于数据包之上的技巧,不过最常用的依然是查看包头以 决定包的命运。 . 精选文档 2.2 防火墙包过滤技术的特点 包过滤防火墙工作在网络层,对数据包的源及目地 IP 具有识别和控制作用, 对于传输层,也只能识别数据包是 TCP 还是 UDP 及所用的端口信息,如下图所示。 现在的路由器、Switch Router 以及某些操作系统已经具有用 Packet Filter 控制的能力。 由于只对数据包的 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 消息类型等。包过滤类型的防火墙要遵循的一条基本原则是“最小特权原 则” ,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。 图 2.3.1 简单包过滤防火墙 第二代:动态包过滤 这种类型的防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有 的问题。这种技术后来发展成为所谓包状态监测(Stateful Inspection)技术。采用这 种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在 过滤规则中增加或更新条目。 图 2.3.2 动态包过滤防火墙 . 精选文档 包过滤方式的优点是不用改动客户机和主机上的应用程序,因为它工作在网络 层和传输层,与应用层无关。但其弱点也是明显的:过滤判别的依据只是网络层和 传输层的有限信息,因而各种安全要求不可能充分满足;在许多过滤器中,过滤规 则的数目是有限制的,且随着规则数目的增加,性能会受到很大地影响;由于缺少 上下文关联信息,不能有效地过滤如 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 的访问。 包过滤的设置: 必须知道什么是应该和不应该被允许的,即必须制定一个安全 策略。 必须正式规定允许的包类型、包字段的逻辑表达。 必须用防火墙支持 的语法重写表达式。 下面是我就一个简单的按地址数据包过滤方式,它按照源地址进行过滤。比如 说,认为网络是一个危险的网络,那么就可以用源地址过滤禁止内部主机 和该网络进行通信。在网络中数据是以数据包的形式传输的。这样,当数据包经过 防火墙时,防火墙可以检查数据包中的那些信息,然后根据规则决定是否允许该包 通过,就源地址过滤而言,防火墙只要检查目标地址和源地址就可以了。表1.1表示 的是根据上面的政策所制定的规则。表1. .1表示的是根据上面的政策所制定的规则。 . 精选文档 表1.1 过滤规则示例 规则方向源地址目标地址动作 A 出内部网络 拒绝 B 入 内部网络拒绝 这种方式没有利用全部信息,对于当今网络攻击的发展以无法满足防火墙的需求, 下面是一种更为先进的过滤方式按服务过滤。 假设安全策略是禁止外部主机访问内部的 E-mail 服务器(SMTP,端口25),允 许内部主机访问外部主机,实现这种的过滤的访问控制规则类似表1.2。 规则按从前到后的顺序匹配,字段中“*”代表任意值,没有被过滤器规则明确 允许的包将被拒绝。就是说,每一条规则集都跟随一条含蓄的规则,就像表1. .2中的 规则 C。这与一般原则是一致的:没有明确允许就被禁止。 任何一种协议都是建立在双方的基础上的,信息流也是双向的,所以在考虑允许内 部用户访问 Internet 时,必须允许数据包不但可以出站而且可以入站。同理,若禁止 一种服务,也必须从出站和入站两方面制定规则,规则总是成对出现的。 表 1.2 规则表 . 精选文档 规则方向动作源地址源端口 目的地 址 目的端 口 注释 A 进拒绝 m*E-mail25 不信任 B 出允许 * 允许联接 C 双向拒绝 * 缺省状态 下面,通过一个包过滤实例来讲解分析。第一,假设处于一个 C 类网 ,认为站点 上有不健康的 BBS,所以希望阻止网络中的用户访 问该点的 BBS;再假设这个站点的 BBS 服务是通过 Telnet 方式提供的,那么需要阻 止到那个站点的的出站 Telnet 服务,对于 Internet 的其他站点,允许内部网用户通过 Telnet 方式访问,但不允许其他站点以 Telnet 方式访问网络。第二,为了收发电子邮 件,允许 SMTP 出站入站服务,邮件服务器是 IP 地址为 。第三,对于 WWW 服务,允许内部网用户访问 Internet 上任何网络和站点,但只允许一个公司的 网络访问内部 WWW 服务器,内部 WWW 服务器的 IP 地址为 ,因为你们 是合作伙伴关系,那个公司的网络为 。 根据上面的安全策略可以得到表 1.3。 . 精选文档 表1.3 过滤规则示例 规 则 方 向 源地址目标地址 协 议 源端 口 目标端 口 ACK 设 置 动作 A 出 116.111.4. 0 202.108.5. 6 TCP102323 任意拒绝 B 入 202.108.5. 6 116.111.4. 0 TCP231023 是任意 C 出 116.111.4. 0 任意 TCP102323 任意允许 D 入任意 116.111.4. 0 TCP231023 是允许 E 出 116.111.4. 1 任意 TCP102325 任意允许 F 入任意 116.111.4. 1 TCP251023 是允许 G 入任意 116.111.4. 1 TCP102325 任意允许 H 出 116.111.4. 1 任意 TCP251023 任意允许 . 精选文档 I 出 116.111.4. 0 任意 TCP102380 任意允许 J 入任意 116.111.4. 0 TCP801023 是允许 K 入 116.111.4. 5 TCP102380 任意允许 L 出 116.111.4. 5 TCP801023 任意允许 M 双 向 任意任意 任 意 任意任意 规则 A、B 用来阻止你的内部主机以 Telnet 服务形式联接到站,规则 C、D 允许你的内部主机以 Telnet 方式访问 Internet 上的任何主机。这似乎和我们的 政策发生了矛盾,但事实上并部矛盾。在前面提到过规则的次序是十分重要的,而 且防火墙实施规则的特点是当防火墙找到匹配的规则后就不再向下应用其他的规则, 所以当内部网主机访问站点,并试图通过 Telnet 建立联接时,这个联接请 求会被规则 A 阻塞,因为规则 A 正好与之相匹配。至于规则 B,实际上并非毫无用 处,规则 B 用来限制站点 Telnet 服务的返回包。事实上,内部主机试图建 立 Telnet 联接时就会被阻塞,一般不会存在返回包,但高明的用户也可能想出办法 使联接成功,那时 B 规则也会有用,总之,有些冗余对安全是有好处的。当用户以 Telnet 方式访问除之外的其他站点时,规则 A、B 不匹配,所以应用 C、D 规则,内部主机被允许建立联接,返回包也被允许入站。 . 精选文档 规则 E、F 用于允许出站的 SMTP 服务,规则 G、H 用于允许入站的 SMTP 服务, SMTP 服务的端口是25。 I 和 J 规则用于允许出站的 WWW 服务,K、L 规则用于允许网络的主 机访问你的网络 WWW 服务器。 规则 M 是默认项,它实现的准则是“没有明确允许就表示禁止”。 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 入任意 TCP/25 拒绝 B 出 任意 TCP/1023 任意 C 出 任意 TCP/25 允许 D 如任意 TCP/1023 允许 规则 A、B 允许入站的 SMTP 联接。 规则 C、D 允许出站的 SMTP 联接。 2.2.5.ACK 位在数据包过滤中的作用 ACK 位在数据包过滤中的作用是很关键的。假设防火墙不考虑 ACK 位,那么 对于允许内部网络主机利用 Telnet 服务访问 Internet 的策略可以以下方式实现。 如果有一个用户在他的主机上,用端口号23联接到内部网主机的一个大于1023 的端口上,则这种联接将会被允许,可见,系统存在着安全缺口。 . 精选文档 一般只检查返回包的 ACK 位,因为联接请求包的 ACK 位可能不会被置位,而 返回包 ACK 位一定会被置位。当加上 ACK 位检测后,得到如表2.2所示的规则。 表2.2 过滤规则示例 规 则 方向源地址目标地址协议 源端 口 目标端 口 ACK 设 置 动作 A 出 任意 TCP102323 任意允许 B 入任意 TCP231023 是允许 当黑客试图通过端口23建立入站联接时,因为第一个请求包的 ACK 不被置位, 所以该包回被禁止进入你的内部网络,第一个联接请求包被拒绝后,联接就很难建 立起来了。 如果入侵者把第一个数据包的 ACK 位置位,则该数据包可以通过防火墙,但目 标主机会把这个数据包当作以前联接中的一个数据包,而不是建立一个新的联接。 因为这个数据包不属于目标主机所知的任何联接(序列号不能匹配) ,所以它被抛弃 掉。 . 精选文档 第三章 具体实现 此虚拟网络防火墙主要分为四个模块:封包监视,控制规则,日志查询,安全策 略。模块之间具体关系如图 3.1 所表示。 图 3.1 虚拟防火墙设计时采用 JAVA(前台)+数据库 SQL(后台) ,利用 JAVA 进行界 面及各种操作选择的设计,在此基础上建立的 JDBC,为独立于数据库管理系统 DBMS 的应用提供了能与多个不同数据库连接的通用接口。 下面就封包监视这一模块的设计进行分析。 3.1 数据库表的建立 数据库表的创建主要是为了方便各种攻击流规则的记录的增加和删除,以及日 志的记录和查询都可以很方便的通过数据库来进行操作。具体各个表的创建如下所 示: 表 RuleBook 用来记录各种匹配规则,表结构如表3.1所示。 . 精选文档 表3.1 RuleBook 匹配规则表 RuleName 用来记录规则名称,主键,char 类型 Protocol 协议类型,char 类型 Source1IP用来记录源端 IP 地址,int 类型 Source1IP用来记录源端 IP 地址,int 类型 Source1IP用来记录源端 IP 地址,int 类型 Source1IP用来记录源端 IP 地址,int 类型 SourcePort 源端口号,int 类型 Direct 单向双向选择,char 类型 Aim1IP用来记录目的 IP 地址,int 类型 Aim2IP用来记录目的 IP 地址,int 类型 Aim3IP用来记录目的 IP 地址,int 类型 Aim4IP用来记录目的 IP 地址,int 类型 AimPort目的端口号,int 类型 Remark备注说明,char 类型 表 Safety 用来记录各种受约束网络信息,表结构如表3.2所示。 . 精选文档 表3.2 Safety 受约束网络信息表 SafetyName用来记录约束网络名称,主键,char 类型 Source1aIP Source2aIP用来记录开始 IP 地址,int 类型 Source3aIP Source4aIP用来记录开始 IP 地址,int 类型 Source1bIP Source2bIP用来记录结束 IP 地址,int 类型 Source3bIP Source4bIP用来记录结束 IP 地址,int 类型 Remarklog备注说明,char 类型 . 精选文档 表 WatchTable 用来记录日志信息,表结构如表3.3所示。 表3.3 WatchTabel 日志记录表 WatchName用来记录日志编号,主键,char 类型 Pro协议类型,char 类型 S1IP S2P S3IP S4IP用来记录源端 IP 地址,int 类型 SPort源端口号,int 类型 Direction单向双向选择,char 类型 A1IP A2IP A3IP A4IP用来记录目的 IP 地址,int 类型 APort目的端口号,int 类型 Remark1log备注说明,char 类型 . 精选文档 3.2 封包监视的设计 在此模块中用户可以将源端 IP 地址、源端端口、目的 IP 地址、目的端口,以 及协议类型和数据包进出为双向或者单向进行选择,在点击确定按钮之后,先将获 得信息插入日志表中,其中备注项为空,系统将会将获得信息到 RuleBook 规则表中 进行匹配,如果能匹配到相符合的规则,则将在日志记录中的备注项中加入相关的 异常流说明。 进行匹配的 Java 代码如下: Try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/装载 SQL Server 驱动程序 Connection con=DriverManager.getConnection(jdbc:odbc:wk);/进行装载和连接 sqlstring1=add_WatchTable +WatchName+,+Pro+,+S1IP+,+S2IP+,+S3IP+,+S4IP+,+SPort+, +Direction+,+A1IP+,+A2IP+,+A3IP+,+A4IP+,+APort+;/这是 对存储过程 add_WatchTablede 调用,其后面为相应的参数,当用户将源端 IP 地 址、源端端口、目的 IP 地址、目的端口,以及协议类型和数据包进出类型输入 之后,便传递到相应的参数之中去,并且调用存储过程;其中参数获得是通过语 句:WatchName=nametxt.getText().toString();获得 CallableStatement stmt=con.prepareCall(sqlstring1); System.out.println(sqlstring1);/显示相关信息 ResultSet result1=stmt.executeQuery();/提交 SQL 语句,创建一个 result1对象 stmt.close();/关闭 Statement 对象 . 精选文档 con.close();/关闭链接 在数据库中的相关操作采用了存储过程”add_WatchTable” ,其代码如下: create proc add_WatchTable WatchName char(20),Pro char(4), S1IP int,S2IP int,S3IP int, S4IP int, SPort int,Direction char(4), A1IP int,A2IP int,A3IP int,A4IP int, APort int as begin declare Remark1log char(40) insert into WatchTable values(WatchName,Pro,S1IP,S1IP,S3IP,S4IP,SPort,Direction,A1IP, A2IP,A3IP,A4IP,APort,Remark1log) select Remark1log=R.Remark from RuleBook R where R.SourcePort=SPort and R.AimPort=APort and R.Protocol=Pro and R.Direct=Direction update WatchTable set Remark1log=Remark1log where WatchName=WatchName end 该段代码主要实现了数据在 WatchTable 表中的插入以及与 RuleBook 表中数 据进行匹配的操作,如果匹配成功,则修改 WatchTable 表中的备(Remark1log) 。 . 精选文档 当用户输入了必要的相关数据信息之后,数据分别被传递到相对应的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论