丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
[美]查克·伊斯特姆(ChuckEasttom)著刘海燕等译
网络安全概述本章目标在阅读完本章并完成练习之后,你将能够完成如下任务:
在你的网络和外部世界之间一定存在一个或几个连接点。在网络和Internet之间建立一个屏障,这通常以防火墙的形式出现。本书讨论的许多攻击都要穿越防火墙并进入网络。网络的真正核心就是通信—允许一台机器与另一台机器进行通信。然而,通信的每条通道也是一条攻击的通道。因此,理解如何保护网络的第一步,就是详细了解计算机如何通过网络进行通信。前面提到的网卡、交换机、路由器、集线器以及防火墙都是网络基本的物理部件,它们连接的方式以及通信的格式就是网络体系结构。
当你与网络建立连接之后(无论是物理连接还是无线连接),就可以发送数据了。第一件事就是确定你想发送到哪里。我们先讨论IPv4的地址,在本章稍后部分再看一下IPv6。所有的计算机(以及路由器)都有一个IP地址,该地址由四个0到255之间的数字组成,中间以圆点分隔,例如192.0.0.5(注意这是一个IPv4地址)。第二件事是格式化要传输的数据。所有数据最终都采用二进制形式(多个1和0组成)。这些二进制数据被放入数据包(packet)中,总长度要小于大约65000字节。前几个字节是首部(header)。首部内容说明数据包去往哪里、来自何方、本次传输还有多少个包。实际上,数据包有多个首部,但现在我们仅把首部作为单个实体来讨论。我们将研究的一些攻击(例如,IP欺骗)会试图改变首部以提供虚假信息。其他的攻击方法则只试图截获数据包并读取其内容(从而危害数据的安全)。一个数据包可以有多个首部。事实上,大多数数据包至少有三个首部。IP首部包含源IP地址、目标IP地址以及数据包的协议等信息。TCP首部包含端口号等信息。以太网首部则包含源MAC地址和目的MAC地址等信息。如果一个数据包用传输层安全(TransportLayerSecurity,TLS)进行加密,那么它还将有一个TLS首部。
第一个要理解的主要问题是如何将数据包送到正确的目的地。即使是一个小型网络,也存在许多计算机,它们都有可能是发送数据包的最终目的地,而Internet上有数百万台遍布全球的计算机。如何保证数据包到达正确的目的地呢?这个问题就像写封信并确保信件能到达正确的目的地一样。我们从IPv4寻址开始讨论,因为它是目前使用最普遍的,但本节也会简要讨论一下IPv6。一个IPv4地址是用圆点分隔的由4个数字组合的数字序列(例如107.22.98.198)。每个数字必须在0到255之间。可以看到,107.22.98.466就不是一个有效的地址。之所以有这个规则,是因为这些地址实际上是4个二进制数,计算机用十进制格式把它们简单地显示出来。回想一下,1字节是8位(1和0的组合),而8位二进制数转换成十进制格式后将在0到255之间。总共32位则意味着大约存在42亿个可能的IPv4地址。计算机的IP地址可以告诉你该台计算机的很多信息。地址中的第一个字节(或第一个十进制数)告诉你该机器属于哪一类网络。表1-1概括了5种网络类别。
这5种网络类别在本书后面将变得更加重要(或者,现在你应该决定在更深的层次上学习网络)。仔细观察表1-1,你可能会发现127的IP范围没有被列出来,之所以存在这种省略,是因为该范围是被保留用于测试的。不管你的机器被指定为什么IP地址,地址127.0.0.1都是指你自己正在使用的这台机器。这个地址常被称为环回地址(loopbackaddress),常用于测试你的计算机和网卡。我们将在本章稍后的网络实用程序部分讨论它的用法。这些特定的地址分类很重要,因为它告诉你,地址的哪些部分代表网络、哪些部分代表节点。例如,在A类地址中,第一个8位的字节代表网络,其余三个表示节点。在B类地址中,前两个8位的字节代表网络,后两个表示节点。而在C类地址中,前三个8位的字节代表网络,最后一个代表节点。你还需要注意一些特殊的IP地址和IP地址范围。第一个是如前所述的127.0.0.1,即环回地址。它是引用你正在使用的机器网卡的另一种方法。另一个需要注意的问题是私有(private)IP地址。IP地址中某些特定范围被指定仅用于网络内部。这些地址不能用作公开的IP地址,但可以用作内部工作站或服务器的地址。这些IP地址包括:
本地站点/网络地址。
DHCPv6使用托管地址配置标志(managedaddressconfigurationflag),即M标志。
其他状态配置标志(O标志)。
MAC地址(MediaAccessControladdress,媒体访问控制地址)是一个很有趣的话题。注意,MAC也是指OSI模型的数据链路层的子层。MAC地址是网卡的唯一地址。世界上的每块网卡都有一个唯一的地址,用6字节的十六进制数表示。地址解析协议(AddressResolutionProtocol,ARP)用于将IP地址转换为MAC地址。因此,当你输入网站地址时,DNS协议将其转换为IP地址,然后ARP协议将IP地址转换为单个网卡特定的MAC地址。
不同的目的需要不同类型的通信。不同类型的网络通信称为协议(protocol)。协议本质上是一种约定的交流方法。事实上,该定义恰是protocol这个词在标准的、非计算机使用中的用法。每个协议都有特定的目的,并且通常在某个端口上运行(有的需要多个端口)。表1-2列出了一些重要的协议。
你可能已经注意到,这个列表并不完整,还有数百个其他的协议,但对本书来说讨论这些就足够了。所有这些协议都是TCP/IP协议族的一部分。你要明白的最重要的一点是,网络上的通信是通过数据包(packet)实现的,而这些数据包要根据当前的通信类型按照某些协议进行传送。你可能想知道什么是端口(port)。不要将这种类型的端口与计算机背后的连接接口,如串口或并口相混淆。网络术语中的端口是一个句柄、一个连接点,是一个指派给特定通信路径的数字。所有网络通信,不管使用什么端口,都通过网卡连接进入你的计算机。可以把端口看作电视的一个频道,可能只有一个电缆进入电视,但却可以观看许多频道。所以,类比一下只有一个电缆进入计算机,但可以在许多不同的端口上进行通信。至此,我们形成了关于网络的概貌:网络是由机器通过电缆互连而成的,有的机器可能接入集线器、交换机或路由器,网络使用某些协议和端口在数据包中传输二进制信息。这是对网络通信的一个很精确的刻画,尽管非常简单。
在IP地址和URL之后,还需要熟悉一些基本的网络实用程序。你可以在命令提示符下(Windows系统)或shell中(UNIX/Linux系统)执行一些网络实用程序。许多读者已经熟悉了Windows,因此本书将集中讨论如何在Windows命令提示符下执行命令。但必须强调的是,这些实用工具在所有操作系统中都可用。本节介绍几个基本的或常用的实用程序。
你想要做的第一件事是获取关于自己系统的信息。要完成这个任务,必须首先获得命令提示符。在Windows中,可以通过[开始/所有程序/附件]操作获得命令提示符;也可以通过[启动/运行]并输入“cmd”来获得命令提示符。在Windows10中,可以在“搜索”框中输入“cmd”来获得命令提示符。在命令提示符下,输入ipconfig。在UNIX或Linux的shell中,也可以输入ifconfig来使用该命令。输入ipconfig(Linux中输入ifconfig)后,应该会看到类似于图1-1所示的内容。
netstat是另一个很有趣的命令。它是NetworkStatus(网络状态)的缩写。基本上,这个命令会告诉你当前计算机有什么连接。如果你看到有好几个连接,不要惊慌,因为这并不意味着你的电脑被黑客攻击。你会看到有许多私有IP地址,这表示你的网络有正在进行的内部通信。在图1-5中可以看到这一点。
当然,在使用网络通信时还有其他的实用程序也可能对你有所帮助,但上面介绍的这四个是核心的实用程序。它们(ipconfig、ping、tracert和netstat)对每个网络管理员来说绝对是必不可少的,你应该牢牢记住它们。
开放系统互连(OpenSystemsInterconnect,OSI)模型描述了网络如何通信,参见表1-3。它描述了各种协议和活动,并说明协议和活动是如何相互关联的。OSI模型分为七层,它最初是由国际标准化组织(InternationalOrganizationforStandardization,ISO)在20世纪80年代开发的。
许多学习网络的学生都会记住这个模型。至少,记住七层的名字并基本理解每一层的作用。从安全的角度看,你对网络通信理解得越多,你的安全防御等级就越高。对于OSI模型,你要理解的最重要的事情是,此模型描述了一个通信的分层结构,其中每一层仅与直接在其上方或下方的层进行交流。
本书从多个角度介绍安全,但本质上只存在三种攻击聚集点,因而也只有三种安全聚集点(注意,这里不是指攻击途径,因为存在很多攻击途径):
当你对本书进一步学习时,不要忽视了我们的基本目标,那就是保护网络以及存储和传输数据的安全。
这一说法并不意味着轻视黑客攻击的危险,那根本不是我的本意。在没有适当安全防范措施的情况下,即使一个不熟练的新手黑客也能侵入系统。即使准黑客没有成功地攻破安全措施,他仍然相当令人讨厌。此外,某些形式的攻击根本不需要太多技能。本书后面将讨论这些内容。一种更全面的观点(因此,是评估任何系统威胁等级的较好方法)是,在系统对潜在入侵者的吸引程度和系统已采取的安全措施之间进行权衡。正如你将看到的,任何系统的最大威胁并不是黑客,病毒及其他攻击要盛行得多。威胁评估是一项复杂的、需要考虑多方面因素的任务。
你的网络肯定面临着真实的安全威胁,这些威胁可以以多种形式表现出来。有多种方式可用来对系统的威胁进行分类。可以按照造成的损害、执行攻击所需的技能水平或者攻击背后的动机等进行分类。根据本书的目标,我们按照威胁实际做的事情对其进行分类。基于这个思路,绝大多数攻击都可以归结为如下三大类型之一:
供参考:还有什么其他攻击?第2章介绍的诸如缓冲区溢出(bufferoverflow)等攻击可归结为多个威胁类型。例如,缓冲区溢出可用来关闭机器,从而成为阻塞型攻击,也可以用来突破系统的安全措施,因而成为入侵型攻击。但是,攻击一旦实现后,它将确定归属于二者中的某一个类型。第三类威胁是在系统上安装恶意软件(malware)。恶意软件是对具有恶意目的的软件的一个通用术语,它包括病毒攻击、特洛伊木马和间谍软件。由于这类攻击可能是对系统最普遍的威胁,因此我们首先来介绍它。
第三类攻击是阻塞(blocking)攻击,其中的一个例子是拒绝服务(DenialofService,DoS)攻击。在这种攻击中,攻击者并不实际访问系统,而是简单地阻止合法用户访问系统。用计算机应急响应小组协调中心(ComputerEmergencyResponseTeam/CoordinationCenter,CERT/CC)的话说,“拒绝服务攻击的特点是,攻击者明确地试图阻止服务的合法用户使用该服务。”这里所说的CERT是世界上第一个计算机安全事件响应小组。一种常用的阻塞攻击方法是向目标系统注入大量虚假的连接请求,使得目标系统无暇响应合法请求。DoS是一种非常常见的攻击,仅次于恶意软件。
其中,对吸引力的评估是非常主观的。而评估信息内容的价值或安全等级可以用很粗略但简单的度量来完成。这个系统在第12章将再次提及并进一步扩展。显然,这个评估系统不是一门精确的科学,在某种程度上取决于个人对系统的评价。然而,这种方法确实为评估系统的安全提供了一个起点,当然它不是对安全的最终结论。
在计算机安全领域学习时,你必须认识到,这门学科是安全专业人员和业余黑客相互重合的领域。因此,该领域结合了来自这两个领域的术语。本书的词汇表是整个课程中非常有用的参考工具。
我们首先从黑客术语开始。请注意,这些术语不是精确的,许多定义都有争议。不存在官方的黑客词汇表,这些术语都是通过在黑客社区的使用演变而来的。很显然,研究这类术语应该从黑客(Hacker)的定义开始,这是一个在电影和新闻广播中使用的术语。大多数人用它来描述任何闯入计算机系统的人。然而,安全专业人士和黑客自己对这个术语的使用不同。在黑客社区中,黑客是一个或多个特定系统的专家,他们想更深入地了解系统。黑客认为,检查系统的缺陷是了解它的最好方法。例如,一个精通Linux操作系统、通过检查其弱点和缺陷来理解这个系统的人就是一个黑客。然而,这通常也意味着检查是否可以利用一个缺陷来获取系统的访问权。这个过程中的“利用”部分将黑客区分为三类人:
供参考:审计与渗透测试渗透测试者使用的测试过程实际上是一种特殊类型的审计。你可能想知道渗透测试和审计有什么区别。普通的审计与渗透测试的区别在于其方法不同。普通的审计通常包括检查法律、法规和标准的遵守情况,而渗透测试则试图攻破系统以评估其安全性。传统的审计包括查看日志、检查系统设置、确保安全符合某个特定的标准。而渗透测试者则简单地试图攻入系统。如果能成功的话,他们会记录他们是如何做的,并说明如何阻止别人做同样的事情。
机构可以从几种网络安全模式(approach)中进行选择。特定的模式或范型(paradigm)将影响所有后续的安全决策,并为整个机构的网络安全基础设施设置基调。网络安全范型既可以按照安全措施的范围(边界、分层)来分类,也可以按照系统的主动性程度来分类。
分层安全(LayeredSecurity)模式是一种不仅要保护边界的安全,而且要保护网络内部各个系统安全的模式。网络中的所有服务器、工作站、路由器和集线器都是安全的。实现该模式的一种方法是将网络划分成段,并将每个段作为单独的网络进行保护。这样,如果边界安全被突破,那么并不是所有的内部系统都会受到影响。只要条件允许,分层安全模式是首选模式。还可以用主动和/或被动的程度来评估安全模式。这可以通过度量系统的安全基础设施和策略中有多少专门用于预防措施,有多少专门用于攻击发生后对攻击的响应来实现。被动安全模式很少或没有采取措施来防止攻击。相反,动态安全模式,或称主动防御,则在攻击发生之前采取一些措施防止攻击的发生。主动防御的一个例子是使用IDS,它用于检测规避安全措施的企图。一个破坏安全的企图即使没有成功,IDS也会告诉系统管理员该企图的发生。IDS还可以用于检测入侵者使用的攻击目标系统的各种技术,甚至能在攻击发起之前警告网络管理员潜在攻击企图的存在。
在现实世界中,网络安全很少完全采用一种模式或另一种模式。网络通常采用多种安全模式中的多种因素。上述两种分类可以结合起来,形成混合模式。一个网络可以主要是被动的,但同时也是分层的安全模式,或者主要是边界安全模式,但同时也是主动的。考虑使用笛卡儿坐标系描述计算机安全的方法,其中,x轴表示方法的被动/主动水平,y轴描绘从边界防护到分层防护的范围,这种表示有助于理解该方法。最理想的混合模式是动态的分层模式。
在阅读本书或进入专业世界时,你经常需要一些额外的安全资源。本节介绍一些最重要的资源,以及那些对你来说可能很有用的资源。
对网络的威胁在日益增长。我们看到越来越多的黑客攻击、病毒以及其他形式的攻击。危险在增大,同时法律压力(如HIPAA和SOX)也在增大,因此网络管理员的网络安全需求在日益增长。为了满足这一需求,你必须全面理解你的网络存在的威胁,以及你可以采取的对策。这要从对网络威胁的现实评估开始。本章介绍了网络安全的基本概念、威胁的一般分类以及基本的安全术语。后续章节将详细阐述这些信息。
1.下列哪项不是威胁的三种主要类型之一?
A.拒绝服务攻击B.计算机病毒或蠕虫C.实际入侵系统D.网络拍卖欺诈2.下列哪一个是病毒最准确的定义?
A.通过电子邮件传播的任何程序B.携带恶意负载的任何程序C.任何自我复制的程序D.任何可能破坏你系统的程序3.如果一个观点过于谨慎,是否有什么理由不采取这个极端的安全观点?
A.不,没有理由不采取如此极端的观点B.是的,这可能导致资源浪费在不太可能的威胁上C.是的,如果你准备犯错误,那么假设几乎没有什么现实威胁D.是的,这需要你提高安全技能,以便实施更严格的防御4.什么是计算机病毒?
A.任何未经你的许可下载到你系统中的程序B.任何自我复制的程序C.任何对你的系统造成伤害的程序D.任何可以更改Windows注册表的程序5.下面哪个是间谍软件的最好定义?
A.任何记录击键的软件B.任何用于收集情报的软件C.任何监视你的系统的软件或硬件D.任何监视你访问哪些网站的软件6.下列哪一项是道德黑客术语的最佳定义?
A.Telco-hackingB.HackingC.CrackingD.Phreaking8.下列哪一个是恶意软件的最佳定义?
A.具有恶意目的的软件B.自我复制的软件C.损害你系统的软件D.系统中任何未正确配置的软件9.下列哪一项是战争驾驶的最佳定义?
A.在攻击和搜索计算机作业时驾驶B.在使用无线连接进行攻击时驾驶C.驾车寻找可攻击的无线网络D.驱车并寻找黑客对手10.下列哪一项是最基本的安全活动?
A.安装防火墙B.认证用户C.控制对资源的访问D.使用病毒扫描器11.阻塞攻击的目的是什么?
A.在目标机器上安装病毒B.关闭安全措施C.阻止合法用户访问系统D.攻入目标系统12.安全的三种模式是什么?
A.边界、分层及混合B.高安全、中等安全和低安全C.内部、外部和混合D.边界、完全、无13.入侵检测系统是如下哪项内容的例子?
A.主动安全B.边界安全C.混合安全D.良好的安全实践14.下列哪一项最有可能被归类为系统滥用?
A.利用Web查找竞争对手的信息B.偶尔接收个人电子邮件C.用你的工作计算机做自己的(非公司的)业务D.午餐期间在网上购物15.最理想的安全模式是:
A.边界和动态B.分层和动态C.边界和静态D.分层和静态16.当评估一个系统的威胁时,你应该考虑哪三个因素?
A.系统的吸引力、系统中包含的信息以及系统的流量B.安全团队的技术水平、系统的吸引力和系统的流量C.系统的流量、安全预算和安全团队的技术水平D.系统的吸引力、系统中包含的信息和安全预算17.下列哪一项是不可否认性的最佳定义?
A.不允许潜在入侵者否认他的攻击的安全属性B.验证哪个用户执行什么动作的过程C.是用户认证的另一个术语D.访问控制18.以下哪些类型的隐私法律影响计算机安全?
A.美国任何州的隐私法律B.美国任何适用于你所在机构的隐私法律C.美国任何隐私法律D.美国任何联邦隐私法律19.第一个计算机应急响应小组隶属于哪所大学?
A.普林斯顿大学B.卡内基梅隆大学C.哈佛大学D.耶鲁大学20.下列哪一项是“敏感信息”的最佳定义?
A.没有区别B.道德黑客往往缺乏技能C.审计者往往缺乏技能D.道德黑客倾向于使用更多非常规的方法1.15.2练习题练习1.1本月发生了多少次病毒攻击?1.使用各种网站,确定本月报告的病毒攻击数量。你可能会发现,诸如www.f-secure.com这样的网站对找到这类信息很有帮助。
2.将这一数字与过去三个月、九个月和十二个月的病毒爆发数量进行比较。
3.病毒攻击频率是增加了还是减少了?举例来支持你的答案,并说明过去一年病毒攻击估计的变化数量。
练习1.2特洛伊木马攻击1.使用Internet、期刊、书籍或其他资源,找到在过去九个月内发生的一次特洛伊木马攻击事件。
2.这个特洛伊木马是怎么传播的?它造成了什么损害?
3.描述这个木马攻击,包括:
练习1.3计算机犯罪的近期趋势1.使用你喜欢的搜索引擎,找到关于计算机犯罪的最新调查。
2.注意哪些领域的计算机犯罪有所增加和减少。
3.描述本次调查与2002年公布的调查之间的变化。
4.这两项调查告诉你计算机犯罪的趋势是什么?
5.哪个领域的计算机犯罪增长最快?
练习1.5安全专业术语使用本章中讨论的三个词汇表之一,定义下列术语: