防火墙的类型及主要优缺点

上传人:平*** 文档编号:9667221 上传时间:2017-10-04 格式:DOCX 页数:7 大小:25.14KB
返回 下载 相关 举报
防火墙的类型及主要优缺点_第1页
第1页 / 共7页
防火墙的类型及主要优缺点_第2页
第2页 / 共7页
防火墙的类型及主要优缺点_第3页
第3页 / 共7页
防火墙的类型及主要优缺点_第4页
第4页 / 共7页
防火墙的类型及主要优缺点_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《防火墙的类型及主要优缺点》由会员分享,可在线阅读,更多相关《防火墙的类型及主要优缺点(7页珍藏版)》请在金锄头文库上搜索。

1、防火墙的类型 概念以及主要优缺点2008 年 10 月 27 日 星期一 下午 03:22什么是防火墙对于企业的网络而言,未加特别安全保护而放置在 internet 上,危险性是显而易见的。随着决策层对安全认识的逐步加强,防火墙,作为一种应用非常广泛,技术相对比较成熟的网络安全产品也在不同的企业愈来愈多的得到了重视。然而一个现实的问题是目前关于防火墙的名词以及厂家基于商业目的宣称花样为数众多,这就给使用者选择和应用防火墙带来了一定的误解和困难。那么什么是防火墙,主要的防火墙之间如何区别呢?对于防火墙的概念,我们可以这样理解:防火墙是在两个网络间实现访问控制的一个或一组软件或硬件系统。防火墙的最

2、主要功能就是屏蔽和允许指定的数据通讯,而该功能的实现又主要是依靠一套访问控制策略,由访问控制策略来决定通讯的合法性。那么如何理解种类众多的防火墙呢,下面来做个介绍。防火墙的类型如果我们从 OSI 分层模式来考察及分类防火墙,会比较容易的把握住防火墙的脉络,个人认为,目前主要的防火墙可以分为三类,它们分别是: 包过滤防火墙、基于状态的包过滤防火墙、应用代理(网关)防火墙,而由这三类防火墙可以推导和演绎出其它可能的变化。 下面我们来逐一说明。包过滤防火墙首先,我们要提到的是最基本的报文过滤的防火墙,这个层次的防火墙通常工作在 OSI 的三层及三层以下,由此我们可以看出,可控的内容主要包括报文的源地

3、址、报文的目标地址、服务类型,以及第二层数据链路层可控的 MAC 地址等。除此以外,随着包过滤防火墙的发展,部分 OSI 四层的内容也被包括进来,如报文的源端口和目的端口。本层次最常见的实际应用的例子就是互联网上的路由设备,比如常见的 cisco 路由器,使用者可以通过定制访问控制列(ACL)来对路由器进出端口的数据包进行控制,如针对 rfc1918 的保留地址进屏蔽,在路由器上可以进行如下配置:interface xip access-group 101 inaccess-list 101 deny ip 10.0.0.0 0.255.255.255 anyaccess-list 101 d

4、eny ip 192.168.0.0 0.0.255.255 anyaccess-list 101 deny ip 172.16.0.0 0.15.255.255 anyaccess-list 101 permit ip any any从上面这个例子可以很明显的看出,路由器这里的配置完全是针对 OSI 的三层 ip 地址,也就是 ip 的包头进行过滤,至于这些 IP 数据包里携带的具体有什么内容,路由器完全不会去关心。由此考虑一下,我们就不难看出这个层次的防火墙的优点和弱点:1. 基于报文过滤的防火墙一个非常明显的优势就是速度,这是因为防火墙只是去检察数据包的包头,而对数据包所携带的内容没有任

5、何形式的检查,因此速度非常快。 2. 还有一个比较明显的好处是,对用户而言,包过滤防火墙是透明的,无需用户端进行任何配置。 包过滤防火墙的特性决定了它很适合放在局域网的前端,由它来完成整个安全工作环节中的数据包前期处理工作,如:控制进入局域网的数据包的可信任 ip,对外界开放尽量少的端口等。与此同时,这种防火墙的弊端也是显而易见的,比较关键的几点包括:1. 由于无法对数据包及上层的内容进行核查,因此无法过滤审核数据包的内容。体现这一问题的一个很简单的例子就是:对某个端口的开放意味着相应端口对应的服务所能够提供的全部功能都被放开,即使通过防火墙的数据包有攻击性,也无法进行控制和阻断。比如针对微软

6、 IIS 漏洞的 Unicode 攻击,因为这种攻击是走的防火墙所允许的 80 端口,而包过滤的防火墙无法对数据包内容进行核查,因此此时防火墙等同于虚设,未打相应 patch 的提供 web 服务的系统,即使在防火墙的屏障之后,也会被攻击者轻松拿下超级用户的权限。 2. 由于此种类型的防火墙工作在较低层次,防火墙本身所能接触到的信息较少,所以它无法提供描述事件细致的日志系统,此类防火墙生成的日志常常只是包括数据包捕获时间,三层的 ip 地址,四层的端口等非常原始的信息。我们可以先把下面要讲的 ipmon 的软件的日志拿来看看 Nov 23 14:13:05 y.y.y.y ipmon10841

7、: 14:13:04.733237 hme0 0:13 b x.x.x.x,4131 -y.y.y.y,3389 PR tcp len 20 48 -S IN3. 我们可以从上面看个大概,这个防火墙于仅仅记录了 11 月 23 日 14 点 13 分防火墙 block 了从 ip 地址x.x.x.x,端口 4131 来的,目的端口是 3389,目的 ip 是 y.y.y.y 的包头为 20 字节,净荷长度为 28 的数据包。至于这个数据包内容是什么,防火墙不会理会,这恰恰对安全管理员而言是至为关键的。因为即使一个非常优秀的系统管理员一旦陷入大量的通过/屏蔽的原始数据包信息中,往往也是难以理清头

8、绪的,当发生安全事件时会给管理员的安全审计带来了很大的困难。4. 所有有可能用到的端口都必须静态放开,对外界暴露,从而极大的增加了被攻击的可能性,这个问题一个很好的例子就是 unix 下的危险的 rpc 服务,它们也工作在高端口,而针对这些服务的攻击程序在互联网上异常流行。 5. 如果网络结构比较复杂,那么对管理员而言配置 ACL 将是非常恐怖的事情。当网络发展到一定规模时,ACL 出错几乎是必然的,这一点相信许多大型站点的系统管理员印象深刻。基于状态的包过滤防火墙上面我们讲到的包过滤防火墙在具体实施的时候,管理员会遇到一些非常棘手的问题:网络上数据的传输是双向的,因此所有服务所需要的数据包进

9、出防火墙的端口都要仔细的被考虑到,否则,会产生意想不到的情况。然而我们知道,当被防火墙保护的设备与外界通讯时,绝大多数应用要求发出请求的系统本身提供一个端口,用来接收到外界返回的数据包,而且这个端口一般是在 1023 到 16384 之间不定的,这就增加了设计控制访问规则的难度。这里我们可以捕获一次由 client 到 server 的 80 端口访问的一些纪录来形象说明这个问题(截取的内容略有删节):17:48:52.513355 IP penetrat.1134 server.80: S 1253142352:125314235217:48:52.515991 IP server.80 p

10、enetrat.1134: S 1867056172:1867056172 ack 125314235317:48:52.516126 IP penetrat.1134 server.80: . ack 1我们可以从上述内容中看到,client 为了完成对 server 的 www 网络访问,需要打开一个本机端口用来接收回来的数据包,此处是 1134。如果防火墙没有开放 1134 这个端口的话,client 将无法收到回应的数据包。但是问题是由于系统和外界通讯的时候,本机的端口不是一定的,我们已经知道如果不放开这些端口,通讯将无法完成,那么只有一个方法,开放 1023 以上的全部端口,允许这些

11、端口的数据包进出。这正是传统的包过滤型防火墙的做法。这样做的危害是明显的,为了通讯,把所有的高端端口开放,危害了配置防火墙的最小开放性原则。上面我们提到过攻击者很容易利用这些漏洞比如 rpc 等服务攻击防火墙后的系统。另一方面,由于普通的包过滤防火墙不能对数据传输状态进行判断,如收到 ack 数据包就想当然的认为这是一个建立的连接,从而对数据包放行,会带来一定的安全隐患。尤其当防火墙与 IDS 系统进行联动(目前商业产品中非常流行的做法)时,这会导致非常糟糕的状况,攻击者可能可以利用防火墙的这个弱点轻松的对目标系统进行拒绝服务攻击。此时,也许我们可以借助于基于状态的包过滤防火墙,这种防火墙在传

12、统的包过滤防火墙的基础上增加了对OSI 第四层的支持,同时,防火墙会在自身 cache 或内存中维护着一个动态的状态表,数据包到达时,对该数据包的处理方式将综合访问规则和数据包所处的状态进行。那么这个动态的状态表包括什么内容,又是如何产生的呢?这一点各个厂家实现的方式各有不同,但是一般而言,状态表的内容一般主要包括数据包的来源/目的 ip 地址、 来源/目的端口、时间、以及数据包的 sequence number(对于 tcp 连结)、数据包的标志符等(对于 tcp 连结)。当有数据包到达防火墙时,这些参数将决定数据包是否在属于一个已经合法的 sessioin。如果防火墙接收到一个初始化 tc

13、p 连接的带 syn 标志包,这个包会首先被防火墙的访问控制列检查,如果在检查了所有的控制规则后,该包都没有被接受,那么该次连接被拒绝;如果数据包符合某条访问控制规则,那么在状态表中一个新的 session就被建立,后续的数据包状态如果与状态表内的 session 内容不一致(如虽然目的端口一致,但源端口不一致),那么数据包将被直接丢弃;如果判断数据包属于状态表中已经联接的 session,那么数据包往往就直接允许通过,不再和访问控制列内容进行比较;同时,在状态表中一个 session 建立后,内存中会维护对这个 session 的动态超时值,比如,当防火墙两端的系统建立了连结,在状态表中生成

14、了一个 session,如果后续的数据包在某个设定的超时后依然没有到达,则此次 session 被丢弃,这样就一方面提升了防火墙效率,另外一方面可以在一定程度上防止拒绝服务攻击。用上面的 client 访问 server 的 web 例子来看的话:此时防火墙不需要在规则中打开 1023 以上的端口,只需要放开 80 端口就可以了,因为防火墙信任的 client 端带 syn 标志的数据包经由防火墙访问控制规则允许的 80 端口出去,防火墙会登记源端口 1134,目的端口 80,两端 ip 地址,在状态表中增加一个 session。这样当 server端的 80 端口返回 client 数据包的

15、时候,防火墙检查状态表,察觉到是由 client 端发起的合法连接,会自动打开1134 端口,使数据包返回。这里,我们可以拿 cisco 公司的主流防火墙易尚 535 来看看上面讲到的几个内容,在网新易尚产品中,基于状态的实现采用了适应性安全算法(Adaptive Security Algorithm),能够简单有效的对数据包进行过滤。我们可以首先看看易尚产品中已经建立的连接,我们利用 ssh 从内网 10.255.0.1 连结外网的202.102.224.136,连结成功后,在 ES 上使用 sh conn 来看看:YISHANG# sh conn for 202.102.224.136TC

16、P out 202.102.224.136:22 in 10.255.0.1:52805 idle 0:00:02 Bytes 4317 flags UIO我们可以看到此时有从内网到外网的已经成功的连接(flags UIO-连结已经 up,同时有双向的网络连接),请注意输出中的 idle 时间 0:00:02,如果没有数据包传送,这个值一直是增长的,到达易尚设定的超时值后,这个session 会从内存中丢弃。本例中易尚对 tcp 的超时值为 10 分钟(这些值时可以改的),如果客户端从内网10.255.0.1 连结外网的 202.102.224.136 连结成功后,不做任何操作,等待 10 分钟后,在 202.102.224.136的连接会断开,如下:#Read from remote host 202.102.224.136: Connection reset by peerConnection to 202.102.224.136 closed.再看一个例子,从内网 10.255.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号