防火墙
-
2023年4月12日发(作者:2345加速浏览器)防火墙
防火墙(英文:firewall)是一项协助确保信息安全的设备,会依照特定的规则,允
许或是限制传输的数据通过。防火墙可以是一台专属的硬件也可以是架设在一般
硬件上的一套软件。也有以防火墙为名的电影。
网络防火墙定义
所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部
网之间、专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性
方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet
之间建立起一个安全网关(SecurityGateway),从而保护内部网免受非法
用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4
个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或
硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分
开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的
一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你
“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网
络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,
Internet上的人也无法和公司内部的人进行通信。
编辑本段防火墙吞吐量
网络中的数据是由一个个数据包组成,防火墙对每个数据包的处理要
耗费资源。吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。
其测试方法是:在测试中以一定速率发送一定数量的帧,并计算待测设备
传输的帧,如果发送的帧与接收的帧数量相等,那么就将发送速率提高并
重新测试;如果接收帧少于发送帧则降低发送速率重新测试,直至得出最
终结果。吞吐量测试结果以比特/秒或字节/秒表示。吞吐量和报文转发
率是关系防火墙应用的主要指标,一般采用FDT(FullDuplexThroughput)
来衡量,指64字节数据包的全双工吞吐量,该指标既包括吞吐量指标也涵
盖了报文转发率指标。
作用
防火墙具有很好的保护作用。
[1]
入侵者必须首先穿越防火墙的安全防
线,才能接触目标计算机。你可以将防火墙配置成许多不同保护级别。高
级别的保护可能会禁止一些服务,如视频流等,但至少这是你自己的保护
选择。(可以参考,从而保证防火墙的安全)
类型
网络层防火墙网络层防火墙可视为一种IP封包过滤器,运作在
底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规
则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止
病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设
备可能只能套用内置的规则。我们也能以另一种较宽松的角度来制定
防火墙规则,只要封包不符合任何一项“否定规则”就予以放行。现在的操作
系统及网络设备大多已内置防火墙功能。较新的防火墙能利用封包的
多样属性来进行过滤,例如:来源IP地址、来源端口号、目的IP地址
或端口号、服务类型(如WWW或是FTP)。也能经由通信协议、TTL值、
来源的网域名称或网段...等属性来进行过滤。应用层防火墙应用层
防火墙是在TCP/IP堆栈的“应用层”上运作,您使用浏览器时所产生的数
据流或是使用FTP时的数据流都是属于这一层。应用层防火墙可以拦截进
出某应用程序的所有封包,并且封锁其他的封包(通常是直接将封包丢弃)。
理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或
是木马程序的快速蔓延。不过就实现而言,这个方法既烦且杂(软件有千千
百百种啊),所以大部分的防火墙都不会考虑以这种方法设计。XML防
火墙是一种新型态的应用层防火墙。
[2]
根据侧重不同,可分为:包过滤
型防火墙、应用层网关型防火墙、服务器型防火墙。
基本特性
(一)内部网络和外部网络之间的所有网络数据流都必须经过防火墙
防火墙布置图
[3]
这是防火墙所处网络位置特性,同时也是一个前提。因为只有当防火
墙是内、外部网络之间通信的唯一通道,才可以全面、有效地保护企业网
内部网络不受侵害。根据美国国家安全局制定的《信息保障技术框架》,
防火墙适用于用户网络系统的边界,属于用户网络边界的安全保护设备。
所谓网络边界即是采用不同安全策略的两个网络连接处,比如用户网络和
互联网之间连接、和其它业务往来单位的网络连接、用户内部网络不同部门之间的连接等。防火墙的目的就是在网络连接之间建立一个安全控制点,
通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络
的服务和访问的审计和控制。典型的防火墙体系网络结构如下图所示。
从图中可以看出,防火墙的一端连接企事业单位内部的局域网,而另一端
则连接着互联网。所有的内、外部网络之间的通信都要经过防火墙。
(二)只有符合安全策略的数据流才能通过防火墙防火墙最基本的功
能是确保网络流量的合法性,并在此前提下将网络的流量快速的从一条链
路转发到另外的链路上去。从最早的防火墙模型开始谈起,原始的防火墙
是一台“双穴主机”,即具备两个网络接口,同时拥有两个网络层地址。防火
墙将网络上的流量通过相应的网络接口接收上来,按照OSI协议栈的七层
结构顺序上传,在适当的协议层进行访问规则和安全审查,然后将符合通
过条件的报文从相应的网络接口送出,而对于那些不符合通过条件的报文
则予以阻断。因此,从这个角度上来说,防火墙是一个类似于桥接或路由
器的、多端口的(网络接口>=2)转发设备,它跨接于多个分离的物理网段
之间,并在报文转发过程之中完成对报文的审查工作。(三)防火墙
自身应具有非常强的抗攻击免疫力这是防火墙之所以能担当企业内部
网络安全防护重任的先决条件。防火墙处于网络边缘,它就像一个边界卫
士一样,每时每刻都要面对黑客的入侵,这样就要求防火墙自身要具有非
常强的抗击入侵本领。它之所以具有这么强的本领防火墙操作系统本身是
关键,只有自身具有完整信任关系的操作系统才可以谈论系统的安全性。
其次就是防火墙自身具有非常低的服务功能,除了专门的防火墙嵌入系统
外,再没有其它应用程序在防火墙上运行。当然这些安全性也只能说是相
对的。目前国内的防火墙几乎被国外的品牌占据了一半的市场,国外
品牌的优势主要是在技术和知名度上比国内产品高。而国内防火墙厂商对
国内用户了解更加透彻,价格上也更具有优势。防火墙产品中,国外主流
厂商为思科(Cisco)、CheckPoint、NetScreen等,国内主流厂商为东软、
天融信、山石网科、网御神州、联想、方正等,它们都提供不同级别的防
火墙产品。
编辑本段代理服务
代理服务设备(可能是一台专属的硬件,或只是普通机器上的一套软件)
也能像应用程序一样回应输入封包(例如连接要求),同时封锁其他的封包,
达到类似于防火墙的效果。代理使得由外在网络窜改一个内部系统更
加困难,并且一个内部系统误用不一定会导致一个安全漏洞可开采从防火
墙外面(只要应用代理剩下的原封和适当地被配置)。相反地,入侵者也许
劫持一个公开可及的系统和使用它作为代理人为他们自己的目的;代理人
然后伪装作为那个系统对其它内部机器。当对内部地址空间的用途加强安
全,破坏狂也许仍然使用方法譬如IP欺骗试图通过小包对目标网络。
防火墙经常有网络地址转换(NAT)的功能,并且主机被保护在防火墙之后
共同地使用所谓的“私人地址空间”,依照被定义在[RFC1918]。管理员经
常设置了这样情节在努力(无定论的有效率)假装内部地址或网络。防
火墙的适当的配置要求技巧和智能。它要求管理员对网络协议和电脑安全
有深入的了解。因小差错可使防火墙不能作为安全工具。
[4-6]
编辑本段优点
(1)防火墙能强化安全策略。(2)防火墙能有效地记录Internet
上的活动。(3)防火墙限制暴露用户点。防火墙能够用来隔开网络中
一个网段与另一个网段。这样,能够防止影响一个网段的问题通过整个网
络传播。(4)防火墙是一个安全策略的检查站。所有进出的信息都必
须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于
门外。
功能
防火墙最基本的功能就是控制在计算机网络中,不同信任程度区域间
传送的数据流。例如互联网是不可信任的区域,而内部网络是高度信任的
区域。以避免安全策略中禁止的一些通信,与建筑中的防火墙功能相似。
它有控制信息基本的任务在不同信任的区域。典型信任的区域包括互联网
(一个没有信任的区域)和一个内部网络(一个高信任的区域)。最终目标
是提供受控连通性在不同水平的信任区域通过安全政策的运行和连通性模
型之间根据最少特权原则。例如:TCP/IPPort135~139是Microsoft
Windows的【网上邻居】所使用的。如果计算机有使用【网上邻居】的【共
享文件夹】,又没使用任何防火墙相关的防护措施的话,就等于把自己的【共
享文件夹】公开到Internet,供不特定的任何人有机会浏览目录内的文件。
且早期版本的Windows有【网上邻居】系统溢出的无密码保护的漏洞(这
里是指【共享文件夹】有设密码,但可经由此系统漏洞,达到无须密码便
能浏览文件夹的需求)。防火墙对流经它的网络通信进行扫描,这样能
够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不
使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最
后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通
信。
网络安全的屏障
一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安
全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应
用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸
如众所周知的不安全的NFS协议进出受保护网络,这样外部的攻击者就不
可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受
基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路
径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。
强化网络安全策略
通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、
加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各
个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次
一密口令系统和其它的身份认证系统完可以不必分散在各个主机上,而集
中在防火墙一身上。
监控网络存取和访问
如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并
作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作
时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信
息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由
是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的
控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非
常重要的。
防止内部信息的外泄
通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,
从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,
隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能
包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部
网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,
DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时
间和使用shell类型等。但是Finger显示的信息非常容易被攻击者所获悉。
攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线
上网,这个系统是否在被攻击时引起注意等等。防火墙可以同样阻塞有关
内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所
了解。
编辑本段其他功能
除了安全作用,防火墙还支持具有Internet服务特性的企业内部网络技
术体系VPN(虚拟专用网)。防火墙的英文名为“FireWall”,它是目前
一种最重要的网络防护设备。从专业角度讲,防火墙是位于两个(或多个)
网络间,实施网络之间访问控制的一组组件集合。
编辑本段防火墙名称来源
防火墙在网络中经常是以两种图标出现的。一种图标非常形象,真正
像一堵墙一样。而另一种图标则是从防火墙的过滤机制来形象化的,在图标中有一个二极管图标。而二极管我们知道,它具有单向导电性,这样也
就形象地说明了防火墙具有单向导通性。这看起来与现在防火墙过滤机制
有些矛盾,不过它却完全体现了防火墙初期的设计思想,同时也在相当大
程度上体现了当前防火墙的过滤机制。因为防火最初的设计思想是对内部
网络总是信任的,而对外部网络却总是不信任的,所以最初的防火墙是只
对外部进来的通信进行过滤,而对内部网络用户发出的通信不作限制。当
然目前的防火墙在过滤机制上有所改变,不仅对外部网络发出的通信连接
要进行过滤,对内部网络用户发出的部分连接请求和数据包同样需要过滤,
但防火墙仍只对符合安全策略的通信通过,也可以说具有“单向导通”性。
防火墙的本义是指古代构筑和使用木制结构房屋的时候,为防止火灾的发
生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物
就被称之为“防火墙”。其实与防火墙一起起作用的就是“门”。如果没有门,
各房间的人如何沟通呢,这些房间的人又如何进去呢?当火灾发生时,这
些人又如何逃离现场呢?这个门就相当于我们这里所讲的防火墙的“安全
策略”,所以在此我们所说的防火墙实际并不是一堵实心墙,而是带有一些
小孔的墙。这些小孔就是用来留给那些允许进行的通信,在这些小孔中安
装了过滤机制,也就是上面所介绍的“单向导通性”。我们通常所说的网
络防火墙是借鉴了古代真正用于防火的防火墙的喻义,它指的是隔离在本
地网络与外界网络之间的一道防御系统。防火可以使企业内部局域网(LAN)
网络与Internet之间或者与其他外部网络互相隔离、限制网络互访用来保护
内部网络。
编辑本段架构
防火墙的硬件体系结构曾经历过通用CPU架构、ASIC架构和网络处
理器架构,他们各自的特点分别如下:
通用CPU架构
通用CPU架构最常见的是基于IntelX86架构的防火墙,在百兆防火墙
中IntelX86架构的硬件以其高灵活性和扩展性一直受到防火墙厂商的青
睐;由于采用了PCI总线接口,IntelX86架构的硬件虽然理论上能达到
2Gbps的吞吐量甚至更高,但是在实际应用中,尤其是在小包情况下,远
远达不到标称性能,通用CPU的处理能力也很有限。国内安全设备主
要采用的就是基于X86的通用CPU架构。
ASIC架构
ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路)技术
是国外高端网络设备几年前广泛采用的技术。由于采用了硬件转发模式、
多总线技术、数据层面与控制层面分离等技术,ASIC架构防火墙解决了
带宽容量和性能不足的问题,稳定性也得到了很好的保证。ASIC技术
的性能优势主要体现在网络层转发上,而对于需要强大计算能力的应用层
数据的处理则不占优势,而且面对频繁变异的应用安全问题,其灵活性和
扩展性也难以满足要求。由于该技术有较高的技术和资金门槛,主要
是国内外知名厂商在采用,国外主要代表厂商是Netscreen,国内主要代表
厂商为天融信、网御神州。
网络处理器架构
由于网络处理器所使用的微码编写有一定技术难度,难以实现产品的
最优性能,因此网络处理器架构的防火墙产品难以占有大量的市场份额。
基于国产CPU的防火墙随着国内通用处理器的发展,逐渐发展了基于
中国芯的防火墙,主要架构为国产龙芯2F+FPGA的协议处理器,主要应用
政府、军队等对国家安全敏感的行业。代表厂商有中科院计算所、博华科
技等公司。
编辑本段三种配置
防火墙配置有三种:Dual-homed方式、Screened-host方式和
Screened-subnet方式。Dual-homed方式最简单。
Dual-homedGateway放置在两个网络之间,这个Dual-omedGateway又称
为bastionhost。这种结构成本低,但是它有单点失败的问题。这种结构没
有增加网络安全的自我防卫能力,而它往往是受“黑客”攻击的首选目标,它
自己一旦被攻破,整个网络也就暴露了。Screened-host方式中的
Screeningrouter为保护Bastionhost的安全建立了一道屏障。它将所有进
入的信息先送往Bastionhost,并且只接受来自Bastionhost的数据作为出
去的数据。这种结构依赖Screeningrouter和Bastionhost,只要有一个失
败,整个网络就暴露了。Screened-subnet包含两个Screeningrouter
和两个Bastionhost。在公共网络和私有网络之间构成了一个隔离网,称之
为”停火区”(DMZ,即DemilitarizedZone),Bastionhost放置在“停火区”
内。这种结构安全性好,只有当两个安全单元被破坏后,网络才被暴露,
但是成本也很昂贵。
编辑本段发展史
第一代防火墙第一代防火墙技术几乎与路由器同时出现,采用了
包过滤(Packetfilter)技术。下图表示了防火墙技术的简单发展历史。第
二、三代防火墙1989年,贝尔实验室的DavePresotto和Howard
Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙
——应用层防火墙(代理防火墙)的初步结构。第四代防火墙1992
年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic
packetfilter)技术的第四代防火墙,后来演变为目前所说的状态监视
(Statefulinspection)技术。1994年,以色列的CheckPoint公司开发出
了第一个采用这种技术的商业化的产品。第五代防火墙1998年,
NAI公司推出了一种自适应代理(Adaptiveproxy)技术,并在其产品
GauntletFirewallforNT中得以实现,给代理类型的防火墙赋予了全新的意
义,可以称之为第五代防火墙。一体化安全网关UTMUTM统一威
胁管理,在防火墙基础上发展起来的,具备防火墙、IPS、防病毒、防垃圾
邮件等综合功能的设备。由于同时开启多项功能会大大降低UTM的处理性
能,因此主要用于对性能要求不高的中低端领域。在中低端领域,UTM已
经出现了代替防火墙的趋势,因为在不开启附加功能的情况下,UTM本身
就是一个防火墙,而附加功能又为用户的应用提供了更多选择。在高端应
用领域,比如电信、金融等行业,仍然以专用的高性能防火墙、IPS为主流。
编辑本段工作原理
防火墙就是一种过滤塞(目前你这么理解不算错),你可以让你喜欢的
东西通过这个塞子,别的玩意都统统过滤掉。在网络的世界里,要由防火
墙过滤的就是承载通信数据的通信包。天下的防火墙至少都会说两个
词:Yes或者No。直接说就是接受或者拒绝。最简单的防火墙是以太网桥。
但几乎没有人会认为这种原始防火墙能管多大用。大多数防火墙采用的技
术和标准可谓五花八门。这些防火墙的形式多种多样:有的取代系统上已
经装备的TCP/IP协议栈;有的在已有的协议栈上建立自己的软件模块;有
的干脆就是独立的
一套操作系统。还有一些应用型的防火墙只对特定类型的网络连接提供保
护(比如SMTP或者HTTP协议等)。还有一些基于硬件的防火墙产品其实
应该归入安全路由器一类。以上的产品都可以叫做防火墙,因为他们的工
作方式都是一样的:分析出入防火墙的数据包,决定放行还是把他们扔到
一边。所有的防火墙都具有IP地址过滤功能。这项任务要检查IP包头,
根据其IP源地址和目标地址作出放行/丢弃决定。看看下面这张图,两个网
段之间隔了一个防火墙,防火墙的一端有台UNIX计算机,另一边的网段则
摆了台PC客户机。当PC客户机向UNIX计算机发起telnet请求时,
PC的telnet客户程序就产生一个TCP包并
把它传给本地的协议栈准备发送。接下来,协议栈将这个TCP包“塞”到一
个IP包里,然后通过PC机的TCP/IP栈所定义的路径将它发送给UNIX计
算机。在这个例子里,这个IP包必须经过横在PC和UNIX计算机中的防
火墙才能到达UNIX计算机。现在我们“命令”(用专业术语来说就是配
制)防火墙把所有发给UNIX计算机的数据包都给拒了,完成这项工作以后,
“心肠”比较好的防火墙还会通知客户程序一声呢!既然发向目标的IP数据
没法转发,那么只有和UNIX计算机同在一个网段的用户才能访问UNIX计
算机了。还有一种情况,你可以命令防火墙专给那台可怜的PC机找茬,
别人的数据包都让过就它不行。这正是防火墙最基本的功能:根据IP地址
做转发判断。但要上了大场面这种小伎俩就玩不转了,由于黑客们可以采
用IP地址欺骗技术,伪装成合法地址的计算机就可以穿越信任这个地址的
防火墙了。不过根
据地址的转发决策机制还是最基本和必需的。另外要注意的一点是,不要
用DNS主机名建立过滤表,对DNS的伪造比IP地址欺骗要容易多了。
服务器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,比
如Xclient、基于RPC的NFS服务以及为数众多的非UNIXIP产品等
(NetWare/IP)就是这样的。那么让达到1023端口标准的数据包都进入网
络的话网络还能说是安全的吗?连这些客户程序都不敢说自己是足够安全
的。
双向过滤OK,咱们换个思路。我们给防火墙这样下命令:已知服
务的数据包可以进来,其他的全部挡在防火墙之外。比如,如果你知道用
户要访问Web服务器,那就只让具有源端口号80的数据包进入网络:不
过新问题又出现了。首先,你怎么知道你要访问的服务器具有哪些正在运
行的端口号呢?象HTTP这样的服务器本来就是可以任意配置的,所采用
的端口也可以随意配置。如果你这样设置防火墙,你就没法访问哪些没采
用标准端口号的的网络站点了!反过来,你也没法保证进入网络的数据包
中具有端口号80的就一定来自Web服务器。有些黑客就是利用这一点制作
自己的入侵工具,并让其运行在本机的80端口!检查ACK位源地
址我们不相信,源端口也信不得了,这个不得不与黑客共舞的疯狂世界上
还有什么值得我
们信任呢?还好,事情还没到走投无路的地步。对策还是有的,不过这个
办法只能用于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,连接就必须由这些服务
器程序自己发起。FTP带来的困难一般的Internet服务对所有的
通信都只使用一对端口号,FTP程序在连接期间则使用两对端口号。第一
对端口号用于FTP的“命令通道”提供登录和执行命令的通信链路,而另一
对端口号则用于FTP的“数据通道”提供客户机和服务器之间的文件传送。
在通常的FTP会话过程中,客户机首先向服务器的端口21(命令通道)发
送一个TCP连接请求,然后执行LOGIN、DIR等各种命令。一旦用户请求
服务器发送数据,FTP服务器就用其20端口(数据通道)向客户的数据端口
发起连接。问题来了,如果服务器向客户机发起传送数据的连接,那么它
就会发送没有设置ACK位的数据包,防火墙则按照刚才的规则拒绝该数据
包同时也就意味着数据传送没戏了。通常只有高级的、也就是够聪明的防
火墙才能看出客户机刚才告诉服务器的端口,然后才许可对该端口的入站
连接。UDP端口过滤好了,现在我们回过头来看看怎么解决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、邮件服务器等多
种功能。代理服务器重写数据包而不是简单地将其转发了事。给人的感觉
就是网络内部的主机都站在了网络的边缘,但实际上他们都躲在代理的后
面,露面的不过是代理这个假面具。
-
防火墙