slide1 l.
Download
Skip this Video
Download Presentation
第 7 章 网络安全

Loading in 2 Seconds...

play fullscreen
1 / 198

第 7 章 网络安全 - PowerPoint PPT Presentation


  • 87 Views
  • Uploaded on

第 7 章 网络安全. 本章要点. 网络安全与独立系统安全有何相似与不同 网络应用程序所面临的威胁:拒绝服务、网站被 “ 黑 ” 、恶意移动代码和协议攻击 防止网路攻击的控制措施:物理安全、策略与规程以及大量的控制技术 防火墙的原理、功能和限制 入侵检测系统的 种类、功能与局限 安全电子邮件: PGP 和 S/MIME .

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 7 章 网络安全' - zanna


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
本章要点
  • 网络安全与独立系统安全有何相似与不同
  • 网络应用程序所面临的威胁:拒绝服务、网站被“黑”、恶意移动代码和协议攻击
  • 防止网路攻击的控制措施:物理安全、策略与规程以及大量的控制技术
  • 防火墙的原理、功能和限制
  • 入侵检测系统的种类、功能与局限
  • 安全电子邮件:PGP和S/MIME
slide3
我们每天都在跟网络打交道。网络攻击确实是一个至关重要的问题。本章将描述是什么使得网络安全与前面讲过的应用程序和操作安全既有区别又有相似之处。由于网络的增长和变化速度比计算机科学其他方面的发展速度更快,因此,不可能介绍所有最流行的攻击与防御技术。但新的形式和变化都是建立在一些基础知识之上的。这些知识包括:网络基本概念、网络威胁和网络控制等。我们每天都在跟网络打交道。网络攻击确实是一个至关重要的问题。本章将描述是什么使得网络安全与前面讲过的应用程序和操作安全既有区别又有相似之处。由于网络的增长和变化速度比计算机科学其他方面的发展速度更快,因此,不可能介绍所有最流行的攻击与防御技术。但新的形式和变化都是建立在一些基础知识之上的。这些知识包括:网络基本概念、网络威胁和网络控制等。
slide4
7.1 网络的概念

由于网络存在单一故障点(single point of failure),所以是脆弱的。但是网络具有恢复(resilience)或容错能力(fault tolerance),所以又是健壮的。一般认为,网络的中间部分很健壮,但其周边却是脆弱的。

在一般用户的眼里,一个网络看起来就像一个设计成两端由中间的一条单线连接起来的东西。这里,我们在描述计算机网络时,着重介绍安全的概念,同时也以简化的方式描述网络本身,而避免让网络的复杂性分散注意力。注意,我们描述的网络是对更复杂的实际网络的抽象。

7 1 1
7.1.1 网络

简单网络模型可以设想为两台设备通过硬件介质连接起来,并用软件实现设备间通信。可能一台计算机是服务器(server),另一台设备提供输入/输出是客户(client)。

图 7.1 网络的简单示意图

7 1 16
7.1.1 网络(续)

但实际网络的状况显然要比这复杂得多。

(1) 执行用户到计算机通信的简单网络设备通常是一台微型计算机或者工作站,因此,客户端具有相当大的存储容量和计算能力。

(2) 一个网络可以配置为单个客户与服务器相连,但在通常情况下,是多客户与多个服务器交互的。

(3) 网络服务通常是由很多台计算机一起提供的。单个用户会话在客户与服务器之间来回传送消息的过程中,需要经过一些中间计算机。但这些计算机中的部分如果正在实现其他重要的交互服务,则消息可能被暂停传输。

(4) 在终端用户接受服务的过程中,通常不会意识到发生了很多会话和计算工作。

7 1 17
7.1.1 网络(续)

通常,网络中的一个单一的计算系统称为一个节点(node),其任务处理设备(计算机)称为主机(host)。两台主机之间的连接称为链路(link),网络计算由许多用户、通信介质、可见主机和通常对终端用户不可见的系统组成。系统是一个处理器的集合,通常都具有比工作站(workstation)更强的处理能力和更大的存储空间。

图 7.2 更复杂但更典型的网络示意图

7 1 18
7.1.1 网络(续)

使用环境

网络具有以下几个典型的特征:

(1) 匿名性:网络隐藏了通信者绝大多数的特征,如相貌、声音以及环境,而在通常情况下,我们是以这些特征相互认识的。

(2) 自动性:通信自动完成。

(3) 远程性。

(4) 透明性:用户甚至不清楚当前通信的主机与上一次通信的主机是否相同。

(5) 路由的多样性:为了维护和提高网络的可靠和性能,通信路由通常动态分配。

7 1 19
7.1.1 网络(续)

外形和尺寸

网络按照节点和连接的形式进行组织的方式,称为网络的拓扑结构(topology)。其与安全相关的特性有:

(1) 边界:边界将一个网络的元素与不属于该网络的元素区分开来。

(2) 拥有关系:要想知道网络中每台主机的拥有者是很困难的。

(3) 控制:如果说拥有关系是不确定的,那么控制也就是不确定的了。

7 1 110
7.1.1 网络(续)

通信模式

数据的通信要么采用数字(digital)格式(传输的数据以离散的二进制数值表示),要么采用模拟(analog)格式(传输的数据以连接范围的一系列点来表示,使用的介质采用声音或者电压)。转换工作由调制解调器来完成,可以实现数字和模拟信号之间的双向转换。

7 1 2
7.1.2 传输介质

通信可以使用几种传输介质:

(1)电缆:可以是双绞线(twisted pair)或者无屏蔽双绞线(unshielded twisted pair, UTP)也可以是同轴电缆(coaxial (coax) cable)。

(2) 光纤:采用极细的玻璃作为传输介质。传输的是光束而不是电能。光纤介质所产生的串扰非常低、价格和重量相对铜线而言都低得多。铜线逐渐被光纤所取代。

(3) 无线:采用无线电信号传送通信信号。很多符合802.11协议的设备都适用于建立办公室或者家庭无线网络。

7 1 212
7.1.2 传输介质(续)

(4) 微波:微波信道的容量与双绞线相当。微波信号必须在小于相距49公里的地方进行中继。

(5) 红外:红外线通信传输距离不超过11.5公里。由于传输直线的要求和距离的限制,红外线一般只在像办公室那样有保护措施的范围内使用。

(6) 卫星:卫星通信链路的质量通常比在地球上铺设的电缆更好。卫星通常在一个很广的范围内传播通信信号。从使用性考虑总是希望信号覆盖很宽的范围,但是覆盖范围越窄,被窃听的危险就越低。

7 1 3
7.1.3 协议

通信可以与实际的通信介质相互分开。协议(protocol)的定义使得这一独立性的实现成为可能,允许用户以一个较高的、抽象的通信层次看待网络。在通信的两端,通信完成的细节过程通过硬件和软件技术被隐藏了。这些硬件和软件依据协议栈(protocol stack)行事。协议栈中的每一层都像是定义了一种语言,使用该语言就可实现在该层中相关信息之间的相互交流。

目前,网络中用得最多的是两种协议栈:开放系统互连协议(OSI)体系和传输控制与互连协议(TCP/IP)体系。

7 1 314
7.1.3 协议(续)

ISO OSI参考模型

OSI参考模型包含7层。我们可以把这些层看成是在一条装配线,每一层将自己提供的服务添加到整个通信过程中。

表 7.1 OSI协议中的层

7 1 315
7.1.3 协议(续)

发送和接收方的平行层也称为“对等层”(peers)

图 7.3 ISO OSI网络模型

7 1 316
7.1.3 协议(续)

寻址

在网络层(3),一种称为路由器(router)的设备会将消息准确地从源地址发送到目的地址。网络层所建立的目的地址、源地址和其中的数据一起,合称为一个包(packet)。

图 7.4 网络层传输

7 1 317
7.1.3 协议(续)

每一台计算机都通过一块网络接口卡(Network Interface Card,NIC)连接到一个网络,在网络接口卡上有一个唯一的物理地址,称为MAC地址(MAC为Media Access Control的缩写)。在数据链路层,另外加上了两个头部,其中一个是计算机上的NIC地址(源MAC地址),另一个是路由器上的NIC地址(目的MAC地址) 。包含目的MAC地址、源MAC地址和数据的数据链路层结构称为一个帧(frame)。

图 7.5 数据链路层传输

7 1 318
7.1.3 协议(续)

分层

图 7.6 传输的消息准备过程

7 1 319
7.1.3 协议(续)

表示层(6)将原始消息分割成许多小块。在会话层(5)添加了一个会话头部,以指明发送者、接收者和一些与顺序相关的信息。传输层(4) 添加了一些在发送者和接收者之间进行逻辑连接的信息。网络层(3)增加了一些路由信息,并把从传输层(4)传来的一个信息单元进一步分割为多个数据包。数据链路层(2)添加了一个头部和尾部,以保证这些消息块的正确顺序,并检测和校正传输错误。消息和控制的每一比特都在物理层(1)通过物理介质进行传播。

7 1 320
7.1.3 协议(续)

TCP/IP

一般认为OSI模型过于复杂,其中包含了太多的层次 。因此,TCP/IP成为了目前应用最广泛的协议栈。TCP/IP是为实际因特网设计的,并且是根据协议而不是根据层定义的。但是,仍然可以把它看成4层结构:应用层、主机到主机(端到端)的传输层、网络层和物理层。其主要由处于底层的IP传输协议、基于其上用于实现面向连接的通信会话的TCP协议以及第三方协议——用户数据报协议(User Datagram Protocol, UDP)组成。

7 1 321
7.1.3 协议(续)

传输层从应用层接收长度可变的消息,将它们分割成一定大小的单元,按包(packet)发送出去。网络层以数据报(datagram)方式传输这些包,根据数据的目的地(随数据一起提供的地址)将它们发送至不同的物理连接。物理层实现实际比特流的数据通信。

表 7.2 因特网通信中的层

7 1 322
7.1.3 协议(续)

TCP协议将无序的包按照正确顺序进行排列,请求重传丢失的包,重新获取一个毁坏包的新副本。对速率或效率要求非常高时,允许数据流中存在少量不准确的数据。

TCP数据包是一个数据结构,其中包含一个序列号、一些标记、源端口(port)和目的端口号。每一种服务都使用一个众所周知的端口,比如80端口用于HTTP(网页),23端口用于Telnet(远程终端连接),25端口用于SMTP(电子邮件),161端口用于SNMP(网络管理)。简而言之,每种服务都有一个守护进程,以监视指定的端口号,并且当有任何数据传到该端口时为其提供服务。

UDP协议不提供TCP协议中的错误检测和误码校正功能,不过它是一种更小、更快的传输协议。

7 1 323
7.1.3 协议(续)

表7.3 因特网提供的服务

7 1 324
7.1.3 协议(续)

寻址方式

地址是网络中一个节点的唯一标识符。广域网必须遵从已经建立的规则,而局域网中寻址方式的限制相对较小。在基于TCP/IP协议的广域网上的主机都有一个32位的地址,称为IP地址(IP address)。IP地址四个8比特一组,通常用十进制表示。网络地址也采用我们熟悉的域名(domain name)进行区分,比如ATT.COM或者CAM.AC.UK,由寻址表完成从这些字符串到数字格式的转换。IP地址按照从右到左的顺序进行解析。最右边的部分,如.COM、.EDU、.ORG或者.GOV以及由两个字符代表的某个国家,如.UK、.FR、.JP或者.DE,称为顶级域名(top-level domain),由一些称为因特网注册部门的小型组织机构进行管理。负责进行注册的组织机构需要发布主机地址,这些地址是包含在其管理的顶级域名下的二级域名表中。

7 1 325
7.1.3 协议(续)

当第一次试图将一个完整的域名解析为它所对应的IP地址时,系统将完成一次从顶级主机开始查找的过程(在随后的解析工作中,系统自身维护一个记录域名的缓存,本地进行域名解析。最后域名被转换成为一个32位,四个8比特一组的地址,并被包含在所有以该地址为目的地的IP包中。

7 1 326
7.1.3 协议(续)

路由概念

主机需要知道如何根据IP地址发送一个包。每台主机都清楚与自己直接相连的其他主机,并且与相邻的主机交换连接信息。主机将它能到达的主机(地址)及代价(跳步数)的描述信息广播给它的邻居。每台主机将流量传递给能提供最小代价路径的某个邻居。

7 1 4
7.1.4 网络类型

网络是一个通信主机的集合。

局域网

局域网(Local Area Network, LAN)的覆盖范围较小,一般局限于一栋建筑内。LAN的主要优点在于它的所有用户可以很方便地共享数据、程序,以及共享对设备的访问,比如打印机。

大多数LAN都具有以下特征:

(1) 规模小:用户通常不超过100个。

(2) 局部控制:都由一个组织统一管理。

(3) 物理保护:外部恶意访问者很难访问内部设备。

(4) 有限范围:仅覆盖一个很小的范围。

7 1 428
7.1.4 网络类型(续)

广域网

广域网(Wide Area Network, WAN)和局域网在规模、距离和控制或拥有关系等方面都有较大的区别,但WAN仍然有一些统一的原则。其他相似网络类型还包括校园网(CAN)和城域网(MAN)。以下是WAN的典型特征:

(1) 单一控制:通常,一个广域网应该由一个组织机构负责和控制。

(2) 覆盖范围大:一个WAN通常比一个LAN的服务范围要大,一般从几公里到整个地球的范围。

(3) 物理上暴露(常常如此,但不全是):大多数广域网使用公共通信介质,因此,相对来说要暴露一些。

7 1 429
7.1.4 网络类型(续)

互联网(网际网)

由众多网络构成,最典型的互联网是因特网。因特网由因特网协会进行松散的控制。因特网协会指定了一些公平活动的基本规则,以保证所有用户都能接受公平的服务,并且它支持标准协议,以实现用户之间的通信。以下是因特网的一些特征:

(1) 联合:对于因特网的用户甚至是网络服务提供商,我们几乎都不可能给出一个适当描述。

(2) 巨大:没有谁真正知道因特网到底有多大。

(3) 异构:可能每一种商业硬件和软件中,至少有一个产品连接到了因特网上。

(4) 物理上和逻辑上暴露:由于没有统一的访问控制,实际上任何攻击者都可以访问因特网,而且由于连接设备的复杂性,他们可以获取网上的任何资源。

7 2 7 2 1
7.2 网络面临的威胁7.2.1 导致网络脆弱的因素

(1) 匿名性:攻击者可以远隔千里实施攻击,而无需与被攻击者的系统、该系统的管理员或者任何用户进行直接接触。因此,隐藏在电子屏障之后的潜在攻击者处于比较安全的地位。攻击者可能利用很多其他主机来实施攻击,这样就可以隐藏攻击的源头。

(2) 攻击点多——既指攻击的目标,也指发动攻击的地点:攻击者可能来自任何主机,也可能针对任何主机。因此,在一个大型网络中,容易受到攻击的点是很多的。

(3) 共享性:由于网络允许共享资源和分担负载,所以潜在的访问联网系统的用户比单机用户多。

7 2 1
7.2.1 导致网络脆弱的因素(续)

(4) 系统的复杂性:一个网络操作/控制系统很可能比一个为独立计算设计的操作系统要复杂得多。攻击者也可以利用攻击目标强大的计算能力,将部分计算机工作交给攻击目标完成,从而能够大大提高攻击能力。

(5) 未知边界:网络的可扩展性也意味着网络的边界是不确定的。可能怀有恶意的未知或者不受控制的用户团体是网络安全的不利因素。

7 2 132
7.2.1 导致网络脆弱的因素(续)

图 7.7 无清晰的网络边界

7 2 133
7.2.1 导致网络脆弱的因素(续)

(6) 未知路径:从一台主机到另一台主机可能存在着多条路径。

图 7.8 网络中某种消息的路由过程

7 2 2
7.2.2 谁在攻击网络

关注动机有助于我们了解谁可能攻击互联网的主机和用户。网络挑战、名声、金钱以及意识形态是4个重要的动机。

(1) 挑战:对网络攻击者而言,一个最重要的动机就是对智力的挑战。击败看似无懈可击的事物是一些攻击者喜欢的智力刺激。有些攻击者只是希望看看这种不受欢迎的活动深入到什么地步。

(2) 名声:一些攻击者希望通过攻击活动得到认可 。也就是说,一方面是出于迎接挑战的考虑,另一方面是为了由此而获得声望。

7 2 235
7.2.2 谁在攻击网络(续)

(3) 金钱与间谍、有组织犯罪 :经济回报也是攻击者实施攻击的一个动机。一些组织的行为看似很奇怪,但实际上,工业间谍应该为此负责。工业间谍是非法的,但却经常出现,部分原因是其潜在的高收益。更精心策划的攻击需要不止一个人,所以,出现了有组织的犯罪。到处都有证据表明,有组织的犯罪集团正在利用Internet提供的新机会。

(4) 意识形态:Denning曾经把攻击行为分为黑客主义与计算机恐怖主义。黑客主义(hactivism)是指“使用黑客技术针对一个目标的一系列活动,目的是干扰其正常运转,但不会造成严重破坏”。计算机恐怖主义(cyberterrorism)是“一种具有潜在动机的黑客活动,目的是造成严重损坏,比如造成死亡或者严重的经济损失”。

7 2 3
7.2.3 攻击前侦察

攻击者在采取攻击行动之前,首先要进行充分的调查和计划活动。网络攻击者开始攻击之前需要了解有关攻击目标的大量信息。研究这些攻击的前期工作的目的是:一旦发现了某些特征行为,就可能在攻击真正发生之前采取措施加以阻止。

端口扫描

收集信息的一种简单方法是采用端口扫描(port scan)。针对一个特定的IP地址,扫描程序报告该地址的哪些端口会响应消息,以及目前存在着有哪些已知的弱点。通过端口扫描可以知道三件事情:目标系统上有哪些标准端口或者正在运行并响应请求的服务;目标系统上安装了哪些操作系统;目前都有哪些应用程序在提供服务及其版本是什么。可以通过合法的渠道获得端口扫描工具。

7 2 337
7.2.3 攻击前侦察(续)

社会工程学

社会工程学涉及:使用社会技巧和人际关系,使某人透露一些与安全相关的信息,甚至直接为允许攻击做一些事情。社会工程学不会有多大损失,最多是引起了可能攻击目标的警觉,对不涉及安全管理的人,社会工程学就很容易成功。

情报收集

情报收集(Intelligence)是收集细节信息的常用手段。在信息安全领域,通常是指通过不同渠道收集不连续的信息比特,而后就像做拼图游戏一样将它们组合到一起。大多数情报收集技术都只需经过很少的训练和最少的时间投入。

7 2 338
7.2.3 攻击前侦察(续)

操作系统与应用程序特征

如果掌握了操作系统和应用程序的种类版本,攻击者就可以查找一张记录了某种软件已知漏洞的表,从而决定利用哪个特殊的漏洞实施攻击。所有与特定类型及版本相关的特性称为操作系统或者应用程序的指纹(fingerprint),可用于标志其开发商和版本。 通过与操作系统或者应用程序的简单交互可以确定这些。有时,应用程序会自报身份。如,

Server: Netscape-Commerce/1.12 Your browser sent a non-HTTP compliant message.

Microsoft ESMTP MAIL Service, Version: 5.0.2195.3779

7 2 339
7.2.3 攻击前侦察(续)

公告牌与聊天室

有大量秘密公告牌与聊天室支持信息交换。攻击者可以发现最新漏洞和利用技术,永远不会知道谁正在从因特网上读取信息。

文档的可用性

开发商自身有时也会发布一些对攻击者有用的信息。

7 2 340
7.2.3 攻击前侦察(续)

侦察:结束语

一个计算机站点可能注意到,在短时间内,侦测数量出现异常。但是,一名聪明的攻击者,会采取一种游击战术,即收集一些信息,然后潜伏一段时间,而后再出来收集更多的信息。

防御侦察的最好办法是保持沉默。尽可能少地发布与自己站点相关的信息,不管是人为的,还是通过机器自动发布的。

7 2 4
7.2.4 传输中的威胁:偷听与窃听

实施攻击最简单的方法是偷听。偷听(eavesdrop)这个词语暗示着无须额外努力就能听到。窃听(wiretap)需通过一些努力窃取通信信息。被动窃听(passive wiretapping)只是“听”,与偷听非常相近。而主动窃听(active wiretapping)则意味着还要在通信信息中注入某些东西。窃听是否成功与通信媒介有关。

7 2 442
7.2.4 传输中的威胁:偷听与窃听(续)

电缆

(1) 嗅包器(packet snifter) 软件可以获取一个LAN上的所有数据包。

(2) 可以对一个网卡重新编程,使它与LAN上另一块已经存在的网卡具有相同的地址。

(3) 电缆线会发射无线电波。通过自感应(inductance)过程,入侵者可以从电缆线上读取辐射出的信号,而无须与电缆进行物理接触。

(4) 切断或部分切断电缆,进行分接。

7 2 443
7.2.4 传输中的威胁:偷听与窃听(续)

网络中传输的信号是多路复用(multiplexed)的,意味着在某个特定的时刻不只一个信号在传输。LAN传输的是截然不同的包,但是在WAN上传输的数据,却在离开发送它们的主机以后,经过了复杂的多路复用处理。这样,在WAN上的窃听者不仅需要截取自己想要的通信信号,而且需要将这些信号,从同时经过多路复用处理的信号中区分开来。

7 2 444
7.2.4 传输中的威胁:偷听与窃听(续)

微波

由于通过空气传播,使得微波信号更容易被局外人接触到。微波链路可携带巨大流量,因此,几乎不可能将特定信号,从进行了多路复用处理的其他传输信号分离出来。专用微波链路,不能很好地获得因容量大而产生的保护。

图 7.9 微波信号的路径

7 2 445
7.2.4 传输中的威胁:偷听与窃听(续)

卫星通信

由于在一个几百公里宽上千公里长的区域内都可以截取卫星信号,因此潜在被截取的可能性比微波信号更大。复杂的多路复用处理可以提供信号保护。

光纤

光纤具有两个安全优势:第一,在每次进行一个新的连接时,都必须对整个光纤网络进行仔细调整;第二,光纤中传输的是光能,而不是电能。但是,通信线路中的诸如中继器、连接器和分接器等设备,可能是渗透点。

7 2 446
7.2.4 传输中的威胁:偷听与窃听(续)

无线通信

在防范入侵和骗取连接服务方面无线通信遇到了困难。无线通信主要的威胁不是干扰,而是截取。由于开放性,很容易对一个无线网络连接采用主动或者被动窃听技术。加上无线通信中通常不使用或使用很弱的加密技术,以及一些软件的缺陷,实施截取比想象中的要容易。另一个问题是:无线网络有骗取网络连接的可能性。很多主机都运行了动态主机配置协议(Dynamic Host Configuration Protocol,DHCP),通过该协议,一名客户可以从一个主机获得一个临时IP地址和连接。这个分配机制在用户鉴别方面存在大问题。此外,对这类问题的政策法规也不一致。

7 2 5
7.2.5 窃听技术总结

从安全的角度来看,我们应该假设在网络节点之间所有的通信链路都有被突破的可能。采用加强物理上和管理上的安全保护措施,对于本地连接十分必要。

图 7.10 网络在窃听技术中暴露的弱点

7 2 6
7.2.6 协议的缺陷

互联网联盟为方便详查所有因特网协议,而将它们公开张贴出来。每一种被接受的协议被分配了一个Internet (Request for Comment, RFC)标准(草案)编号。许多协议中存在的问题,被那些敏锐的检查者发现并得到了纠正。但协议本身可能还存在缺陷。

7 2 7
7.2.7 假冒

比采用窃听技术获取网络信息更简单的方法,是冒充另一个用户或另一个进程。在广域网中采用假冒技术比局域网中具有更大威胁。但局域网有时会在未经安全考虑的情况下,就被连接到一个更大的网络中去,这方面的问题也不容忽视。下面讨论一些常见的假冒方式:

通过猜测突破鉴别

方法有:通过简单猜测获取口令、猜测口令为默认口令、休眠账户结合社会工程学获取口令。

7 2 750
7.2.7 假冒(续)

以偷听或者窃听突破鉴别

鉴别的细节在网络上传输时,它们就暴露在网络上任何一个在监视通信的人面前。这样同样的鉴别细节可以被一个假冒者反复使用,直到它们被改变为止。

避开鉴别

对于一个有弱点或者缺陷的鉴别机制来说,攻击者可以绕开鉴别访问系统。在一个典型的操作系统缺陷中,用于接收输入口令的缓冲区大小是固定的,并对所有输入的字符进行计数,包括用于改错的退格符。如果用于输入的字符数量超过了缓冲区的容纳能力,就会出现溢出,从而导致操作系统省略对口令的比较,并把它当做经过了正确鉴别的口令一样对待。

7 2 751
7.2.7 假冒(续)

不存在的鉴别

在UNIX系统中,.rhosts 文件列出了所有可信主机,.rlogin文件列出了所有可信任用户,他们都被允许不经鉴别可以访问系统。这些“可信任主机”也可以被局外人所利用:他们可以通过一个鉴别弱点(比如猜测出来的口令)获取对一个系统的访问,然后就可以实现对另外一个系统的访问,只要这个系统接受来自其可信任列表中的真实用户。

攻击者也可能知道一个系统有一些身份不需要经过鉴别。如,guest或anonymous帐户。

7 2 752
7.2.7 假冒(续)

众所周知的鉴别

采用方便的鉴别数据和众所周知的鉴别方法,有时会使得保护形同虚设。系统网络管理协议SNMP使用了一个公用字符串(community string),这是一个重要的口令,用于公用设备彼此之间的交互。然而,网络设备被设计成可以进行带有最小配置的快速安装,并且很多管理员并不改变这个安装在一个路由器或者交换机中的默认的公共字符串。

可信任鉴别

当身份识别被委托给其他可信任源时,鉴别会成为一个问题。像UNXI系统中的.rhost,.rlogin和/etc/hosts/equiv中的文件,都可能成为潜在漏洞。通过这些漏洞,一名远程用户或者一名远程攻击者可以获取对系统的访问。

7 2 753
7.2.7 假冒(续)

欺骗

欺骗(spoofing),是指一名攻击者在网络的另一端以不真实的身份与目标进行交互。欺骗方式包括:伪装、会话劫持和中间人攻击。

伪装

伪装(masquerade)是指一台主机假装成另一台主机。从攻击者的观点看来,在面具被揭开之前,伪装会带来乐趣。典型的形式有“钓鱼欺诈”(phishing)。在另一种伪装方法中,攻击者利用了受害者网页服务器的缺陷,从而覆盖受害者主页。

7 2 754
7.2.7 假冒(续)

会话劫持

会话劫持(session hijacking)是指截取并维持一个由其他实体开始的会话。假设有两个实体已经进入了一个会话,然后第三个实体截取了他们的通信并以其中某一方的名义与另一方进行会话。

中间人攻击

中间人攻击(man-in-the-middle)是一种与会话劫持相似的攻击形式,也要求有一个实体侵入两个会话实体之间。它们之间的区别在于,中间人攻击通常在会话的开始就参与进来了,而会话劫持发生在一个会话建立之后。

7 2 755
7.2.7 假冒(续)

图 7.11 中间人攻击中的密钥截取

7 2 8
7.2.8 消息机密性面临的威胁

误传

因为网络硬件或者软件中存在一些缺陷,可能会导致消息被误传。与网络缺陷相比,人为的错误出现得更为频繁。

暴露

消息的内容将暴露在临时缓冲区中;遍及整个网络的交换器、路由器、网关和中间主机中;以及在建立、格式化和表示消息的进程工作区中。攻击者可以利用任意环节暴露消息。

流量分析

不仅消息自身是需要保密的,就连存在这条消息这个事实都是需要保密的。这种情况下,我们既需要保护消息的内容,也需要保护标识发送者和接收者的报头消息。

7 2 9
7.2.9 消息完整性面临的威胁

篡改消息

攻击者可能会利用我们对消息的信任来误导我们。特别是,攻击者们可能会:

(1) 改变部分甚至全部消息内容。

(2) 完整地替换一条消息,包括其中的日期和发送者、接收者的身份。

(3) 重用一条以前的旧消息。

(4) 摘录不同的消息片段,组合成一条消息。

(5) 改变消息的来源。

(6) 改变消息的目标。

(7) 毁坏或者删除消息。

7 2 958
7.2.9 消息完整性面临的威胁(续)

可能采取以下我们已经讨论过的方法实施以上攻击:主机窃听、特洛伊木马、假冒、抢占主机、抢占工作站。

噪声

在通信介质上传输的信号会遭到干扰,干扰源可能是相同介质上传输的其他通信和自然干扰源(比如雷电、电机和某些动物)。这些无意干扰通常称为噪声(noise)。通信协议的设计考虑到了这些问题,可以克服噪声的影响。

7 2 10
7.2.10 格式失效

网络通过协议建立起来,攻击者可能寻找协议标准中没有定义的漏洞,破坏这些协议。

异常包

包与其他数据项有特定的格式。域的大小、信号延续位和有特定意义的其他标志,以及为网络服务应用正确处理的标志统称为协议句柄。协议句柄不必检查错误。攻击者可能修改协议句柄,尝试各种错误的组合。当然,大多数情况下,协议处理器可以检查出异常而只影响攻击者。但当错误影响协议器失效,其结果可能导致拒绝服务、整个系统失效或其他严重后果。

7 2 1060
7.2.10 格式失效(续)

协议失效和实现缺陷

(1) 某些网络协议的实现,是很多安全缺陷的源头。不同开发商会编写实现他们自己的服务代码,但他们常常基于通用(有缺陷)的原型。

(2) 协议本身可能是不完整的,没有指定针对特殊情况应该采取什么措施,所以不同的开发商可能产生不同的结果。

(3) 协议可能存在不知道的安全缺陷。

7 2 11
7.2.11 网站漏洞

因为网络几乎完全暴露在用户面前,所以非常脆弱。攻击者在挑战控制权方面具有优势。

网站被“黑”

一种最广为人知的攻击方式是网站被“黑” 。由于网络的设计使得代码可以下载,这就允许攻击者能够获得全部超文本文档和在加载进程中与客户相关的所有程序。网站给攻击者提供了太多弱点,使得网站被“黑”的吸引力大大增加。

7 2 1162
7.2.11 网站漏洞(续)

缓冲区溢出

网页也存在缓冲区溢出问题。最知名的网页服务器缓冲区溢出,也许就是称为iishack的文件名问题。一些网页服务器对极长的参数字段也很容易发生缓冲区溢出。

“../”问题

网页服务器代码应该一直运行在一个受限的环境中。在理想情况下,网页服务器上应该没有编辑器、xterm和Telnet程序,甚至连绝大多数系统应用程序都不应该安装。 但事实常常不是如此。另种阻止攻击的方法是创建一个界地址来限制网页服务器应用程序的执行区域。 但在UNIX和Windows系统中“../”都代表某一个目录的父目录。

7 2 1163
7.2.11 网站漏洞(续)

应用代码错误

网页服务器为了使自己的工作更轻松一些,向用户传递上下文字符串,而要求用户浏览器用全部上下文进行应答。一旦用户可以修改这种上下文内容,就会出现问题。

服务器端包含

服务器端包含(sever-side include)问题利用了网页中可以自动调用一个特定的函数的事实。其中一种服务器端包含命令称为exec,用于执行任意一个存放于服务器上的文件。例如,服务器端包含命令:<!#exec cmd=“/usr/bin/telnet &”> 会以服务器的名义打开一个Telnet会话。

7 2 12
7.2.12 拒绝服务

可用性攻击,有时称为拒绝访问攻击或者DOS攻击,在网络中比在其他的环境中更加值得重视。

传输故障

在一个主干网络(包括因特网)中,其中的许多通信故障问题都是临时出现或者能够自动恢复(通过绕道的方式)的。

连接洪泛

如果攻击者发送了太多数据,以至于通信系统疲于应付,就没空接受其他数据了。因特网协议中有一类协议,称为网间控制报文协议(Internet Control Message Protocol, ICMP),通常用于子系统诊断。

7 2 1265
7.2.12 拒绝服务(续)

ICMP协议与用户应用软件没有联系。ICMP协议包括:

(1) ping:用于要求某个目标返回一个应答,目的是看目标系统是否可以达到以及是否运转正常。

(2) echo:用于请求一个目标将发送给它的数据发送回来,目的是看连接链路是否可靠(ping实际上是echo的一个特殊应用)。

(3) destination unreachable:用于指出一个目标地址不能被访问。

(4) source quench:意味着目标即将达到处理极限,数据包的发送端应该在一段时间内暂停发送数据包。

# 由于这些协议都是在网络堆栈中进行处理的,因此在接收端检测或阻塞这些功能很困难。

7 2 1266
7.2.12 拒绝服务(续)

响应-索取

chargen 是一个产生一串数据包的协议,常用于测试网络的容量。攻击者在主机A上建立一个chargen 进程产生一串包要求主机 B返回,这样形成一个无限循环状态。更有甚者,攻击者将第一个包的目的与源地址都设定为主机 B的地址,主机 B陷入一个循环中,不断地对它自己发出的消息做出应答。

死亡之ping

ping要求接收者对ping请求做出响应,故攻击者需要做的事情就是不断向攻击目标发送大量的ping。

7 2 1267
7.2.12 拒绝服务(续)

smurf

smurf攻击是ping攻击的一个变体。首先,攻击者需要选择不知情的受害者所在的网络。假造受害者的主机地址作为ping包中的源地址,以使ping包看起来像是从受害者主机发出。然后,向整个网络广播发送这个请求。

7 2 1268
7.2.12 拒绝服务(续)

图 7.12 smurf攻击

7 2 1269
7.2.12 拒绝服务(续)

同步洪泛

同步洪泛(syn flood)是另一种流行的拒绝服务攻击。攻击利用了TCP协议组,使用这些面向会话的协议来实施攻击。对于一个协议(比如Telnet),在协议的对等层次之间将建立一个虚拟连接,称为一个会话(session)。

图 7.13 三次连接握手

7 2 1270
7.2.12 拒绝服务(续)

包在传输过程中偶尔会出现丢失或者损坏的情况。因此,在接收端维持着一个称为SYN_RECV连接的队列。攻击者可以通过发送很多SYN请求而不以ACK响应填满该队列。

这种攻击通常使用不存在的返回地址,有两个原因:第一,攻击者不希望泄露真实的源地址,以免被通过检查SYN_RECV对列中的包而试图识别攻击者的来源。第二,攻击者想要使得这些伪造的SYN包与用于建立真实连接的合法SYN包没有区别。每一个包有一个不同的地址。

7 2 1271
7.2.12 拒绝服务(续)

teardrop

teardrop攻击滥用了设计来改善网路通信的特性。一个网络IP数据报是一个变长的对象。数据报协议允许单个数据单元分片,分别发送。在teardrop攻击中,攻击者发送一系列数据报分片,这些数据报分片不能被正确组装。这些在极端情况下,操作系统将把不能重组的数据单元部分锁住,而导致拒绝服务。

7 2 1272
7.2.12 拒绝服务(续)

流量重定向

路由器使用复杂的算法决定如何进行路径的选择。路由器一般是一台带有两块或更多网卡的计算机。假设一台路由器向它的所有邻居路由器报告:它到整个网络的每个其他地址都有最好路径。这台路由器很快就会被大量通信流量所淹没,或者只能将大多数通信一丢了之。

7 2 1273
7.2.12 拒绝服务(续)

DNS攻击

还有一种拒绝服务攻击,事实上是一类基于域名服务器(Domain Name Server, DNS)的攻击。通过接管一个域名服务器或者使其存储一些伪造的表项,称为DNS缓存中毒(DNS cache poisoning),攻击者可以对任何通信进行重定向,这种方式带有明显拒绝服务的含义。

7 2 13
7.2.13 分布式拒绝服务

要实施分布式拒绝服务(distributed denial-of-service, DDoS) 攻击,攻击者需要先后做两件事情。第一件事情,攻击者使用任何一种方便的攻击在目标计算机上植入特洛伊木马,并不要引起任何注意。这样,每个目标系统就成为了一个zombie。第二件事情,选择了某个攻击目标,就从某个位置发送一个信号给所有的zombie,让它们发动攻击,攻击的方式可以多种多样。常见的 DDoS工具有TFN (Tribal Flood Network) ,Trin00和TFN2K (Tribal Flood Network, year 2000 edition)。

7 2 1375
7.2.13 分布式拒绝服务(续)

图 7.14 分布式拒绝服务攻击

7 2 14
7.2.14 来自活动或者移动代码的威胁

活动代码(active code)或移动代码(mobile code)是对被“推入”到客户端执行的代码的统称。

cookie

严格来说,cookie不是活动代码,而是一些数据文件,远程服务器能够存入或读取cookie。cookie是一个对象,可以存放在内存中,也可以为将来使用而存储在磁盘上。在服务器的控制命令下,浏览器将cookie的内容发送给服务器。一些cookie的内容,使用来自服务器的密钥进行加密。 cookie的哲学是“相信我,这对你有好处”。

7 2 1477
7.2.14 来自活动或者移动代码的威胁(续)

脚本

客户可以通过执行服务器上的脚本来请求服务。一些怀有恶意的用户可能会监视浏览器与服务器之间的通信,从而操纵服务器的活动。一种很熟悉的针对网页服务器的攻击方式是escape字符(escape-character)攻击。网页服务器的脚本语言公共网关接口(Common Gateway Interface, CGI) 定义了一种不依赖于具体机器的方法来对通信数据编码。CGI脚本也可以直接在服务器上启动一个动作。如,

<!-#action arg1=value arg2=value ->

攻击者可以用以下命令替代,

<!--#exec cmd="rm *" ->

7 2 1478
7.2.14 来自活动或者移动代码的威胁(续)

微软的动态服务器页面(Active Server Page, ASP)也具有相似脚本的能力。从这里可以看出,服务器永远不要相信来自客户端的任何东西。

活动代码

为了充分利用处理器的能力,服务器可以下载一些代码到客户端去执行。两种主要的活动代码是Java代码(Java code)和ActiveX控件(ActiveX control)。

Java代码

由Java字节码组成的Java程序在一个Java虚拟机(Java virtual machine, JVM)上执行。

7 2 1479
7.2.14 来自活动或者移动代码的威胁(续)

Java程序运行在一个“沙漏”(sadbox),即一个限制了资源的区域,以使程序不能跳出该区域。Java最早的规范称为Java1.1,是相当可靠而又严格的,因而很少使用。 Java1.2规范开放了更多资源,特别是在存储磁盘文件和可执行进程方面,但也开启了更为严重弱点 之门。Java1.2规范的设计是正确的,而实现人员却不能支持由设计者提出的高度安全标准。

7 2 1480
7.2.14 来自活动或者移动代码的威胁(续)

敌意的applet(hostile applet)是一种可以下载的Java代码,会对客户系统造成损害。Dean等列举了安全执行applet的几种必要条件:

(1) 系统必须控制applet对重要系统资源的访问,比如文件系统、处理器、网络、用户显示和内部状态变量等。

(2) 编程语言必须通过阻止伪造内存指针和数组(缓冲区)溢出来保护内存。

(3) 在创建新对象的时候,系统必须通过清除内存内容来阻止对象的重用;在不再使用某些变量的时候,系统应该使用垃圾回收机制来收回所占用的内存。

(4) 系统必须控制applet之间的通信,以及控制applet通过系统调用对Java系统外的环境产生的影响。

7 2 1481
7.2.14 来自活动或者移动代码的威胁(续)

ActiveX控件

微软应对Java技术的措施是ActiveX系列。使用ActiveX控件以后,任何类型的对象都可以下载到客户端。为了阻止任意下载文件,微软使用了一种鉴别方案,鉴别验证的仅仅是源代来源,而不是其的正确性与安全性。不论代码来自何处,你都不能假设它到底有多好或者有多安全。况且,有些弱点还可以允许ActiveX绕过这种鉴别。

7 2 1482
7.2.14 来自活动或者移动代码的威胁(续)

根据类型自动执行

在许多系统中,当一个具有某种扩展名的文件到达时,操作系统会自动调用相应程序来处理它。攻击者常常使用没有明显文件类型的方法来隐藏一个怀有恶意的活动文件。

蠕虫(Bot)

蠕虫(Bot)是黑客机器人,是远程控制的一段有恶意的代码。由蠕虫构成的网络称为botnet。botnet常用于分布式拒绝访问攻击。

7 2 15
7.2.15 综合攻击

脚本小子

如今地下组织已经将很多流行的攻击方式写成了脚本。只要有了一个脚本,攻击者不需要理解攻击原理,甚至不需要知道网络的概念。黑客团体正在积极参与对一些已知的弱点的脚本创建工作。下载并运行攻击脚本的人被称为脚本小子(script kiddie)。

积木

一名专注于某个攻击目标的攻击者可能同时使用几种攻击方式来配合实施破坏。通常,这些攻击是连续进行的,以便每一个攻击部分都建立在以前攻击中收集的信息基础之上。不同的攻击方式组合在一起,就像搭积木一样,可以扩展攻击目标的数量并增加破坏的程度。

7 2 16
7.2.16 网络漏洞总结

表7.4 网络的弱点

7 2 1685
7.2.16 网络漏洞总结(续)

表7.4 网络的弱点(续)

7 3 7 3 1
7.3 网络安全控制7.3.1 安全威胁分析

对网络的安全分析可以采取三个步骤。首先,需要仔细观察一个系统的所有部分,以便我们知道每一个部分都做些什么事情,以及它们之间是如何进行交互的。接下来,需要考虑可能对机密性、完整性和可用性造成什么样的破坏。最后,推测会造成这种破坏的所有可能使用的攻击方式。

7 3 1
7.3.1 安全威胁分析(续)

假定恶意代理Hector想要攻击两个用户Andy和Bo之间的连网通信,可以做如下事情:

(1) 阅读通信内容。

(2) 修改从Andy到Bo的通信内容。

(3) 伪造所谓的从Andy到Bo的通信。

(4) 禁止从Andy到Bo的通信。

(5) 禁止所有通信经过某点。

(6) 在Andy与Bo之间的某台机器C上读取数据。

(7) 修改或者破坏C上的数据。

7 3 188
7.3.1 安全威胁分析(续)

这些威胁可以总结如下:

(1) 在通信中窃听数据;

(2) 访问在远程主机上的程序或者数据;

(3) 修改在远程主机上的程序或者数据;

(4) 修改正在传输的数据;

(5) 插入通信;

(6) 假冒一个用户;

(7) 插入一个重复的或者以前的通信;

(8) 阻塞选定的通信;

(9) 阻塞所有的通信;

(10) 在一个远程主机上运行一个程序。

# 具体的攻击发生,与网络的规模、匿名性、复杂性及对网络的无知、误解连同编程都有关系。

7 3 2
7.3.2 设计与实现

之前讨论过的软件设计与可信操作系统的设计方法,同样适用于开放的Web应用。

7 3 3
7.3.3 架构

网络的架构或设计可能对它的安全有重大影响。可以考虑一下它们的整体架构并计划将安全作为一个主要结构内置进去。

分段

分段从两个方面减少了对网络的危害:分段减少威胁的数量;限制了由于单个弱点而导致的损失的数量。

假设网络面向因特网用户开放了电子商务服务,该网络的基础部分可能是:

(1) 一个网页服务器,用于处理用户的HTTP会话。

(2) 应用软件代码,展示商品和购买服务。

(3) 一个商品数据库,也许还同时提供了一个用于随时对数据库进行统计和供货商推销产品的清单。(4) 一个存放已经获取的订单数据库 。

7 3 391
7.3.3 架构(续)

将这些活动放在同一台机器上,如果机器出现问题会导致整个运营能力被摧毁。对此应考虑分段。当然分段的方式既可以是物理的也可以是逻辑的。

图 7.15 分段结构

7 3 392
7.3.3 架构(续)

冗余

冗余是允许在两个或者更多节点上完成同一种功能。冗余常常使用一种所谓的失效修复模式(failover mode)。多台服务器协同完成一项任务,故障服务器的任务会由其他服务器自动接管。

单一故障点

评价网络体系结构容错能力的一种方法是寻找单一故障点(single points of failure),也就是说,我们会问:网络中是否存在这样的点——一旦它发生故障,将不能访问网络的所有部分或者某个重要部分?消除单一故障点的方法常常需要大量额外开销。

7 3 393
7.3.3 架构(续)

移动代理

移动代码和恶意代理是一个潜在的攻击方法。但也存在好的代理,可以寻找不安全的无线访问点、软件漏洞或嵌入式恶意代码。Schneider和Zhou提出了一个设计方案:没有一个代理对整体成功来说是关键的,但整个组是可信的。

7 3 4
7.3.4 加密

在我们开始研究加密应用来解决网络安全威胁前,先说明如下几点:首先,请记住加密不是灵丹妙药。其次,请注意加密只是保护被加密的内容(这似乎是显然的,其实并不尽然)。最后,加密带来的安全性不会超过密钥管理的安全性。

7 3 495
7.3.4 加密(续)

加密可以应用于两台主机之间(称为链路加密),也可以应用于两个应用软件之间(称为端到端加密)。不管哪种加密形式,密钥分发都是重要问题。

链路加密

在链路加密技术中,系统在将数据放入物理通信链路之前对其加密。加密发生在OSI模型中的第1层(物理层)或第2层(数据链路层) 。应该注意到,在消息经过的路径上的所有中间主机,消息在协议的上层是暴露的。暴露之所以发生,是由于路由和寻址信息不是由低层读取的,而是在更高层上进行的。

7 3 496
7.3.4 加密(续)

图 7.16 链路加密

7 3 497
7.3.4 加密(续)

链路加密对用户是透明的。加密实际上变成了由低层网络协议层完成的传输服务,就像消息寻址或者传输错误检测一样。当传输线路是整个网络最大的弱点时,链路加密就特别适用。如果网络上的所有主机都相当安全,而通信介质是与其他用户共享或者不够安全的,则链路加密就是一种简便易用的方法。

图 7.17 链路加密后的消息

7 3 498
7.3.4 加密(续)

端到端加密

加密可由软件或硬件实现。在这两种情况下,加密都是在OSI模型的高层(第7层,即应用层;也可能是第6层,即表示层)上完成的。这种加密方式可以克服在传输模型的较低层上存在的潜在弱点,即使一个较低层不能保证安全,将它收到的消息泄密了,数据的机密性也不会受到威胁。

7 3 499
7.3.4 加密(续)

图7.18 端到端加密

7 3 4100
7.3.4 加密(续)

图 7.19 端到端加密的消息

7 3 4101
7.3.4 加密(续)

即使消息必须经过A和B之间的路径上潜在的不安全节点传递(比如C到G),也能够防范在传输中消息泄密。

图 7.20 通过主机传递的加密消息

7 3 4102
7.3.4 加密(续)

链路加密与端到端加密的比较

对消息进行简单加密不能绝对保证在传输过程中或者在传输之后它不会被泄密。因为安全包含很多方面的内容,所以我们必须在攻击的可能性与保护措施上求得均衡,而不必强调绝对安全保证。在链路加密方式中,如果一个网络最终决定采用链路加密,通常是对网络中的所有链路都进行加密处理。

7 3 4103
7.3.4 加密(续)

端到端加密则应用于“逻辑链路”。加密仅仅用于需要进行加密处理的消息和应用软件。我们可以有选择地进行加密,有时对一个应用进行加密,有时甚至可以对一个特定应用中的某一条消息进行加密。当考虑加密密钥时,端到端加密的可选择性优点却变成了一个缺点。在某些情况下,两种加密方式可以混合使用。

7 3 4104
7.3.4 加密(续)

表 7.5 链路加密与端到端加密的比较

7 3 4105
7.3.4 加密(续)

虚拟专有网络

链路加密可以为网络用户提供一种环境,在这种环境中,使他们感觉仿佛处在一个专有网络中,甚至这只是公共网络的一部分也是如此。由于这个原因,这种方法被称为虚拟专有网络(Virtual Private Network, VPN)。

防火墙是一种访问控制设备,常常安置在两个网络或者两个网络段之间。它过滤了在受保护的(即“内部”)网路与不可信的(即“外部”)网路或网络段之间的所有流量。

7 3 4106
7.3.4 加密(续)

许多防火墙都可用于实现VPN。当用户第一次与防火墙建立一个通信时,用户可以向防火墙请求一个VPN会话。用户的客户机与防火墙通过协商获得一个会话加密密钥,随后防火墙和客户机使用该密钥对它们之间的所有通信进行加密。这样,我们说通信经过了一个加密隧道或者隧道。

图 7.21 建立虚拟专有网络的过程

7 3 4107
7.3.4 加密(续)

在防火墙与网络周界内的鉴别服务器交互时,建立虚拟专有网络。防火墙会将用户鉴别数据传递给鉴别服务器,在确认了用户的鉴别身份以后,防火墙将给用户提供适当的安全特权。 防火墙在VPN的基础上实现了访问控制。

图7.22 VPN允许特权访问

7 3 4108
7.3.4 加密(续)

PKI与证书

公钥基础设施(Public Key Infrastructure, PKI)是一个为实现公钥加密而建立的系统,常常用于一些大型(和分布式)应用环境中。PKI为每一个用户提供了一套与身份鉴别和访问控制相关的服务,包括:

(1) 使用(公开的)加密密钥建立与用户身份相关的证书。

(2) 从数据库中分发证书。

(3) 对证书签名,以增加证书真实性的可信度。

(4) 确认(或者否认)一个证书是有效的。

(5) 无效证书意味着持有该证书的用户不再被允许访问,或者他们的私钥已经泄密。

7 3 4109
7.3.4 加密(续)

PKI常常被当作一种标准,但事实上它定义了一套策略、产品和规程的框架。PKI建立的一些实体,称为证书管理中心(certificate authority),实现了PKI证书管理规则。通常,我们都认为证书管理中心是可信赖的。可将证书管理中心的活动概括如下:

(1) 对公钥证书的整个生命周期进行管理。

(2) 通过将一个用户或者系统的身份绑定到一个带有数字签名的公钥来发放证书。

(3) 为证书安排终止日期。

(4) 通过发布证书撤销列表来确保证书在需要的时候被撤销。

7 3 4110
7.3.4 加密(续)

PKI还包含一个注册管理中心(registration authority),充当用户和证书管理中心之间的接口。注册管理中心获取并鉴别用户的身份,然后向相应的证书管理中心提交一个证书请求。注册管理中心的性质决定了所发放证书的信任级别。

许多国家正在为实现PKI而努力,目的是允许公司和政府代理实现PKI和互操作。主流KPI解决方案开发商包括Baltimore Technologies、Northern Telecom/Entrust以及Identrus。

绝大多数PKI进程使用证书来将身份与一个密钥绑定在一起。但是,目前正在研究将证书的概念扩展为一些更广的信任特征。简单分布式安全基础设施(Simple Distributed Security Infrastructure, SDSI)包含身份证书、组成员关系证书和名称绑定证书。

7 3 4111
7.3.4 加密(续)

PKI还是一个不成熟的处理方案,仍有很多问题有待解决,尤其是PKI还没有在大规模的应用环境中实现。首先,证书管理中心应该经过独立实体的批准和验证。其次,对证书的访问和注册管理中心的访问应该进行严密控制,通过一些强用户鉴别方式(比如智能卡)可加以实现。

在对证书进行保护时涉及到的安全问题还包括管理过程。 还应该设置一些控制措施来检测黑客并阻止他们发布伪造的证书请求。还必须进行安全审计跟踪,以便在系统出现故障时能够重建证书信息,以及在攻击真正破坏了鉴别过程时能够恢复。

7 3 4112
7.3.4 加密(续)

SSH加密

安全外壳协议(Secure Shell Protocol,SSH),是一对协议,为shell或者操作系统命令行解释器提供了一个鉴别和加密的通道。为实现远程访问,SSH的两个版本实际都取代了UNIX的系统工具,比如Telnet,rlogin和rsh等。SSH能有效防止欺骗攻击和修改通信数据。

SSH协议还包括在本地与远程站点之间协商加密算法(比如,DES,IDEA和AES算法)以及鉴别(包括:公钥和Kerberos)。

7 3 4113
7.3.4 加密(续)

SSL加密

安全套接层(Secure Sockets Layer, SSL)协议最初是由Netscape公司设计来保护浏览器与服务器之间的通信。也称传输层安全(Transport Layer Security, TLS)。SSL实现了应用软件与TCP/IP协议之间的接口,在客户与服务器之间提供服务器鉴别、可选客户鉴别和加密通信通道。

SSL只保护从客户端浏览器到服务器解密点这一段。从用户键盘到浏览器,以及接收者的网络,数据都将被泄漏。Blue Gem Security公司设计的LocalSSL可以提供从键盘到浏览器的保护。

7 3 4114
7.3.4 加密(续)

IPSec

IPv6(IP协议组的第6个版本)的新结构解决了寻址问题。这次重构地址,也为因特网工程任务组(Internet Engineering Task Force, IETF )解决已知严重的安全问题,提供了一个非常好的机会。 IETF采用了 IP安全协议组(IP Security Protocol Suite, IPSec)。 IPSec协议是在IP层上实现的,所以它会影响到上面各层,特别是TCP和UDP。IPSec被设计成与具体的加密协议无关,并允许通信双方就一套互相支持的协议达成一致。IPSec的基础是所谓的安全关联(security association),本质上是为一个安全通信信道提供的一套安全参数。

7 3 4115
7.3.4 加密(续)

安全关联包括:

(1) 加密算法与模式(例如,CBC模式的DES算法)。

(2) 加密密钥。

(3) 加密参数,比如初始化向量。

(4) 鉴别协议和密钥。

(5) 关联的生命周期,在长时间进行会话时,允许尽可能频繁地选择新的加密密钥。

(6) 关联对应端的地址。

(7) 受保护数据的敏感级别(可用于数据分类) 。

7 3 4116
7.3.4 加密(续)

安全关联是由一个安全参数索引(Security Parameter Index, SPI)来选择的,这是一个数据元素,实际上是一个指向一张安全关联表的指针。

IPSec的基本数据结构是鉴别头部(Authentication Header, AH)和封装的安全负载(Encapsulated Security Payload, ESP)。ESP取代(包含)了一个包的传统TCP头部和数据部分,物理头部和尾部依赖数据链路层和物理层通信介质。

图 7.23 包 :(a)传统的包;(b) IPSec包

7 3 4117
7.3.4 加密(续)

ESP包含了鉴别部分和加密部分。每当一个使用相同SPI的包传送到同一个地址时,序号加1,以排除包重放攻击。负载数据是包的实际数据。使用固定大小的块,所以使用了填充因子和填充长度字段,指明填充的数据和数量,使得负载数据保持一个合适的长度。下一个头部指出了负载数据的类型。鉴别字段负责对整个对象的鉴别。

图 7.24 封装的安全包

7 3 4118
7.3.4 加密(续)

IPSec针对密钥管理需要使用了因特网安全关联密钥管理协议(Internet Security Association Key Management Protocol, ISAKMP)。ISAKMP要求为每一个安全关联生成一个唯一的密钥。在IPSec中,通过ISAKMP密钥交换(IKE, ISAKMP Key Exchange)方式来实现,IKE提供了一种方法来协商并管理协议、算法和密钥。 IKE使用Diffie-Hellman方案建立密钥、也可进行鉴别或更新密钥。

IPSec可以用于多种目的下的加密会话,包括VPN、应用软件和低层网络管理(比如寻址)。

7 3 4119
7.3.4 加密(续)

签名代码

活动代码将使用下载它的用户的特权运行,这样,将会造成很严重的破坏,从删除文件、发送电子邮件消息,到使用特洛伊木马造成轻微而难以察觉的损害等。签名代码(signed code)是减少这种危险的一种方法。PKI可以实现签名,然而,谁可以担当可信第三方仍然是一个问题。

7 3 4120
7.3.4 加密(续)

加密的E-mail

一个电子邮件消息很像一张明信片的背面。经手明信片传递的任何人都可以阅读其中的地址和消息。我们可以使用加密来保护消息的机密性及其完整性。其中的密钥管理是困难的问题。密钥管理方法有两种:分别是使用层次的、基于证书的PKI方案来交换密钥以及使用单一的、个人对个人的交换方式。分层方法有S/MIME,个人方法有PGP。

7 3 5
7.3.5 内容完整性

我们需要考虑三种潜在的内容完整性威胁:

(1) 以一种有意义的方式改变内容的恶意的修改。

(2) 以一种不一定有意义的方式改变内容的恶意或无恶意的修改。

(3) 以一种不能被检测的方式改变内容的无恶意的修改。

7 3 5122
7.3.5 内容完整性(续)

纠错码

可以使用错误发现码(error detection)和纠错码(error correction codes )来发现对数据进行的修改。最简单的检错码是奇偶检测(parity check)。奇偶校验的两种方式分别称为偶校验和奇校验。在偶校验(even parity)方式中,如果所有数据位的和是偶数,则校验位为0;如果和是奇数,则校验位为1,也就是保证总和始终为偶数。奇校验(odd parity) 是保证总和始终为奇数。

还有一些其它类型的错误检测码,比如哈希编码(hash code)和哈夫曼编码(Huffman code)。一些更复杂的编码可以检查出多位错误而且可以纠正错误。这些方法常常用于无恶意的数据修改。

7 3 5123
7.3.5 内容完整性(续)

密码校验和

密码校验和(cryptographic checksum)[有时也称消息摘要(message digest)]是一个加密函数,可以产生一个校验和。这种加密方式使得攻击者修改数据块(明文)就会相应地修改与之匹配的校验和的值(密码),从而能够检测出数据被修改,达到阻止攻击的目的。代码防篡改保护和传输中消息完整性保护是密码校验和的主要功能。

7 3 6
7.3.6 强鉴别

对网络环境也需要加以鉴别。然而,在网络中,安全地实现鉴别可能会更加困难,因为网络环境中可能出现窃听和偷听,而这在未连网的环境中几乎是不会发生的。存在于自治的分布式系统中的鉴别问题是,怎样提高对网络实体的信任,而这些实体之间没有任何关系。

7 3 6125
7.3.6 强鉴别(续)

一次性口令

一次性口令(one-time password)只能使用一次。为了解决维护口令列表的麻烦,可以使用一个口令令牌(password token),这是一种专门的设备,用于产生一个不能预测但可以在接收端通过验证的口令。

这种方法的主要优缺点是:首先,优点是它容易使用,因为杜绝了通过偷听重用口令的可能性。由于它采用了一种强口令生成算法,所以也能避免被欺骗。然而,主要缺点是如果丢失了口令生成器,或者遇到更糟糕的情况,口令生成器落入一名攻击者的手中,系统就会面临危险。

7 3 6126
7.3.6 强鉴别(续)

挑战-响应系统

通过一些鉴别消息的交互实现鉴别,但是,仍然存在鉴别信息的存储问题。

Digital分布式鉴别

需要在一个计算系统中鉴别除人之外的其他实体。为此, Digital Equipment Corporation建立了一种简单的结构,能有效防范以下威胁:

(1) 一个无赖进程假冒其中一台服务器,因为两台服务器都涉及到鉴别。

(2) 窃听或者修改服务器之间交换的数据。

(3) 重放一个以前的鉴别。

7 3 6127
7.3.6 强鉴别(续)

系统使用实体的公钥进行鉴别,并且只要服务器A和服务器B的任何一方选择一个加密密钥,并在鉴别消息中将密钥发送给对方,就可以由此建立起一个私有信道。这种鉴别机制在实现的时候仍然需要解决两个难题:怎样才能发布大量的公钥?这些公钥怎样发布才能确保安全地将一个进程与该密钥进行绑定?

7 3 6128
7.3.6 强鉴别(续)

Kerberos

Kerberos是一个系统,支持在分布式环境中实现鉴别。在最初设计时,采用的是对称密钥加密的工作方式。在最近的版本中,使用公钥技术支持密钥交换。Kerberos用于智能进程之间的鉴别。

Kerberos的思想基础是:中心服务器提供一种称为票据(ticket)的鉴别令牌,向应用软件提出请求。其中,票据是一种不能伪造、不能重放和鉴别的对象。也就是说,它是一种用户可以获得的用于命名一个用户或者一种服务的加密数据结构,其中包含一个时间值和一些控制信息。

7 3 6129
7.3.6 强鉴别(续)

图7.25 启动一个Kerberos会话

口令存放在Kerberos服务器上,而不是在工作站上,而且用户的口令不需要以任何形式通过网络传递。将口令集中管理而不通过网络传递是一个安全性方面的优点。

7 3 6130
7.3.6 强鉴别(续)

图7.26 获取访问文件的票据

7 3 6131
7.3.6 强鉴别(续)

Kerberos通过仔细地设计来抵御分布式环境中的各种攻击:

(1) 网络中无口令通信:我们已经介绍过,用户的口令只存放在Kerberos服务器上。

(2) 加密保护可以防止欺骗:每一次访问请求都要经过票据授权服务器的鉴别,而授权服务器知道请求者的身份,判断的依据是Kerberos服务器开始时完成的鉴别。

(3) 有限的有效期:每一个票据在分配的时候都预先规定了一个有限的时间段。

(4) 时间戳阻止重放攻击:Kerberos要求可靠地访问统一的时钟。每一个用户对服务器的请求都以请求时刻作为标记。

(5) 双向鉴别:使用服务的用户通过请求一个来自服务器的鉴别响应,可以确定任何服务器的真实性。

7 3 6132
7.3.6 强鉴别(续)

Kerberos不是解决分布式系统安全问题的完美答案,而且存在着以下问题:

(1) Kerberos要求一台可信任的票据授权服务器连续可用:无论是可靠性(硬件或者软件故障)问题还是性能(容量和速度)问题都必须给予妥善解决。

(2) 服务器的真实性要求在票据授权服务器于每一台服务器之间保持一种信任关系:票据授权服务器与每一台“值得信赖的”服务器之间都必须共享一个唯一的加密密钥。

(3) Kerberos要求实时传输:希望将票据的有效期设计得恰到好处也是相当困难的;如果设计得太长,就会让重放攻击者有可乘之机;但如果设计得太短,又会要求频繁地提示用户进行响应,而且可能会冒一定的风险。

7 3 6133
7.3.6 强鉴别(续)

(4) 一个被暗中破坏的工作站可以存储用户口令并在稍后重放该口令。

(5) 口令猜测仍能奏效:返回给用户的原始票据是使用用户的口令加密的。

(6) Kerberos不具有可伸缩性:假如为了提高系统的性能和可靠性,我们增加了第二台票据授权服务器,这就会要求对所有的服务器复制密钥或者使用另外一套新密钥。

(7) Kerberos是一整套解决方案,不能与其他方案结合使用:所有的应用软件都必须使用Kerberos鉴别和访问控制。

7 3 6134
7.3.6 强鉴别(续)

图7.27 在Kerberos中对服务器和服务的访问

7 3 7
7.3.7 访问控制

访问控制解决安全策略中如何实施访问及允许访问什么内容的问题。

路由器上的ACL

路由器的主要任务是定向网络流量,它们将流量发送到自己所控制的子网,或者发送给其他路由器,以便随后传递到其他子网。路由器将外部IP地址转换成本地子网中对应主机的内部MAC地址。

假设有一台主机被一台恶意的无赖主机发送来的数据包塞满了(被淹没了),可以配置路由的访问控制列表(Access Control List, ACL),使其拒绝某些特定主机对另一些特定主机的访问。

7 3 7136
7.3.7 访问控制(续)

这种方法存在几个问题:

(1) 增加一个ACL就会降低路由器的性能;增加的ACL太多,就会使路由器的性能变得使人不能接受。

(2) 第二个问题也是一个效率问题:因为路由器要做大量工作,所以被设计为仅提供一些必要的操作。日志记录工作通常不会在路由器上进行处理,然而,对ACL而言,日志却是很有用的。由于路由器不提供日志记录服务,所以我们不可能知道一个ACL是否被使用了。

7 3 7137
7.3.7 访问控制(续)

(3) 在路由器上设置ACL的最后一个限制是出于对攻击本身的考虑。攻击者通常不会暴露实际的源地址。所以路由器的ACL仅仅是在攻击者发送很多使用相同的伪造源地址的数据报时才会有用。

# 路由器是一个出色的访问控制点,因为它处理了子网中每一个流入和流出的包。 但通常只在子网中考虑使用路由器的ACL。

7 3 7138
7.3.7 访问控制(续)

防火墙

防火墙被设计来完成不适合路由器做的过滤工作。这样,路由器的主要功能是寻址,而防火墙的主要功能是过滤。防火墙甚至可以检查一个包的全部内容,包括数据部分。

7 3 8
7.3.8 无线安全

无线安全需要分段保护,指发现无线访问点、鉴别连到访问点的远程计算机以及保护通信流。

SSID

服务区标识符(Service Set Identifier, SSID)是无线访问的识别标志,是32个字符的字符串。显然,SSID在给定区域内应该是唯一的,以区别不同的无线网络。现在大多数出厂的默认值是与设备相关的唯一序列号。

7 3 8140
7.3.8 无线安全(续)

客户端和无线访问点通过握手来彼此定位,这是第一步。在“开放模式”下,无线访问点可以连续广播它的请求,表明它是开放的。协议中的“关闭”或“隐身模式”(stealth mode)的顺序相反:在无线访问点对一个邀请连接的查询做出响应之前,客户端先发送寻找特定无线访问点SSID的信号。

7 3 8141
7.3.8 无线安全(续)

WEP

无线通信安全的第二步涉及加密。802.11无线标准依赖的加密协议称为有线等效保密(Wired Equivalent Privacy, WEP)协议。WEP提供的用户保密性等效于有线专用线路的保密性,可防止偷听和假冒攻击。WEP在客户端与无线访问点间使用共享密钥。

WEP标准使用64或128位密钥。用户可以使用任何方式输入密钥。除开密钥选择的可能脆弱性,在算法中的使用方式决定了密钥的有效长度只有40位或104位。以WEPCrack和AirSnort开始,有几个工具帮助攻击者通常能在几分钟内破解WEP加密。遗憾的是,一些在市场流行的无线设备仍在使用WEP的假安全。

7 3 8142
7.3.8 无线安全(续)

WPA和WPA2

替代WEP的一项安全技术是2003年通过的WiFi保护访问(WiFi Protected Access, WPA)。2004年通过了WPA2,它是IEEE标准802.11i,是WPA的扩展版。WPA做了如下改进:

(1) WPA有一种密钥改变方法,称为临时密钥完整程序(Temporal Key Integrity Program, TKIP),使用TKIP可针对每个包自动改变密钥。

(2) WPA使用可扩展认证协议(Extensible Authentication Protocol, EAP),在这种协议中,口令、令牌、数字证书或其他机制均可用于鉴别。

(3) WPA2增加AES作为可能使用的加密算法和64位加密的完整性检查。

7 3 8143
7.3.8 无线安全(续)

WPA和WPA2建立的协议比WEP的更健壮。对于WPA建立涉及三个协议步骤:鉴别、4回合握手(确保在通信的两端,为加密与完整性生成并安装密钥)和可选的组密钥握手(针对组播通信)。但无线设备的处理器能力有限,成了使用计算量大的公钥加密的一个限制因素。

7 3 9
7.3.9 警报与警戒

入侵检测系统(intrusion detection system)是一种安置在受保护网络内部的设备,用来监视网络中发生了什么事情。如果攻击者能够穿过路由器和防火墙,入侵检测系统提供了一个检测攻击的机会,可以在攻击的开始、进行过程中或者攻击发生以后对攻击进行检测。

图 7.28 网络分层保护

7 3 10
7.3.10 蜜罐

蜜罐(honeypot)是一个向攻击者们敞开的计算机系统。出于以下几个原因可能会使用蜜罐:

(1) 观察攻击者在干什么,目的是学习一些新的攻击技术(从而可以加强防御来阻止这些新的攻击方式)。

(2) 引诱一名攻击者到某个地方去,在那里你可以了解到更多与攻击者有关的东西,从而识别并阻止他。

(3) 为攻击者提供一个吸引力但却是用于转移注意力的场所,希望以此来让他们远离真正的系统。

蜜罐没有特殊的特征。它只是一个计算机系统或者一个网段,其上有一些服务器、一些服务以及一些数据。蜜罐有两个难点:建立让人信任的、有吸引力的假环境;暗中限制和监视攻击者。

7 3 11
7.3.11 通信流安全

如果攻击者检测到两点之间出现了异常数量的通信,他就能够推测出即将发生的事件的位置。针对通信流威胁的对策是对通信流进行伪装。一种伪装通信流的方法是在通信的两点之间保持一个稳定数量的通信流。这种方法虽然要花费较大的代价而且显得很原始,但却相当奏效。

一种更复杂的保证通信流安全的方法称为洋葱型路由(onion routing)。每一次包装都使用了与中间接收者对应的密钥进行加密。

7 3 11147
7.3.11 通信流安全(续)

在这种方案中,任何中间接收者(不是最初发送者和最终接收者的中间传递者)既不知道包起源于哪里,也不知道结束于何处。这种方案为消息的内容、源地址、目的地址以及路由信息提供了机密性保证。

图 7.29 洋葱型路由算法(AB)

7 3 12
7.3.12 控制措施总结

网络安全设计人员有很多工具供他们选择。其中一些工具,比如加密、访问控制与鉴别、编程控制,与我们在前面几章中讨论过的相关内容相似。但是,其中有三种工具是网络环境中所特有的,防火墙、入侵检测系统和加密电子邮件。防火墙用于控制进出被保护网段的通信流;入侵检测系统用于监视网络内的通信量,以发现正在实施或者即将发生的潜在攻击;而加密电子邮件使用加密来提高电子消息的机密性或者真实性。

7 4 7 4 1
7.4 防火墙7.4.1 什么是防火墙

防火墙是在受保护的(或“内部”)网与不太可信的(或“外部”)网之间对所有通信量进行过滤的设备。防火墙通常运行在专有设备上。一方面,因为它是信息流必须通过的地点,性能是最重要的,这意味着不属于防火墙的功能就不应该在这台机器上运行。另一方面,因为防火墙本身是可执行代码的,如果在同一台机器安装了其他工具,就会使得攻击者可能会损害这些代码的安全,并从运行防火墙的机器上执行代码。因此,防火墙代码通常运行在私有或经过精心裁减的操作系统上。

7 4 1
7.4.1 什么是防火墙(续)

用防火墙保护网络的部分困难,在于采取何种安全策略能够满足安装需要。尤其是对防火墙的默认行为。对此有两种学术思想,一种认为未明确禁止的就是允许的(默认允许),另一种认为未明确允许的就是禁止的(默认拒绝)。用户通常支持前者,而安全专家通常支持后者。

7 4 2
7.4.2 防火墙设计

防火墙是引用监视器的特殊形式。仔细定位防火墙在网络中的位置,可以保证我们想控制的网络访问必须穿过防火墙。防火墙通常进行了很好的隔离,这就使得其不易被修改。防火墙设计者还强烈推荐保持防火墙功能简单化。

7 4 3
7.4.3 防火墙的类型

防火墙类型包括:包过滤网关或屏蔽路由器、状态审查防火墙、应用代理、门卫、个人防火墙。

一般来讲,屏蔽路由器往往实现相当简化的安全策略,而门卫和代理网关有更丰富的安全策略可供选择。在选择防火墙时,要问的重要的问题是:我们安装防火墙究竟为了解决什么问题。

因为防火墙是一种主机类型,常常和高质量的工作站一样是可编程的。但是,防火墙的开发者要求防火墙功能最少。需要最少化约束的最好理由是:给攻击者尽可能小的帮助。这样,防火墙一般不设置用户账户。所以,没有口令文件需要被隐藏。

7 4 3153
7.4.3 防火墙的类型(续)

包过滤网关

包过滤网关根据包地址(源或目的)或特定传输协议类型(如基于HTTP协议的Web通信)来控制包访问内部网络。位于路由器后面(靠近本地网络一侧)的隔离防火墙会在信息流到达受保护网络之前对其进行过滤,从而不损失路由器的性能。

7 4 3154
7.4.3 防火墙的类型(续)

7.30 包过滤器阻止某些地址和协议示意图

7 4 3155
7.4.3 防火墙的类型(续)

图 7.31 三个连接的LAN

7 4 3156
7.4.3 防火墙的类型(续)

包过滤器看不见包的内容,仅仅根据IP地址和端口来决定拒绝或者接收包。因此,包数据部分的细节超出了包过滤器的处理能力。

包过滤器能实现一个很重要的服务:保证内部地址的有效性。包的源地址是可以伪造的,包过滤器位于内部网络和外部网络之间,所以能知道外部包是否在伪造内部地址。屏蔽包过滤器可通过配置来拒绝所有来自外部的包,即使它们声称的源地址是内部地址。

7 4 3157
7.4.3 防火墙的类型(续)

包屏蔽路由器的主要缺点在于它是简单性和复杂性的结合物。路由器的检查相对简单;而要实现复杂的过滤,过滤规则集要求相当详细。详细的规则集会很复杂,因此容易出错。

图 7.32 过滤屏蔽外部地址

7 4 3158
7.4.3 防火墙的类型(续)

状态审查防火墙

状态审查防火墙(stateful inspection firewall)用于在输入流中从一个包到另一个包的过渡时维护状态信息。攻击者可能将一个攻击包分割成多个包,使得每个包具有很短的长度。这样,防火墙就检查不到分布在多个包中的攻击信号。状态审查防火墙通过跟踪包序列和从一个包到另一个包的状态来防止这种攻击。

7 4 3159
7.4.3 防火墙的类型(续)

应用代理

应用代理网关(application proxy gateway) (亦称堡垒主机,bastion host)是一种防火墙,能模拟应用软件的(正常)效果,使应用软件仅接受正常的活动请求。也就是,对内部,看起来好像是外部(目的)连接;对外部,按内部的响应方式进行响应。

应用代理运行伪应用软件。比如,发送邮件,代理网关在中间介入了协议交换,使整个系统看起来就像目的方在与位于防火墙外部的发送方通信,而发送方在与内部真正的目的方通信一样。这样,处于中间的代理就有机会过滤邮件传输,以保证只有可接受的邮件协议命令送达目的地。

7 4 3160
7.4.3 防火墙的类型(续)

可对防火墙上的代理进行裁减以适应特殊要求(比如要求记录访问细节),甚至能把与内部功能相异的部分呈现给普通的用户接口。假设内部网络有多种类型的操作系统,每种操作系统均不能通过挑战-响应支持强鉴别。代理可以要求强鉴别(姓名、口令和挑战-响应),并执行挑战-响应协议,然后以特定内部主机操作系统要求的格式传递简单的姓名和口令等鉴别细节。

代理与屏蔽路由器的区别在于:代理面向应用软件解析协议流,根据协议内部可见的内容而不是仅仅根据头部数据来控制穿越防火墙的行为。

7 4 3161
7.4.3 防火墙的类型(续)

7.33 防火墙代理的动作

7 4 3162
7.4.3 防火墙的类型(续)

门卫

像代理防火墙一样,它接收协议数据单元并解析它们,然后使用相同或不同的协议数据单元传递相同的或经过修改的数据。门卫能提供的控制程度是有限的,仅限于一些可计算的内容。门卫和代理防火墙极为相似,二者的区别有时很模糊。

7 4 3163
7.4.3 防火墙的类型(续)

门卫的活动是相当精密复杂的,看过以下示例就能明白:

(1) 某大学想要限制学生使用电子邮件,要求在最近若干天中的消息数或电子邮件字符数不能超过某个上限。

(2) 某学校想让学生能够访问万维网,但由于其连接速度慢,故只允许他们在下载图像时仅能下载有限的字符数。

(3) 某图书馆想使某些文献可以被访问,但考虑到支持合理使用版权的问题,仅允许用户检索文献中开始的部分内容,超出的部分要求用户付费,并将费用转交给作者。

(4) 某公司想允许员工以FTP方式获取文件。但为防止病毒入侵,需要对所有传入的文件进行病毒扫描。

# 由于门卫实现的安全策略比代理复杂,所以门卫的代码相应更复杂,因此更容易出错。

7 4 4
7.4.4 个人防火墙

个人防火墙(personal firewall)是一种应用程序,运行在工作站上,用来隔离不希望的、来自网络的通信量。个人防火墙是常规防火墙功能的补充,可以针对单个主机设置可接受的数据类型,或者在用专有DSL或线缆调制解调器连接因特网时,用来弥补常规防火墙中缺少的过滤规则。个人防火墙过滤单个工作站的通信量。

已有商业个人防火墙,如Symantec公司的Norton个人防火墙、McAfee个人防火墙和Zone实验室的Zone Alarm(现所属为Check Point)。

7 4 4165
7.4.4 个人防火墙(续)

个人防火墙经过配置后可以实施一些安全策略,也产生访问日志。把病毒扫描器和个人防火墙结合在一起使用不但有效,而且效率高。例如,个人防火墙会将所有进入的电子邮件定位到病毒扫描器,在那里可以对每个已经到达了目的主机但未打开的附件进行检查。

个人防火墙运行在它所要保护的计算机上,也能对不在网络防火墙保护范围内的客户提供合理的保护。

7 4 5
7.4.5 几种类型防火墙的比较

表 7.6 几种类型防火墙比较

7 4 6
7.4.6 防火墙配置举例

图7.34 带有屏蔽路由器的防火墙

图7.35 在分离 LAN中的防火墙

7 4 6168
7.4.6 防火墙配置举例(续)

屏蔽路由器和代理防火墙双配置。代理防火墙根据其代理规则过滤通信量。如果屏蔽路由器遭到破坏,也只有到代理防火墙的通信量是可见的,而受保护的内部LAN上的敏感信息仍然不可见。

图7.36 具有代理和屏蔽路由器的防火墙

7 4 7
7.4.7 防火墙能阻止什么,不能阻止什么

防火墙只能保护其环境的周界,以防止在保护环境内的机器上执行代码或访问数据的外来者实施的攻击。关于防火墙,请牢记以下几点:

(1) 仅当防火墙控制了全部周界才能保护其环境。即使只有一台内部主机直接连接(如用调制解调器)到一个外部地址,整个内部网络都容易受到攻击。

(2) 防火墙不能保护周界以外的数据,穿越防火墙出去(出站)的数据将失去防火墙的保护。

(3) 对外部而言,防火墙是整个结构中可见部分最多的设备,采取几个不同的层次进行保护[称为“纵深防御”(defense in depth)]的措施比仅依赖单个防火墙的能力要好。

7 4 7170
7.4.7 防火墙能阻止什么,不能阻止什么(续)

(4) 防火墙必须进行正确配置,配置必须能随着内部和外部环境的改变而更新,对防火墙的活动报告必须进行定期检查以搜集企图入侵或者成功入侵的证据。

(5) 防火墙是入侵者的目标。然而,设计来抵御攻击的防火墙并不是牢不可破的。

(6) 防火墙对运行进入内部的内容只能进行很少的控制,这意味着对不正确的数据或恶意代码必须由周界内的其他方式进行控制。

slide171
7.5 入侵检测系统

控制大多数采取的是预防性措施,阻止一些已知的糟糕事情发生。大多数计算机安全事故都是由内部人员造成的,因为内部人员的活动不受防火墙的控制。预防固然重要,但当不能进行完全的计算机安全控制时,事故发生期间的检测,能处理预先不能阻止的伤害。

入侵检测系统作为防御的下一道防线弥补了这些预防控制措施的不足。入侵检测系统(Intrusion Detection System, IDS)是一种设备,通常是一台独立的计算机,通过监视内部的活动来识别恶意的可疑的事件。

slide172
7.5 入侵检测系统(续)

IDS能实现多种功能:

(1) 监视用户和系统活动。

(2) 审计系统配置中存在的弱点和错误配置。

(3) 评估关键系统和数据文件的完整性。

(4) 识别系统活动中存在的已知攻击模式。

(5) 通过统计分析识别不正常活动。

(6) 管理审计跟踪,当用户违反策略或正常活动时,给出警示。

(7) 纠正系统配置错误。

(8) 安装、运行陷阱以记录入侵者的相关信息。

7 5 1 ids
7.5.1 IDS的种类

两种常用的入侵检测系统是基于标记的IDS和启发式的IDS。基于标记(Signature-based)的入侵检测系统实现简单的模式匹配,并报告与已知攻击类型的模式匹配情况。启发式(Heuristic)的入侵检测系统(又称基于异常的入侵检测系统)建立了一个可接受行为模型,并对该模型的出错情况加以标记,在以后使用时,管理员可以将带标记的行为作为可接受的行为,以便启发式IDS把以前未分类的行为作为可接受的行为进行处理。

7 5 1 ids174
7.5.1 IDS的种类(续)

入侵检测设备可以是基于网络(network-based)的IDS是附加在网络上的一台单独的设备,监视经过该网络的通信量;也可以是基于主机(host-based)的IDS运行在单个工作站、客户端或主机上,用于保护该主机。

如今的入侵检测系统采用实时(或近似实时)运行方式,监视活动并及时向管理员报警,以便采取保护措施。

7 5 1 ids175
7.5.1 IDS的种类(续)

基于标记的入侵检测

一些典型的攻击会出现如下情况,一系列的TCP SYN包被连续发往许多不同的端口,而且有时彼此很接近。这是端口扫描时会发生的情况。同样,如果收到数据长度为65 535字节的ICMP包,表明某些协议栈的实现出现了故障,这样的包就是一种需要观察的模式。

7 5 1 ids176
7.5.1 IDS的种类(续)

基于标记的检测中存在的问题就是标记本身。攻击者会对一种基本的攻击方式加以修改,使之与这种攻击的已知标记不匹配。攻击者也可能插入一些IDS会看到的、格式错误的包,故意引起模式不匹配,协议处理栈会因为其格式不对而丢弃这些包。这些变化都可以被IDS检测到,只是更多的标记要求IDS做更多的附加工作,这会降低系统的性能。

当然,基于标记的IDS因为标记还没有安装在数据库而不能检测一种新的攻击。

目前基于标记的IDS趋向于使用统计分析方法。理想的标记匹配每一种攻击实例,匹配攻击的微妙变化,而不会匹配不是攻击部分的通信量。

7 5 1 ids177
7.5.1 IDS的种类(续)

启发式入侵检测

启发式入侵检测寻找的是异常的举动,而不是寻求匹配。这个领域的初期工作关注个人行为,试图发现有助于理解正常和异常行为的个人特征。

推理引擎有两种工作方式:一种是称为基于状态的入侵检测系统,它审查所有被修改的系统状态或配置。设法发现系统转向不安全模式的时间点。其他时候,则尝试将当前的活动与不可接受活动的模式进行比较,当两者相似时,则发出警告。另一种称为基于模式的入侵检测系统,它寻求建立一种行为的动态模型,能够随着时间的推移容纳个人行为的变化和演变。这种技术把实际活动与已知正常活动进行比较。

7 5 1 ids178
7.5.1 IDS的种类(续)

另一种入侵检测方法是,根据已知不良活动模型开始工作。这种形式的入侵检测称为误用入侵检测(misuse intrusion detection) 。

所有启发式的入侵检测都将行为归纳为:好的/良好的、可疑的和未知的。随着时间的推移,IDS会逐步学习某种行为是否可接受。根据学习的结果,特定的行为可以从一种类型转换成另一种类型。

启发式入侵检测的难点在于:当系统所能见到的信息量非常大时,如何将行为正确归类;当前行为与某一类型的匹配程度如何。

7 5 1 ids179
7.5.1 IDS的种类(续)

秘密模式

IDS是一种网络设备,面对网络攻击,任何一种网络设备都有其潜在的弱点。为解决这个问题,大多数IDS都运行在秘密模式(stealth mode)下。所以,IDS有两个网络接口:一个用于正在被监视的网络或网段,另一个用于产生报警和其他可能的管理需求。

7 5 1 ids180
7.5.1 IDS的种类(续)

7.37 与两个网络相连的秘密模式IDS

7 5 1 ids181
7.5.1 IDS的种类(续)

其他IDS类型

(1) 一些安全工程师也在考虑使用其他设备作为IDS。例如,要检测不可接受的修改代码的行为,通过程序来比较软件代码的活动版本和代码摘要的存储版本就能够实现。

(2) 系统弱点扫描器能够针对网络运行,检测已知的弱点并报告所发现的缺陷。

(3) 蜜罐是一种故意诱惑攻击者的人为环境。它可以记录入侵者的行为,蜜罐可以看做是一种IDS。

7 5 2
7.5.2 入侵检测系统的目标

一个IDS中可能会使用下面所列的部分或全部设计方法:

(1) 在包头上进行过滤。

(2) 在包内容上进行过滤。

(3) 维护连接状态。

(4) 使用复杂的多包标记。

(5) 使用最少的标记产生最大的效果。

(6) 实时、在线过滤。

(7) 隐藏自己。

(8) 使用优化的滑动时间窗口来匹配标记。

7 5 2183
7.5.2 入侵检测系统的目标(续)

警报响应

不论哪种入侵检测系统都应在发现匹配时报警。报警的范围包含从普通到重大的所有事件。响应范围是无限的,可以是管理员(和程序)能想到的任何事情。一般情况下,响应主要分为三类:

(1) 监视器,收集数据,可能会在必要时增加收集数据的数量。

(2) 保护和采取行动减少暴露。

(3) 叫人。

7 5 2184
7.5.2 入侵检测系统的目标(续)

对具有一般(最初的)影响的攻击,采用监视器比较恰当。保护意味着增加访问控制措施,甚至使得一个资源不可用。叫人类型的入侵检测系统允许个人进行辨别,做出判断。

7 5 2185
7.5.2 入侵检测系统的目标(续)

错误结果

入侵检测系统不是完美无缺的,其最大的问题是出现错误。一种是对非真正攻击报警(称为误报,在统计学上称为Ⅰ类错误),另一种是对真正的攻击不报警(漏报或Ⅱ类错误)。误报和漏报的程度代表了系统的敏感程度,需要在两者之间平衡。

7 5 3 ids
7.5.3 IDS的能力和局限

(1) IDS检测到的严重问题的数量不断增加。这样,随着时间的推移,IDS逐步得到了提高。与此同时,IDS的价格却越来越低,并越容易管理。

(2) 避开IDS是高明的攻击者优先考虑的事情。了解怎样躲避特定模式的IDS是攻击群体内传递的重要情报。当然,一旦生产商认识到了其产品中存在的缺陷,就会努力修复这些缺陷。

(3) IDS的一个局限性是其敏感性难以测量和调节。

(4) IDS的另一个局限性不在于IDS本身,而在于IDS的使用。管理员在IDS成功应用中发挥重要作用。

# 防火墙必须允许一些通信量进入一个受保护区域。监视通信量在受保护区域内的真实活动是IDS的工作。总的来说,IDS是对网络安全极好的补充。

7 6 7 6 1
7.6 安全电子邮件7.6.1 电子邮件安全

电子邮件是非常公开的,在从发送者的工作站到接收者的显示屏之间的每一点上都是暴露的。

电子邮件面临的威胁

电子邮件面临着的威胁包括:消息截取(机密性、阻止提交)、消息截取并随后重放、修改消息内容、修改消息源、外来者伪造消息内容、外来者伪造消息源、接收者伪造消息内容、接收者伪造消息源、拒绝传输消息。

# 通常采用加密的方法来解决机密性和内容伪造。

7 6 2
7.6.2 需求和解决方案

如果对实现安全的电子邮件列出一份需求清单,我们希望该清单中包括下列保护措施:

(1) 消息的机密性(消息在到达接收方的途中不暴露)。

(2) 消息的完整性(接收方所见即发送方所发)。

(3) 发送方的真实性(接收方确信发送方是其本人)。

(4) 不可否认(发送方不能抵赖他发送过的消息)。

7 6 3
7.6.3 设计

加密电子邮件标准是由互联网联盟通过其体系结构委员会(IAB)、互联网研究任务组(Internet Research Task Fore, IRTF)和互联网工程任务组(Internet Engineering Task Force, IETF)负责开发的。加密电子邮件的一个设计目标是:允许将已增强安全性的消息被当做普通消息,通过现有的因特网电子邮件系统进行传送。因此,所有保护措施都在现有主体上实现。

7 6 3190
7.6.3 设计(续)

机密性

图 7.38 加密E-mail处理过程图

7 6 3191
7.6.3 设计(续)

网络电子邮件处理软件使用不可打印字符作为消息流中的控制信号。

图 7.39 已加密的安全的E-mail消息

7 6 3192
7.6.3 设计(续)

加密电子邮件标准还为实现对称加密进行了定义。协议能支持多种加密算法,常用的一些流行算法包括DES,用于信息机密性的AES和RSA,以及用于密钥交换的Diffie-Hellman协议等。

其他安全特征

加密电子邮件消息总是要携带一个数字签名,以便能确认发送者的真实性。由于数字签名中包含一个哈希函数[称为消息完整性检查(Message Integrity Check, MIC)],所以完整性也能得到保证。

加密电子邮件的处理可与普通电子邮件结合起来,所以一个人可以发送加密或非加密的消息。

7 6 3193
7.6.3 设计(续)

图7.40 已加密E-mail在消息处理中的过程

7 6 3194
7.6.3 设计(续)

加密安全电子邮件

使用证书的难处在于建立等级。加密电子邮件的窘境在于从单一结构的组织移到了互有关联的、等级结构的组织上。电子邮件系统的脆弱点可能在一些照顾不到的端点。攻击者可能修改处理加密的代码,获取加密密钥等。

7 6 4
7.6.4 安全电子邮件系统示例

PGP

PGP(Pretty Good Privacy)是在1991年由Phil Zimmerman发明的。PGP 采用“信任环”或用户“密钥环”的技术解决了密钥分配问题。PGP并不建立统一的信任策略,而是将决定权交给每一个用户,由用户自行决定所收到的密钥的可信度。 PGP可以实现机密性、完整性、真实性和不可否认性的组合。

7 6 4196
7.6.4 安全电子邮件系统示例(续)

S/MIME

通用MIME规范定义了电子邮件附件的格式和处理过程。安全多用途网及邮件扩充协议被视为安全电子邮件附件制定的因特网标准。S/MIME分等级地使用经过确认的证书,这些证书通常以X.509的格式出现。因此,使用S/MIME,发送者和接收者只要有他们都信任的共同的证明者就不需要提前交换密钥。S/MIME采用了大量加密算法,如DES、AES和RC2。S/MIME能处理所有类型的附件。

slide197
7.7 本章总结

在网络中,任何计算机都可能成为随机攻击的牺牲品。最强壮的网络控制措施是将鉴别、访问控制和加密结合起来。在某种意义上,网络安全是我们知道的所有安全的结合物和最高形式。一个网络的安全取决于我们使用的所有加密工具、良好的程序开发过程、操作系统控制、信任和评价与保证方法,以及推论和综合控制措施。三种控制措施是专门针对网络的:防火墙、入侵检测系统和安全电子邮件。