网络空间安全学科规划教材
点击查看第二章
点击查看第三章
网络防御与安全对策:原理与实践(原书第3版)
Network Defense and Countermeasures: Principles and Practices, Third Edition
[美] 查克·伊斯特姆 (Chuck Easttom) 著
刘海燕 等译
第1章
网络安全概述
本章目标
在阅读完本章并完成练习之后,你将能够完成如下任务:
- 识别出最常见的网络风险。
- 理解基本的组网技术。
- 使用基本的安全术语。
- 找到适合自己所在机构网络安全的最佳方法。
- 评估影响网络管理员工作的法律问题。
- 使用可用于网络安全的资源。
1.1 引言
在新闻中,很难发现哪一周没有发生重大安全破坏。大学网站被攻击、政府计算机被攻击、银行数据受损、健康信息被泄露—这个清单还在不断增长。而且似乎每年对这个问题的关注都在增加。在任何工业化国家中,很难找到没听说过诸如网站被黑客入侵和身份被盗之类事情的人。
目前培训场所也有很多。许多大学都提供从学士层次到博士层次的信息保障(Information Assurance)学位。有大量的行业认证培训项目,包括CISSP(Certified Information Systems Security Professional,注册信息系统安全专家)、国际电子商务顾问委员会(EC Council)的CEH(Certificated Ethical Hacker,道德黑客认证)、Mile2Security、SANS(System Administration, Networking, and Security Institute,美国系统网络安全协会)认证以及美国计算机行业协会(Computing Technology Industry Association,CompTIA)的Security+。现在还有一些大学提供网络安全学位,包括远程学习的学位。
尽管受到媒体的关注和有获得安全培训的机会,但仍有太多的计算机专业人员,包括数量惊人的网络管理员,对网络系统暴露的威胁类型以及哪些是最有可能发生的威胁没有清晰的认识。主流媒体关注的是最引人注目的计算机安全破坏,而不是给出最有可能的威胁场景的准确画面。
本章着眼于网络面临的威胁,定义基本的安全术语,为后续章节涉及的概念奠定基础。确保你的网络完整性和安全性所需的步骤条理清晰,并在很大程度上进行了概括。当你学完本书时,你将能够识别最常见的攻击,解释攻击的机理以便阻止它们,理解如何确保数据传输的安全。
1.2 网络基础
在深入研究如何保护网络安全之前,探索一下什么是网络可能是个不错的想法。对许多读者来说,本节内容仅仅是一次复习,但对于部分读者来说可能是新的知识。无论对你来说是复习还是新的知识,在深入研究网络安全之前,对基本的组网原理有透彻的理解都是至关重要的。此外请注意,这里只是对基本网络概念的简要介绍,没有探究更多细节。
网络是计算机进行通信的一种方式。在物理层,网络由所有要连接的机器和用来连接它们的设备组成。独立的机器可通过物理连接(一根5类电缆插入网络接口卡,即NIC)或通过无线方式连接起来。为了将多台机器连接在一起,每台机器必须连接到集线器或交换机,然后这些集线器/交换机再连接在一起。在更大的网络中,每个子网络通过路由器连接到其他子网络。本书中的许多攻击(包括第2章介绍的几种攻击),都是针对网络中将机器连接起来的设备(即路由器、集线器和交换机)发起的。如果你发现本章的知识不够用,那么下述资源可能会有所帮助:http://compnetworking.about.com/od/basicnetworkingconcepts/Networking_Basics_Key_Concepts_in_Computer_Networking.htm 。
1.2.1 基本网络结构
在你的网络和外部世界之间一定存在一个或几个连接点。在网络和Internet之间建立一个屏障,这通常以防火墙的形式出现。本书讨论的许多攻击都要穿越防火墙并进入网络。
网络的真正核心就是通信—允许一台机器与另一台机器进行通信。然而,通信的每条通道也是一条攻击的通道。因此,理解如何保护网络的第一步,就是详细了解计算机如何通过网络进行通信。
前面提到的网卡、交换机、路由器、集线器以及防火墙都是网络基本的物理部件,它们连接的方式以及通信的格式就是网络体系结构。
1.2.2 数据包
当你与网络建立连接之后(无论是物理连接还是无线连接),就可以发送数据了。第一件事就是确定你想发送到哪里。我们先讨论IPv4的地址,在本章稍后部分再看一下IPv6。所有的计算机(以及路由器)都有一个IP地址,该地址由四个0到255之间的数字组成,中间以圆点分隔,例如192.0.0.5(注意这是一个IPv4地址)。第二件事是格式化要传输的数据。所有数据最终都采用二进制形式(多个1和0组成)。这些二进制数据被放入数据包(packet)中,总长度要小于大约65 000字节。前几个字节是首部(header)。首部内容说明数据包去往哪里、来自何方、本次传输还有多少个包。实际上,数据包有多个首部,但现在我们仅把首部作为单个实体来讨论。我们将研究的一些攻击(例如,IP欺骗)会试图改变首部以提供虚假信息。其他的攻击方法则只试图截获数据包并读取其内容(从而危害数据的安全)。
一个数据包可以有多个首部。事实上,大多数数据包至少有三个首部。IP首部包含源IP地址、目标IP地址以及数据包的协议等信息。TCP首部包含端口号等信息。以太网首部则包含源MAC地址和目的MAC地址等信息。如果一个数据包用传输层安全(Transport Layer Security,TLS)进行加密,那么它还将有一个TLS首部。
1.2.3 IP地址
第一个要理解的主要问题是如何将数据包送到正确的目的地。即使是一个小型网络,也存在许多计算机,它们都有可能是发送数据包的最终目的地,而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都是指你自己正在使用的这台机器。这个地址常被称为环回地址(loopback address),常用于测试你的计算机和网卡。我们将在本章稍后的网络实用程序部分讨论它的用法。
这些特定的地址分类很重要,因为它告诉你,地址的哪些部分代表网络、哪些部分代表节点。例如,在A类地址中,第一个8位的字节代表网络,其余三个表示节点。在B类地址中,前两个8位的字节代表网络,后两个表示节点。而在C类地址中,前三个8位的字节代表网络,最后一个代表节点。
你还需要注意一些特殊的IP地址和IP地址范围。第一个是如前所述的127.0.0.1,即环回地址。它是引用你正在使用的机器网卡的另一种方法。
另一个需要注意的问题是私有(private)IP地址。IP地址中某些特定范围被指定仅用于网络内部。这些地址不能用作公开的IP地址,但可以用作内部工作站或服务器的地址。这些IP地址包括:
- 10.0.0.10到10.255.255.255
- 172.16.0.0到172.31.255.255
- 192.168.0.0到192.168.255.255
网络新人有时对公有IP地址和私有IP地址的理解有些困难。我们以办公楼做个类比:在一栋办公楼内,每个办公室的编号必须是唯一的。例如,在一栋大楼里只能有一个305办公室。如果讨论305办公室,你马上就明白说的是哪个房间。但还有其他的办公楼,许多楼都有自己的305办公室。因此,你可以将私有IP地址视为办公室编号,在它们所在的网络中它们的编号必须是唯一的,但在其他网络中可能有相同的私有IP。
公有IP地址更像传统的邮件地址,它们在世界范围内必须是独一无二的。当从办公室到办公室通信时,你可以使用办公室号码,但是要给另一个建筑物发信,你必须使用完整的邮件地址。这与网络是一样的,你可以使用私有IP地址在网络内部进行通信,但要与网络外部的任何计算机进行通信时,都必须使用公有IP地址。
网关路由器的作用之一是执行所谓的网络地址转换(Network Address Translation,NAT)。通过NAT,路由器将发出的数据包中的私有IP地址替换为网关路由器的公有IP地址,从而可以在Internet中路由该数据包。
我们已经讨论了IPv4网络地址,现在把注意力转移到划分子网上。如果你已经熟悉这个主题,那么请跳过本节。由于某种原因,这个话题往往会给学生带来很大麻烦。所以下面我们从理解概念开始。所谓划分子网(subnetting)就是简单地将网络切成更小的部分。例如,如果你拥有一个使用IP地址192.168.1.X的网络(X代表任何具体计算机的地址),那么你已经被分配了255个可能的IP地址。如果想把它分成两个单独的子网络怎么办呢?你需要做的就是划分子网。
说得更专业一点,子网掩码(subnet mask)是分配给每个主机的一个32位数字,用于将32位二进制的IP地址划分为网络部分和节点部分。子网掩码不能随意指定,有特定的要求。子网掩码的第一个值必须是255,剩下的三个值可以是255、254、252、248、240、224或128。你的计算机把自己的IP地址和子网掩码通过二进制“AND”操作(二进制的“按位与”)结合起来。
你可能会很奇怪,因为即使你没有划分过子网,也已经拥有了一个子网掩码。这是默认子网掩码。如果你有一个C类IP地址,那么子网掩码是255.255.255.0。如果有一个B类IP地址,那么子网掩码是255.255.0.0。而如果是A类地址,则子网掩码是255.0.0.0。
现在考虑一下这些数字与二进制数的关系。十进制255转化为二进制是11111111。所以,默认情况下,你实际上仅掩住(masking)了地址中用于定义网络的那部分,而其余部分都用于定义单个节点。现在如果你想使子网中的节点数少于255,那么你需要一个类似于255.255.255.240这样的子网掩码。将240转换为二进制是11110000,这表示前三个字节以及最后一个字节的前4位定义了网络,而最后字节的后4位定义了节点。这就意味着在这个子网络上最多可以有1111(二进制)个或15(十进制)个节点。这就是划分子网的本质。
划分子网这种方式,仅允许你使用某些受限的子网。另一种方式是CIDR,即无分类域间路由(Classless Inter Domain Routing,CIDR)。CIDR不是定义子网掩码,而是使用IP地址后面跟随一个斜线(/)和一个数字的方式。该数字可以是0到32之间的任何数字,这时的IP地址格式如下:
192.168.1.10/24(一个基本的C类IP地址)
192.168.1.10/31(一个C类 IP地址,附带子网掩码)
当你使用这种方式而不是使用子网时,你有可变长子网掩码(Variable-Length Subnet Masking,VLSM),它能提供无类别区分的IP地址。这是当今定义IP地址最常用的方式。
你不用担心新的IP地址是否很快就会用尽。IPv6标准已经投入使用,并且已经有了扩展使用IPv4地址的方法。IP地址分为两类:公共和私有。公有IP地址用于连接到Internet的计算机。公有IP地址必须互不相同。而私有IP地址,例如公司私有网络上的IP地址,只需在该网络中是唯一的即可。不用理会世界上是否有其他的计算机也有相同的IP地址,因为这台计算机从来不会连接到那些其他的计算机。网络管理员通常使用以10开始的私有IP地址,如10.102.230.17。其他的私有IP地址有172.16.0.0至172.31.255.255和192.168.0.0至192.168.255.255。
此外还要注意,Internet服务提供商(Internet Service Provider,ISP)经常会购买一个公有IP地址池(pool),并在你登录时将它们分配给你。因此,ISP可能有1000个公有IP地址,但拥有10 000个客户。因为10 000个客户不会同时在线,ISP在客户登录时将IP地址分配给他,而在客户注销时回收IP地址。
IPv6使用128位地址(而不是32位),并使用十六进制编号的方法,以避免像
132.64.34.26.64.156.143.57.1.3.7.44.122.111.201.5这种长地址。十六进制地址格式类似于3FFE:B00:800:2::C的形式。这给了你2128个可用的地址(数万亿个地址),因此在可以预见的未来,不可能会耗尽IP地址。
IPv6中不再划分子网。相反,它只使用CIDR。地址中的网络部分由斜线后面跟随的数字指定,这个数字表示地址中分配给网络部分的位(bit,也称为比特)数,如“/48”“/64”等。
IPv6中有一个环回地址,可以写成::/128。IPv4和IPv6之间的其他区别描述如下:
本地链路/机器地址。
- 这是IPv4自动专用IP寻址(Automatic Private IP Addressing,APIPA)的IPv6版本。如果机器配置为使用动态分配地址,但不能与DHCP服务器通信,那么它为自己分配一个通用的IP地址。其中,动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)用于动态地为网络内的主机分配IP地址。
- IPv6的本地链路/机器的IP地址都以FE80::开始。因此,如果你的计算机使用这样的地址,那么意味着它不能到达DHCP服务器,故而构造了自己的通用IP地址。
本地站点/网络地址。
- 这是IPv4私有地址的IPv6版本。换句话说,它们是真实的IP地址,但只能在本地网络上工作,在Internet上是不能路由的。
- 所有的本地站点/网络的IP地址都以FE开头,并且第三个十六进制数字是C到F之间的数字,即FEC、FED、FEE或FEF。
DHCPv6使用托管地址配置标志(managed address configuration flag),即M标志。
- 当该标志为1时,表示设备应该使用DHCPv6获得一个有状态(stateful)的IPv6地址。
其他状态配置标志(O标志)。
- 当该标志设置为1时,表示设备应该使用DHCPv6来获得其他的TCP/IP配置。换句话说,它应该使用DHCP服务器来设置诸如网关及DNS服务器的IP地址之类的信息。
1.2.4 统一资源定位符
对于大多数人来说,上网的主要目的是浏览网页(但也有其他目的,比如收发电子邮件和下载文件)。如果你必须记住IP地址并输入这些地址,那么网上冲浪将是件非常麻烦的事。幸运的是,你不必这么做,你只需键入对人类而言有意义的域名,而域名被翻译成IP地址。例如,你可以输入www.chuckeasttom.com 来访问我的网站。你的计算机或ISP将你输入的名称,即统一资源定位符(Uniform Resource Locator,URL),转换为IP地址。DNS(Domain Name Service,域名服务)协议处理该转换过程,DNS协议稍后将在表1-2中与其他的协议一起介绍。因此,你输入一个对人类而言有意义的名称,但你的计算机使用相应的IP地址进行连接。如果找到该地址,浏览器将发送一个数据包(使用HTTP协议)到它的TCP 80端口。如果目标计算机有软件监听并响应这个请求,如Apache或微软的IIS(Internet Information Services,Internet信息服务)之类的Web服务器软件,那么目标计算机将响应浏览器的请求并与之建立通信。这就是查看网页的方法。如果你收到错误提示“Error 404: File Not Found”,那是因为浏览器收到了一个从Web服务器返回的包含错误代码404的数据包,表示它找不到你所请求的网页。Web服务器可以向Web浏览器发送一系列错误消息,指示不同的出错情况。
电子邮件的工作方式与访问网站的方式相同。你的邮件客户端查找邮件服务器的地址,然后使用POP3(Post Office Protocol version 3,邮局协议版本3)协议检索入站的电子邮件,或使用SMTP(Simple Mail Transport Protocol,简单邮件传输协议)协议向外发送电子邮件。邮件服务器(可能位于你的ISP或你的公司里)将尝试解析发送地址。例如,如果发送一封邮件到chuckeasttom@yahoo.com,你的邮件服务器首先把邮件地址转换为yahoo.com的邮件服务器的IP地址,然后再将邮件发送给那里。请注意,尽管已经有了更新的邮件协议,但POP3仍然是最常用的协议。
因特网消息访问协议IMAP(Internet Message Access Protocol,IMAP)现在用得也很广泛,它使用143端口。与POP3相比,IMAP的主要优点是它允许客户端仅把邮件首部下载到本地机器上,然后可以选择要完整下载哪些消息,这个功能对智能手机来说特别有用。
1.2.5 MAC地址
MAC地址(Media Access Control address,媒体访问控制地址)是一个很有趣的话题。注意,MAC也是指OSI模型的数据链路层的子层。MAC地址是网卡的唯一地址。世界上的每块网卡都有一个唯一的地址,用6字节的十六进制数表示。地址解析协议(Address Resolution Protocol,ARP)用于将IP地址转换为MAC地址。因此,当你输入网站地址时,DNS协议将其转换为IP地址,然后ARP协议将IP地址转换为单个网卡特定的MAC地址。
1.2.6 协议
不同的目的需要不同类型的通信。不同类型的网络通信称为协议(protocol)。协议本质上是一种约定的交流方法。事实上,该定义恰是protocol这个词在标准的、非计算机使用中的用法。每个协议都有特定的目的,并且通常在某个端口上运行(有的需要多个端口)。
表1-2列出了一些重要的协议。
你可能已经注意到,这个列表并不完整,还有数百个其他的协议,但对本书来说讨论这些就足够了。所有这些协议都是TCP/IP协议族的一部分。你要明白的最重要的一点是,网络上的通信是通过数据包(packet)实现的,而这些数据包要根据当前的通信类型按照某些协议进行传送。你可能想知道什么是端口(port)。不要将这种类型的端口与计算机背后的连接接口,如串口或并口相混淆。网络术语中的端口是一个句柄、一个连接点,是一个指派给特定通信路径的数字。所有网络通信,不管使用什么端口,都通过网卡连接进入你的计算机。可以把端口看作电视的一个频道,可能只有一个电缆进入电视,但却可以观看许多频道。所以,类比一下只有一个电缆进入计算机,但可以在许多不同的端口上进行通信。
至此,我们形成了关于网络的概貌:网络是由机器通过电缆互连而成的,有的机器可能接入集线器、交换机或路由器,网络使用某些协议和端口在数据包中传输二进制信息。这是对网络通信的一个很精确的刻画,尽管非常简单。
1.3 基本的网络实用程序
在IP地址和URL之后,还需要熟悉一些基本的网络实用程序。你可以在命令提示符下(Windows系统)或shell中(UNIX/Linux系统)执行一些网络实用程序。许多读者已经熟悉了Windows,因此本书将集中讨论如何在Windows命令提示符下执行命令。但必须强调的是,这些实用工具在所有操作系统中都可用。本节介绍几个基本的或常用的实用程序。
1.3.1 ipconfig
你想要做的第一件事是获取关于自己系统的信息。要完成这个任务,必须首先获得命令提示符。在Windows中,可以通过[开始/所有程序/附件]操作获得命令提示符;也可以通过[启动/运行]并输入“cmd”来获得命令提示符。在Windows 10中,可以在“搜索”框中输入“cmd”来获得命令提示符。在命令提示符下,输入ipconfig。在UNIX或Linux的shell中,也可以输入ifconfig来使用该命令。输入ipconfig(Linux中输入ifconfig)后,应该会看到类似于图1-1所示的内容。
该命令提供有关网络连接的一些信息,其中最重要的是找出自己的IP地址。该命令还显示默认网关的IP地址,它是你与外部世界的连接点。运行ipconfig命令是确定系统网络配置的第一步。本书提到的大多数命令(包括ipconfig)都有许多参数或标志,它们传递给命令从而使计算机以某种方式工作。要想弄清这些命令,你可以输入命令后跟一个空格,然后再输入连字符及问号“-?”即可。
如你所见,你可以使用多个选项来找出关于计算机配置的不同细节。最常用的方法可能是使用ipconfig /all,如图1-2所示。
可以看到,使用这个选项显示了更多信息。例如,ipconfig /all可以显示计算机的名称、计算机什么时间获得IP地址等。
1.3.2 ping
另一个常用的命令是ping。ping命令向一台机器发送测试数据包,或者叫作回声(echo)数据包,以查看该机器是否可到达,以及数据包到达该机器需要多长时间。图1-3展示了该命令。
图中信息显示,一个32字节的回声数据包被发送到目的地并返回。其中的“TTL”表示“生存时间”(Time To Live,TTL),它的时间单位是数据包在放弃传送之前到达目的地最多经过多少中间步骤,或者是多少跳(hop)。由于Internet是一个庞大的相互连接的网络,你的数据包可能不会直接送达目的地,而是要经过数跳才能到达。与ipconfig一样,你可以输入“ping -?”来找到各种细化ping命令的方法。
1.3.3 tracert
下一个要研究的命令是tracert。这个命令有点像豪华版的ping。tracert不仅告诉你数据包是否到达目的地以及它花了多长时间,而且还告诉你所有的中间跳。同样的命令在Linux或UNIX中也存在,但它叫traceroute而不是tracert。图1-4展示了这个实用程序。
使用tracert命令可以列出每个中间步骤的IP地址,以及到达该步骤所花费的时间(以毫秒为单位)。知道到达目的地所需的步骤是很重要的。如果你使用Linux,那么请使用traceroute命令而不是tracert。
1.3.4 netstat
netstat是另一个很有趣的命令。它是Network Status(网络状态)的缩写。基本上,这个命令会告诉你当前计算机有什么连接。如果你看到有好几个连接,不要惊慌,因为这并不意味着你的电脑被黑客攻击。你会看到有许多私有IP地址,这表示你的网络有正在进行的内部通信。在图1-5中可以看到这一点。
当然,在使用网络通信时还有其他的实用程序也可能对你有所帮助,但上面介绍的这四个是核心的实用程序。它们(ipconfig、ping、tracert和netstat)对每个网络管理员来说绝对是必不可少的,你应该牢牢记住它们。
1.4 OSI模型
开放系统互连(Open Systems Interconnect,OSI)模型描述了网络如何通信,参见表1-3。它描述了各种协议和活动,并说明协议和活动是如何相互关联的。OSI模型分为七层,它最初是由国际标准化组织(International Organization for Standardization,ISO)在20世纪80年代开发的。
许多学习网络的学生都会记住这个模型。至少,记住七层的名字并基本理解每一层的作用。从安全的角度看,你对网络通信理解得越多,你的安全防御等级就越高。对于OSI模型,你要理解的最重要的事情是,此模型描述了一个通信的分层结构,其中每一层仅与直接在其上方或下方的层进行交流。
1.5 对安全意味着什么
本书从多个角度介绍安全,但本质上只存在三种攻击聚集点,因而也只有三种安全聚集点(注意,这里不是指攻击途径,因为存在很多攻击途径):
- 数据本身:数据离开你的网络之后,数据包很容易被侦听甚至被篡改。在本书后面讨论加密和虚拟专用网时,你将学习如何保护这些数据。当数据在计算机上存储时,它也可能在静止情况下被攻击。
- 网络连接点:无论是路由器还是防火墙,一台计算机连接到另一台计算机之间的任何位置都是可能被攻击的位置,因此也是必须防御的位置。在考察系统的安全性时,应该首先考察连接点。
- 人员:人员经常会带来安全隐患。由于无知或恶意目的,或者由于简单的错误,系统上的人员都可能危及系统的安全。
当你对本书进一步学习时,不要忽视了我们的基本目标,那就是保护网络以及存储和传输数据的安全。
1.6 评估针对网络的可能威胁
在探索计算机安全话题之前,你必须首先对系统面临的威胁形成现实的评估。其中的关键词是“现实的”(realistic)。显然,人们可以想象出某个非常精细、技术高超的潜在危险。然而,作为一名网络安全专业人员,你必须将精力以及资源集中到最可能的危险上。在深入研究具体的危险之前,我们首先了解你的系统上可能面临什么类型的攻击。
在这方面,针对计算机安全似乎有两种极端的态度。第一个观点认为,计算机系统几乎没有真正的危险或威胁,许多负面新闻仅仅是一种无根据的恐慌的反映。持这种态度的人通常认为,只要采取很少的安全措施就应该能确保其系统的安全。不幸的是,一些处于决策位置的人持有这种观点。这些人的普遍观点是:“如果我们的计算机/机构迄今为止没有受到攻击,那么我们一定是安全的。”
这种观点常常导致被动地对待计算机安全,也就是说,人们等到事件发生后才决定解决安全问题。等到攻击发生时才解决安全问题可能为时已晚。在最好的情况下,这种安全事件可能仅对机构造成轻微的影响,比如一个紧急唤醒电话。在不太幸运的情况下,一个机构可能面临严重的或许灾难性的后果。例如,一些机构在WannaCry病毒攻击它们的系统时,没有有效的网络安全系统抵御攻击。事实上,如果系统已经打补丁,那么WannaCry攻击可以完全避免。必须避免这种对安全放任自流的方法。
任何拥有这种极端并且错误观点的机构都可能在计算机安全方面几乎不投入时间和资源。他们或许有一个基本的防火墙和防病毒软件,但很可能几乎没有花费精力来确保这些东西被正确地配置或进行定期的更新。
第二种观点认为,技术精湛的黑客可以随意穿越你的系统,并让你的网络瘫痪。把黑客技能想象成军事经验。找一个曾经在军队中的人并不难,但不容易碰到一个在三角洲部队或海豹6队的人。虽然军事经验相当普遍,但高水平的特种作战技能却并不常见。黑客技能也是如此。找到了解一些黑客技巧的人很容易,但找到真正熟练的黑客远没有那么轻松。
实践中:现实世界中的安全
每当我受邀完成一些咨询或培训任务时,都会看到许多不同的网络环境。从这些经历中,我逐渐得出这样的观点,即绝大部分机构对计算机安全都采取了非常不严谨的方法。下面是我认为的对安全采取不严谨行为的例子:
- 公司没有任何类型的入侵检测系统(第5章介绍)
- 公司没有足够的防病毒/防间谍软件(第10章介绍)
- 公司的备份介质不安全(第11章介绍)
- 公司没有打补丁的规划(第8章介绍)
这些仅仅是机构没有以适当方式处理网络安全的几个例子。
在网络安全观点的另一端,一些管理人员高估了安全威胁。他们认为,存在大量非常有天赋的黑客,这些黑客都是系统迫在眉睫的威胁。事实上,许多自称黑客的人比他们自认为的懂得要少。即使是中等强度安全防范的系统,被这种技能级别的黑客所破坏的可能性也很低。
这并不意味着不存在高水平的黑客。这样的人当然存在。但是,有能力攻入相对安全系统的人,必须使用相当耗时和烦琐的技术来突破系统的安全防线。这些黑客还必须权衡攻击任务的代价和收益。熟练的黑客倾向于无论在经济上还是在意识形态上都有高收益的目标系统。如果一个系统看起来没有足够的收益,熟练的黑客不太可能会花费资源来攻击它。以窃贼作一个很好的类比:高技能的窃贼确实存在,但他们通常寻求高价值目标,以小型企业和家庭为目标的窃贼通常技能都有限。对黑客而言也是如此。
供参考:技能型黑客与非技能型黑客
技能型黑客通常只瞄准非常具有吸引力的站点。这些站点提供有价值的信息或宣传效果。军用计算机—即使是没有机密信息的非常简单的Web服务器—也能提供很强的宣传效果。另一方面,银行通常拥有非常有价值的信息。新手黑客通常从一个低价值的、本身不太安全的系统开始。低价值系统可能没有任何有重大价值的数据或不能提供好的宣传效果,大学的Web服务器就是一个很好的例子。虽然新手黑客的技能不如老手,但数量更多。此外,金钱方面的收益并不是系统对黑客高手具有吸引力的唯一因素。如果黑客反对一个机构的意识形态立场(例如,如果一个机构出售大型运动型多用途车,而黑客认为这是糟糕的环境政策),那么他可能会把该机构的系统作为攻击目标。
对计算机系统危害的这两种极端态度都是不准确的。确实存在有的人既理解计算机系统,又拥有攻击很多系统(即使不是大多数系统)安全性的技能。然而,也确实许多自称黑客的人并不像他们声称地具有那么娴熟的技能。他们从Internet上得知一些流行词,并确信自己拥有超强数字能力,但却不能对即使中等安全程度的系统进行任何攻击。
你可能会认为,慎之又慎或者极度勤勉应该是合适的方法。实际上,你不需要采取极端的观点。你应该采取现实的安全观点,制定切实可行的防御策略。每个机构和IT部门都仅有有限的资源:你只有这么多的时间和金钱。如果浪费部分资源来防止不现实的威胁,那么你可能没有足够的资源用于更实际的项目。因此,对网络安全采取现实的方式是唯一切实可行的方法。
你或许奇怪,为什么有些人会高估他们网络的危险。至少在部分程度上,答案可以归结于黑客社区的本质和媒体的宣传。此外,Internet上充斥着声称拥有高超黑客技能的人。实际上,像人类工作的任何领域一样,绝大多数人仅是平均水平。真正有天赋的黑客并不比真正有天赋的音乐会钢琴家更常见。想想有多少人在他们一生中的某个阶段都学过钢琴课程,可又有多少人真正成为艺术家。
对计算机黑客而言也是如此。请记住,即使是那些拥有必备技能的人,也需要具有动机去花费必要的时间和精力来破坏系统。当遇到任何声称拥有网络神力的人,不要忘记上述事实。
许多自称黑客的人缺乏真实技能的说法并非基于任何研究或调查。关于这个话题进行可靠的研究是不可能的,因为黑客不太可能现身并参加技能测试。我基于以下两点考虑得出了上述结论:
- 第一点是依据这些年我在黑客讨论组、聊天室和公告板浏览的经验。在该领域20多年的工作中,我遇到过有天赋的、技术精湛的黑客,但我遇到更多的是自称黑客但明显缺乏足够技能的人。我也常在黑客大会上演讲,包括DEFCON大会,并在黑客杂志如《2600》上发表文章。我有机会与黑客社区进行广泛的互动。
- 第二点是依据关于人性的一个事实,即在任何领域绝大多数人都是中等水平。想一想有那么多在健身房接受正规训练的人,成为有竞争力的健美运动员的人却凤毛麟角。在任何领域,大多数参与者都是中等水平。这并不是贬损的话,只不过是生活的一个事实。
这一说法并不意味着轻视黑客攻击的危险,那根本不是我的本意。在没有适当安全防范措施的情况下,即使一个不熟练的新手黑客也能侵入系统。即使准黑客没有成功地攻破安全措施,他仍然相当令人讨厌。此外,某些形式的攻击根本不需要太多技能。本书后面将讨论这些内容。
一种更全面的观点(因此,是评估任何系统威胁等级的较好方法)是,在系统对潜在入侵者的吸引程度和系统已采取的安全措施之间进行权衡。正如你将看到的,任何系统的最大威胁并不是黑客,病毒及其他攻击要盛行得多。威胁评估是一项复杂的、需要考虑多方面因素的任务。
1.7 威胁分类
你的网络肯定面临着真实的安全威胁,这些威胁可以以多种形式表现出来。有多种方式可用来对系统的威胁进行分类。可以按照造成的损害、执行攻击所需的技能水平或者攻击背后的动机等进行分类。根据本书的目标,我们按照威胁实际做的事情对其进行分类。基于这个思路,绝大多数攻击都可以归结为如下三大类型之一:
- 入侵
- 阻塞
- 恶意软件
图1-6展示了这三种类型。入侵类型包括那些破坏安全措施并获得系统非授权访问的攻击。该类攻击包括任何旨在获得对系统非授权访问的尝试。这种威胁通常是黑客做的事情。第二类攻击是阻塞,包括那些旨在阻止对系统进行合法访问的攻击。阻塞攻击通常称为拒绝服务攻击(Denial of Service,DoS)。在这种类型的攻击中,攻击的目的不是实际进入你的系统,而是简单地阻止合法用户的访问。
供参考:还有什么其他攻击?
第2章介绍的诸如缓冲区溢出(buffer overflow)等攻击可归结为多个威胁类型。例如,缓冲区溢出可用来关闭机器,从而成为阻塞型攻击,也可以用来突破系统的安全措施,因而成为入侵型攻击。但是,攻击一旦实现后,它将确定归属于二者中的某一个类型。
第三类威胁是在系统上安装恶意软件(malware)。恶意软件是对具有恶意目的的软件的一个通用术语,它包括病毒攻击、特洛伊木马和间谍软件。由于这类攻击可能是对系统最普遍的威胁,因此我们首先来介绍它。
1.7.1 恶意软件
恶意软件可能是任何系统中最常见的威胁,包括家庭用户系统、小型网络以及大型企业的广域网。之所以如此常见,原因之一是恶意软件通常被设计成自行传播,而不需要恶意软件的创造者直接参与。这使得该种类型的攻击更容易在Internet上传播,因此攻击范围更广。
恶意软件中最显而易见的例子就是计算机病毒。你可能对病毒有大概的了解。如果查阅不同的教科书,你可能会发现病毒的定义略有不同。其中的一个定义为:“通过修改其他程序,在其中加入自己可能进化了的副本,来感染其他程序的程序。”这是一个很好的定义,也是本书通篇所使用的定义。计算机病毒类似于生物病毒,既可以复制又可以传播。最常见的传播病毒的方法是使用受害者的电子邮件账号,将病毒传播到他的通讯录中的每个人。有些病毒并不实际危害系统本身,但由于病毒复制引起网络负载加大,因此它们都会造成网络减速或关闭。
实践中:真实的病毒
第2章和第9章将详细讨论最初的MyDoom蠕虫。MyDoom.BB病毒是2005年初开始传播的MyDoom的一个变种。这种蠕虫以java.exe或services.exe的形式出现在硬盘上。这一点对了解病毒很重要。许多病毒试图以合法的系统文件的面目出现,以防止你删除它们。自那时起,已经出现了很多种病毒,包括著名的Stuxnet(震网)、Flame(火焰)、WannaCry(永恒之蓝)等。
这种特殊的蠕虫把自己发送到你的地址簿中的每个人,因此传播非常快。该蠕虫试图下载一个后门程序,从而让攻击者访问你的系统。
从技术的角度来看,该蠕虫最有趣的是它如何提取电子邮件地址。该蠕虫使用了一种改进的电子邮件地址识别算法,它可以捕捉到如下电子邮件地址:
- chuck@nospam.domain.com
- chuck-at-domain-dot-com
这些地址被蠕虫转换为可用的格式。许多其他的电子邮件提取引擎都被这类电子邮件地址替换所困扰。
另一种与病毒密切相关的恶意软件类型是特洛伊木马。这个术语是从古代传说中借用的。在传说中,特洛伊(Troy)城被围困了很长时间,攻击者久攻不下。他们建造了一个巨大的木马(wooden horse),有天晚上将它放在特洛伊城的城门前。第二天早晨,特洛伊城的居民看到了木马,认为这是一件礼物,于是就把木马拉进了城内。他们不知道的是,有几名士兵藏在木马里面。那天晚上,这些士兵们从木马里出来,打开了城门,让他们的同伴攻进城内。一个电子形式的木马以同样的方式工作,它们看起来是良性软件,但却在内部将病毒或其他类型的恶意软件秘密地下载到你的计算机上。简单地说,有一个诱人的礼物,你将它安装在你的电脑上,后来发现它释放了一些非你预期的东西。事实上,在非法软件中更容易发现特洛伊木马。Internet上有很多地方可以获得盗版软件。发现这样的软件实际上是特洛伊木马的一部分并不罕见。
特洛伊木马和病毒是两种最常见的恶意软件形式。第三种类恶意软件是间谍软件,它正以惊人的速度增长。间谍软件是一种窥探你在电脑上所作所为的软件。它可以像cookie一样简单,cookie是一个由浏览器创建的并且存储在你硬盘上的文本文件。cookie从你访问的网站下载到你的机器上,当你在之后返回到同一网站时,网站可用它识别出你。这个文件能够让你访问页面更快速,避免频繁访问页面时必须多次输入你的信息。而为了做到这一点,就必须允许网站读取该文件,这就意味着其他网站也可以读取它。该文件保存的任何数据都可以被任何网站检索,所以,你浏览Internet的整个历史都可以被跟踪。
另一种形式的间谍软件称为键盘记录器(key logger),它能记录你所有的击键。有的还能周期性地拷贝你的电脑屏幕。然后,这些数据要么被存储起来供记录器的安装者随后进行检索;要么通过电子邮件立即发回给安装者。在任何一种情况下,你在电脑上做的每件事都被记录下来给了感兴趣的人。
供参考:键盘记录器
尽管我们将键盘记录器定义为一个软件,但需要注意的是,确实存在基于硬件的键盘记录器。基于硬件的键盘记录器比基于软件的键盘记录器要罕见得多。因为软件键盘记录器更容易安装在目标机器上。硬件键盘记录器要求物理接触机器并安装硬件。如果要在计算机用户没有察觉的情况下安装键盘记录器,那么安装物理设备可能相当困难。软件键盘记录器可以通过特洛伊木马进行安装,攻击者与目标计算机甚至不需要在相同的城市。
1.7.2 威胁系统安全—入侵
有人可能会辩解称,任何类型的攻击都旨在破坏安全性。然而,这里的入侵是指那些实际上试图侵入系统的攻击。它们不同于简单地拒绝用户访问系统的攻击(阻塞),或者那些不聚焦于特定目标的攻击,如病毒和蠕虫(恶意软件)。入侵攻击的目的是获得特定目标系统的访问权,通常被称为黑客攻击,尽管这不是黑客自己使用的术语。黑客把这种攻击称为骇客攻击(cracking),表示未经许可侵入系统,并且通常怀有恶意目的。通过某种操作系统缺陷或任何其他手段破坏安全性的攻击都可以归结为骇客攻击。本书的后续内容会介绍一些侵入系统的具体方法。在许多情况下,这类攻击都是利用一些软件缺陷来获得对目标系统的访问。
利用安全缺陷并不是侵入系统的唯一方法。事实上,有些方法在技术上更容易实现。例如,社会工程(social engineering)就是一种完全不以技术为基础的破坏系统安全性的方法。顾名思义,社会工程更多依赖于人类本性而不是技术。这是著名的黑客Kevin Mitnick最常用的攻击类型。社会工程使用标准的骗子技巧,使用户提供访问目标系统所需的信息。这种方法的工作原理相当简单。攻击者首先获得关于目标机构的初步信息,比如系统管理员的姓名,然后利用它从系统用户那里获得更多信息。例如,他可能给会计部门的某个人打电话,声称自己是公司的技术支持人员。入侵者可以使用系统管理员的姓名来证实自己说的是实话。之后他可以询问各种问题来了解系统的更多细节。精明的入侵者甚至可以获知用户名和口令。正如你所见,这种方法基于入侵者如何操纵人,而实际上与计算机技能没有什么关系。
社会工程和利用软件缺陷并不是进行入侵攻击的唯一手段。无线网络的日益普及引发了新的攻击类型。最明显和最危险的活动是战争驾驶(war-driving)。这种类型的攻击是战争拨号(war-dialing)的衍生物。在战争拨号中,黑客用一台计算机按顺序拨打电话号码,直到另一台计算机响应,然后他尝试进入对方系统。战争驾驶使用了相同的概念,用于定位脆弱的无线网络。在该类攻击中,黑客简单地驾车漫游,试图定位无线网络。许多人忘记了,他们的无线网络信号通常可达100英尺(约30.48米)远,因此可以穿越墙壁。在年度黑客大会DEFCON 2003上,参赛者参加了一场战争驾驶比赛,他们在城市里四处驾驶,试图找到尽可能多的脆弱的无线网络。
1.7.3 拒绝服务
第三类攻击是阻塞(blocking)攻击,其中的一个例子是拒绝服务(Denial of Service,DoS)攻击。在这种攻击中,攻击者并不实际访问系统,而是简单地阻止合法用户访问系统。用计算机应急响应小组协调中心(Computer Emergency Response Team/ Coordination Center,CERT/CC)的话说,“拒绝服务攻击的特点是,攻击者明确地试图阻止服务的合法用户使用该服务。”这里所说的CERT是世界上第一个计算机安全事件响应小组。一种常用的阻塞攻击方法是向目标系统注入大量虚假的连接请求,使得目标系统无暇响应合法请求。DoS是一种非常常见的攻击,仅次于恶意软件。
1.8 可能的攻击
上面我们研究了各种可能的网络威胁。显然,有些威胁比其他威胁更容易发生。那么,个人和机构面临的现实危险是什么?什么是最有可能的攻击?常见的漏洞有哪些?理解现有威胁的基本原理以及它们将给用户和机构带来问题的可能性非常重要。
供参考:攻击的可能性
特定攻击发生的可能性取决于网络所服务机构的类型。这里给出的数据适用于大多数网络系统。显然,许多因素会影响针对特定系统攻击的可能性,包括系统的宣传效果以及系统上数据的感知价值。因此,在评估对网络的威胁时,一定要谨慎行事。
对任何计算机或网络来说,最可能的威胁是计算机病毒。例如,就在2017年10月的一个月内,McAfee列出了31种活跃病毒(https://home.mcafee.com/virusinfo/virus-calendar )。每个月都会有几种新病毒爆发。新的病毒不断被创建,而旧的病毒仍然存在。
需要注意的一点是,许多人并没有像他们应该做的那样经常更新防病毒软件。这个事实的证据是,在Internet上传播的许多病毒都已经发布了应对措施,但人们根本没有应用它们。因此,即使病毒已为人所知,并且防御措施已具备,但它依然能广泛传播,原因在于许多人没有定期更新保护措施或清理自己的系统。如果所有的计算机系统和网络都定期更新安全补丁并部署病毒扫描软件,那么就会避免大量病毒的爆发,或者至少能将它们的影响降到最低。
阻塞攻击已经成为除病毒外最常见的攻击形式。你在本书后面将学到,阻塞攻击比入侵攻击更容易实现,因此发生得更频繁。一名聪明的黑客可以在Internet上找到工具来帮助他发起阻塞攻击。第2章将介绍更多关于阻塞攻击和恶意软件的内容。
无论计算机犯罪的本质是什么,事实就是网络犯罪很普遍。2016年开展的一项计算机犯罪调查发现,32%的机构曾遭受过网络犯罪的影响,一些机构遭受的损失超过500万美元。而只有37%的受访者有充分可行的应急事件响应计划。
实践中:什么是“系统滥用”?
雇主和雇员对系统滥用(misuse)的看法经常不同。工作场所的所有系统都是雇主的财产。电脑、硬盘,甚至电子邮件都是雇主的财产。美国法律一直认为,雇主有权监控雇员的网络使用,甚至是电子邮件。
大多数机构都有严格禁止任何除工作目的外使用计算机设备的政策。Internet连接仅限于与工作相关的使用,而不能用于阅读网站上的头条。有些公司不介意员工在午餐期间将Internet用于个人目的。从安全的角度来看,管理员必须关注员工访问的网站。他们正在下载Flash动画吗?他们正在下载自己的屏幕保护程序吗?下载的任何东西对系统来说都是潜在的威胁。即使没有下载,也存在网站跟踪用户和他们的计算机信息的可能性。从安全角度看,机构外的人对你的网络信息掌握得越少越好。任何一条信息对黑客来说都可能有潜在的用途。
正如你将在第4章学到的,许多防火墙解决方案允许管理员阻塞某些网站,这是个经常使用的功能。公司最起码应该有个非常明确的策略,确切地描述哪些活动是允许的,哪些是不允许的。策略中的任何模棱两可都可能会在以后引起问题。在第11章中,你将学习更多关于定义和实现安全策略的内容。
1.9 威胁评估
当试图评估机构的威胁等级时,管理员必须考虑许多因素。第一个因素前面已经提到过,即系统对黑客的吸引力。一些系统吸引黑客是因为其金钱价值。金融机构的系统为黑客提供了诱人的目标。其他系统吸引黑客是因为它们所支持机构的公众形象。黑客被吸引到政府系统和计算机安全网站,仅仅是因为这些系统有很好的宣传效果。如果黑客成功进入其中的一个系统,他将在黑客社区中获得名声和威望。学术机构受到黑客攻击的频率也很高。高中和大学有大量年轻的、精通电脑的学生,这种群体中黑客和潜在黑客的数量可能比一般大众高。此外,学术机构在信息安全方面的声誉不太好。
第二个风险因素是系统中信息的性质。如果一个系统拥有敏感或关键的信息,那么它的安全性要求较高。诸如社会保障号、信用卡号和医疗记录等个人数据也有很高的安全要求。拥有敏感的研究数据或机密信息的系统安全要求更高。
最后要考虑的因素是系统的流量。对系统进行某种远程访问的人越多,存在的安全隐患就越大。例如,有大量用户从网络外面访问电子商务系统,其中的每个连接都代表着一个危险。相反,如果系统是自包含的,没有外部连接,那么它的安全风险就会减少。
综合考虑系统对黑客的吸引力、系统存储信息的性质以及与系统远程连接的数量这几个因素后,管理员可以对系统的安全需求进行完整的评估。
下面的数值尺度可以为系统的安全需求提供一个基础概括。
考虑了三个因素(吸引力、信息内容和安全设备)。每个因素指派一个1~10的数字。前两个加在一起,然后减去第三个数。最终得分介于-8(极低风险,高安全性)到19(极高风险,低安全性)之间;数值越小系统越安全,数值越大风险越大。对一个系统来说,最好的评级如下:
- 对黑客的吸引力得分为1(即,系统几乎不为人所知,在政治或意识形态方面没有任何重要性等)。
- 在信息内容方面得分为1(即,系统不包含机密或敏感数据)。
- 系统的安全性得分为10(即,系统拥有多层的、主动的安全防御系统,包括防火墙、端口阻塞、防病毒软件、IDS、防间谍软件、合适的策略、所有的工作站和服务器都得到安全加固,等等)。
其中,对吸引力的评估是非常主观的。而评估信息内容的价值或安全等级可以用很粗略但简单的度量来完成。这个系统在第12章将再次提及并进一步扩展。
显然,这个评估系统不是一门精确的科学,在某种程度上取决于个人对系统的评价。然而,这种方法确实为评估系统的安全提供了一个起点,当然它不是对安全的最终结论。
1.10 理解安全术语
在计算机安全领域学习时,你必须认识到,这门学科是安全专业人员和业余黑客相互重合的领域。因此,该领域结合了来自这两个领域的术语。本书的词汇表是整个课程中非常有用的参考工具。
1.10.1 黑客术语
我们首先从黑客术语开始。请注意,这些术语不是精确的,许多定义都有争议。不存在官方的黑客词汇表,这些术语都是通过在黑客社区的使用演变而来的。很显然,研究这类术语应该从黑客(Hacker)的定义开始,这是一个在电影和新闻广播中使用的术语。大多数人用它来描述任何闯入计算机系统的人。然而,安全专业人士和黑客自己对这个术语的使用不同。在黑客社区中,黑客是一个或多个特定系统的专家,他们想更深入地了解系统。黑客认为,检查系统的缺陷是了解它的最好方法。
例如,一个精通Linux操作系统、通过检查其弱点和缺陷来理解这个系统的人就是一个黑客。然而,这通常也意味着检查是否可以利用一个缺陷来获取系统的访问权。这个过程中的“利用”部分将黑客区分为三类人:
- 白帽黑客(White hat hackers)发现系统中的漏洞之后,会向系统的厂商报告该漏洞。例如,如果他们发现Red Hat Linux中的某个缺陷,他们就会给Red Hat公司发电子邮件(可能是匿名的),解释缺陷是什么以及如何利用它。
- 黑帽黑客(Black hat hackers)是通常媒体(如电影和新闻)中描述的黑客。它们在进入系统之后,目标是造成某种类型的损害。他们可能窃取数据、删除文件或破坏网站。黑帽黑客有时被称为骇客。
- 灰帽黑客(Gray hat hackers)通常是守法的公民,但在某些情况下会冒险从事非法活动。他们这样做可能是因为各种各样的原因。通常,灰帽黑客会出于他们认为的道德上的原因进行非法活动,比如入侵一个他们认为从事不道德活动的公司的系统。请注意,在许多教科书中都找不到这一术语,但它在黑客社区内部却是一个常用术语。
不管黑客如何看待自己,未经许可侵入任何系统都是非法的。这意味着,从技术上来说,所有的黑客,不管他们隐喻上戴着什么颜色的“帽子”,都在违反法律。然而,许多人认为,白帽黑客实际上是通过在有道德缺陷的人利用漏洞之前,发现缺陷并告知厂商来为社会提供服务的。
了解各种黑客类型只是学习黑客术语的开始。回想一下,黑客是一个特定系统的专家。如果是这样,那么对于那些自称是黑客却缺乏专业知识的人,又使用什么术语呢?对一个没有经验的黑客最常用的术语是脚本小子(script kiddy)。该名字来源于这样一个事实:Internet上充斥着大量可以下载的实用程序和脚本,人们可以下载并执行一些攻击任务。那些下载这些工具而没有真正理解目标系统的人被认为是脚本小子。实际上,相当多的自称为黑客的人只不过是脚本小子。
现在介绍一种特殊类型的黑客。骇客是指那些以危害系统安全为目标,而不是以了解系统为目标的人。黑帽黑客与骇客之间没有区别。这两个术语都是指破坏系统安全、在没有得到相关机构许可的情况下侵入系统、带有恶意目的的人。
什么时候以及什么原因会有人允许另一团体来攻击/破解一个系统呢?最常见的原因是评估系统的脆弱性。这是黑客的另一种特殊类型—道德黑客(ethical hacker)或思匿客(sneaker)(一个很老的术语,现在不经常使用),他们是合法地攻击/破解系统以评估安全缺陷的人。1992年Robert Redford、Dan Aykroyd以及Sydney Poitier主演了一部关于这个主题的电影,名为《Sneakers》。现在,有从事这种类型工作的顾问,你甚至可以找到专门从事这种活动的公司,因为有越来越多的公司使用这种服务来评估他们的脆弱性。今天,这类人通常称为渗透测试者(penetration tester),或简单地称为pen tester。自本书发布第一版以来,这个职业已经成熟。
对那些正在考虑成为渗透测试者或聘请渗透测试者的读者,本书给你一个忠告:雇佣来评估系统脆弱性的任何人都必须技术精湛并且道德高尚。这意味着在安排他的服务之前应该对其进行犯罪背景审查。你肯定不想雇佣一个被定过罪的强盗来当你的守夜人。你也不应该考虑雇佣任何有犯罪前科的人,尤其是有计算机犯罪前科的人,来作为渗透测试者或道德黑客。有些人可能会争辩说,有前科的黑客(骇客)拥有最佳的资格来评估你的系统漏洞。但事实并非如此,理由如下:
- 你可以找到一些既知道和理解黑客技能又从未犯过任何罪的合法安全专业人员。你可以得到评估系统所需的技能,而不必使用一个已知存在缺陷的顾问。
- 如果你争辩说雇用有犯罪前科的黑客意味着雇佣了有天赋的人,那么你可以推测,这个人并没有想象中那么好,因为他曾被抓住过。
最重要的是,让一个有犯罪前科的人访问你的系统,就像雇佣一个多次犯酒驾罪的人作为你的司机。在这两种情况下,你都是在惹祸,而且可能会招致重大的民事和刑事责任。
此外,建议对渗透测试者的资格进行全面审查。正如一些人会谎称自己是黑客高手一样,有人会谎称自己是训练有素的渗透测试员。一个不合格的测试员可能会称赞你的系统,而实际上是因为他没有能力,不能成功地攻破你的系统。第12章将讨论评估目标系统的基本知识,以及为此目的所聘请顾问的必要资格。
黑客攻击的另一个专业分支是攻入电话系统。这个子领域称为飞客攻击(phreaking)。新黑客词典(New Hackers Dictionary)实际上把飞客攻击定义为“为了不支付某种电信账单、订单、转账或其他服务,而采取恶作剧的大部分是非法的行为”(Raymond,2003)。飞客攻击需要相当丰富的电信知识,许多飞客(phreaker)都有为电话公司或其他电信企业工作的专业经验。这种类型的行为通常依赖于攻击电话系统的专门技术,而不是仅仅了解某些技术。例如,需要用某些设备攻击电话系统。电话系统往往依赖于频率。如果你有一个按键电话,你会注意到,当你按下按键时,每个按键都有不同的频率。记录和复制特定频率的机器对于飞客攻击来说常常是必不可少的。
1.10.2 安全术语
安全专业人员也有特定的术语。任何受过网络管理培训或有过网络管理经验的读者可能都已经熟悉了其中的大部分。虽然大多数黑客术语是描述活动或执行它的人(飞客攻击、思匿客等),但本书中的许多安全术语是关于设备和策略的。这相当合理,因为攻击是以攻击者和攻击方法为中心的攻击性活动,而安全是与防御屏障和防御过程相关的防御性活动。
第一个也是最基本的安全设备是防火墙(firewall)。防火墙是处于网络和外部世界之间的一个屏障。有时防火墙是一个独立的服务器,有时是一台路由器,有时是在机器上运行的软件。不管它们的物理形式是什么,其目的都是一样的:过滤传入和传出网络的流量。防火墙与代理服务器(proxy server)相关,并且经常与代理服务器一起使用。代理服务器能向外界隐藏内部网络的IP地址,使网络对外表现为单一的IP地址(代理服务器自己的IP地址)。
防火墙和代理服务器被添加到网络中后,可以为网络提供基本的边界安全防御。他们过滤入站和出站的网络流量,但不影响网络中的流量。有时要在防火墙上增加入侵检测系统(Intrusion Detection System,IDS)来增强防护能力。入侵检测系统监视流量,以查找可能标识具有入侵企图的可疑活动。
访问控制(Access control)是另一个重要的计算机安全术语,在后面几章中你会对它特别感兴趣。访问控制是为限制资源访问所采取的所有方法的总和,包括登录过程、加密以及旨在防止未授权人员访问资源的任何方法。认证(Authentication)是访问控制的一个子集,可能是最基本的安全活动。认证是确定用户或其他系统所提供的凭证(如用户名和口令)是否被授权访问所涉及网络资源的过程。当用户以用户名和口令登录时,系统尝试验证用户名和口令。如果认证通过,则用户将被授权访问。
不可否认性(Non-repudiation)是另一个计算机安全中常遇到的术语。它是指任何用来确保在计算机上执行某一动作的人不能虚假地否认他曾执行过该动作的技术。不可否认性提供用户在特定时间采取特定行动的可靠记录。简而言之,它是跟踪什么用户采取什么行动的方法。各种系统日志都提供了一种不可否认性的方法。审计(auditing)是最重要的安全活动之一,它是审阅日志、记录和程序以确定它们是否符合标准的过程。本书很多章节都涉及这一活动,在第12章会重点介绍。审计十分关键,因为检查系统是否采取了适当的安全措施是确保系统安全的唯一途径。
最小权限(Least privileges)是你在向任何用户或设备分配权限时应该记住的一个概念。这个概念的含义是,你只赋予一个人完成他的工作所需的最低限度的权限。要记住这个简单却很关键的概念。
你还应该记住CIA三角形(CIA triangle),即机密性(Confidentiality)、完整性(Integrity)和可用性(Availability)三个特性。所有的安全措施都应该影响这三者之中的一个或多个。例如,硬盘驱动器加密以及良好的口令有助于保护机密性。数字签名有助于确保完整性,好的备份系统或网络服务器冗余可以支持可用性。
可以编写一本完整的书来介绍计算机安全术语。上面介绍的这几个术语应用很普遍,熟悉它们非常重要。本章末尾有一些练习将帮助你扩展关于计算机安全术语的知识。下面这些链接也很有帮助:
- 美国网络安全职业和研究术语表: https://niccs.us-cert.gov/glossary
- SANS安全术语表:https://www.sans.org/security-resources/glossary-of-terms/
- NIST关键信息安全术语表: http://nvlpubs.nist.gov/nistpubs/ir/2013/NIST.IR.7298r2.pdf
供参考:审计与渗透测试
渗透测试者使用的测试过程实际上是一种特殊类型的审计。你可能想知道渗透测试和审计有什么区别。普通的审计与渗透测试的区别在于其方法不同。普通的审计通常包括检查法律、法规和标准的遵守情况,而渗透测试则试图攻破系统以评估其安全性。传统的审计包括查看日志、检查系统设置、确保安全符合某个特定的标准。而渗透测试者则简单地试图攻入系统。如果能成功的话,他们会记录他们是如何做的,并说明如何阻止别人做同样的事情。
1.11 选择网络安全模式
机构可以从几种网络安全模式(approach)中进行选择。特定的模式或范型(paradigm)将影响所有后续的安全决策,并为整个机构的网络安全基础设施设置基调。网络安全范型既可以按照安全措施的范围(边界、分层)来分类,也可以按照系统的主动性程度来分类。
1.11.1 边界安全模式
在边界安全(Perimeter Security)模式中,大部分的安全工作都集中在网络的边界上。这种聚焦在网络边界的工作可能包括防火墙、代理服务器、口令策略以及任何使网络非授权访问变得不太可能的技术或程序,而针对网络内部系统安全的工作极少或根本没有。在这种方法中,边界是被保护的,但边界内部的各种系统往往是很脆弱的。
边界安全模式显然存在缺陷。但为什么有些公司使用它呢?预算有限的小公司或缺乏经验的网络管理员可能会使用边界安全模式。对于那些不存储敏感数据的小型机构来说,这种模式或许已经足够了,但对较大的公司却不太有效。
1.11.2 分层安全模式
分层安全(Layered Security)模式是一种不仅要保护边界的安全,而且要保护网络内部各个系统安全的模式。网络中的所有服务器、工作站、路由器和集线器都是安全的。实现该模式的一种方法是将网络划分成段,并将每个段作为单独的网络进行保护。这样,如果边界安全被突破,那么并不是所有的内部系统都会受到影响。只要条件允许,分层安全模式是首选模式。
还可以用主动和/或被动的程度来评估安全模式。这可以通过度量系统的安全基础设施和策略中有多少专门用于预防措施,有多少专门用于攻击发生后对攻击的响应来实现。
被动安全模式很少或没有采取措施来防止攻击。相反,动态安全模式,或称主动防御,则在攻击发生之前采取一些措施防止攻击的发生。主动防御的一个例子是使用IDS,它用于检测规避安全措施的企图。一个破坏安全的企图即使没有成功,IDS也会告诉系统管理员该企图的发生。IDS还可以用于检测入侵者使用的攻击目标系统的各种技术,甚至能在攻击发起之前警告网络管理员潜在攻击企图的存在。
1.11.3 混合安全模式
在现实世界中,网络安全很少完全采用一种模式或另一种模式。网络通常采用多种安全模式中的多种因素。上述两种分类可以结合起来,形成混合模式。一个网络可以主要是被动的,但同时也是分层的安全模式,或者主要是边界安全模式,但同时也是主动的。考虑使用笛卡儿坐标系描述计算机安全的方法,其中,x轴表示方法的被动/主动水平,y轴描绘从边界防护到分层防护的范围,这种表示有助于理解该方法。最理想的混合模式是动态的分层模式。
1.12 网络安全与法律
越来越多的法律问题影响着管理员如何管理网络安全。如果你所在机构是一家上市公司、一家政府机构,或者与它们有生意往来的机构,那么如何选择你的安全模式可能存在法律上的约束。法律约束包括影响信息如何存储或访问的任何法律。Sarbanes-Oxley(本章后面将详细讨论)就是一个例子。即使你的网络在法律上不受这些安全指南的约束,但了解影响计算机安全的各种法律,并得出可能适用你自己安全标准的想法也是有用的。
在美国,影响计算机安全的、最古老的立法之一是颁布于1987年的计算机安全法案(Computer Security Act of 1987)(1987,第100届国会)。该法案要求政府机构确定敏感系统、进行计算机安全培训,并制定计算机安全计划。由于该法律要求美国联邦机构在没有规定任何标准的情况下建立安全措施,因此是一个模糊的命令。
这项立法建立了制定具体标准的法律授权,为未来的指南和规则铺平了道路。也有助于定义某些术语,如根据立法中的下述论述,可以确定什么信息是“敏感的”:
Sensitive information is any information, the loss, misuse, or unauthorized access to or modification of which could adversely affect the national interest or the conduct of Federal programs, or the privacy to which individuals are entitled under section 552a of title 5, United States Code (the Privacy Act), but which has not been specifically authorized under criteria established by an Executive order or an Act of Congress to be kept secret in the interest of national defense or foreign policy.
记住这个定义,因为不仅仅是社会保障信息(Social Security information)或病例(medical history)需要安全保护。当考虑哪些信息需要安全保护时,只需简单地问一个问题:这些信息的非授权访问或者修改会对我的机构产生不利影响吗?如果答案是“是”,那么就必须认为该信息是“敏感”的,需要安全防范措施。
另一个更具体的、适用于政府系统强制安全的联邦法律是OMB Circular A-130(具体来说,是附录3)。该文件要求联邦机构建立包含特定要素的安全程序。该文件描述了制定计算机系统标准的要求以及政府机构持有记录的要求。
美国大多数州都有关于计算机安全的具体法律,比如佛罗里达州的计算机犯罪法案(Computer Crimes Act of Florida)、阿拉巴马州的计算机犯罪法案(Computer Crime Act of Alabama)和奥克拉荷马州的计算机犯罪法案(Computer Crimes Act of Oklahoma)。任何负责网络安全的人都有可能参与犯罪调查。可能是对黑客攻击事件的调查,也可能是对员工滥用计算机资源的调查。无论是什么性质的犯罪引起的调查,清楚你所在州的计算机犯罪法律是非常重要的。在http://www.irongeek.com/i.php?page=computerlaws/state-hacking-laws 上列出了各州适用于计算机犯罪的法律。该列表来自高级实验室工作站(Advanced Laboratory Workstation,ALW)、美国健康研究院(National Institutes for Health,NIH)和信息技术中心(Center for Information Technology)。
请记住,任何规范隐私的法律,如健康保险流通与责任法案(Health Insurance Portability and Accountability Act, HIPAA)涉及医疗记录,都对计算机安全有直接影响。如果一个系统被攻破,并且隐私法规所涵盖的数据受到损害,可能你就需要证明自己履行了保护这些数据应尽的职责。如果发现你没有采取适当的预防措施,就会导致承担民事责任。
与商业网络安全相关度更高的法律是Sarbanes-Oxley,常被称为SOX(http://www.soxlaw.com/ )。该法律规定了公开上市交易的公司如何存储和报告财务数据,其中保护这些数据的安全是很重要的一部分。显然,全面介绍这个法律已经超出了本章范围,甚至超出了本书范围。值得指出的是,网络安全除了是一门技术学科外,还必须考虑商业和法律后果。
1.13 使用安全资源
在阅读本书或进入专业世界时,你经常需要一些额外的安全资源。本节介绍一些最重要的资源,以及那些对你来说可能很有用的资源。
- CERT(www.cert.org/ )。CERT代表卡内基梅隆大学发起的计算机应急响应小组(Computer Emergency Response Team, CERT)。CERT是第一个计算机应急事件的响应队伍,目前仍然是业界最受尊敬的组织之一。任何对网络安全感兴趣的人都应该定期访问它的网站。网站上有丰富的文档,包括安全策略指南、前沿安全研究、安全警报以及其他更多内容。
- 微软安全技术中心(https://technet.microsoft.com/en-us/security )。这个站点特别有用,因为有太多的计算机运行微软的操作系统。这个网站是所有微软的安全信息、工具和更新的门户。微软软件的用户应该定期访问这个网站。
- F-安全公司(F-Secure Corporation, www.f-secure.com/ )。除了其他内容之外,这个网站是一个关于病毒爆发详细信息的存储库。在这里你能找到关于特定病毒的通知和详细信息。这些信息包括病毒如何传播、识别病毒的方法以及清除特定病毒感染的具体工具。
- F-安全实验室(www.f-secure.com/en/web/labs_global/home )。
- 美国系统网络安全协会(www. sans.org/ )。该网站提供计算机安全几乎所有方面的详细文档。SANS研究所还赞助了许多安全研究项目,并在其网站上发布有关这些项目的信息。
1.14 本章小结
对网络的威胁在日益增长。我们看到越来越多的黑客攻击、病毒以及其他形式的攻击。危险在增大,同时法律压力(如HIPAA和SOX)也在增大,因此网络管理员的网络安全需求在日益增长。为了满足这一需求,你必须全面理解你的网络存在的威胁,以及你可以采取的对策。这要从对网络威胁的现实评估开始。
本章介绍了网络安全的基本概念、威胁的一般分类以及基本的安全术语。后续章节将详细阐述这些信息。
1.15 自测题
1.15.1 多项选择题
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. 一个攻击系统却没被抓住的业余爱好者
B. 一个通过伪造合法口令来攻击系统的人
C. 一个为测试系统漏洞而攻击系统的人
D. 一个业余黑客
7.描述攻击电话系统的术语是什么?
A. Telco-hacking
B. Hacking
C. Cracking
D. Phreaking
8.下列哪一个是恶意软件的最佳定义?
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.任何价值超过1000美元的信息
C.任何如果被未授权的人员访问就可能损害你所在机构的信息
D.任何具有货币价值并受隐私法律保护的信息
21.下列哪一项很好地定义了道德黑客与审计者之间的主要区别?
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.4 黑客攻击术语
使用New Hacker抯 Dictionary(新黑客字典),网址为:http://www.outpost9.com/reference/jargon/jargon_toc.html ,定义以下术语。然后检查Internet(网页、聊天室或电子公告牌),为每个术语找到一个用例。
- daemon(守护程序)
- dead code(死码)
- dumpster diving(垃圾搜寻)
- leapfrog attack(跳步攻击)
- kluge(杂凑攻击)
- nuke(核弹)
练习1.5 安全专业术语
使用本章中讨论的三个词汇表之一,定义下列术语:
- access control list(访问控制列表)
- adware(广告软件)
- authentication(认证)
- backdoor(后门)
- buffer(缓冲区)
- HotFix(热补丁)
1.15.3 项目题
项目1.1 了解病毒
1.使用你最喜欢的搜索引擎进行搜索,找到一种在过去六个月里发布的病毒。你可以在www.f-secure.com 这类网站上找到这些信息。
2.描述你选择的病毒是如何工作的,包括它使用的传播方法。
3.描述该病毒造成的损害。
4.该病毒有特定的目标吗?
5.病毒攻击的肇事者被抓获和/或被起诉了吗?
6.关于该病毒攻击发布了什么类型的安全警告?
7.给出了哪些措施来防御它?
8.对该病毒最恰当的描述是病毒还是蠕虫?
项目1.2 安全专业
利用包括Web在内的各种资源,找出计算机安全管理员工作所需的资质。你需要找出所需的具体技术、工作经验、教育水平以及任何认证。本项目可以帮你了解,业界认为的安全专业人员要理解的最重要的主题是什么。可以提供帮助的网站包括:
www.computerjobs.com
www.dice.com
www.monster.com
项目1.3 查找网络资源
本章提供了几个很好的安全信息Web资源。现在,你应该使用Internet来确定三个你认为对安全专业人员有益、能提供可靠和有效信息的网站。解释为什么你认为它们是有效的信息来源。
注意:你可能会在后续章节的练习和项目中使用这些资源,所以一定要确保你可以依赖它们所提供的数据。