在大厦构造中,防火墙被设计用来防止火从大厦的一边传播到另一边。我们所涉及的防火墙服务于类似的目的:防止因特网的危险传播到您的内部网络。实际上,因特网防火墙不像一座现代化大厦中的防火墙,它更像中世纪城堡的护城河。
防火墙一方面阻止来自因特网的对受保护网络的未授权或未验证的访问,另一方面允许内部网络的用户对因特网进行Web访问或收发E-mail等。防火墙也可以作为一个访问因特网的权限控制关口,如允许组织内的特定的人可以访问因特网。现在的许多防火墙同时还具有一些其他特点,如进行身份鉴别,对信息进行安全(加密)处理等等。如图1-1所示:
防火墙不单用于对因特网的连接,也可以用来在组织内部保护大型机和重要的资源(数据)。对受保护数据的访问都必须经过防火墙的过滤,即使该访问是来自组织内部。
当外部网络的用户访问网内资源时,要经过防火墙;而内部网络的用户访问网外资源时,也会经过防火墙。这样,防火墙起了一个“警卫”的作用,可以将需要禁止的数据包在这里给丢掉。
一个网络系统的最主要的目的是实现“资源共享”,同时实现对数据的协作处理、信息的传递等等。网络自身的这种开放性是引发网络安全问题的最直接原因。
网络的不安全因素有以下几类:
l 环境:各类天灾及事故都会对网络造成损害,令网络完全瘫痪或不能正常工作。
l 资源共享:包括硬件共享、软件共享、数据共享。资源的相互共享为异地用户提供了方便,同时也给非法用户创造了条件。非法用户可以通过终端来窃取信息、破坏信息。共享资源与使用者之间有相当一段距离,这也为窃取信息在时间和空间上提供了便利条件。
l 数据传输:信息需要通过数据通信来传输。在传输过程中,信息容易被窃听、修改。
l 计算机病毒:借助网络,病毒可以在短时间内感染大量的计算机,使网络趋于瘫痪。如“蠕虫”病毒及电子邮件“炸弹”。
l 网络管理:对系统的管理措施不当,会造成设备的损坏、重要信息的人为泄露等等。
我们将防火墙比作中世纪城堡的护城河,并且像护城河一样,防火墙不是坚不可摧的。它不防备已经是里面的人;如果与内部的防御相配合,它工作的最好;同时,即使您把所有的船都收藏起来,人们有时仍然能设法横渡。构筑防火墙需要昂贵的花费和努力,而且它对内部人员的限制是令人厌烦的。
防火墙对网络威胁进行极好的防范,但是,它们不是安全解决方案的全部。某些威胁是防火墙力所不及的。
l 防火墙不能防范恶意的知情者:防火墙可以禁止系统用户通过网络发送专有的信息。但是用户可以将数据复制到磁盘或者纸上,放在公文包里带出去。如果侵袭者已经在防火墙的内部,防火墙实际上无能为力。
l 防火墙对不通过它的连接难有作为:防火墙能有效的控制穿过它的传输信息,但对于不穿过它的传输信息无能为力。
l 防火墙不能防备所有新的威胁:一个好的设计能防备新的威胁,但没有防火墙能自动防御所有新的威胁。人们不断发现利用以前可信赖的服务的新的侵袭方法。
l 防火墙不能防备病毒:有太多种的病毒和太多种的方法可以使得病毒隐藏在数据中。
一般把防火墙分为两类:网络层防火墙、应用层防火墙。网络层的防火墙主要获取数据包的包头信息,如协议号、源地址、目的地址、目的端口等或者直接获取包头的一段数据。应用层的防火墙对于整个信息流进行分析。
实现防火墙时,共有以下几种:
1. 应用网关(application gateway):
检验通过此网关的所有数据包中的应用层的数据;经常是由经过修改的应用程序组成运行在防火墙上。如FTP应用网关,对于连接的client端来说是一个FTP server,对于server端来说是一个FTP client。连接中传输的所有ftp数据包都必须经过此FTP应用网关。
2. 电路级网关(circuit-level gateway):
此电路指虚电路。在TCP或UDP发起(open)一个连接或电路之前,验证该会话的可靠性。只有在握手被验证为合法且握手完成之后,才允许数据包的传输。一个会话建立后,此会话的信息被写入防火墙维护的有效连接表中。数据包只有在它所含的会话信息符合该有效连接表中的某一入口(entry)时,才被允许通过。会话结束时,该会话在表中的入口被删掉。电路级网关只对连接在会话层进行验证。一旦验证通过,在该连接上可以运行任何一个应用程序。以FTP为例,电路层网关只在一个FTP会话开始时,在tcp层对此会话进行验证。如果验证通过,则所有的数据都可以通过此连接进行传输,直至会话结束。
3. 包过滤(packet filter):
对每个数据包按照用户所定义的进行过滤,如比较数据包的源地址、目的地址是否符合规则等。包过滤不管会话的状态,也不分析数据。如用户规定允许端口是21或者大于等于1024的数据包通过,则只要端口符合该条件,数据包便可以通过此防火墙。如果配置的规则比较符合实际应用的话,在这一层能够过滤掉很多有安全隐患的数据包。
4. 代理(proxy):
通常情况下指的是地址代理,一般位于一台代理服务器或路由器上。它的机制是将网内主机的IP地址和端口替换为服务器或路由器的IP地址和端口。举例来说,一个公司内部网络的地址是129.0.0.0网段,而公司对外的正式IP地址是202.138.160.2~202.138.160.6,则内部的主机129.9.10.100以WWW方式访问网外的某一台服务器时,在通过代理服务器后,IP地址和端口可能为202.138.160.2:6080。在代理服务器中维护着一张地址对应表。当外部网络的WWW服务器返回结果时,代理服务器会将此IP地址及端口转化为内部网络的IP地址和端口80。使用代理服务器可以让所有的外部网络的主机与内部网络之间的访问都必须通过它来实现。这样可以控制对内部网络带有重要资源的机器的访问。
1. IP地址伪装(IP Spoofing):
攻击方发出的数据包中的源地址改成受攻击方的网络地址,向该网络发送数据包。
2. IP抢劫(IP Hijacking、IP Splicing):
攻击者中途截取一个已经连接成功的会话。这种攻击通常发生在用户身份被验证后,这样攻击者看起来是一个合法用户。对于这种攻击的最主要的防范方法是对网络层或会话层的传输的数据进行加密。
3. Smurf:
攻击方通过第三方网络介以一伪造的地址将数据包传入,大量的数据包使得网络速度迅速下降直至崩溃。这种攻击很难查出攻击者。
4. Dumpster diving:
通过搜寻公司的垃圾文件以获得口令等敏感性数据。
5. War-dialing:
通过不断快速的枚举法来获得用户帐号和口令。这是一非常古老的方法。但现在使用它的逐渐又多了起来。如对于采用密钥长度为56位的DES加密的数据,可以在一个月之内被破译(按照目前的计算速度),对于40位或48位的则只需几个小时或几天。DES是使用最广泛的加密技术。
6. 利用操作系统缺陷:
利用系统中漏洞直接对系统进行攻击。如“蠕虫”病毒是利用finger命令中的bug,令缓冲区溢出,再将控制转移到自己的程序中。还可以利用系统缺陷,绕过防火墙的检验,直接获取数据。发现系统中的缺陷,应该立即采取对策,防止对系统的进一步危害。
7. 拒绝服务denial of service:
特征是攻击者通过各种方法使合法的用户不能使用某种服务。例如:
l “淹没”一个网络,从而阻止合法的数据传输;
l 破坏两台机器见间的连接,使用户不能访问该服务;
l 阻止特定的个人访问某种资源;
l 中断到某个特定系统或个人的服务;
一些拒绝服务攻击被称为“非对称攻击”,特点是攻击方利用有限的资源去攻击一个比较大的网络。如攻击者可能可以利用一个低速的modem,将一个大型的网络搞垮。
拒绝服务攻击的种类有多种,以下三种是比较基本的:
l 消耗有限的、不可更新的资源;
l 毁坏或者更改配置的信息;
l 对于网络的物理组件的破坏或者更改;
这里就第一种即“消耗有限的资源”做一些说明。
计算机和网络需要有特定的资源来运行:网络带宽、内存和磁盘空间、CPU时间、数据结构、对其他网络和计算机的访问;并且还包括一些环境资源,如电、冷气甚至还有水。
有这样一种攻击方法:攻击者建立一个到目标机器的连接,但是用某种方法阻止将此连接的最终完成;这样,在目标机器上就预留了一些用来完成连接所需的数据结构。结果一些合法的连接被拒绝了,因为目标机器正在等待完成那些已经完成一半的连接。应该注意到,这种攻击并不消耗网络带宽,它只是消耗建立连接所需的核心的数据结构。这也意味着可以从利用拨号上网来攻击一个非常快速的网络。这是一个“非对称攻击”的好例子。
其他的方法有创建一个恶意的进程不断的生成新的进程,消耗系统资源。
1. 什么是防火墙?
防火墙是一个或一组系统,它在网络之间执行访问控制策略。实现防火墙的实际方式各不相同,但是在原则上,防火墙可以被认为是这样一对机制:一种机制是拦阻传输流通行,另一种机制是允许传输流通过。一些防火墙偏重拦阻传输流的通行,而另一些防火墙则偏重允许传输流通过。了解有关防火墙的最重要的概念可能就是它实现了一种访问控制策略。如果您不太清楚您需要允许或否决哪类访问,您可以让其他人或某些产品根据他(它)们认为应当做的事来配置防火墙,然后他(它)们会为您的机构全面地制定访问策略。
2. 为何需要防火墙?
一些人试图通过Internet完成一些真正的工作,而另一些人则拥有敏感或专有数据需要保护。一般来说,防火墙的目是将那些无聊之人挡在您的网络之外,同时使您仍可以完成工作。
3. 防火墙可以防范什么?
一些防火墙只允许电子邮件通过,因而保护了网络免受除对电子邮件服务攻击之外的任何攻击。另一些防火墙提供不太严格的保护措施,并且拦阻一些众所周知存在问题的服务。
一般来说,防火墙在配置上是防止来自“外部”世界未经授权的交互式登录的。这大大有助于防止破坏者登录到您网络中的计算机上。一些设计更为精巧的防火墙可以防止来自外部的传输流进入内部,但又允许内部的用户可以自由地与外部通信。如果您切断防火墙的话,它可以保护您免受网络上任何类型的攻击。
防火墙的另一个非常重要的特性是可以提供一个单独的“拦阻点”,在“拦阻点”上设置安全和审计检查。与计算机系统正受到某些人利用调制解调器拨入攻击的情况不同,防火墙可以发挥一种有效的“电话监听”(Phone tap)和跟踪工具的作用。防火墙提供了一种重要的记录和审计功能;它们经常可以向管理员提供一些情况概要,提供有关通过防火墙的传流输的类型和数量以及有多少次试图闯入防火墙的企图等等信息。
4. 防火墙不能防范什么?
防火墙不能防范不经过防火墙的攻击。许多接入到Internet的企业对通过接入路线造成公司专用数据数据泄露非常担心。不幸得是,对于这些担心来说,一盘磁带可以被很有效地用来泄露数据。许多机构的管理层对Internet接入非常恐惧,它们对应当如何保护通过调制解调器拨号访问没有连惯的政策。当您住在一所木屋中,却安装了一扇六英尺厚的钢门,会被认为很愚蠢。然而,有许多机构购买了价格昂贵的防火墙,但却忽视了通往其网络中的其它几扇后门。要使防火墙发挥作用,防火墙就必须成为整个机构安全架构中不可分割的一部分。防火墙的策略必须现实,能够反映出整个网络安全的水平。例如,一个保存着超级机密或保密数据的站点根本不需要防火墙:首先,它根本不应当被接入到Internet上,或者保存着真正秘密数据的系统应当与这家企业的其余网络隔离开。
防火墙不能真正保护的另一种危险来自网络内部。尽管一个工业间谍可以通过防火墙传送信息,但他更有可能利用电话、传真机或软盘来传送信息。软盘远比防火墙更有可能成为泄露您机构秘密的媒介!
5. 防火墙能否防止病毒的攻击?
防火墙不能有效地防范像病毒这类东西的入侵。在网络上传输二进制文件的编码方式太多了,并且有太多的不同的结构和病毒,因此不可能查找所有的病毒。换句话说,防火墙不可能将安全意识(security-consciosness)交给用户一方。总之,防火墙不能防止数据驱动的攻击:即通过将某种东西邮寄或拷贝到内部主机中,然后它再在内部主机中运行的攻击。过去曾发生过对不同版本的邮件寄送程序和幻像脚本(ghostscript)和免费PostScript阅读器的这类攻击。
对病毒十分忧虑的机构应当在整个机构范围内采取病毒控制措施。不要试图将病毒挡在防火墙之外,而是保证每个脆弱的桌面系统都安装上病毒扫描软件,只要一引导计算机就对病毒进行扫描。利用病毒扫描软件防护您的网络将可以防止通过软盘、调制解调器和Internet传播的病毒的攻击。试图御病毒于防火墙之外只能防止来自Internet的病毒,而病毒还可以通过许多其他的途径,如软盘来传播。
尽管如此,还是有越来越多的防火墙厂商正提供“病毒探测”防火墙。这类防火墙只对那种交换Windows-on-Intel执行程序和恶意宏应用文档的毫无经验的用户有用。不要指望这种特性能够对攻击起到任何防范作用。
6. 什么是“单故障点”?应当如何避免出现这种故障?
安全性取决于一种机制的结构具有单故障点。运行桥头堡主机的软件存在错误。应用程序存在错误。控制路由器的软件存在错误。使用所有这些组件建造设计安全的网络,并以冗余的方式使用它们才有意义。
如果您的防火墙结构是屏蔽子网,那么,您有两台包过滤路由器和一台桥头堡主机。Internet访问路由器不允许传输流从Internet进入您的专用网络。然而,如果您不在桥头堡主机以及(或)阻塞(choke)路由器上与其它任何机制一道执行这个规则(rule)的话,那么只要这种结构中的一个组件出现故障或遭到破坏就会使攻击者进入防火墙内部。另一方面,如果您在桥头堡主机上具有冗余规则,并在阻塞路由器上也有冗余规则,那么攻击者必须对付三种机制。
此外,如果这台桥头堡主机或阻塞路由器使用规则来拦阻外部访问进入内部网络的话,您可能需要让它触发某种报警,因为您知道有人进入了您的访问路由器。
7. 有哪些常见的攻击?应当如何保护系统不受它们的攻击呢?
每个站点与其它站点遭受攻击的类型都略有不同。但仍有一些共同之处。
l SMTP会话攻击(SMTP Session Hijacking)
在这种攻击中,垃圾邮件制造者将一条消息复制成千上万份,并按一个巨大的电子邮件地址清单发送这条消息。由于这些地址清单常常很糟糕,并且为了加快垃圾制造者的操作速度,许多垃圾制造者采取了将他们所有的邮件都发送到一台SMTP服务器上作法,由这台服务器负责实际发送这些邮件。
当然,弹回(bounces)消息、对垃圾制造者的抱怨、咒骂的邮件和坏的PR都涌入了曾被用作中继站的站点。这将着实要让这个站点破费一下了,其中大部分花费被用到支付以后清除这些信息的人员费用上。
《防止邮件滥用系统传输安全性建议》(The Mail Abuse Prevention System Transport Security Initiative)中对这个问题作了详尽的叙述,以及如何对每个寄信人进行配置防止这种攻击。
l 利用应用程序中的错误(bugs)
不同版本的web服务器、邮件服务器和其它Internet服务软件都存在各种错误,因此,远程(Internet)用户可以利用错误做从造成对计算机的控制到引起应用程序瘫痪等各种后果。
只运行必要的服务、用最新的补丁程序修补程序以及使用应用过一段时间的产品可以减少遭遇这种风险的可能。
l 利用操作系统中的错误
这类攻击一般也是由远程用户发起的。相对于IP网络较新的操作系统更易出现问题,而很成熟的操作系统有充分的时间来发现和清除存在的错误。攻击者经常可以使被攻击的设备不断重新引导、瘫痪、失去与网络通信的能力,或替换计算机上的文件。
因此,尽可能少地运行操作系统服务可以有助于防范对系统的攻击。此外,在操作系统前端安装一个包过滤器也可以大大减少受这类攻击的次数。
当然,选择一个稳定的操作系统也同样会有帮助。在选择操作系统时,不要轻信“好货不便宜”这类说法。自由软件操作系统常常比商用操作系统更强健。