浅谈状态检测防火墙的原理_第1页
浅谈状态检测防火墙的原理_第2页
浅谈状态检测防火墙的原理_第3页
全文预览已结束

下载本文档

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

文档简介

1、状态检测防火墙原理防火墙发展到今天,虽然不断冇新的技术产生,但从网络协议分层的角度,仍然可以归为以 下三类:1. 包过滤防火墙;2. 基于状态检测技术(stateful-inspect ion)的防火墙;3. 应川层防火墙这三类防火墙都是向前兼容的,即基于状态检测的防火墙也有一般包过滤防火墙的功能,而 基于应用层的防火墙也包括前两种防火墙的功能。由于v v浅文已训:了第一类防火墙,在这 里我就讲讲基于状态检测技术的防火墙的实现原理。为什么会有皋于状态检测的防火墙呢?这就要先看看第一类普通包过滤防火墙的主要缺点, 比如我们耍允许内网川户访问公网的web服务,來看看第一类普通包过滤防火墙是怎样处理

2、的 呢?那首先我们应该建立-条类似图1所示的规则:动作源地址源端口目标地址目标端口方向(此栏为备注)允许申80出但这就行了吗?显然是不行的,因为这貝是允许我向外请求web服务,但web服务响应 我的数据包怎么进來呢?所以还必须建立-条允许相应响应数据包进入的规则。好,就按上面 的规则加吧,在动作栏中我们填允许,山于现在数据包是从外进来,所以源地址应该是所有外部 的,这里不做限制,在源端口填80,目标地址 也不限定,这个这个目标端口怎么填呢?因为当 我访问网站时本地端口是临时分配的,也就是说这个端口是不定的,只要是1023以上的端口 都有可能,所以没有 办法,那只有把这些所有端口都开放了,于是在

3、h标端口填上 1024-65535,这样规则就如图2所示了,实际上这也是某些第一类防火墙所采用的方法。源端口目标地址目标端口方向(此芒为备注)允讦*80出允讦80*1024-65535逬想一想这是多么危险,因为入站的高端口全开放了,而很多危险的服务也是使用的高端口啊, 比如微软的终端服务/远程桌面监听的端口就是3389,当然对这种固定的端口还好说,把进站 的3389封了就行,但对于同样使用高端口但却是动态分配端口的rpc服务就没那么容易处理 了,因为是动态的,你不便封住某个特 定的rpc服务。上面说了这是某些普通包过滤防火墙所采用的方法,为了防止这种开放高端口的风险,于是 一些防火墙又根据tc

4、p连接中的ack位值來决立数据包进出,但这种方法又容易导致dos 攻击,何况udp协议还没有这种标志呢?所以普通包过滤防火墙还是没有解决这个问题,我们 仍然需要一种更完美的方法,这时就冇了状态检测技术,我们先不解释什么是状态检测防火墙, 还是来看看它是怎样处理上面的问题的。同上面一样,首先我们也需要建立好一条类似图1的规则(但不需要图2的规则),通常此 时规则需要指明网络连接的方向,即是进还是出,然厉我在客户端打开ie向某个网站请求web 页面,当数据包到达防火墙时,状态检测引擎会检测到这是一个发起连接的初始数据包(由syn 标志),然后它就会把这个数据包中的信息与防火墙规则作比较,如果没有和

5、应观则允许,防火 墙就会拒绝这次连接,当然在这里它会发现育一条规则允许我访问外部web服务,于是它允许 数据包外出并h在状态表中新建一条会话,通常这条会话会包括此连接的源地址、源端口、h 标地址、h标端口、连接时间等信息,对于tcp连接,它述应该会包含序列号和标志位等信息。 当后续数据包到达时,如果这个数据包不含syn标志,也就是说这个数据包不是发起一个新的 连接时,状态检测引擎就会百接把它的信息与状态表中的会话条目进行比较,如果信息匹配, 就宜接允许数据包通过,这样不再去接受规则的检查,提高了效率,如果信息不匹配,数据包就 会被丢弃或连接被拒绝,并且每个会话还育一个超时值,过了这个时间,相应

6、会话条目就会被 从状态表中删除掉。就上面外部web网站对我的响应包來说,由丁状态检测引擎会检测到返回的数据包属丁 web连接的那个会话,所以它会动态打开端口以允许返回包进入,传输完毕后又动态地关闭 这个端口,这样就避免了普通包过滤防火墙那种静态地开放所有高端端口的危险做法,同时由于 有会话超时的限制,它也能够有效地避免外部的dos攻击,并且外部伪造的ack数据包也不 会进入,因为它的数据包信息不会匹配状态表屮的会话条目。上而虽然是讲的针对tcp(web服务)连接的状态检测,但这同样对udp有效,虽然udp 不是像tcp那样有连接的协议,但状态检测防火墙会为它创建虚拟的连接。相对t tcp和ud

7、p來说,icmp的处理耍难一些,但它仍然冇一些信息來创建虚拟的连接, 关键是有些icmp数据包是单向的,也就是当tcp和udp传 输有错误时会有一个icmp数据 包返回。对于icmp的处理,不同的防火墙产品町能不同的方法,在isa server 2000 +, 不支持i cmp的状态检査,只能静态地允许或拒绝icmp包的进出。从上面可以看出,基于状态检测的防火墙较好的解决了第一类普通包过滤防火墙的问题,为 了更立观的理解状态检测防火墙,我们还來看看一些实际例子,这些例子都是在isa server 2000后的表现。(1) 感受会话超时的限制还是举一个能说明问题的例了,比如大家熟悉的qq(qq2

8、003ll),为什么你一直不聊天和 做其他动作仍然能够收到从腾讯服务器上发来的广告信息呢?肯定不是这个连接到腾讯服务器 的qq会话永不超时,其实你用sniffer软件一看就知道了,这是因为qq每到一分钟时(但还 没到一分钟)就会主动与腾讯服务器联系一次,这种联系对防火墙后的qq是非常帝耍的,通常 来说,对于udp协议,会话超时都是一分钟或小于一分钟,另外windows 2000中udp端口 的nat映射期也只有一分钟,它在一分钟z内联系,这样就会在防火墙状态表中保持它的会话, 不至于会话被删除,想像一下,如果它不这样联系的话,一分钟后这条会话被删除,而刚好此 时腾讯有个广告要传给你,那么你是不

9、能收到的,当然其他从腾讯服务器上來的消息也不能收到, 这是因为会话中已没有了匹配的条h,而规则中又没有静态打开的入站端口。当然上面的分析 是从用户的角度來说的,从腾讯的角度來说,它也需要获知用户的连接状态,所以也需要定时 通信,这已不在我们的讨论范围z内了。除了 qq, msn messenger也是这样的。(2) 动态地打开入站端口首先我已在isaserver2000中的protocol rules下定义了一条允许所有客户端访问外 部web网站的规则,如图3,动作源地址腿口目标地址目标端口方向协议allow*80outboundtcp注意上面只明确定义了出站的规则,没有明确定义入站的规则,这

10、是因为育状态检测技术起 作川,我们川不着为上而的规则配套一条明确的入站规则。图4是我在客户端打开网页时在isa 服务器上进行sniffer的结果,第一行是一个带有syn标志的初始化连接的数据包,本地端口 是22870,第二行是对方回应的数据包,由于与笫一行属于同一个会话,防火墙己经为它动态 地打开端口 22870以便进入。p冏晦q 帥慣 addrs 切l lpaddgetpppo£/tcp 00:s0:ba;0c:b8:90 -> 00:如:1a;40:os:1084 -> 2113 pppc£/tcp 00:50

11、;8a;0c:88:9000:90:】ayq;o5:1021&70.207.184 < 2o2kpppo/tcp15woe/tcp16pppoehcp17pppo£/tcp18pppoe/tcp00:50!batocib8:90->00:»!a!40:06:l0d4 ->21 00:so:8a)c:m!90*>(b:90:1a:40:05!10218,70,207484 >207.46 249.221 00:50:ba:0c:b8:90-> 00:90:1a:40

12、:05:!0 21&70.207.184 -> 21 00:50lba;0c:b8:90 -> 00:w: 1 a;40:o5:10 84 > 207.46249-221 00:s0:ba;0c;b8:90 <- 00:90:1a:40;05:10 218,70.207.184 <-21 00:50:ba:oc:b8:90 <- 00:90:!a:40:05:10 216.70-207.184 < 207.46.24922122970-> 800.01022870 :

13、>600,00022870 -> 800.00022870->000.00022870 <»0.28122870 <«800-020i po»d22970 -> 800.00022870 <- 800.250(3) 对初始包含有ack标志的非法数据包的反应 <=> 55137 <=> 1370.741192.168.h5 <=> 192.168.h255137 <=> 13707511 => 202.43.2

14、16.553377 => 805.2581 <= 5 1 =>5 1 <= 5 型|既创 f 5叢备凰运20乙43.216.55 1 =>5 1 <= 5 1 =>53377 <= 800.0103377 =>800.0703377 <= 800.0003377

15、=>800.1003377 <= 800.0003377 =>800.1003377 <= 800.0003377 =>800.100曰.tcpb source port: 3377 k destination port: 80sequence: 0x7e210ff8 (21j b- acknowledgement: 0x3d20?i05 (5) 20 田 flags: ackwindow: oxfafo (64240) checksum: 0x1168 (4456) urgent pointer: 0x0000 (0)tcp options: nonedata length: 0x0 (0)我在内网1客户端上发送了一个带ack的初使包给5,但被防 火墙识别并复位(rst) 了此连接,如图5、6。基于状态检测技(stateful-inspection)的防火墙有强大功能,但由于状态检测防火墙毕 竟是工作在网络层和传输层的,所以它仍然冇一些 不能解决的问题需要在应用层来进行解决, 比如对于动态分配端口的rpc就必须作特殊处理;另外它也不能过滤掉应用层中特定的内容, 比如对于http内容,它要么允许进,要么允许出,而不能对http内容进行过滤,这样我们就 不能控制用户访问的

温馨提示

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

评论

0/150

提交评论