×
家电数码 > 手机 > 详情

tcp安全问题剖析

发布时间:2020-05-25 发布时间:
|

  TCP安全问题浅析

  TCP/IP协议定义

  协议是互相通信的计算机双方必须共同遵从的一组约定。TCP/IP(传输控制协议/网际协议)就是这样的约定,它规定了计算机之间互相通信的方法。TCP/IP是为了使接入因特网的异种网络、不同设备之间能够进行正常的数据通讯,而预先制定的一簇大家共同遵守的格式和约定。该协议是美国国防部高级研究计划署为简历ARPANET开发的,在这个协议集中,两个最知名的协议就是传输控制协议(TCP, Transfer Contorl Protocol)和网际协议(IP,Internet Protocol),故而整个协议集被称为TCP/IP。之所以说TCP/IP是一个协议簇,是因为TCP/IP包括了TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议,对因特网中主机的寻址方式、主机的命名机制、信息的传输规则,以及各种各样的服务功能均做了详细约定,这些约定一起称为TCP/IP。

  TCP/IP协议和开放系统互连参考模型一样,是一个分层结构。协议的分层使得各层的任务和目的十分明确,这样有利于软件编写和通信控制。TCP/IP协议分为4层,由下至上分别是网路接口层、网际层、传输层和应用层,如图1-1所示

  图1-1 TCP/IP 协议层次图

  1.2 TCP/IP协议的主要特点

  (1)开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统;

  (2)独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网中;

  (3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址;

  (4)标准化的高层协议,可以提供多种可靠的用户服务。

  1.3 TCP/IP协议的总体概况

  目前在Internet上使用的是TCP/IP协议。TCP/IP协议叫做传输控制/网际协议,它是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。其中IP(Internet Protocol)全名为“网际互连协议”,它是为计算机网络相互连接进行通信而设计的协议。TCP(Transfer Control Protocol)是传输控制协议。TCP/IP协议是能够使连接到网上的所有计算机网络实现相互通信的一套规则,正是因为有了TCP/IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。

  从表面名字上看TCP/IP包括两个协议,传输控制协议(TCP)和互联网际协议(IP),其实TCP/IP实际上是一组协议的集合,它包括了上百个各种功能的协议。如:远程登录、文件传输和电子邮件等等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。IP协议之所以能使各种网络互联起来是由于它把各种不同的“帧”统一转换成“IP数据报”格式,这种转换是因特网的一个最重要的特点。所以IP协议使各种计算机网络都能在因特网上实现互通,即具有“开放性”的特点。TCP/IP协议的基本传输单位是数据包(datagram)。TCP协议负责把数据分成若干个数据包,并给每个数据包加上包头,包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式,IP协议在每个包头上还要加上接收端主机地址,这样数据通过路由器中的MAC地址来确定数据的流向,如果传输过程中出现数据丢失,数据失真等情况,TCP协议会自动要求数据重新传输,并重新组。。总之,IP协议保证数据的传输,而TCP协议保证数据传输的质量。TCP/IP协议数据的传输基于TCP/IP协议的4层结构:应用层、传输层、网络层、接口层。

   各协议层存在的安全漏洞

  2.1 链路层存在的安全漏洞

  我们知道,在以太网中,信道是共享的,任何主机发送的每一个以太网帧都会到达别的与该主机处于同一网段的所有主机的以太网接口,一般地,CSMA/CD协议使以太网接口在检测到数据帧不属于自己时,就把它忽略,不会把它发送到上层协议(如ARP、RARP层或IP层)。如果我们对其稍做设置或修改,就可以使一个以太网接口接收不属于它的数据帧。例如有的实现可以使用杂错接点,即能接收所有数据帧的机器节点。解决该漏洞的对策是:网络分段、利用交换器,动态集线器和桥等设备对数据流进行限制、加密(采用一次性口令技术)和禁用杂错接点。

  2.2 网络层漏洞

  几乎所有的基于TCP/IP的机器都会对ICMP echo请求进行响应。所以如果一个敌意主机同时运行很多个ping命令向一个服务器发送超过其处理能力的ICMP echo请求时,就可以淹没该服务器使其拒绝其他的服务。另外,ping命令可以在得到允许的网络中建立秘密通道从而可以在被攻击系统中开后门进行方便的攻击,如收集目标上的信息并进行秘密通信等。解决该漏洞的措施是拒绝网络上的所有ICMP echo响应。

  2.3 IP漏洞

  IP包一旦从网络中发送出去,源IP地址就几乎不用,仅在中间路由器因某种原因丢弃它或到达目标端后,才被使用。这使得一个主机可以使用别的主机的IP地址发送IP包,只要它能把这类IP包放到网络上就可以。因而如果攻击者把自己的主机伪装成被目标主机信任的友好主机,即把发送的IP包中的源IP地址改成被信任的友好主机的IP地址,利用主机间的信任关系(Unix网络软件的开发者发明的术语)和这种信任关系的实际认证中存在的脆弱性(只通过IP确认),就可以对信任主机进行攻击。注意,其中所说的信任关系是指一个被授权的主机可以对信任主机进行方便的访问。所有的r*命令都采用信任主机方案,所以一个攻击主机把自己的IP改为被信任主机的IP,就可以连接到信任主机并能利用r*命令开后门达到攻击的目的。解决这个问题的一个办法是,让路由器拒绝接收来自网络外部的IP地址与本地某一主机的IP地址相同的IP包的进入。

  2.4 ARP欺骗

  ARP协议在对IP地址进行解析时,利用ARP缓存(也叫ARP表)来做。ARP缓存的每一条目保存有IP地址到物理地址的映射。如果在ARP表中没有这样的对应条目,ARP协议会广播ARP请求,获得对应于那个IP地址的物理地址,并把该对应关系加入到ARP表中。ARP表中的每一个条目都有一个计时器,如果计时器过期,该条目就无效,因而被从缓存中删除。显然,如果攻击者暂时使用不工作的主机的IP地址,就可以伪造IP-物理地址对应关系对,把自己伪装成象那个暂时不使用的主机一样。克服此问题的方法是,让硬件地址常驻内存,并可以用ARP命令手工加入(特权用户才可以那样做);也可以通过向RARP服务器询问来检查客户的ARP欺骗。因为RARP服务器保留着网络中硬件地址和 IP的相关信息。

  2.5 路由欺骗

  在路由协议中,主机利用重定向报文来改变或优化路由。如果一个路由器发送非法的重定向报文,就可以伪造路由表,错误引导非本地的数据报。另外,各个路由器都会定期向其相邻的路由器广播路由信息,如果使用RIP特权的主机的520端口广播非法路由信息,也可以达到路由欺骗的目的。解决这些问题的办法有,通过设置主机忽略重定向信息可以防止路由欺骗;禁止路由器被动使用RIP和限制被动使用RIP的范围。

  2.6 DNS欺骗

  网络上的所有主机都信任DNS服务器,如果DNS服务器中的数据被攻击者破坏,就可以进行DNS欺骗。

  2.7 拦截TCP连接

  攻击者可以使TCP连接的两端进入不同步状态,入侵者主机向两端发送伪造的数据包。冒充被信任主机建立TCP连接,用SYN淹没被信任的主机,并猜测3步握手中的响应(建立多个连接到信任主机的TCP连接,获得初始序列号ISN(Initial Serial Number)和RTT,然后猜测响应的ISN,因为序列号每隔半秒加64000,每建立一个连接加64000)。预防方法:使所有的r*命令失效,让路由器拒绝来自外面的与本地主机有相同的IP地址的包。RARP查询可用来发现与目标服务器处在同一物理网络的主机的攻击。另外ISN攻击可通过让每一个连接的ISN随机分配配合每隔半秒加64000来防止。

  2.8 使用TCP/SYN报文段淹没服务器

  利用TCP建立连接的3步骤的缺点和服务器端口允许的连接数量的限制,窃取不可达IP地址作为源IP地址,使得服务器端得不到ACK而使连接处于半开状态,从而阻止服务器响应响应别的连接请求。尽管半开的连接会被过期而关闭的,但只要攻击系统发送的spoofed SYN请求的速度比过期的快就可以达到攻击的目的。这种攻击的方法一直是一种重要的攻击ISP(Internet Service Provider)的方法,这种攻击并不会损害服务,而是使服务能力削弱。解决这种攻击的办法是,给Unix内核加一个补丁程序或使用一些工具对内核进行配置。一般的做法是,使允许的半开连接的数量增加,允许连接处于半开状态的时间缩短。但这些并不能从根本上解决这些问题。实际上在系统的内存中有一个专门的队列包含所有的半开连接,这个队列的大小是有限的,因而只要有意使服务器建立过多的半开连接就可以使服务器的这个队列溢出,从而无法响应其他客户的连接请求。

  关于TCP/IP协议族存在的脆弱性剖析

  3.1 TCP/IP协议族存在脆弱性

  IP层的主要曲线是缺乏有效的安全认证和保密机制,其中最主要的因素就是IP地址问题。TCP/IP协议用IP地址来作为网络节点的惟一标识,许多 TCP/IP服务,包括Berkeley中的R命令、NFS、X Window等都是基于IP地址对用户进行认证和授权。当前TCP/IP网络的安全机制主要是基于IP地址的包过滤(Packet Filtering)和认证(Authentication)技术,它的有效性体现在可以根据IP包中的源IP地址判断数据的真实性和安全性。然而IP地址存在许多问题,协议的最大缺点就是缺乏对IP地址的保护,缺乏对IP包中源IP地址真实性的认证机制与保密措施。这也就是引起整个TCP/IP协议不安全的根本所在。

  由于UDP是基于IP协议之上的,TCP分段和UDP协议数据包是封装在IP包中在网络上传输的,因此同样面临IP层所遇到的安全威胁。现在人们一直在想办法解决,却仍然无法避免的就是根据TCP连接建立时“三次握手”机制的攻击。

  3.2 应用服务不容乐观

  3.2.1 文件传输协议

  FTP经久不衰的原因在于它可以在互联网上进行与平台无关的数据传输,它基于一个客户机/服务器架构。FTP 将通过两个信道(端口)传输,一个传输数据(TCP 端口 20),另一个传输控制信息(TCP 端口 21)。在控制信道之上,双方(客户机和服务器)交换用于发起数据传输的命令。一个 FTP 连接包含4个步骤:用户鉴权→建立控制信道→建立数据信道→关闭连接。FTP 的连接控制使用 TCP (Transmission Control Protocol, 传输控制协议),它保障了数据的可靠传输。因此,FTP 在数据传输中不需要关心分组丢失和数据错误检测。

  匿名FTP作为互联网上广泛应用的服务,安全等级的低下受到了黑客的频繁光顾。匿名FTP 是真的匿名,并没有记录谁请求了什么信息,谁下载了什么文件,上传了什么东西(有可能是木马)。FTP存在着致命的安全缺陷,FTP使用标准的用户名和口令作为身份验证,缺乏有效的访问权限的控制机制,而其口令和密码的传输也都是明文的方式。

  3.2.2 Web服务

  Web服务器位于宿主基础结构的前端,它与Internet直接相连,负责接收来自客户端的请求,创建动态Web页并响应请求数据。最初WWW服务只提供静态的HTML页面,为改变人们对网络互动请求的愿望,开始引入了CGI程序,CGI程序让主页活动起来。CGI程序可以接收用户的输入信息,一般用户是通过表格把输入信息传给CGI程序的,然后CGI程序可以根据用户的要求进行一些处理,一般情况下会生成一个HTML文件,并传回给用户。很多CGI 程序都存在安全漏洞,很容易被黑客利用做一些非法的事情。现在很多人在编写CGI程序时,可能对CGI软件包中的安全漏洞并不了解,而且大多数情况下不会重新编写程序的所有部分,只是对其加以适当的修改,这样很多CGI程序就不可避免的具有相同的安全漏洞。很多 SQL Server 开发人员并没有在代码编写开始的时候就从安全防护基础开始,这样就无法确保您开发的代码的安全性,其结果就造成了无法将应用程序的运行控制在所需的最低权限之内。

  3.3 提高网络可信度

  前面的IPv4存在的弊端,很多安全防范技术被忽略了,它不可避免地被新一代技术IPv6取代。IPsec安全协议就是事后 发展的一种协议(如图3-1),而NAT(网络地址转换,Network Address Translation)解决了IP地址短缺的问题,却增加了安全风险,使真正的端到端的安全应用难以实现。端到端安全性的两个基本组件——鉴权和加密都是IPv6协议的集成组件;而在IPv4中,它们只是附加组件,因此,采用IPv6安全性会更加简便、一致。

  在现在的网络环境中,尤其是园区网当中,由于不存在NAT地址转换的问题,所以IPSec具备允许部署可信计算基础架构的基本特征。IPSec数据包验证能够确保整个IP报头、下一层协议(例如TCP、UPD或ICMP)报头以及数据包有效负载的数据完整性。 华夏网管ofAdmin.Com

  另外,针对数据包的单向Hash算法用以提供校验和。通信发起方计算校验和并在发送之前将其附加到数据包中;响应方则在收到数据包后为其计算校验和。如果响应方所计算出的校验和与数据包中附带的校验和完全匹配,则证明数据包在传输过程中未被修改。校验和的单向计算特性意味着其取值无法在传输过程中进行修改,这也就保证了端到端的数据传输过程的可信程度。

   TCP/IP状态转移

  4.1 TCP状态转移图和定时器

  应于连接建立或终止、流量控制和数据传输。几类主要的定时器及其功能如下TCP状态转移图控制了一次连接的初始化、建立和终止,该图由定义的状态以及这些状态之间的转移弧构成。TCP状态转移图与定时器密切相关,不同的定时器:

  ①连接定时器:在连接建立阶段,当发送了SYN包后,就启动连接定时器。如果在75秒内没有收到应答,则放弃连接建立。

  ②FIN-WAIT-2定时器:当连接从FIN-WAIT-1状态转移到FIN-WAIT-2状态时,将一个 FIN-WAIT-2定时器设置为10分钟。如果在规定时间内该连接没有收到一个带有置位FIN的TCP包,则定时器超时,再定时为75秒。如果在该时间段内仍无FIN包到达,则放弃该连接。

  ③TIME-WAIT定时器:当连接进入TIME-WAIT状态时,该定时器被激活。当定时器超时时,与该连接相关的内核数据块被删除,连接终止。

  ④维持连接定时器:其作用是预测性地检测连接的另一端是否仍为活动状态。如果设置了SO-KEEPALIVE套接字选择项,则TCP机状态是ESTABLISHED或CLOSE-WAIT。

  4.2 网络入侵方式

  4.2.1 伪造IP地址

  入侵者使用假IP地址发送包,利用基于IP地址证实的应用程序。其结果是未授权的远端用户进入带有防火墙的主机系统。

  假设有两台主机A、B和入侵者控制的主机X。假设B授予A某些特权,使得A能够获得B所执行的一些操作。X的目标就是得到与B相同的权利。为了实现该目标,X必须执行两步操作:首先,与B建立一个虚假连接;然后,阻止A向B报告网络证实系统的问题。主机X必须假造A的IP地址,从而使B相信从X发来的包的确是从A发来的。

  我们同时假设主机A和B之间的通信遵守TCP/IP的三次握手机制。握手方法是:

  A→:SYN(序列号=M)

  B→A:SYN(序列号=N),ACK(应答序号=M+1)

  A→B:ACK(应答序号=N+1)

  主机X伪造IP地址步骤如下:首先,X冒充A,向主机B发送一个带有随机序列号的SYN包。主机B响应,向主机A发送一个带有应答号的SYN+ACK包、该应答号等于原序列号加1。同时,主机B产生自己发送包序列号,并将其与应答号一起发送。为了完成三次握手,主机X需要向主机B回送一个应答包,其应答号等于主机B向主机A发送的包序列号加1。假设主机X与A和B不同在一个子网内,则不能检测到B的包,主机X只有算出B的序列号,才能创建TCP连接。其过程描述如下:

  X→B:SYN(序列号=M),SRC=A

  B→A:SYN(序列号=N),ACK(应答号=M+1)

  X→B:ACK(应答号=N+1),SRC=A

  同时,主机X应该阻止主机A响应主机B的包。为此,X可以等到主机A因某种原因终止运行,或者阻塞主机A的操作系统协议部分,使它不能响应主机B。 一旦主机X完成了以上操作,它就可以向主机B发送命令。主机B将执行这些命令,认为他们是由合法主机A发来的。

  4.2.2 TCP状态转移的问题

  上述的入侵过程,主机X是如何阻止主机A向主机B发送响应在的,主机调通过发送一系列的SYN包,但不让A向调发送SYN-ACK包而中止主机A的登录端口。如前所述,TCP维持一个连接建立定时器。如果在规定时间内(通常为75秒)不能建立连接,则TCP将重置连接。在前面的例子中,服务器端口是无法在75秒内作出响应的。

  下面我们来讨论一下主机X和主机A之间相互发送的包序列。X向A发送一个包,其SYN位和FIN位置位,A向X发送ACK包作为响应: X→A:SYN FIN(系列号=M)A→X:ACK(应答序号=M+1)从上面的状态转移可以看出,A开始处于监听(LISTEN)状态。当它收到来自X的包后,就开始处理这个包。值得注意的是,在TCP协议中,关于如何处理SYN和FIN同时置位的包并未作出明确的规定。我们假设它首先处理SYN标志位,转移到SYN-RCVD状态。然后再处理FIN标志位,转移到CLOSE-WAIT状态。如果前一个状态是ESTABLISHED,那么转移到CLOSE-WAIT状态就是正常转移。但是,TCP协议中并未对从SYN-RCVD状态到CLOSE-WAIT状态的转移作出定义。但在几种TCP应用程序中都有这样的转移,例如开放系统SUN OS4.2, SUR4和ULTRX4.3

  因此,在这些TCP应用程序中存在一条TCP协议中未作定义的从状态SYN-RCVD到状态CLOSE-WAIT的转移弧,在上述入侵例子中,由于三次握手没能彻底完成,因此并未真正建立TCP连接,相应的网络应用程序并未从核心内获得连接。但是,主机A的TCP机处CLOSE-WAIT状态,因此它可以向X发送一个FIN包终止连接。这个半开放连接保留在套接字侦听队列中,而且应用进程不发送任何帮助TCP执行状态转移的消息。因此,主机A的TCP机被锁在了CL0SE-WAIT状态。如果维持活动定时器特征被使用,通常2小时后TCP将会重置连接并转移到CLOSED状态。当TCP机收到来自对等主机的RST时,就从TABLISHED,FINWAIT-1和FIN-WAIT-2状态转移到CLOSED状态。这些转移是很重要的,因为它们重置TCP机且中断网络连接。但是,由于到达的数据段只根据源IP地址和当前队列窗口号来证实。因此入侵者可以假装成已建立了合法连接的一个主机,然后向另一台主机发送一个带有适当序列号的RST段,这样就可以终止连接了!

  从上面的分析我们可以看到几种TCP应用程序中都存在外部状态转移。这会给系统带来严重的安全性问题。

  4.2.3 定时器问题

  正如前文所述,一旦进入连接建立过程,则启动连接定时器。如果在规定时间内不能建立连接,则TCP机回到CLOSED状态。

  我们来分析一下主机A和主机X的例子。主机A向主机X发送一个SYN包,期待着回应一个SYN-ACK包。假设几乎同时,主机X想与主机A建立连接,向A发送一个SYN包。A和X在收到对方的SYN包后都向对方发送一个SYN-ACK包。当都收到对方的SYN-ACK包后,就可认为连接已建立。在本文中,假设当主机收到对方的SYN包后,就关闭连接建立定时器。

  X→A:SYN(序列号=M)

  A→X:SYN(序列号=N)

  X→A:SYN(序列号=M),ACK(应答号=N+1)

  A→X:SYN(序列号=N),ACK(应答号=M+1)

  ①主机X向主机A发送一个FTP请求。在X和A之间建立起一个TCP连接来传送控制信号。主机A向X发送一个SYN包以启动一个TCP连接用来传输数据,其状态转移到SYN-SENT状态。

  ②当X收到来自A的SYN包时,它回送一个SYN包作为响应。

  ③主机X收到来自A的SYN-ACK包,但不回送任何包。

  ④主机A期待着接收来自X的SYN-ACK。由于X不回送任何包,因此A被锁在SYN-RCVD状态。这样,X就成功地封锁了A的一个端口。

  4.3 利用网络监控设备观测网络入侵

  我们在局域网上安装一个网络监控设备观测通过网络的包,从而判断是否发生了网络入侵。下面我们将讨论在几种入侵过程中网络监控设备可观测到的序列包。

  4.3.1 伪造IP地址

  最初,网络监控设备会监测到大量的TCP SYN包从某个主机发往A的登录端口。主机A会回送相应的SYN-ACK包。SYN包的目的是创建大量的与主机A的半开放的TCP连接,从而填满了主机A的登录端口连接队列。

  大量的TCP SYN包将从主机X经过网络发往主机B,相应地有SYN-ACK包从主机B发往主机X。然后主机X将用RST包作应答。这个SYN/SYN-ACK/RST包序列使得入侵者可以知道主机B的TCP序列号发生器的动作。

  主机A向主机B发送一个SYN包。实际上,这是主机X发送的一个“伪造”包。收到这个包之后,主机B将向主机A发送相应的SYN-ACK包。主机A向主机B发送ACK包。按照上述步骤,入侵主机能够与主机B建立单向TCP连接。

  4.3.2 虚假状态转移

  当入侵者试图利用从SYN-RCVD到CLOSE-WAIT的状态转移长时间阻塞某服务器的一个网络端口时,可以观察到如下序列包:

  ①从主机X到主机B发送一个带有SYN和FIN标志位置位的TCP包。

  主机B首先处理SYN标志,生成一个带有相应ACK标志位置位的包,并使状态转移到SYN-RCVD,然后处理FIN标志,使状态转移到CLOSE-WAIT,并向X回送ACK包。

  ②主机X不向主机B发送其它任何包。主机的TCP机将固定在CLOSE-WAIT状态。直到维持连接定时器将其重置为CLOSED状态。

  因此,如果网络监控设备发现一串SYN-FIN/ACK包,可推断入侵者正在阻塞主机B的某个端口。

  4.3.3 定时器问题

  如果一入侵者企图在不建立连接的情况下使连接建立定时器无效,我们可以观察到以下序列包:

  ①主机X从主机B收到一个TCP SYN包。

  ②主机X向主机B回送一个SYN包。

  主机X不向主机B发送任何ACK包。因此,B被阻塞在SYN-RCVD状态,无法响应来自其它客户机的连接请求。

  TCP/IP协议的安全隐患

  造成操作系统漏洞的一个重要原因,就是协议本身的缺陷给系统带来的攻击点。网络协议是计算机之间为了互联共同遵守的规则。目前的互联网络所采用的主流协议TCP/IP,由于在其设计初期人们过分强调其开发性和便利性,没有仔细考虑其安全性,因此很多的网络协议都存在严重的安全漏洞,给Internet留下了许多安全隐患。另外,有些网络协议缺陷造成的安全漏洞还会被黑客直接用来攻击受害者系统。本文就TCP/IP协议自身所存在的安全问题和协议守护进程进行了详细讨论,指出针对这些安全隐患的攻击。

  1 TCP协议的安全问题

  TCP使用三次握手机制来建立一条连接,握手的第一个报文为SYN包;第二个报文为SYN/ACK包,表明它应答第一个SYN包同时继续握手的过程;第三个报文仅仅是一个应答,表示为ACK包。若A放为连接方,B为响应方,其间可能的威胁有:

  1. 攻击者监听B方发出的SYN/ACK报文。

  2. 攻击者向B方发送RST包,接着发送SYN包,假冒A方发起新的连接。

  3. B方响应新连接,并发送连接响应报文SYN/ACK。

  4. 攻击者再假冒A方对B方发送ACK包。

  这样攻击者便达到了破坏连接的作用,若攻击者再趁机插入有害数据包,则后果更严重。

  TCP协议把通过连接而传输的数据看成是字节流,用一个32位整数对传送的字节编号。初始序列号(ISN)在TCP握手时产生,产生机制与协议实现有关。攻击者只要向目标主机发送一个连接请求,即可获得上次连接的ISN,再通过多次测量来回传输路径,得到进攻主机到目标主机之间数据包传送的来回时间RTT。已知上次连接的ISN和RTT,很容易就能预测下一次连接的ISN。若攻击者假冒信任主机向目标主机发出TCP连接,并预测到目标主机的TCP序列号,攻击者就能伪造有害数据包,使之被目标主机接受。

  IP协议的安全问题

  IP协议在互连网络之间提供无连接的数据包传输。IP协议根据IP头中的目的地址项来发送IP数据包。也就是说,IP路由IP包时,对IP头中提供的源地址不作任何检查,并且认为IP头中的源地址即为发送该包的机器的IP地址。这样,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。其中最重要的就是利用IP欺骗引起的各种攻击。

  以防火墙为例,一些网络的防火墙只允许网络信任的IP数据包通过。但是由于IP地址不检测IP数据包中的IP源地址是否为放送该包的源主机的真实地址,攻击者可以采用IP源地址欺骗的方法来绕过这种防火墙。另外有一些以IP地址作为安全权限分配依据的网络应用,攻击者很容易使用IP源地址欺骗的方法获得特权,从而给被攻击者造成严重的损失。事实上,每一个攻击者都可以利用IP不检验IP头源地址的特点,自己填入伪造的IP地址来进行攻击,使自己不被发现。

 TCP/IP协议安全问题的防范

  TCP协议安全问题的防范

  对于SYN Flood攻击,目前还没有完全有效的方法,但可以从以下几个方面加以防范:

  1. 对系统设定相应的内核参数,使得系统强制对超时的SYN请求连接数据包的复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的SYN请求数据包。

  2. 建议在该网段的路由器上做些配置的调整,这些调整包括限制SYN半开数据包的流量和个数。

  3. 建议在路由器的前端多必要的TCP拦截,使得只有完成TCP三次握手过程的数据包才可以进入该网段,这样可以有效的保护本网段内的服务器不受此类攻击。

  IP协议安全问题的防范

  1. 抛弃基于地址的信任策略。这是最简单的方法。

  2. 进行包过滤。如果网络是通过路由器接入Internet的,那么可以利用路由器来进行包过滤。确认只有内部LAN可以使用信任关系,而内部LAN上的主机对于LAN以外的主机要慎重处理。路由器可以过滤掉所有来自于外部而希望与内部建立连接的请求。

  3. 使用加密技术。阻止IP欺骗的一种简单的方法是在通信时要求加密传输和验证。当有多种手段并存时,加密方法可能最为适用。

  TCP/IP各层的安全性和提高各层安全性的方法

  1. 网络层的安全性

  在过去的十年里,已经提出了一些方案对网络层的安全协议进行标准化。例如,安全协议3号(SP3)就是美国国家安全局以及标准技术协会作为安全数据网络系统(SDNS)的一部分而制定的。网络层安全协议(NLSP)是由国际标准化组织为无连接网络协议(CLNP)制定的安全协议标准。集成化NLSP(I-NLSP)是由美国国家科技研究所提出的包括IP和CLNP在内的统一安全机制。SWIPE是另一个网络层的安全协议,由Ioannidis和Blaze提出并实现原型。所有这些提案的共同点多于不同点。事实上,他们用的都是IP封装技术。其本质是,纯文本的包被加密,封装在外层的IP报头里,用来对加密的包进行Internet上的路由选择。到达另一端时,外层的IP报头被拆开,报文被解密,然后送到收报地点。

  网络安全性的主要优点是它的透明性,也就是说,安全服务的提供不需要应用程序、其他通信层次和网络部件做任何改动。它最主要的缺点是:网络层一般属于不间进程和相应条例的包不做区别。对所有去往同一地址的包,它将按照同样的加密密钥和访问控制策略来处理。这可能导致提供不了所需要的功能,也会导致性能下降。针对面向主机的密钥分配的这些问题,RFC 1825允许(甚至可以说是推荐)使用面向用户的密钥分配,其中,不同的连接会得到不同的加密密钥。但是,面向用户的密钥分配需要对相应的操作系统内核作比较大的改动。

  简而言之,网络层是非常适合提供基于主机对主机的安全服务的。相应的安全协议可以用来在Internet上建立安全的IP通道和虚拟私有网。例如,利用它对IP包的加密和解密功能,可以简捷地强化防火墙系统的防卫能力。RSA数据安全公司已经发起了一个倡议,来推进多家防火墙和TCP/IP软件厂商联合开发虚拟私有网,该倡议被称为S-WAN(安全广域网)倡议,其目标是制定和推荐网络层的安全协议标准。

  2. 传输层的安全性

  在网络应用编程中,通常使用广义的进程间通信(IPC)机制来与不同层次的安全协议打交道。在Internet中提供安全服务的首先一个想法便是强化它的IPC界面,如BSD、Sockets等,具体做法包括双端实体的认证,数据加密密钥的交换等。Netscape通信公司遵循了这个思路,制定了建立在可靠的传输服务(如TCP/IP所提供)基础上的安全接层协议(SSL)。

  网络安全机制的主要优点是它的透明性,即安全服务的提供不要求应用层做任何改变。这对传输层来是说是做不到的。原则上,任何TCP/IP应用,只要应用传输层安全协议,比如说SSL或IPC,就必定要进行若干修改以增加相应的功能,并使用不同的IPC界面。于是,传输层安全机制的主要缺点就是要对传输层IPC界面和应用程序两端都进行修改。可是,比起Internet层和应用层的安全机制来,这里修改还是相当小的。另一个缺点是,基于UDP的通信很难在传输层建立起安全机制来。同网络层安全机制相比,传输层安全机制的主要优点是它提供基于进程对进程的(而不是主机对主机的)安全服务。这一成就如果再加上应用级的安全服务,就可以再向前跨越一大步了。

  3. 应用层的安全性

  网络层的安全协议允许为主机(进程)之间的数据通道增加安全属性,这以为着真正的数据通道还是建立在主机(或进程)之间,但却不可能区分在同一通道上传输的一个具体文件的安全性要求。比如说,如果一个主机与另一个主机之间建立起一条安全的IP通道,那么所有在这条通道上传输的IP包就到要自动的被加密。同样,如果一个进程和另一个进程之间通过传输层安全协议建立起了一条安全的数据通道,那么两个进程间传输的所有消息就都要自动的被加密。

  一般来说,在应用层提供安全服务有几种可能的做法,一个是对每个应用(及应用协议)分别进行修改。一些重要的TCP/IP应用已经这样做了。在RFC1421至1424中,IETF规定了私用强化邮件(PEM)来为基于SMTP的电子邮件系统提供安全服务。Internet业界采纳PEM的步子太慢的原因是PEM依赖于一个既存的、完全可操作的PKI(公钥基础结构)。建立一个符合PEM规范的PKI需要多方在一个共同点上达成信任。作为一个中间步骤,Phil Zimmermann开发了一个软件包,叫做PGP(Pretty Good Privacy)。PGP符合PEM的绝大多数规范,但不必要求PKI的存在。相反,它采用了分布式的信任模型,即由每个用户自己决定该信任哪些其他用户。因此,PGP不是去推广一个全局的PKI,而是让用户自己建立自己的信任之网。

  总结:

  总起来说,TCP/IP安全性的进展实际上与ICA思想的安全保证是有所协同与汇聚的,比起防火墙等措施来已更上一层楼。因此,基于TCP/IP协议的安全计算问题应以科学求实、积极创新的原则而努力推进,决不能不求创新,甚至悲观失望。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
美国陆军通信带宽需求及能力分析