第1章网络安全概论1.1网络安全面临的威胁1.2网络安全体系结构1.3PDRR网络安全模型1.4网络安全基本原则1.1网络安全面临的威胁物理安全威胁、操作系统的安全缺陷、网络协议的安全缺陷、应用软件的实现缺陷、用户使用的缺陷和恶意程序等6个方面的安全威胁。1.1.1物理安全威胁1.物理安全问题的重要性信息安全首先要保障信息的物理安全。物理安全是指在物理介质层次上对存储和传输的信息的安全保护。物理安全是信息安全的最基本保障,是不可缺少和忽视的组成部分。2.主要的物理安全威胁物理安全威胁,即直接威胁网络设备。目前主要的物理安全威胁包括以下3大类。自然灾害。特点是突发性、自然因素性、非针对性。这种安全威胁只破坏信息的完整性和可用性,无损信息的秘密性。电磁辐射。这种安全威胁只破坏信息的秘密性,无损信息的完整性和可用性。操作失误和意外疏忽(例如,系统掉电、操作系统死机等系统崩溃)。特点是人为实施的无意性和非针对性。这种安全威胁只破坏信息的完整性和可用性,无损信息的秘密性。(1)外部终端的物理安全(2)通信线路的物理安全1.1.2操作系统的安全缺陷操作系统是用户和硬件设备的中间层,是任何计算机在使用前都必须安装的。目前,人们使用的操作系统分为两大类:UNIX/Linux系列和Windows系列。下面分别举例说明这两大类操作系统中存在的安全缺陷。1.公共缺陷检索(CommonVulnerabilitiesandExposures,CVE)大多数信息安全工具都包含一个信息安全缺陷的数据库,但是,这些数据库对信息安全缺陷的描述格式各不相同。CVE是信息安全确认的一个列表或者词典。它对不同信息安全缺陷的数据库之间提供一种公共的索引,是信息共享的关键。有了CVE检索之后,一个缺陷就有了一个公共的名字,从而可以通过CVE的条款检索到包含该缺陷的所有数据库。CVE有如下几个特点:①每一种缺陷都有惟一的命名;②每一种缺陷都有惟一的标准描述;③CVE不是一个数据库而是一种检索词典;④CVE为多个不同的数据库提供一种交流的共同语言;⑤CVE是评价信息安全数据库的一个基础;⑥CVE可以通过因特网阅读和下载;⑦CVE的会员可以给CVE提供自己数据库的索引信息及其修改信息。2.UNIX操作系统的安全缺陷(1)远程过程调用(RemoteProcedureCalls,RPC)远程过程调用允许一台机器上的程序执行另一台机器上的程序。它们被广泛地用于提供网络服务,如NFS文件共享和NIS。很多UNIX操作系统的RPC软件包中包含具有缓冲区溢出缺陷的程序。以下的程序具有缓冲区溢出的缺陷。①rpc.yppasswdd:②rpc.espd:③rpc.cmsd:④rpc.ttdbserver:⑤rpc.bind:如果系统运行上述程序之一,那么系统就很可能受到RPC服务缓冲区溢出的攻击。值得注意的是,UNIX的绝大部分版本都具有这个缺陷。解决这个问题的最好方案是全部删除这些服务。在必须运行该服务的地方,安装最新的补丁。(2)SendmailSendmail是在UNIX和Linux操作系统中用得最多的发送、接收和转发电子邮件的程序。Sendmail在因特网上的广泛应用使它成为攻击者的主要目标,过去的几年里曾发现了若干个缺陷。Sendmail有很多易受攻击的弱点,必须定期地更新和打补丁。3.Windows系列操作系统的安全缺陷(1)UnicodeUnicode是ISO发布的统一全球文字符号的国际标准编码。它是一种双字节的编码。通过向IIS(InternetInformationServer)服务器发出一个包括非法UnicodeUTF-8序列的URL,攻击者可以迫使服务器逐字“进入或退出”目录并执行任意脚本,这种攻击称为目录转换(DirectoryTraversal)攻击。(2)ISAPI缓冲区溢出MicrosoftIIS(InternetInformationServer)是在大多数MicrosoftWindowsNT和Windows2000服务器上使用的服务器软件。在安装IIS的时候,多个ISAPI(InternetServicesApplicationProgrammingInterface)被自动安装。ISAPI允许开发人员使用多种动态链接库DLLs来扩展IIS服务器的性能。一些动态链接库,例如idq.dll,有编程错误,使得它们进行不正确的边界检查。特别是,它们不阻塞超长字符串。攻击者可以利用这一点向DLL发送数据,造成缓冲区溢出,进而控制IIS服务器。解决上述问题的方案是如果发现系统具有这种缺陷,则安装最新的Microsoft补丁。同时,应检查并取消所有不需要的ISAPI扩展。经常检查这些扩展是否被恢复。还要记住最小权限规则,系统应运行系统正常工作所需的最少服务。1.1.3网络协议的安全缺陷TCP/IP是目前Internet使用的协议。TCP/IP也存在着一系列的安全缺陷。有的缺陷是由于源地址的认证问题造成的,有的缺陷则来自网络控制机制和路由协议等。这些缺陷,是所有使用TCP/IP的系统所共有的,以下将讨论这些安全隐患。1.TCP/IP概述(1)TCP/IP基本结构TCP/IP是一组Internet协议,不但包括TCP和IP两个关键协议,还包括其他协议,如UDP、ARP、ICMP、Telnet和FTP等。TCP/IP的设计目标是使不同的网络互相连接,即实现互联网。图1.1TCP/IP基本逻辑结构IPv4的地址是32bit,目前正在推出IPv6,其地址为128bit。以太网MAC地址是48bit。TCP/IP层次结构有两个重要原则:①在同一端点,每一层只和邻接层打交道,例如,应用程序根本不关心网络层是怎么转发包以及数据在哪些网络上传输;②不同端点之间的同一层有对等关系,对等层之间可以进行通信,如应用程序之间的通信,TCP模块之间的通信等。(2)TCP/IP通信模型通信模型是TCP/IP最基本的模型之一,它描述了端和端之间怎样传输数据。如在图1.1中,各层模块之间的连接表示数据流的路线。TCP/IP提供两个主要的传输协议:TCP和UDP。TCP是一个面向连接的协议,它通过发送和确认机制,保证数据无错误传输。UDP是无连接的,它只管发送和接收所有的包,不保证数据是否到达。(3)TCP/IP网络互连模型TCP/IP的另一个主要功能是实现不同网络之间的互连。网络互连功能在网络层实现,即一个IP模块连接到两个不同的物理链路层可以实现这两个网络之间的互连,如图1.2所示。图1.2一个IP模块连接两个网络2.TCP序列号预计TCP序列号预计由莫里斯首先提出,是网络安全领域中最有名的缺陷之一。这种攻击的实质,是在不能接到目的主机应答确认时,通过预计序列号来建立连接。这样,入侵者可以伪装成信任主机与目的主机通话。正常的TCP连接建立过程是一个三次握手的过程,客户方取一初始序列号ISNc并发出第一个SYN包,服务方确认这一包并设自己一方的初始序列号为ISNs,客户方确认后这一连接即建立。一旦连接建立成功,客户方和服务方之间即可以开始传输数据。连接建立过程可以被描述如下:TCP连接建立过程客户方→服务方:SYN(ISNc)服务方→客户方:ACK(ISNc),SYN(ISNs)客户方→服务方:ACK(ISNs)客户方→服务方:数据和/或者服务方→客户方:数据3.路由协议缺陷(1)源路由选项的使用在IP包头中的源路由选项用于该IP包的路由选择,这样,一个IP包可以按照预告指定的路由到达目的主机。但这样也给入侵者创造了良机,当预先知道某一主机有一个信任主机时,即可利用源路由选项伪装成受信任主机,从而攻击系统,这相当于使主机可能遭到来自所有其他主机的攻击。(2)伪造ARP包伪造ARP包是一种很复杂的技术,涉及到TCP/IP及以太网特性的很多方面,在此归入ARP的安全问题不是很合适。伪造ARP包的主要过程是,以目的主机的IP地址和以太网地址为源地址发一ARP包,这样即可造成另一种IPspoof。这种攻击主要见于交换式以太网中,在交换式以太网中,交换集线器在收到每一ARP包时更新Cache。不停发spoofARP包可使送往目的主机的包均送到入侵者处,这样,交换式以太网也可被监听。解决上述问题的方法是:将交换集线器设为静态绑定。另一可行的方法是当发现主机运行不正常时(网速慢,IP包丢失率较高),反映给网络管理员。(3)RIP的攻击RIP(RoutingInformationProtocol)是用于自治系统(AutonomousSystem,AS)内部的一种内部路由协议(InternalGatewayProtocol,IGP)。RIP用于在自治系统内部的路由器之间交换路由信息。RIP使用的路由算法是距离向量算法。该算法的主要思想就是每个路由器给相邻路由器宣布可以通过它达到的路由器及其距离。一个入侵者有可能向目的主机以及沿途的各网关发出伪造的路由信息。(4)OSPF的攻击OSPF(OpenShortestPathFirst)协议是用于自治域内部的另一种路由协议。OSPF协议使用的路由算法是链路状态(Link-State)算法。在该算法中,每个路由器给相邻路由器宣布的信息是一个完整的路由状态,包括可到达的路由器,连接类型和其他相关信息。LSA(LinkStateAdvertisement)是OSPF协议中路由器之间要交换的信息。一个LSA头格式如图1.3所示。LS序列号为32bit,用来指示该LSA的更新程度。LS序列号是一个有符号整数,大小介于0x80000001(负值)和0x7fffffff之间。图1.3LSA头格式4.网络监听以太网(Ethernet)是网络结构中,链路层和物理层的主要连网方式。由于以太网的工作方式,网络请求在网上一般以广播的方式传送,这个广播是非验证的,也就是同网段的每个计算机都可以收到,除了目标接受者会应答这个信息外,其他的接受者会忽略这个广播。如果有一个网络设备专门收集广播而决不应答,那么,它就可以看到本网的任何计算机在网上传输的数据。如果数据没有经过加密,那么它就可以看到所有的内容。Sniffer就是一个在以太网上进行监听的专用软件。监听这个现象对网络的安全威胁是相当大的,因为它可以做到以下几点。(1)抓到正在传输的密码。(2)抓到别人的秘密(信用卡号)或不想共享的资料。(3)暴露网络信息。5.TCP/UDP应用层服务(1)finger的信息暴露这是由于以下几点原因。①finger没有任何认证机制。任何人都可利用finger来获得目的主机的有关信息。②finger所提供的信息包括用户名,用户来自于何处等,这些信息可以用于口令的猜测攻击,以及信任主机被假冒的攻击,具有很大的潜在危险。③finger没有认证,这使得无法辨别一个主机是否在基于“正当的”目的使用finger,这使得用户即使被攻击,也无法辨明finger在其中起了多大作用。解决上述问题的方法是:关掉finger服务,如果有充分理由打开finger服务的话,不妨将finger设为:/bin/cat/etc/something(2)FTP的信息暴露FTP本身并无安全问题,但几乎所有的实现都存在如下问题。①FTP一般用户的口令与登录口令相同,而且采用明文传输。②一些网点上的匿名FTP提供了另一攻击途径。(3)Telnet的安全问题Telnet本身也并没有安全问题。它的安全隐患类似FTP的①,只不过要更严重一些。由于Telnet是用明文传输的,因此不仅是用户口令,而且用户的所有操作及其回答,都将是透明的。(4)POP3的安全问题由于POP3的口令与账号的口令相同,在此它存在着类似FTP①的问题,解决方法也是类似的。(5)tftp/bootp的安全问题tftp允许不经认证就能读主机的那些被设置成所有人可读的文件。这将可能暴露系统的账号、工作目录等重要信息。1.1.4应用软件的实现缺陷软件实现缺陷是由于程序员在编程的时候没有考虑周全而造成的。软件缺陷一般可以分为以下几种类型:输入确认错误;访问确认错误;特殊条件错误