第3章网络安全基础 3.1网络安全概述3.1.1网络安全现状及安全挑战 网络安全 现状及安 全挑战1969年,美国国防部国防高级研究计划署(DOD/DARPA)资助建立了ARPANET(阿帕网),这标志着互联网的诞生。计算机网络及分布式系统的出现给信息安全带来了第二次变革。人们通过各种通信网络进行数据的传输、交换、存储、共享和分布式计算。网络的出现给人们的工作和生活带来了极大的便利,但同时也带来了极大的安全风险。在信息传输和交换时,需要对通信信道上传输的机密数据进行加密;在数据存储和共享时,需要对数据库进行安全的访问控制和对访问者授权;在进行多方计算时,需要保证各方机密信息不被泄露。这些均属于网络安全的范畴。 1. 网络安全现状 在今天的计算机技术产业中,网络安全是急需解决的最重要的问题之一。由美国律师联合会(American Bar Association)所做的一项与安全有关的调查发现,有40%的被调查者承认在他们的机构内曾经发生过计算机犯罪事件。在过去的几年里,Internet继续快速发展,Internet用户数量急剧攀升。随着网络基础设施的建设和Internet用户的激增,网络与信息安全问题越来越严重,因黑客事件而造成的损失也越来越巨大。 第一,计算机病毒层出不穷,肆虐全球,并且逐渐呈现新的传播态势和特点。其主要表现是传播速度快,与黑客技术结合在一起而形成的“混种病毒”和“变异病毒”越来越多。病毒能够自我复制,主动攻击与主动感染能力增强。当前,全球计算机病毒已达8万多种,每天会产生5~10种新病毒。 第二,黑客对全球网络的恶意攻击势头逐年攀升。近年来,网络攻击还呈现出黑客技术与病毒传播相结合的趋势。2001年以来,计算机病毒的大规模传播与破坏都同黑客技术的发展有关,二者的结合使病毒的传染力与破坏性倍增。这意味着网络安全遇到了新的挑战,即集病毒、木马、蠕虫和网络攻击为一体的威胁,可能造成快速、大规模的感染,造成主机或服务器瘫痪,数据信息丢失,损失不可估量。在网络和无线电通信普及的情况下,尤其是在计算机网络与无线通信融合、国家信息基础设施网络化的情况下,黑客加病毒的攻击很可能构成对网络生存与运行的致命威胁。如果黑客对国家信息基础设施中的任何一处目标发起攻击,都可能导致巨大的经济损失。 第三,由于技术和设计上的不完备,导致系统存在缺陷或安全漏洞。这些漏洞或缺陷主要存在于计算机操作系统与网络软件之中。例如,微软的Windows XP操作系统中含有数项严重的安全漏洞,黑客可以透过此漏洞实施网络窃取、销毁用户资料或擅自安装软件,乃至控制用户的整个计算机系统。正是因为计算机操作系统与网络软件难以完全克服这些漏洞和缺陷,使得病毒和黑客有了可乘之机。由于操作系统和应用软件所采用的技术越来越先进和复杂,因此带来的安全问题就越来越多。同时,由于黑客工具随手可得,使得网络安全问题越来越严重。所谓“网络是安全的”说法只是相对的,根本无法达到“绝对安全”的状态。 第四,世界各国军方都在加紧进行信息战的研究。近几年来,黑客技术已经不再局限于修改网页、删除数据等惯用的伎俩,而是登上了信息战的舞台,成为信息作战的一种手段。信息战的威力之大,在某种程度上不亚于核武器。在海湾战争、科索沃战争及巴以战争中,信息战发挥了巨大的威力。 网络空间安全导论第3章网络安全基础今天,“制信息权”已经成为衡量一个国家实力的重要标志之一。信息空间上的信息大战正在悄悄而积极地酝酿,小规模的信息战一直不断出现、发展和扩大。信息战是信息化社会发展的必然产物。在信息战场上能否取得控制权,是赢得政治、外交、军事和经济斗争胜利的先决条件。信息安全问题已成为影响社会稳定和国家安危的战略性问题。 2. 敏感信息对安全的需求 与传统的邮政业务和有纸办公不同,现代的信息传递、存储与交换是通过电子和光子完成的。现代通信系统可以让人类实现面对面的电视会议或电话通信。然而,流过信息系统的信息有可能十分敏感,因为它们可能涉及产权信息、政府或企业的机密信息,或者与企业之间的竞争密切相关。目前,许多机构已经明确规定,对网络上传输的所有信息必须进行加密保护。从这个意义上讲,必须对数据保护、安全标准与策略的制定、安全措施的实际应用等各方面工作进行全面的规划和部署。 根据多级安全模型,通常将信息的密级由低到高划分为秘密级、机密级和绝密级,以确保每一密级的信息仅能让那些具有高于或等于该权限的人使用。所谓机密信息和绝密信息,是指国家政府对军事、经济、外交等领域严加控制的一类信息。军事机构和国家政府部门应特别重视对信息施加严格的保护,特别应对那些机密和绝密信息施加严格的保护措施。对于那些被认为敏感但非机密的信息,也需要通过法律手段和技术手段加以保护,以防止信息泄露或被恶意修改。事实上,一些政府部门的信息虽然是非机密的,但它们通常属于敏感信息。一旦泄露这些信息,有可能对社会的稳定造成危害。因此,不能通过未加保护的通信媒介传送此类信息,而应该在发送前或发送过程中对此类信息进行加密保护。当然,这些保护措施的实施是要付出代价的。除此之外,在系统的方案设计、系统管理和系统的维护方面还需要花费额外的时间和精力。近年来,一些采用极强防护措施的部门也面临着越来越严重的安全威胁。今天的信息系统不再是一个孤立的系统,通信网络已经将无数个独立的系统连接在一起。在这种情况下,网络安全也呈现出许多新的形式和特点。 3. 网络应用对安全的需求 Internet从诞生到现在只有短短几十年的时间,但其爆炸式的技术发展速度远远超过人类历史上任何一次技术革命。然而,从长远发展趋势来看,现在的Internet还处于发展的初级阶段,Internet技术存在着巨大的发展空间和潜力。 随着网络技术的发展,网络视频会议、远程教育等各种新型网络多媒体应用不断出现,传统的网络体系结构越来越显示出局限性。1996年,美国政府制定了下一代Internet(Next Generation Internet,NGI)计划,与目前使用的Internet相比,它的传输速度将更快、规模更大,对网络的安全性提出了更高的要求。 当今,各种网络应用如雨后春笋般不断涌现,而这些应用与人们的生活和工作息息相关,如何保护这些应用的安全是一个巨大的挑战。 网络安全 威胁与防 护措施3.1.2网络安全威胁与防护措施1. 基本概念所谓安全威胁,是指某个人、物、事件或概念对某一资源的保密性、完整性、可用性或合法使用所造成的危险。攻击就是某个安全威胁的具体实施。 所谓防护措施,是指保护资源免受威胁的一些物理的控制、机制、策略和过程。脆弱性是指在实施防护措施中或缺少防护措施时系统所具有的弱点。 所谓风险,是对某个已知的、可能引发某种成功攻击的脆弱性的代价的测度。当某个脆弱的资源的价值越高且成功攻击的概率越大时,风险就越高;反之,当某个脆弱资源的价值越低且成功攻击的概率越小时,风险就越低。风险分析能够提供定量的方法,以确定是否应保证在防护措施方面的资金投入。 安全威胁有时可以分为故意(如黑客渗透)和偶然(如信息被发往错误的地方)两类。故意的威胁又可以进一步分为被动攻击和主动攻击。被动攻击只对信息进行监听(如搭线窃听),而不对其进行修改。主动攻击却对信息进行故意的修改(如改动某次金融会话过程中货币的数量)。总之,被动攻击比主动攻击更容易以更少的花费付诸实施。 目前尚没有统一的方法来对各种威胁加以区别和进行分类,也难以厘清各种威胁之间的相互关系。不同威胁的存在及其严重性随着环境的变化而变化。为了解释网络安全服务的作用,我们将现代计算机网络及通信过程中常遇到的一些威胁汇编成图表,如图31和表11所示。下面分3个阶段对威胁进行分析: ①基本的威胁;②主要的可实现威胁;③潜在威胁及分类。 2. 安全威胁的来源 (1) 基本威胁 在信息系统中,存在以下4种基本安全威胁: ① 信息泄露: 信息被泄露或透露给某个非授权的人或实体。这种威胁来自诸如窃听、搭线或其他更加错综复杂的信息探测攻击。 ② 完整性破坏: 数据的一致性通过非授权的增删、修改或破坏而受到损坏。 ③ 拒绝服务: 对信息或资源的访问被无条件地阻止。这可能由以下攻击所致: 攻击者通过对系统进行非法的、根本无法成功的访问尝试使系统产生过量的负荷,从而导致系统的资源在合法用户看来是不可使用的。拒绝服务也可能是因为系统在物理上或逻辑上受到破坏而中断服务。 ④ 非法使用: 某一资源被某个非授权的人或以某种非授权的方式使用。例如,侵入某个计算机系统的攻击者会利用此系统作为盗用电信服务的基点,或者作为侵入其他系统的“桥头堡”。 (2) 主要的可实现威胁 在安全威胁中,主要的可实现威胁应该引起高度关注,因为这类威胁一旦成功实施,就会直接导致其他任何威胁的实施。主要的可实现威胁包括渗入威胁和植入威胁。 主要的渗入威胁有如下几种: ① 假冒。某个实体(人或系统)假装成另外一个不同的实体。这是突破某一安全防线最常用的方法。这个非授权的实体提示某个防线的守卫者,使其相信它是一个合法实体,此后便攫取了此合法用户的权利和特权。黑客大多采取这种假冒攻击方式来实施攻击。 ② 旁路控制。为了获得非授权的权利和特权,某个攻击者会发掘系统的缺陷和安全漏洞。例如,攻击者通过各种手段发现原本应保密但又暴露出来的一些系统“特征”。攻击者可以绕过防线守卫者侵入系统内部。 ③ 授权侵犯。一个授权以特定目的使用某个系统或资源的人,却将其权限用于其他非授权的目的。这种攻击的发起者往往属于系统内的某个合法的用户,因此这种攻击又称为“内部攻击”。 主要的植入类型的威胁有如下几种: ① 特洛伊木马(Trojan Horse)。软件中含有一个不易觉察的或无害的程序段,当被执行时,它会破坏用户的安全性。例如,一个表面上具有合法目的的应用程序软件,如文本编辑软件,它还具有一个暗藏的目的,就是将用户的文件复制到一个隐藏的秘密文件中,这种应用程序就称为特洛伊木马。此后,植入特洛伊木马的那个攻击者就可以阅读到该用户的文件。 ② 陷门(Trapdoor)。在某个系统或其部件中设置“机关”,使在提供特定的输入数据时,允许违反安全策略。例如,如果在一个用户登录子系统上设有陷门,当攻击者输入一个特别的用户身份号时,就可以绕过通常的口令检测。 (3) 潜在威胁 在某个特定的环境中,如果对任何一种基本威胁或主要的可实现的威胁进行分析,就能够发现某些特定的潜在威胁,而任意一种潜在的威胁都可能导致一些更基本的威胁发生。例如,在对信息泄露这种基本威胁进行分析时,有可能找出以下几种潜在的威胁: ① 窃听(Eavesdropping)。 ② 流量分析(Traffic Analysis)。 ③ 操作人员的不慎所导致的信息泄露。 ④ 媒体废弃物所导致的信息泄露。 图31列出了一些典型的威胁及它们之间的相互关系。注意,图中的路径可以交错。例如,假冒攻击可以成为所有基本威胁的基础,同时假冒攻击本身也存在信息泄露的潜在威胁。信息泄露可能暴露某个口令,而用此口令攻击者也可以实施假冒攻击。表31列出了各种威胁之间的差异,并分别进行了描述。 图31典型的威胁及其相互关系 续表表31典型的网络安全威胁威胁描述授权侵犯一个被授权以特定目的使用系统的人,却将此系统用于其他非授权的目的旁路控制攻击者发掘系统的安全缺陷或安全脆弱性,以绕过访问控制措施拒绝服务*对信息或其他资源的合法访问被无条件地拒绝窃听攻击信息从被监视的通信过程中泄露出去电磁/射频截获信息从电子或机电设备所发出的无线频率或其他电磁场辐射中被提取出来非法使用资源被某个非授权的人或以非授权的方式使用人员疏忽一个被授权的人为了金钱等利益或由于粗心,将信息泄露给非授权的人信息泄露信息被泄露或暴露给某个非授权的人完整性侵犯*数据的一致性由于非授权的增删、修改或破坏而受到损害截获/修改*某一通信数据在传输过程中被改变、删除或替换假冒攻击*一个实体(人或系统)假装成另一个不同的实体媒体废弃物信息从被废弃的磁带或打印的废纸中泄露出去物理入侵入侵者通过绕过物理控制(如防盗门)而获得对系统的访问消息重发*对所截获的某次合法通信数据备份,出于非法的目的而重新发送该数据业务否认*参与某次通信交换的一方,事后错误地否认曾经发生过此次信息交换资源耗尽某一资源(如访问接口)被故意地超负荷使用,导致其他用户服务中断服务欺骗某一伪造的系统或部件欺骗合法的用户或系统,自愿放弃敏感的信息窃取某一安全攸关的物品被盗,例如令牌或身份卡流量分析*通过对通信流量的模式进行观察,机密信息有可能泄露给非授权的实体陷门将某一“特征”嵌入某个系统或其部件中,当输入特定数据时,允许违反安全策略特洛伊木马一个不易察觉或无害程序段的软件,当其被运行时,就会破坏用户的安全性说明: 带*的威胁表示在计算机通信安全中可能发生的威胁。对3000种以上的计算机误用案例所做的一次抽样调查显示,最主要的几种安全威胁如下(按照出现频率由高至低排列): ①授权侵犯。②假冒攻击。③旁路控制。④特洛伊木马或陷门。⑤媒体废弃物。 在Internet中,网络蠕虫(Internet Worm)就是将旁路控制与假冒攻击结合起来的一种威胁。旁路控制就是利用已知的UNIX,Windows和Linux等操作系统的安全缺陷,避开系统的访问控制措施,进入系统内部。而假冒攻击则通过破译或窃取用户口令,冒充合法用户使用网络服务和资源。 3. 安全防护措施 在安全领域中,存在多种类型的防护措施。除了采用密码技术的防护措施外,还有其他类型的安全防护措施: ① 物理安全。包括门锁或其他物理访问控制措施、敏感设备的防篡改和环境控制等。 ② 人员安全。包括对工作岗位敏感性的划分、雇员的筛选,同时也包括对人员的安全性培训,以增强其安全意识。 ③ 管理安全。包括对进口软件和硬件设备的控制,负责调查安全泄露事件,对犯罪分子进行审计跟踪,并追查安全责任。 ④ 媒体安全。包括对受保护的信息进行存储,控制敏感信息的记录、再生和销毁,确保废弃的纸张或含有敏感信息的磁性介质被安全销毁。同时,对所用媒体进行扫描,以便发现病毒。 ⑤ 辐射安全。对射频(RF)及其他电磁(EM)辐射进行控制(又称TEMPEST保护)。 ⑥ 生命周期控制。包括对可信系统进行系统设计、工程实施、安全评估及提供担保,并对程序的设计标准和日志记录进行控制。 一个安全系统的强度与其最弱链路的强度相同。为了提供有效的安全性,需要将不同种类的威胁对抗措施联合起来使用。例如,当用户将口令遗忘在某个不安全的地方或受到欺骗而将口令暴露给某个未知的电话用户时,即使技术上是完备的,用于对付假冒攻击的口令系统也将无效。 防护措施可用来对付大多数安全威胁,但是采用每种防护措施均要付出代价。网络用户需要认真考虑这样一个问题: 为了防止某个攻击所付出的代价是否值得。例如,在商业网络中,一般不考虑对付电磁(EM)或射频(RF)泄露,因为它们对商用环境来说风险很小,而且其防护措施又十分昂贵。但在机密环境中,我们会得出不同的结论。对于某一特定的网络环境,究竟采用什么安全防护措施,这种决策属于风险管理的范畴。目前,人们已经开发出各种定性和定量的风险管理工具。如果要进一步了解有关的信息,请参看有关文献。 3.1.3安全攻击的分类及常见形式 安全攻击 的分类及 常见形式X.800和RFC 2828对安全攻击进行了分类。它们把攻击分成两类: 被动攻击和主动攻击。被动攻击试图获得或利用系统的信息,但不会对系统的资源造成破坏。而主动攻击则不同,它试图破坏系统的资源,影响系统的正常工作。 1. 被动攻击 被动攻击的特性是对所传输的信息进行窃听和监测。攻击者的目标是获得线路上所传输的信息。信息泄露和流量分析就是两种被动攻击的例子。 第一种被动攻击是窃听攻击,如图32(a)所示。电话、电子邮件和传输的文件中都可能含有敏感或秘密信息。攻击者通过窃听,可以截获这些敏感或秘密信息。我们要做的工作就是阻止攻击者获得这些信息。 图32被动攻击 第二种被动攻击是流量分析,如图32(b)所示。假设已经采取了某种措施来隐藏消息内容或其他信息的流量,使攻击者即使捕获了消息也不能从中发现有价值的信息。加密是隐藏消息的常用方法。即使对信息进行了合理的加密保护,攻击者仍然可以通过流量分析获得这些消息的模式。攻击者可以确定通信主机的身份及其所处的位置,可以观察传输消息的频率和长度,然后根据所获得的这些信息推断本次通信的性质。 被动攻击由于不涉及对数据的更改,所以很难被察觉。通过采用加密措施,完全有可能阻止这种攻击。因此,处理被动攻击的重点是预防,而不是检测。 2. 主动攻击 主动攻击是指恶意篡改数据流或伪造数据流等攻击行为,分成4类: ① 伪装攻击(Impersonation Attack); ② 重放攻击(Replay Attack); ③ 消息篡改(Message Modification); ④ 拒绝服务(Denial of Service)攻击。 伪装攻击是指某个实体假装成其他实体,对目标发起攻击,如图33(a)所示。伪装攻击的典型例子: 攻击者捕获认证信息,然后将其重发,这样攻击者就有可能获得其他实体所拥有的访问权限。 重放攻击是指攻击者为了达到某种目的,将获得的信息再次发送,以在非授权的情况下进行传输,如图33(b)所示。 图33主动攻击 消息篡改是指攻击者对所获得的合法消息中的一部分进行修改或延迟消息的传输,以达到其非授权的目的,如图33(c)所示。例如,攻击者将消息“Allow John Smith to read confidential accounts”修改为“Allow Fred Brown to read confidential file accounts”。 拒绝服务攻击则是指阻止或禁止人们正常使用网络服务或管理通信设备,如图33(d)所示。这种攻击可能目标非常明确。例如,某个实体可能会禁止所有发往某个目的地的消息。拒绝服务的另一种形式是破坏某个网络,使其瘫痪,或者使其过载以降低性能。 主动攻击与被动攻击相反。被动攻击虽然难以检测,但采取某些安全防护措施就可以有效阻止;主动攻击虽然易于检测,但却难以阻止。所以对付主动攻击的重点应当放在如何检测并发现上,并采取相应的应急响应措施,使系统从故障状态恢复到正常运行。由于检测主动攻击对于攻击者来说能起到威慑作用,所以在某种程度上可以阻止主动攻击。 3. 网络攻击的常见形式 在前面已经讨论了网络中存在的各种威胁,这些威胁的直接表现形式就是黑客常采取的各种网络攻击方式。下面将对常见的网络攻击进行分类。通过分类,可以针对不同的攻击类型采取相应的安全防护措施。 (1) 口令窃取 进入一台计算机最容易的方法就是采用口令登录。只要在许可的登录次数范围内输入正确的口令,就可以成功地登录系统。 口令猜测攻击有三种基本方式: ① 利用已知或假定的口令尝试登录。虽然这种登录尝试需要反复进行十几次甚至更多,但往往会取得成功。一旦攻击者成功登录,网络的主要防线就会崩溃。很少有操作系统能够抵御从内部发起的攻击。 ② 根据窃取的口令文件进行猜测(如UNIX系统中的/etc/passwd文件)。这些口令文件有的是从已经被攻破的系统中窃取的,有的是从未被攻破的系统中获得的。由于用户习惯重复使用同一口令,当黑客得到这些文件后,就会尝试用其登录其他机器。这种攻击称为“字典攻击”,通常十分奏效。 ③ 窃听某次合法终端之间的会话,并记录所使用的口令。采用这种方式,不管用户的口令设计得有多好,其系统都会遭到破坏。 要彻底解决使用口令的弊端,就要完全放弃使用口令机制,转而使用基于令牌(Tokenbased)的机制。如果暂时还不能做到,起码要使用一次性口令方案,如OTP(OneTime Password)。 (2) 欺骗攻击 黑客的另外一种攻击方式是采用欺骗的方式获取登录权限。常用的欺骗攻击是攻击者会向受害者发送钓鱼邮件。钓鱼邮件指利用伪装的电邮,欺骗收件人将账号、口令等信息回复给指定的接收者;或引导收件人连接到特制的网页,这些网页通常会伪装成和真实网站一样,如银行或理财的网页,令登录者信以为真,输入信用卡或银行卡号码、账户名称及密码等而被盗取。不幸的是,很多人都会上当,因为这个钓鱼邮件可能是自己的“朋友”或“熟人”发送来的。 (3) 缺陷和后门攻击 网络蠕虫传播的方式之一是通过向finger守护程序(Daemon)发送新的代码实现的。显然,该守护程序并不希望收到这些代码,但在协议中没有限制接收这些代码的机制。守护程序的确可以发出一个gets呼叫,但并没有指定最大的缓冲区长度。蠕虫向“读”缓冲区内注入大量的数据,直到将gets堆栈中的返回地址覆盖。当守护程序中的子程序返回时,就会转而执行入侵者写入的代码。 缓冲器溢出攻击也称为“堆栈粉碎”(Stack Smashing)攻击。这是攻击者常采用的一种扰乱程序的攻击方法。长期以来,人们试图通过改进设计来消除缓冲器溢出缺陷。有些计算机语言在设计时就尽可能不让攻击者做到这点。一些硬件系统也尽量不在堆栈上执行代码。此外,一些C编译器和库函数也使用了许多对付缓冲器溢出攻击的方法。 所谓缺陷(Flaws),就是指程序中的某些代码并不能满足特定的要求。尽管一些程序缺陷已经由厂家逐步解决,但是一些常见问题依然存在。最佳解决办法就是在编写软件时,力求做到准确、无误。然而,软件上的缺陷有时是很难避免的,这正是今天的软件中存在那么多缺陷的原因。 Morris蠕虫及其许多现代变种给我们的教训极为深刻,其中最重要的一点是: 缺陷导致的后果并不局限于产生不良的效果或造成某一特定服务的混乱,更可怕的是因为某一部分代码的错误而导致整个系统的瘫痪。当然,没有人有意要编写带有缺陷的代码。只要采取相应的步骤,可以降低其发生的可能性。 最后需要指出: 不要为了追求效率而牺牲对程序正确性的检查。如果仅仅为了节约几ns的执行时间而将程序设计得既复杂又别出心裁,并且又需要特权,那就错了。现在的计算机硬件速度越来越高,节约的这点时间毫无价值。一旦出现安全问题,在清除入侵上所花费的时间和付出的代价将是非常巨大的。 (4) 认证失效 许多攻击的成功都可归结于认证机制的失效。即使一个安全机制再好,也存在遭受攻击的可能性。例如,一个源地址有效性的验证机制,在某些应用场合(如有防火墙地址过滤时)能够发挥作用,但是黑客可以使用rpcbind重发某些请求。在这种情况下,最终的服务器就会被欺骗。对于这些服务器来说,这些消息看起来好像源于本地,但实际上来自其他地方。 如果源机器是不可信的,基于地址的认证也会失效。虽然人们可以采用口令机制来控制自己的计算机,但是口令失窃也是常见的。窃听者可以很容易地从未加密的会话中获得明文的口令,有时也可能对某些一次口令方案发起攻击。对于一个好的认证方案来说,下次登录必须具有唯一的有效口令。有时攻击者会将自己置于客户机和服务器中间,它仅仅转发服务器对客户机发出的“挑战”(challenge,实际上为一随机数),并从客户机获得一个正确的“响应”。此时,攻击者可以采用此“响应”信息登录服务器。有关此类攻击可参见相关文献。 (5) 协议缺陷 前面讨论的是在系统完全正常工作的情况下发生的攻击。但是,有些认证协议本身就有安全缺陷,这些缺陷的存在会直接导致攻击的发生。 例如,攻击者可对TCP发起序列号攻击。由于在建立连接时所生成的初始序列号的随机性不够,攻击者很可能发起源地址欺骗攻击。为了做到公平,TCP的序列号在设计时并没有考虑抵御恶意的攻击。其他基于序列号认证的协议也可能遭受同样的攻击。这样的协议有很多,如DNS和许多基于RPC的协议。 在密码学中,如何发现协议中存在的安全漏洞是非常重要的研究课题。有时错误是由协议的设计者无意造成的,但更多的安全漏洞是由不同的安全假设所引发的。对密码协议的安全性进行证明非常困难,人们正在加强这方面的研究工作。现在,各种学术刊物、安全公司网站和操作系统开发商经常公布一些新发现的安全漏洞,我们必须对此加以重视。 802.11无线数据通信标准中的WEP在设计上也存在缺陷。目前,针对WEP的攻击软件在网络上随处可见。这一切说明,真正的安全是很难做到的。工程师在设计密码协议时,应当多向密码学家咨询,而不是随意设计。信息安全对人的技术素质要求非常高,没有进行专业学习和受过专门培训的人员很难胜任此项工作。 (6) 信息泄露 许多协议都会丢失一些信息,这就给那些想要使用该服务的攻击者提供了可乘之机。这些信息可能成为商业间谍窃取的目标,攻击者也可借助这些信息攻破系统。Finger协议就是这样一个例子。这些信息除了可以用于口令猜测之外,还可以用来进行欺骗攻击。 另一个丰富的数据来源是DNS。在这里,黑客可以获得从公司的组织结构到目标用户的非常有价值的数据。要控制数据的流出是非常困难的,唯一的办法是对外部可见的DNS加以限制,使其仅提供网关机器的地址列表。 精明的黑客当然深谙其理,他根本不需要你说出有哪些机器存在。他只须进行端口号和地址空间扫描,就可寻找感兴趣的服务和隐藏的主机。这里,对DNS进行保护的最佳防护措施是使用防火墙。如果黑客不能向某一主机发送数据包,他也就不能侵入该主机并获取有价值的信息。 (7) 指数攻击——病毒和蠕虫 指数攻击能够使用程序快速复制并传播攻击。当程序自行传播时,这些程序称为蠕虫(Worms);当它们依附于其他程序传播时,这些程序就叫作病毒。病毒传播的数学模型是相似的,病毒的流行传播与生物感染病毒非常相似。 这些程序利用在很多系统或用户中普遍存在的缺陷和不良行为获得成功。它们可以在几小时或几分钟之内扩散到全世界,从而使许多机构蒙受巨大损失。Melissa蠕虫能够阻塞基于微软软件的电子邮件系统达5天之久。各种各样的蠕虫给Internet造成巨大的负担。这些程序本身更倾向于攻击随机的目标,而不是针对特定的个人或机构。但是,它们所携带的某些代码却可能对那些著名的政治目标或商业目标发起攻击。 对于已知的计算机病毒,采用流行的查杀病毒软件来清除非常有效。但是这些软件必须经常升级,因为病毒的制造者和杀毒软件厂商之间正进行着一场较量。现在,病毒隐藏的隐蔽性越来越高,使得杀毒软件不再局限于在可执行代码中寻找某些字符串。它们必须能够仿效这些代码并寻找滤过性病毒的行为特征。由于病毒越来越难以发现,病毒检测软件就不得不花更多的时间来检查每个文件,有时所花费的时间会很长。病毒的制造者可能会巧妙地设计代码,使杀毒软件在一定的时间内不能识别出来。 (8) 拒绝服务攻击 在前面讨论的攻击方式中,大多数是基于协议的弱点、服务器软件的缺陷和人为因素而实施的。拒绝服务(DenialofService,DoS)攻击则不同,它是通过过度使用服务,使网络连接数超出其可以承受的并发连接数,从而造成自动关机或系统瘫痪,或降低服务质量。这种攻击通常不会造成文件删除或数据丢失,因此是一种比较温和的攻击。 这类攻击往往比较容易发现。例如,关闭一个服务很容易被检测并发现。尽管攻击很容易暴露,但要找到攻击的源头却十分困难。这类攻击往往生成伪装的数据包,其中含有随机和无效的返回地址。 分布式拒绝服务(Distributed DenialofService,DDoS)攻击使用很多Internet主机,同时向某个目标发起攻击。通常,参与攻击的主机却不明不白地成为攻击者的帮凶。这些主机可能已经被攻击者攻破,或者被植入恶意的木马。DDoS攻击通常难以恢复,因为攻击有可能来自世界各地。 开放系统 互连模型 与安全体 系结构目前,黑客采用DDoS攻击成功地攻击了几个著名的网站,如Yahoo、微软及SCO等,已经引起广泛关注。DDoS其实是DoS攻击的一种,不同的是它能够使用许多台计算机通过网络同时对某个网站发起攻击。 3.1.4开放系统互连模型与安全体系结构 研究信息系统安全体系结构的目的,就是将普遍性的安全理论与实际信息系统相结合,形成满足信息系统安全需求的安全体系结构。应用安全体系结构的目的,就是从管理上和技术上保证完整、准确地实现安全策略,满足安全需求。开放系统互连(Open System Interconnection,OSI)安全体系结构定义了必需的安全服务、安全机制和技术管理,以及它们在系统上的合理部署和关系配置。 由于基于计算机网络的信息系统以开放系统Internet为支撑平台,因此本节重点讨论开放系统互连安全体系结构。 OSI安全体系结构的研究始于1982年,当时ISO基本参考模型刚刚确立。这项工作是由ISO/IEC JTC1/SC21完成的。国际标准化组织(ISO)于1988年发布了ISO 74982标准,作为OSI基本参考模型的新补充。1990年,国际电信联盟(International Telecommunication Union,ITU)决定采用ISO 74982作为其X.800推荐标准。因此,X.800和ISO 74982标准基本相同。 我国的国家标准《信息处理系统开放系统互连基本参考模型——第二部分: 安全体系结构》(GB/T9387.2—1995)(等同于ISO 74982)和《Internet安全体系结构》(RFC 2401)中提到的安全体系结构是两个普遍适用的安全体系结构,用于保证在开放系统中进程与进程之间远距离安全交换信息。这些标准确立了与安全体系结构有关的一般要素,适用于开放系统之间需要通信保护的各种场合。这些标准在参考模型的框架内建立起一些指导原则与约束条件,从而提供了解决开放互连系统中安全问题的统一方法。 下面重点介绍安全体系结构中所定义的安全服务和安全机制及两者之间的关系。 1. 安全服务 X.800对安全服务做出定义: 为了保证系统或数据传输有足够的安全性,开放系统通信协议所提供的服务。RFC2828也对安全服务做出了更加明确的定义: 安全服务是一种由系统提供的对资源进行特殊保护的进程或通信服务。安全服务通过安全机制来实现安全策略。X.800将这些服务分为5类,共14个特定服务,如表32所示。这5类安全服务将在后面逐一进行讨论。续表表32X.800定义的5类安全服务分类特定服务内容认证(确保通信实体就是它所声称的实体)同等实体认证用于逻辑连接建立和数据传输阶段,为该连接的实体的身份提供可信性保障数据源点认证在无连接传输时,保证收到的信息来源是所声称的来源访问控制防止对资源的非授权访问,包括防止以非授权的方式使用某一资源。这种访问控制要与不同的安全策略协调一致数据保密性(保护数据,使之不被非授权地泄露)连接保密性保护一次连接中所有的用户数据无连接保密性保护单个数据单元里的所有用户数据选择域保密性对一次连接或单个数据单元里选定的数据部分提供保密性保护流量保密性保护那些可以通过观察流量而获得的信息数据完整性(保证接收到的数据确实是授权实体发出的数据,即没有修改、插入、删除或重发)具有恢复功能的连接完整性提供一次连接中所有用户数据的完整性。检测整个数据序列内存在的修改、插入、删除或重发,且试图将其恢复无恢复功能的连接完整性同具有恢复功能的连接完整性基本一致,但仅提供检测,无恢复功能选择域连接完整性提供一次连接中传输的单个数据单元用户数据中选定部分的数据完整性,并判断选定域是否有修改、插入、删除或重发无连接完整性为单个无连接数据单元提供完整性保护;判断选定域是否被修改不可否认性(防止整个或部分通信过程中,任意一个通信实体进行否认的行为)源点的不可否认性证明消息由特定的一方发出信宿的不可否认性证明消息被特定方收到(1) 认证 认证服务与保证通信的真实性有关。在单条消息下,如一条警告或报警信号认证服务是向接收方保证消息来自所声称的发送方。对于正在进行的交互,如终端和主机连接,就涉及两个方面的问题: 首先,在连接的初始化阶段,认证服务保证两个实体是可信的,也就是说,每个实体都是它们所声称的实体;其次,认证服务必须保证该连接不受第三方的干扰,例如,第三方能够伪装成两个合法实体中的一方,进行非授权的传输或接收。 该标准还定义了如下两个特殊的认证服务: ① 同等实体认证。用于在连接建立或数据传输阶段为连接中的同等实体提供身份确认。该服务提供这样的保证: 一个实体不能实现伪装成另外一个实体或对上次连接的消息进行非授权重发的企图。 ② 数据源认证。为数据的来源提供确认,但对数据的复制或修改不提供保护。这种服务支持电子邮件这种类型的应用。在这种应用下,通信实体之间没有任何预先的交互。 (2) 访问控制 在网络安全中,访问控制对那些通过通信连接对主机和应用的访问进行限制和控制。这种保护服务可应用于对资源的各种不同类型的访问。例如,这些访问包括使用通信资源、读写或删除信息资源或处理信息资源的操作。为此,每个试图获得访问控制权限的实体必须在经过认证或识别之后,才能获取其相应的访问控制权限。 (3) 数据保密性 保密性是防止传输的数据遭到诸如窃听、流量分析等被动攻击。对于数据传输,可以提供多层的保护。最常使用的方法是在某个时间段内对两个用户之间所传输的所有用户数据提供保护。例如,若两个系统之间建立了TCP连接,这种最通用的保护措施可以防止在TCP连接上传输用户数据的泄露。此外,还可以采用一种更特殊的保密性服务,它可以对单条消息或对单条消息中的某个特定的区域提供保护。这种特殊的保护措施与普通的保护措施相比,所使用的场合更少,而且实现起来更复杂、更昂贵。 保密性的另外一个用途是防止流量分析。它可以使攻击者观察不到消息的信源和信宿、频率、长度或通信设施上的其他流量特征。 (4) 数据完整性 与数据的保密性相比,数据完整性可以应用于消息流、单条消息或消息的选定部分。同样,最常用和直接的方法是对整个数据流提供保护。 面向连接的完整性服务保证收到的消息和发出的消息一致,不存在对消息进行复制、插入、修改、倒序、重发和破坏。因此,面向连接的完整性服务也能够解决消息流的修改和拒绝服务两个问题。另一方面,用于处理单条消息的无连接完整性服务通常仅防止对单条消息的修改。 另外,还可以区分有恢复功能的完整性服务和无恢复功能的完整性服务。因为数据完整性的破坏与主动攻击有关,所以重点在于检测而不是阻止攻击。如果检测到完整性遭到破坏,那么完整性服务能够报告这种破坏,并通过软件或人工干预的办法来恢复被破坏的部分。在后面可以看到,有些安全机制可以用来恢复数据的完整性。通常,自动恢复机制是一种非常好的选择。 (5) 不可否认性 不可否认性防止发送方或接收方否认传输或接收过某条消息。因此,当消息发出后,接收方能证明消息是由所声称的发送方发出的。同样,当消息接收后,发送方能证明消息确实是由所声称的接收方收到的。 (6) 可用性服务 X.800和RFC2828对可用性的定义是: 根据系统的性能说明,能够按照系统所授权的实体的要求对系统或系统资源进行访问。也就是说,当用户请求服务时,如果系统设计时能够提供这些服务,则系统是可用的。许多攻击可能导致可用性的损失或降低。可以采取一些自动防御措施(如认证、加密等)来对付这些攻击。 X.800将可用性看作是与其他安全服务相关的性质。但是,对可用性服务进行单独说明很有意义。可用性服务能够确保系统的可用性,能够对付由拒绝服务攻击引起的安全问题。由于它依赖于对系统资源的恰当管理和控制,因此它依赖于访问控制和其他安全服务。 2. 安全机制 表33列出了X.800定义的安全机制。由表可知,这些安全机制可以分成两类: 一类在特定的协议层实现,另一类不属于任何的协议层或安全服务。前一类被称为特定安全机制,共有8种;后一类被称为普遍安全机制,共有5种。续表表33X.800定义的安全机制分类内容特定安全机制(可以嵌入合适的协议层以提供一些OSI安全服务)加密运用数学算法将数据转换成不可知的形式。数据的变换和复原依赖于算法和一个或多个加密密钥数字签名附加于数据单元之后的数据,它是对数据单元的密码变换,可使接收方证明数据的来源和完整性,并防止伪造访问控制对资源实施访问控制的各种机制数据完整性用于保证数据元或数据流的完整性的各种机制认证交换通过信息交换来保证实体身份的各种机制流量填充在数据流空隙中插入若干位以阻止流量分析路由控制能够为某些数据动态地或预定地选取路由,确保只使用物理上安全的子网络、中继站或链路公证利用可信的第三方来保证数据交换的某些性质普遍安全机制(不局限于任何OSI安全服务或协议层的机制)可信功能度根据某些标准(如安全策略所设立的标准)被认为是正确的,就是可信的安全标志资源(可能是数据元)的标志,以指明该资源的属性事件检测检测与安全相关的事件安全审计跟踪收集潜在可用于安全审计的数据,以便对系统的记录和活动进行独立地观察和检查安全恢复处理来自诸如事件处置与管理功能等安全机制的请求,并采取恢复措施3. 安全服务与安全机制的关系 根据X.800的定义,安全服务与安全机制之间的关系如表34所示。该表详细说明了实现某种安全服务应该采用哪些安全机制。表34安全服务与安全机制之间的关系安全服务加密数字签名访问控制数据完整性认证交换流量填充路由控制公证对等实体认证YYY数据源认证YY访问控制Y保密性YY流量保密性YYY数据完整性YYY不可否认性YYY可用性YY注: Y表示该安全机制适合提供该种安全服务,空格表示该安全机制不适合提供该种安全服务。4. 在OSI层中的服务配置 OSI安全体系结构最重要的贡献是总结了各种安全服务在OSI参考模型的7层中的适当配置。安全服务与协议层之间的关系如表35所示。续表表35安全服务与协议层之间的关系安 全 服 务协议层1234567对等实体认证YYY数据源点认证YYY访问控制YYY连接保密性YYYYYY无连接保密性YYYYY选择域保密性Y流量保密性YY具有恢复功能的连接完整性YYY不具有恢复功能的连接完整性YY选择域有连接完整性YYY无连接完整性Y选择域无连接完整性YYY源点的不可否认Y信宿的不可否认Y注: Y表示该服务应该在相应的层中提供,空格表示不提供。第7层必须提供所有的安全服务。3.1.5网络安全模型 网络安全 模型一个最广泛采用的网络安全模型如图34所示。通信一方要通过Internet将消息传送给另一方,那么通信双方(也称为交互的主体)必须通过执行严格的通信协议来共同完成消息交换。在Internet上,通信双方要建立一条从信源到信宿的路由,并共同使用通信协议(如TCP/IP)来建立逻辑信息通道。 从图34中可知,一个网络安全模型通常由6个功能实体组成,它们分别是消息的发送方(信源)、消息的接收方(信宿)、安全变换、信息通道、可信的第三方和攻击者。 图34网络安全模型 在需要保护信息传输以防攻击者威胁消息的保密性、真实性和完整性时,就会涉及信息安全,任何用来保证信息安全的方法都包含如下两个方面: ① 对被发送信息进行安全相关的变换。例如对消息加密,它打乱消息使得攻击者不能读懂消息,或者将基于消息的编码附于消息后,用于验证发送方的身份。 ② 使通信双方共享某些秘密信息,而这些消息不为攻击者所知。例如加密和解密密钥,在发送端加密算法采用加密密钥对所发送的消息加密,而在接收端解密算法采用解密密钥对收到的密文解密。 图34中的安全变换就是密码学课程中所学习的各种密码算法。安全信息通道的建立可以采用密钥管理技术和后面即将讨论的VPN技术实现。为了实现安全传输,需要有可信的第三方。例如,第三方负责将秘密信息分配给通信双方,而对攻击者保密,或者当通信双方就关于信息传输的真实性发生争执时,由可信第三方来仲裁。 网络安全模型说明,设计安全服务应包含以下4个方面内容: ① 设计一个算法,它执行与安全相关的变换,该算法应是攻击者无法攻破的。 ② 产生算法所使用的秘密信息。 ③ 设计分配和共享秘密信息的方法。 ④ 指明通信双方使用的协议,该协议利用安全算法和秘密信息实现安全服务。 前面讨论的安全服务和安全机制基本上均遵循图34所示的网络安全模型。但是,还有一些安全应用方案不完全符合该模型,它们遵循图35所示的网络访问安全模型。该模型希望保护信息系统不受有害的访问。大多数读者都熟悉黑客引起的问题,黑客试图通过网络渗入到可访问的系统。有时他可能没有恶意,只是对非法闯入计算机系统有一种满足感;或者入侵者可能是一个对公司不满的员工,想破坏公司的信息系统以发泄自己的不满;或者入侵者是一个罪犯,想利用计算机网络来获取非法的利益(如获取信用卡号或进行非法的资金转账)。 图35网络访问安全模型 3.2网络安全防护技术防火墙3.2.1防火墙1. 防火墙概述防火墙是由软件和硬件组成的系统,它处于安全的网络(通常是内部局域网)和不安全的网络(通常是Internet,但不局限于Internet)之间,根据由系统管理员设置的访问控制规则,对数据流进行过滤。 由于防火墙置于两个网络之间,因此从一个网络到另一个网络的所有数据流都要流经防火墙。根据安全策略,防火墙对数据流的处理方式有3种: ①允许数据流通过;② 拒绝数据流通过;③将这些数据流丢弃。当数据流被拒绝时,防火墙要向发送者回复一条消息,提示发送者该数据流已被拒绝。当数据流被丢弃时,防火墙不会对这些数据包进行任何处理,也不会向发送者发送任何提示信息。丢弃数据包的做法加长了网络扫描所花费的时间,发送者只能等待回应直至通信超时。 防火墙是Internet安全的最基本组成部分。但是,我们必须要牢记,仅采用防火墙并不能给整个网络提供全局的安全性。对于防御内部的攻击,防火墙显得无能为力,同样对于那些绕过防火墙的连接(如某些人通过拨号上网),防火墙则毫无用武之地。 此外,网络管理员在配置防火墙时,必须允许一些重要的服务通过,否则内部用户就不可能接入Internet,也不能收发电子邮件。事实上,虽然防火墙为某些业务提供了一个通道,但这也为潜在的攻击者提供了攻击内部网络的机会。攻击者可能利用此通道对内部网络发起攻击,或者注入病毒和木马。 由于防火墙是放置在两个网络之间的网络安全设备,因此以下要求必须得到满足: 所有进出网络的数据流都必须经过防火墙。 只允许经过授权的数据流通过防火墙。 防火墙自身对入侵是免疫的。 防火墙不是一台普通的主机,它自身的安全性要比普通主机更高。虽然NIS(Network Information Service)、rlogin等服务能为普通网络用户提供非常大的便利,但是应严禁防火墙为用户提供这些危险的服务。因此,那些与防火墙的功能实现不相关但又可能给防火墙自身带来安全威胁的网络服务和应用程序,都应当从防火墙中剥离出去。 此外,网络管理员在配置防火墙时所采用的默认安全策略是: 凡是没有明确“允许的”服务,一律都是“禁止的”。防火墙的管理员不一定比普通的系统管理员高明,但他们对网络的安全性更加敏感。普通的用户只关心自己的计算机是否安全,而网络管理员关注的是整个网络的安全。网络管理员通过对防火墙进行精心配置,可以使整个网络获得相对较高的安全性。 图36防火墙示意图众所周知,防火墙能够提高内部网络的安全性,但这并不意味着主机的安全不重要。即使防火墙密不透风,且网络管理员的配置操作从不出错,网络安全问题也依然存在,因为Internet并不是安全风险的唯一源泉,有些安全威胁就来自网络内部。内部黑客可能从网络内部发起攻击,这是一种更加严重的安全风险。除内部攻击之外,外部攻击者也企图穿越防火墙攻入内部网络。例如,黑客可以通过拨号经调制解调器池进入网络,并从网络内部对防火墙和主机发起攻击。因此,必须对内部主机施加适当的安全策略,以加强对内部主机的安全防护。也就是说,在采用防火墙将内部网络与外部网络加以隔离的同时,还应确保内部网络中的关键主机具有足够的安全性。 一般来说,防火墙由几个部分构成。在图36中,“过滤器”用来阻断某些类型的数据传输。网关则由一台或几台机器构成,用来提供中继服务,以补偿过滤器带来的影响。把网关所在的网络称为“非军事区”(Demilitarized Zone,DMZ)。DMZ中的网关有时会得到内部网关的支援。通常,网关通过内部过滤器与其他内部主机进行开放的通信。在实际情况下,不是省略了过滤器就是省略了网关,具体情况因防火墙的不同而异。一般来说,外部过滤器用来保护网关免受侵害,而内部过滤器用来防备因网关被攻破而造成恶果。单个或两个网关都能够保护内部网络免遭攻击。通常把暴露在外的网关主机称为堡垒主机。目前市场上常见的防火墙都有3个或3个以上的接口,同时发挥了两个过滤器和网关的功能,通过不同的接口实现DMZ区和内部网络的划分。从某种角度看,这种方式使防火墙的管理和维护更加方便,但是一旦防火墙受到攻击,DMZ和内部网络的安全性会同时失去保障。所以安全性与易用性往往相互矛盾,关键在于使用者的取舍。 实质上,防火墙是一种访问控制设备或软件。它可以是一个硬件的“盒子”,也可以是一个“软件”。今天,许多设备中均含有简单的防火墙功能,如路由器、调制解调器、无线基站、IP交换机等。许多流行的操作系统中也含有软件防火墙。它们可以是Windows上运行的客户端软件,也可能是在UNIX内核中实现的一系列过滤规则。 2. 防火墙分类 防火墙的发展经历了近30年的时间。第一代防火墙始于1985年前后,它几乎与路由器同时出现,由Cisco的IOS软件公司研制。这一代防火墙称为包过滤防火墙。 1990年前后,AT&T贝尔实验室的Dave Presotto和Howard Trickey率先提出了基于电路中继的第二代防火墙结构,此类防火墙被称为电路级网关防火墙。但是,他们既没有发表描述这一结构的任何文章,也没有发布基于这一结构的任何产品。 第三代防火墙结构是在20世纪80年代末和20世纪90年代初由Purdue University的Gene Spafford、AT&T贝尔实验室的Bill Cheswick 和Marcus Ranum分别研究和开发的。这一代防火墙被称为应用级网关防火墙。1991年,Ranum的文章引起了人们的广泛关注。此类防火墙采用了在堡垒主机运行代理服务的结构。根据这一研究成果,DEC公司推出了第一个商用产品SEAL。 大约在1991年,Bill Cheswick和Steve Bellovin开始了对动态包过滤防火墙的研究。1992年,在USC信息科学学院工作的 Bob Braden和Annette DeSchon开始研究用于Visas系统的动态包过滤防火墙,后来它演变为目前的状态检测防火墙。1994年,以色列的Check Point Software公司推出了基于第四代结构的第一个商用产品。 关于第五代防火墙,目前尚未有统一的说法,关键在于目前还没有出现获得广泛认可的新技术。一种观点认为,1996年由Global Internet Software Group公司的首席科学家Scott Wiegel开始启动的内核代理结构(Kernel Proxy Architecture)研究计划属于第五代防火墙。还有一种观点认为,1998年由NAI公司推出的自适应代理(Adaptive Proxy)技术给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。 根据防火墙在网络协议栈中的过滤层次不同,通常把防火墙分为3种: 包过滤防火墙、电路级网关防火墙和应用级网关防火墙。每种防火墙的特性均由它所控制的协议层决定。实际上,这种分类其实非常模糊。例如,包过滤防火墙运行于IP层,但是它可以窥