[这个贴子最后由冷清在 2003/09/10 12:38pm 第 1 次编辑]
【摘要】随着Internet/Intranet的迅速发展,网络安全已经成为人们日益关心的问题.在共享强大的网络资源的同时,网络上的许多敏感信息和保密数据难免受到各种主动的或被动的人为攻击。配备一个防火墙就成为了一个最基本的措施,防火墙从本质上来说是一种保护装置,用来保护网络数据,资源和用户的声誉。包过滤技术又是防火墙繁多品种中最基本也是最易实种。
一.引言
Internet的迅速发展为人们发布和检索信息提供了方便,但它也使污染和破坏信息变得更容易。人们为了保护数据和资源的安全,创建了防火墙。防火墙是一个或一组在两个网络之间执行访问控制策略的系统,包括硬件和软件,目的是保护网络不被可疑人侵扰。实际上,防火墙就是用来在一个可信网络(如内部网)与一个不可信网络(外部网)间起保护作用的一整套装置,在可信网络和不可信网络之间的界面上构造一个保护层,并强制所有的访问或连接都必须经过这一保护层,在此进行检查和连接。只有被授权的通信才能通过此保护层,从而保护内部网资源免遭非法入侵。由软件和硬件组成的防火墙应该具有以下功能:
·所有进出网络的通信流都应该通过防火墙
·所有穿过防火墙的通信流都必须有安全策略和计划的确认和授权
·理论上说,防火墙是穿不透的
利用防火墙能保护站点不被任意联接,甚至能建立跟踪工具,帮助总结并记录有关正在进行的联接。总之,防火墙是用来防止外面的各类危险传播到你的网络的,从逻辑上讲,防火墙是分离器、限制器和分析器;从物理角度看,各个防火墙的物理实现方式可以有所不同,它通常是软件和硬件的组合体,根据一些规则来挑选想要或不想要的地址。防火墙能强化安全策略;能有效的记录因特网上的活动;可以实现网段控制;是一个安全策略的检查站。但是防火墙也存在着不足之处,如不能防范恶意的知情者;不能防范不通过它的连接;不能防备全部的威胁;不能防范病毒。大多数防火墙采用不同的方式来保护不同类型的机器,当数据在网络上进行传输时,要被打包并经常被压缩,这样便给病毒带来了可乘之机。无论防火墙是多么安全,用户只能在防火墙后面清除病毒。
二.防火墙的几种形式
防火墙有许许多多种形式,有以软件形式运行在普通计算机之上的,也有以固件形式设计在路由器之中的。总的来说分类有三种:包过滤防火墙;应用网关,也称为屏蔽主机防火墙;和应用层电路网关,也称为代理防火墙。
1.包过滤防火墙
包过滤防火墙通常在操作系统内部实现,并且操作在IP网络和传输协议层。它在对基于IP包头中信?⑹.屏蔽主机防火墙屏蔽主机防火墙实现于网络体系结构和系统配置层。网络业务流从不通过应用网关机传递。外部的访问仅允许到网关机,内部的访问也仅允许到网关机。本地用户必须注册到网关机上,然后再从网关机访问Internet。此外,位于网关机内、外接口处的包过滤防火墙对它进行保护。
3.代理防火墙
代理防火墙通常是为每个受其代理服务的应用程序而分别实现的。每个代理应用对于客户程序而言就好似服务器,而对于真正的服务器而言就似客户机。特别的客户机程序或特别配置的客户机程序只连接到此代理服务器,0而非连接到远程服务器。代理在以自己的地址替换掉客户的源地址后,以应用客户的名义创建到远程服务器的连接。代理应用能确保数据完整性——即数据适合于正在交换的服务,对病毒进行过滤,并且能增强高级、细致的访问控制策略。
三.包过滤技术的相关知识
1. 概述
包过滤,就是在网络中的适当位置对数据包实施有选择的通过。防火墙经常利用包过滤路由器进行对IP包过滤的工作,称包过滤路由器,它是一种基于过滤规则的数据包过滤设备,检查、限定外部网络流入内部网络的数据包。由?贗P不具备验证发送者是谁或确定数据包中包含什么内容的能力,且所能获得的唯一标识信息是IP包头中的源地址,源地址是很容易被更改的,然而在数据包这一层可以更好,更简单的直接对端口、包内容和正确通信协议进行控制,而且比高层实现更容易方便。没有包过滤,高级过滤和代理安全的方法就是残缺的或潜在的无效的。且家庭和小型系统有大企业站点所面临的所有安全问题,基本想法和步骤是一样的,只是不需要考虑另外太多的因素,包过滤防火墙是常见的一种方法,容易实现、方式简洁、价格便宜。
2. 包过滤的原理
包过滤的原理是按照单位或部门建立的安全模式、安全规则,过滤掉从路由器经过的被认为是不安全的信息包。对数据包的安全选择的依据是系统内部事先设置的过滤规则,又称安全规则库。一个包过滤路由器通常根据信息包中的如下信息进行过滤:
(1) 源IP地址和目的IP地址
通过对IP地址的过滤,可以阻止到特定网络或主机的不安全连接。
在互联网络的TCP/IP网络上,所有往来的信息都被分割成许许多多一定长度的信息包,包中包含发送者的IP地址和接收者的IP地址信息。当这些信息包被送上互联网时,路由器会读取接收者的IP并选择一条合适的物理线路发送出去,信息包可能经由不同的路线抵达目的地,当所有的包抵达目的地后会重新组装还原。包过滤防火墙会检查所有通过的信息包中的IP地址,并按照系统管理员所给定的过滤规则进行过滤。如果对防火墙设定某一IP地址的站点为不适宜访问的话,从这个地址来的所有信息都会被防火墙屏蔽掉。由于黑客们可以采用IP地址欺骗技术,伪装成合法地址的计算机就可以穿越信任这个地址的防火墙了。不过根据地址的转发决策机制还是最基本和必需的。另外要注意的一点是,不要用DNS主机名建立过滤表,对DNS的伪造比IP地址欺骗要容易多了。
(2)源TCP/UDP端口和目的TCP/UDP端口
源TCP/UDP端口(UDP指一种非链接的服务)和目的TCP/UDP端口。通过对端口的过滤,可以阻止到特定应用程序的连接。仅仅依靠地址进行数据过滤在实际运用中是不可行的,还有个原因就是目标主机上往往运行着多种通信服务,比方说,不想让用户采用 telnet的方式连到系统,但这不等于非得同时禁止他们使用SMTP/POP邮件服务器,所以说,在地址之外还要对服务器的TCP/ UDP端口进行过滤。比如,默认的telnet服务连接端口号是23。假如不许PC客户机建立对UNIX计算机(在这时我们当它是服务器)的telnet连接,那么只需命令防火墙检查发送目标是UNIX服务器的数据包,把其中具有23目标端口号的包过滤就行了。这样,把IP地址和目标服务器TCP/UDP端口结合起来是不是就可以作为过滤标准来实现相当可靠的防火墙了呢?不,没这么简单。 客户机也有TCP/UDP端口 ,TCP/IP是一种端对端协议,每个网络节点都具有唯一的地址。网络节点的应用层也是这样,处于应用层的每个应用程序和服务都具有自己的对应“地址”,也就是端口号。地址和端口都具备了才能建立客户机和服务器的各种应用之间的有效通信联系。比如,telnet服务器在端口23侦听入站连接。同时telnet客户机也有一个端口号,否则客户机的IP栈怎么知道某个数据包是属于哪个应用程序的呢? 由于历史的原因,几乎所有的TCP/IP客户程序都使用大于1023的随机分配端口号。只有UNIX计算机上的root用户才可以访问1024以下的端口,而这些端口还保留为服务器上的服务所用。所以,除非让所有具有大于1023端口号的数据包进入网络,否则各种网络连接都没法正常工作。 这对防火墙而言可就麻烦了,如果阻塞服务器发出响应外部连接请求的入站(就是进入防火墙的意思)数据包都没法经过防火墙的入站过滤。反过来,打开所有高于1023的端口就可行了吗?也不尽然。由于很多服务使用的端口都大于1023,比如X client、基于RPC的NFS服务以及为数众多的非UNIX IP产品等(NetWare/IP)就是这样的。那么让达到1023端口标准的数据包都进入网络的话,网络就不能说是安全的了,连这些客户程序都不敢说自己是足够安全的。 不如换个思路,给防火墙这样下命令:已知服务的数据包可以进来,其他的全部挡在防火墙之外。比如,如果你知道用户要访问Web服务器,那就只让具有源端口号80的数据包进入网络,不过新问题又出现了。首先,你怎么知道你要访问的服务器具有哪些正在运行的端口号呢? 像HTTP这样的服务器本来就是可以任意配置的,所采用的端口也可以随意配置。如果这样设置防火墙,就没法访问哪些没采用标准端口号的的网络站点了。反过来,也没法保证进入网络的数据包中具有端口号80的就一定来自Web服务器。有些黑客就是利用这一点制作自己的入侵工具,并让其运行在本机的80端口。
(3)TCP链路状态
TCP链路(TCP是TCP/IP协议的一部分,是在传输层提供面对链接的端对端的协议)状态以及上面两点所述的地址、端口等因素的组合。源地址不相信,源端口也不可靠,还有什么方法值得信任的呢?也不是完全没办法了,对策还是有的,不过这个办法只能用于TCP协议。
TCP是一种可靠的通信协议,"可靠"这个词意味着协议具有包括纠错机制在内的一些特殊性
质。为了实现其可靠性,每个TCP连接都要先经过一个"握手"过程来交换连接参数。还有,
每个发送出去的包在后续的其他包被发送出去之前必须获得一个确认响应。但并不是对每个TCP包都非要采用专门的ACK包来响应,实际上仅仅在TCP包头上设置一个专门的位就可以完成这个功能了。所以,只要产生了响应包就要设置ACK位。连接会话的第一个包不用于确认,所以它就没有设置ACK位,后续会话交换的TCP包就要设置ACK位了。
举个例子,PC向远端的Web服务器发起一个连接,它生成一个没有设置ACK位的连接请求包。当服务器响应该请求时,服务器就发回一个设置了ACK位的数据包,同时在包里标记从客户机所收到的字节数。然后客户机就用自己的响应包再响应该数据包ACK位并标记了从服务器收到的字节数。通过监视ACK位,就可以将进入网络的数据限制在响应包的范围之内。于是,远程系统根本无法发起TCP连接但却能响应收到的数据包了。 但是,这套机制也不能算是无懈可击,简单地举个例子,假设有台内部Web服务器,那么端口80就不得不被打开以便外部请求可以进入网络。还有,对UDP包而言就没法监视ACK位了,因为UDP包根本就没有ACK位。还有一些TCP应用程序,比如FTP,连接就必须由这些服务器程序自己发起。 一般的Internet服务对所有的通信都只使用一对端口号,FTP程序在连接期间则使用两对端口号。第一对端口号用于FTP的"命令通道"提供登录和执行命令的通信链路,而另一对端口号则用于FTP的"数据通道"提供客户机和服务器之间的文件传送。 在通常的FTP会话过程中,客户机首先向服务器的端口21(命令通道)发送一个TCP连接请求,然后执行LOGIN、DIR等各种命令。一旦用户请求服务器发送数据,FTP服务器就用其20端口 (数据通道)向客户的数据端口发起连接。问题来了,如果服务器向客户机发起传送数据的连接,那么它就会发送没有设置ACK位的数据包,只有高级的防火墙才能看出客户机刚才告诉服务器的端口,然后才许可对该端口的入站连接。
现在回头来看看怎么解决UDP问题。前面讲到,UDP包没有ACK位,所以不能进行ACK位过滤。UDP 是"不可靠"通信,这种类型的服务通常用于广播、路由、多媒体等广播形式的通信任务。NFS、DNS、WINS、NetBIOS-over-TCP/IP和NetWare/IP都使用UDP。 看来最简单的可行办法就是不允许建立入站UDP连接。防火墙设置为只许转发来自内部接口的UDP包,来自外部接口的UDP包则不转发。现在的问题是,比方说,DNS名称解析请求就使用UDP,如果你提供DNS服务,至少得允许一些内部请求穿越防火墙。还有IRC这样的客户程序也使用UDP,如果要让你的用户使用它,就同样要让他们的UDP包进入网络。我们能做的就是对那些从本地到可信任站点之间的连接进行限制。但是如果黑客采取地址欺骗的方法就又回到前面的老地方了。有些新型路由器可以通过“记忆”出站UDP包来解决这个问题:如果入站UDP包匹配最近出站UDP包的目标地址和端口号就让它进来。如果在内存中找不到匹配的UDP包就只好拒绝它。但是,如何确信产生数据包的外部主机就是内部客户机希望通信的服务器呢?如果黑客诈称DNS服务器的地址,那么他在理论上当然可以从附着DNS的UDP端口发起攻击。只要你允许DNS查询和反馈包进入网络,这个问题就必然存在。现在已有解决的办法了,那就是采用代理服务器,代理服务器不允许存在任何网络内外的直接连接,它本身就提供公共和专用的DNS、邮件服务器等多种功能。代理服务器重写数据包而不是简单的将其转发了事,让人感觉网络内部的主机都站在了网络的边缘,但实际上它们都在代理的后面。
3. 包过滤的规则
防火墙实际上是一种隔离内外网的工具。在如今Internet访问的动态世界里,在实现过程中很容易犯错误。通过建立一个可靠的、简单的规则集,可以创建一个更安全的被防火墙所隔离的网络环境。规则越简单越好,尽量保持规则集简洁和简短,因为规则越多,就越可能犯错误;规则越少,理解和维护就越容易。规则少意味着只分析少数的规则,防火墙的CPU周期就短,防火墙效率就可以提高。当要从很多规则入手时,就要认真检查一下整个安全体系结构,而不仅仅是防火墙。每个防火墙规则都有一个默认的策略和一组对特定消息类型响应的动作集,每个包依次在表中对每条规则进行检查,直到找到?这个包上,对于一个防火墙有两种基本的策略方法:
a. 没有被列为允许访问的服务都是被禁止的。
b. 没有被列为禁止访问的服务都是被允许的。
4.黑客攻击包过滤防火墙的常用手段
"IP地址欺骗"是黑客比较常用的一种攻击手段。黑客们向包过滤防火墙发出一系列信息包
,这些包中的IP地址已经被替换为一串顺序的IP地址,一旦有一个包通过了防火墙,黑客便可以用这个IP地址来伪装他们发出的信息;在另一种情况下黑客们使用一种他们自己编制的路由攻击程序,这种程序使用动态路由协议来发送伪造的路由信息,这样所有的信息包都会被重新路由到一个入侵者所指定的特别地址;破坏这种防火墙的另一种方法被称之为"同步风暴",这实际上是一种网络炸弹。攻击者向被攻击的计算机发出许许多多个虚假的"同步请求"信息包,目标计算机响应了这种信息包后会等待请求发出者的应答,而攻击者却不做任何的?服务器在一定时间里没有收到响应信号的话就会结束这次请求连接,但是当服务器在遇到成千上万个虚假请求时,它便没有能力来处理正常的用户服务请求,处于这种攻下的服务器表现为性能下降,服务响应时间变长,严重时服务完全停止甚至死机。
5. 几种常用的源地址欺骗
根据一段时间的学习研究,我总结出在包过滤防火墙中,有几种IP地址应该是无条件的被禁止的。
a. 你自己的IP地址,由于源地址是唯一可获得的信息,但是它能被轻易的修改,因此这就是在包过滤级唯一检测到的欺骗形式。称来自于你自己机器的输入包,肯定是欺骗的。
b. A、B、C类内部专用地址,因为A、B、C类范围内的地址集是为在专用LAN内使用而保留的。他们并未被打算在Internet上使用。所以你的机器决不可能看到来自这些源地址的输入包。
c. D类地址是多播地址,主要是留给Internet体系结构委员会IAB(Internet ArchitectureBoard)使用,他们的范围为224.0.0.0到239.255.255.255,所以这类地址是不会出现在你机子上的。
d. E类保留IP地址,E类范围内的IP地址是为未来和实验用途预留的,没有公开分配。它们的范喂是40.0.0.0到247.255.255.255。所以你的机器应该永远不会看到这些源地址。
e. 畸形广播地址,如广播地址0.0.0.0不是一个合法的点对点源地址,所以如果它作为一个源地址出现在一常规的、点对点的、非广播包中时,该地址就是伪造的。
四.防火墙的历史与发展趋势
1. 防火墙的历史
防火墙技术是建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,越来越多地应用于专用网络与公用网络的互联环境之中,尤以Internet网络为最甚。Internet的迅猛发展,使得防火墙产品在短矩的几年内异军突起 很快形成了一个产业:1995年,刚刚面市的防火墙产品市场量还不到1万套,到l996年底,就猛增到10万套,据国际权威商业调查机构的预测,防火墙市场将以173%的复合增长率增长,到2000年将达150万套。
纵观近年来Internet 防火墙市场的发展,可以看到安全需求、安全产品和安全技术正以相辅相成的趋势迅猛发展。
防火墙是网络安全政策的有机组成部分,它通过控制和监测网络之间的信息交换和访问行为来实现对网络安全的有效管理, 在防火墙产品的开发中,人们广泛应用网络拓扑技术、计算机操作系统技术、路由技术、加密技术、访问控制技术、安全审计技术等成熟或先进的手段,纵观防火墙产品近年内的发展,可将其分为四个阶段:
(1)基于路由器的防火墙
第一代防火墙产品的特点是:
·利用路由器本身对分组的解析,以访问控制表(access list)方式实现对分组的过
滤。
·过滤判决的依据可以是:地址、端口号、IP旗标及其他网络特征。
·只有分组过滤的功能,且防火墙与路由器是一体的,对安全要求低的网络采用路由器附带防火墙功能的方法,对安全性要求高的网络则可单独利用一台路由器作防火墙。
第一代防火墙产品的不足之处十分明显:
·路由协议十分灵活,本身具有安全漏洞,外部网络要探寻内部网络十分容易。
·路由器上的分组过滤规则的设置和配置存在安全隐患。最大隐患是:攻击者可以"假冒”地址。
·本质性缺陷是:由于路由器的主要功能是为网络访问提供动态的、灵活的路由,而防火墙则要对访问行为实施静态的,固定的控制,这是一对难以调和的矛盾,防火墙的规则设置会大大降低路由器的性能。
(2)用户化的防火墙工具套
作为第二代防火墙产品,用户化的防火墙工具套具有以下特征:
·将过滤功能从路由器中独立出来,并加上审计和告警功能。
·针对用户需求,提供模块化的软件包。
·软件可通过网络发送,用户可自己动手构造防火墙。
·与第一代防火墙相比,安全性提高了,价格降低了。
由于是纯软件产品,第二代防火墙产品无论在实现还是在维护上都对系统管理员提出了相当复杂的要求,并带来以下问题:
·配置和维护过程复杂、费时;
·对用户的技术要求高;
·全软件实现,安全性和处理速度均有局限;
·实践表明,使用中出现差错的情况很多。
(3)建立在通用操作系统上的防火墙
近年来今市场上广泛可用的就是这一代产品,它具有以下特点:
·包括分组过滤或者借用路由器的分组过滤功能。
·装有专用的代理系统,监控所有协议的数据和指令。
·保护用户编程空间和用户可配置内核参数的设置。
·安全性和速度大为提高。
第三代防火墙是以纯软件实现的,也有以硬件方式实现的,已得到广大用户的认同。随着安全需求的变化和使用时间的推延,仍表现出个别问题,比如:
·作为基础的操作系统及其内核往往不为防火墙管理者所知,由于源码的保密,其安全性无从保证;
·由于大多数防火墙厂商并非通用操作系统的厂商,通用操作系统厂商不会对操作系统的安全性负责。
·从本质上看,第三代防火墙既要防止来自外部网络的攻击,还要防止来自操作系统厂商的攻击;
·用户必须依赖两方面的安全支持:一是防火墙厂商、一是操作系统厂商;
·上述问题在基于Windows NT开发的防火墙产品中表现得十分明显。
(4)具有安全操作系统的防火墙
防火墙技术和产品随着网络攻击和安全防护手段的发展而演进,到1997年切,具有安全操作系统的防火墙产品面市,使防火墙产品步入了第四个发展阶段。
具有安全操作系统的防火墙本身就是一个操作系统,因而在安全性上较之第三代防火墙有质的提高。获得安全操作系统的办法有两种:一种是通过许可证方式获得操作系统的源码,另一种通过固化操作系统内核来提高可靠性,由此建立的防火墙系统具有以下特点:
·防火墙厂商只有操作系统的源代码,并可实现安全内核;
·对安全内核实现加固处理,即去掉不必要的系统特性,加上内核特性,强化安全保护。
·对每个服务器、子系统都作了安全处理,一旦黑客攻破了一个服务?只能限制在此服务器内,不会对网络的其他部分构成威胁;
·在功能上包括了分组过滤、应用网关、电路级网夫,且具有加密鉴别功能;
·透明性好,易于使用。
2. 防火墙的发展趋势
考虑到Internet发展的凶猛势头和防火墙产品和更新步伐,要全面展望防火墙技术的发展几乎
是不可能的,但是,从产品及功能上,却又可以看出一些动向和趋势,下面几点可能是下一步的走向和选择:
·防火墙将从目前对子网或内部网管理的方式向远程上网集中管理的方式发展。
·过滤深度不断加强,从目前的地址、服务过滤,发展到URL(页面)过滤,关键字过滤和对Active X、 *** 等的过滤,并逐渐有病毒扫除功能。
·利用防火墙建立专用网(VPN是较长一段时间的用户使用的主流,IP加密需求越来越强,安全协议的开发是一大热点。
·单向防火墙(又叫网络二极管)将作为一种产品门类而出现。
·对网络攻击的检测和各地告警将成为防火墙的重要功能。
·安全管理工具不断完善,特别是可疑活动的日志分析工具。
五.结束语
通过这段时间的学习,使我对网络防火墙方面有了更深层次的了解,尤其是包过滤技术,从以前只是初步的了解到现在的深入学习,使我掌握了这一技术。但是,由于时间仓促,精力有限,本文还有很多不够完善的地方,还请大家批评指正,在今后的学习中还有待进一步的研究。
http://www.lengqing.org
E-mail:webmaster@lengqing.org
参 考 文 献
1.《网络组建、管理与安全》 张琳、李璇华、任晓娟编
人民邮电出版社出版
2.《计算机网络安全教程》 潭伟贤、杨力平等编
国防工业出版社
2001年1月出版
3.《网络安全与防火墙技术》 王睿、林海波等编
清华大学出版社
2000年10月出版
4.《Linux 防火墙》 Robert L.Ziegler著
人民邮电出版社
2000年10月出版
5.《网络安全初阶――黑客技术揭秘与防范》 建新编
上海科学技术出版社
2000年7月出版
|