博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP/IP协议中的安全问题
阅读量:4072 次
发布时间:2019-05-25

本文共 3617 字,大约阅读时间需要 12 分钟。

      本文为论文《A Look Back at “Security Problems in the TCP/IP Protocol Suite”》的读书笔记。

      在计算机安全课程上,涉及到TCP/IP的时候,曾经强调TCP/IP种存在不少的安全问题,但是这并不意味TCP/IP的性能或安全性不好,因为TCP/IP的诞生本身就不是立足于安全,而是主要解决网络间的通信问题。然而,随着TCP/IP的发展,很多方面都被一些不法分子所利用,从而体现出TCP/IP中的不少安全问题。

       在《A Look Back at “Security Problems in theTCP/IP Protocol Suite”》一文中,作者主要阐述了协议级的安全问题。可以看到TCP/IP协议存在的一些不足,一些主要是由于host主机依赖IP源地址来寻求认证,另一些则是主要利用了网络中的某些控制协议,尤其是路由协议。在该文中,作者没有涉及具体协议在执行过程种的不足,而是讨论了通用的协议本身。

       以下是该文中涉及到的一些TCP/IP安全问题。

 

       1.TCP序列预测

       这种安全问题属于会话劫持的会话欺骗,因为它创建了一个伪造的TCP会话,而不是盗用现有的TCP会话。由于TCP协议的初始建立连接可以看到:通过三次握手开始建立TCP连接,首先,客户端发送一个具有SYN标志的数据包,然后服务器端回复一个具有初始序列号并且设置了SYN和ACK的数据包,客户端通过发送一个确认数据包来结束连接,该确认数据包的序列号是接收序列号加1,与此同时还设置了ACK标志。而TCP序列预测的概念是:攻击者通过企图猜测TCP开始时服务器发送的初始序列号,从来建立了伪造的TCP会话。

       由于是预测TCP序列号,首先可以使得TCP序列号的随机产生粒度不再像以前那样粗粒度,提高攻击者的预测难度。

       TCP序列预测攻击的关键是预测不使用随机数的序列号,现代的TCP协议都是使用伪随机数生成器来确定序列号,这会使得序列号的预测不是那么得容易,但是仍然存在受到攻击的可能性。攻击者可以通过以下来实现攻击:

       攻击者对受害客户端发送拒绝服务攻击,其中主要的目的是防止客户端干扰自己的攻击。

       攻击者向目的服务器发送一个SYN数据包,将源IP地址伪造成受害客户端的IP地址。

       在等待服务器想客户端发送响应这段很短时间之后,攻击者通过发送一个ACK数据包来结束TCP握手,该ACK数据包的序列号是预测的下一个序列号,并再次将源IP地址伪造成受害客户端的IP地址。

       从而,攻击者可以像受害客户端一样向服务器发送请求。

       关于TCP序列预测的攻击,也存在一些防御。

 

       2.路由攻击

       滥用路由机制和路由协议是最简单的基于协议的攻击。由于不同的路由协议,可以衍生出不同的攻击方法,其中很大一部分基于host主机的源IP地址认证。

       首先是IP源路由,顾名思义,该协议是使得发送者按照数据包发来的路径,原路反向发送信息的协议。而攻击者可以通过在中途篡改IP源地址来实现攻击 ,从而使得返回的数据包按照预先设计的路径来发送。

       对付这类的攻击,最好的方法是让那 些在局部网络种的网关拒绝让外部的一些包声称自己来源于该局域网。但是目前的技术却做不到这一点。一个简单一点的方法是拒绝那些事先被认证的连接。这类防御的另一种方式是分析IP源路由,如果它是来自于自身所列出的安全网关的话就接受该路由。

       路由攻击还有路由信息协议攻击。路由信息协议是一种在内部网络使用的路由协议,它可以通过不断地交换路由信息来让路由器动态地适应网络的变化。这些信息包括路由器可以连接到哪些网络,到达这些网络的距离有多远。最主要的是路由器对于传来的信息是不进行的检查的,从而存在弊端,可以被攻击。

       对于RIP攻击来说,要比源路由攻击容易对付,而且采用的方式也是大致相似。其中一种防御就是对于路由器接收到的信息有一定的怀疑精神,也就是说对于接收到的数据包进行一定的验证,如果不存在的欺诈行为,属于正常的路由传播,那就接收,否则就拒绝。

       接着是外部网关协议,这是一个自治系统之间的传输路由信息的所有协议,它相对于内部路由协议。外部路由协议发起对等路由器之间的探测与鉴别,两个对等路由器建立起一个TCP连接并执行报文交换。

       在该文中,作者还讲述了Internet控制报文协议(ICMP)。ICMP主要是用于IP主机和路由器之间传输控制信息。其中控制信息是指网络是否畅通,主机是否可达访问,路由是否可用等一些控制信息。可以看到这些信息并不传输用户的数据,但是却为用户的数据传输提供了必不可少的保证。

       首先可以预想到的是,ICMP可以用来进行简单的DOS攻击,比如Destination unreachable和 Time to Live Exceeded。最普遍的是ping洪水攻击,ping工具向主机发送ICMP回显请求,反过来,它又使用ICMP回显应答作为响应。为了实施攻击,功能强大的计算机向单个受害服务器发出大量回显请求。如果攻击者能建立的ping请求比受害者服务器能处理的请求多,且受害服务器有足够的网络带宽来接受所有这些请求的话,则受害服务器被这些网络流量淹没,并逐渐开始丢弃合法的连接。

       针对ICMP的攻击,也是可以有方法进行一定程度的防御。首先可以看到这类的攻击主要是基于网络带宽的攻击,并且host主机也不会对ICMP数据包进行预处理。于是,为了限制网络带宽,可以在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,第二种方法则是为了对ICMP数据包进行一定程度的处理,比如拒绝处理全部的ICMP数据包。

      

       3.潜在危险的领域

       在该部分,作者使用了一个短语“Here be dragons”来表示了在某些领域的危险或者潜在的安全问题。作者的意思是很多协议在本质上没有缺陷,因此没有受到攻击被滥用。作者举了几个例子来说明这一点:finger服务,电子邮件,域名系统,FTP等。

       首先以电子邮件为例。电子邮件在互联网上可能是最应用广泛最有价值的服务了。但是之前由于邮件服务器不使用认证信息的缘故,它很容易受到攻击。随后,在电子邮件中就逐渐发展了加密和身份验证。否则攻击者可以很简单的使用IP嗅探就可以截获电子邮件的信息。提高机密性的途径之一就是在传输层或者应用层对电子邮件进行加密。

       域名系统(DNS)是一个基本的应用层协议,它是现在的网络中必不可少的一个功能。其主要的功能是提高一个分布式的数据库来映射IP地址和host名字。该协议之中会存在一些攻击,比如DOS攻击以及密码收集等。

       通过DNS来解析域名,用户会相信一个事实:DNS请求都会被正确解析。但是攻击者就可以通过攻击DNS,把域名嫁接到不存在或者恶意的网站去。攻击者可以监听所有希望被翻译为IP地址的请求,然后提供一个已经被推翻的机器,这样可以使得拦截者监视这台机器上的流量,并且截获密码等。这就是所谓的网络”phishing” 。

       关于DNS的攻击,其实还包括DNS缓存中毒,虽然在该文中没有涉及,但是该类型的攻击同样威胁巨大。其主要方式是使得DNS服务器缓存虚假的DNS记录。

       该文还讲述了FTP的安全问题。作者认为FTP本身并不存在缺陷,但是在FTP执行的时候却需要使用者更多的注意。FTP使用登录和密码组合来实现认证,但是这只是客户段发给服务器端的,但是这不能保证服务器端同样给客户端一定的验证信息。

 

       4.平凡的攻击

       作者还介绍了一些在互联网种最普遍的攻击。

       局域网的存在很大程度上缓解了IP资源,但是这同样会存在不少的问题,比如局域网的脆弱性。如果一个局域网中采用了ARP协议,那么局域网内的攻击也会很容易实现。由于ARP协议是用来实现网络层和数据链路层的解析,则一旦有攻击者使得这种解析映射变成他所希望的那样,那么正常的通信会被篡改,从而实现攻击,也就是所谓的ARP欺骗。其实现过程主要的依据就是ARP协议缺乏对信息的验证方案,网络种任意一台计算机都可以声称自己是具有请求的IP地址。一旦接收ARP响应的计算机更新了ARP列表,那么LAN中的计算机就不能正常通信。

       由于缺乏身份验证,但是一旦采用身份验证的话,ARP欺骗将变的不是那么容易。其中可以采用受信任的用户组。

       另外一种解决方法就是使用静态ARP表,这样也就排除了攻击者的IP响应了,而是由管理员来统一分配。

 

       从以上的攻击来看,主要的防御可以简单的概括为以下几类:验证,加密和信任系统。

       从该文的分析可知,有几点是很明显的。第一,依靠IP源地址来通信验证是既不可靠的。第二,序列号的设定也是不安全的。一定要让序列号是不容易被他人获知的,即使是本机的使用者。然后,在互联网中,一些控制机制看似可以保证通信的完整性,但是并不能保证通信的安全性,所以在使用的时候必须给以足够的保障,这样才能不被攻击者利用。

转载地址:http://paeji.baihongyu.com/

你可能感兴趣的文章
19. Remove Nth Node From End of List (双指针)
查看>>
49. Group Anagrams (String, Map)
查看>>
139. Word Break (DP)
查看>>
23. Merge k Sorted Lists (Divide and conquer, Linked List) 以及java匿名内部类
查看>>
Tensorflow入门资料
查看>>
剑指_用两个栈实现队列
查看>>
剑指_顺时针打印矩阵
查看>>
剑指_栈的压入弹出序列
查看>>
剑指_复杂链表的复制
查看>>
服务器普通用户(非管理员账户)在自己目录下安装TensorFlow
查看>>
星环后台研发实习面经
查看>>
大数相乘不能用自带大数类型
查看>>
字节跳动后端开发一面
查看>>
CentOS Tensorflow 基础环境配置
查看>>
centOS7安装FTP
查看>>
FTP的命令
查看>>
CentOS操作系统下安装yum的方法
查看>>
ping 报name or service not known
查看>>
FTP 常见问题
查看>>
zookeeper单机集群安装
查看>>