欢迎来到天天文库
浏览记录
ID:5673136
大小:203.50 KB
页数:8页
时间:2017-12-21
《tcp syn flood网络攻击技术及防御 毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、TCPSYNFlood网络攻击技术及防御内容摘要拒绝服务攻击(DenialofService,DoS)是目前比较有效而又非常难于防御的一种网络攻击方式,它的目的就是使服务器不能够为正常访问的用户提供服务。而SYNFlood是最为有效和流行的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常向连接是指网络在进行一次正常的TCP传输之前首先需要在TCP客户端和TCP服务端建立特定的虚电路连接,该连接过程通常被称为TCP的“三次握手”。在TCP三进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK
2、包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。如下图所示(本文中图形皆由visio2010作出)图①正常情况下TCP建立连接的过程在上述过程中,当服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为TCB资源,此时的TCP连接也称为半开连接。这种半开连接仅在收到客户端响应报文或连接超时后才断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者所利用形成SYN Flood攻击。1.2TCP三次握手的缺陷在
3、通常情况下,每一种操作系统都会使用一块限定的内存来处理TCP连接请求。这块内存被称为TCP缓存。当TCP缓存未满时,每当客户端发送一个包含有SYN标志置位的连接数据包到服务端时,服务端都会分配一块内存用于处理该连接请求。一般来说,TCP缓存的容量是不大的,因为正常的情况下,TCP能够很好地处理连接请求,即使有时TCP缓存已经满了,客户端只要重新发送连接请求,服务器端有时间清空缓存队列以响应新的连接请求,而且一般情况下,同一时间连接某台服务器的相应端口以请求相应服务的数量是不会太多的。服务器提供服务时,一般服务器在提供服务的相应端口监听、接收客户端的连接请求和数据包。服务端接收到数据包时一般首先
4、在TCP层对数据包进行分解,分解出TCP数据包内容和IP报头,并将这些信息存贮到内存中,然后检查TCP-7-校验和,如果检验失败,不返回确认ACK,该分段丢弃,并等待客户端进行重传。如果检验和通过,将查找与该连接相关联的协议控制块,如果此时没有找到与该连接相关联的协议控制块,TCP将该分段丢弃并返回RESET,如果找到了与该连接相关联的协议控制块,但状态为关闭,这时该数据包被丢弃,但不返回RESET信息,客户端会尝试重新建立连接请求。但如果上述状态正常,服务端将会建立新的Socket,同时把该调用过程放入TCP缓存队列中,如果此时缓存队列已填满整个缓存时,TCP认为有错误发生,所有的后续连接请
5、求会被拒绝。所以我们假设在TCP连接的三次握手中,有一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接;但如果有一个恶意的攻击者利用IP欺骗技术,向服务器大量发送经过IP伪装以后的连接数据包,由于这些数据中的源地址都是经过黑客精心挑选的虚假的IP地址,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源———数以万计的半连接。如果此时服务器的TCP/IP栈不够强,或者说缓存不够大时,最后的结果往往是由
6、于服务器维持的半连接太多而导致堆栈溢出崩溃,或者是服务器端忙于处理攻击者伪造的TCP连接请求而无法处理客户的正常请求,这时候我们就认为:服务器端受到了SYNFlood攻击。1.3SYNFlood攻击的机制客户端通过发送在TCP报头中SYN标志置位的数据分段到服务端来请求建立连接。通常情况下,服务端会按照IP报头中的来源地址来返回SYN/ACK置位的数据包给客户端,客户端再返回ACK到服务端来完成一个完整的连接。在攻击发生时,客户端的来源IP地址是经过伪造的(spoofed),现行的IP路由机制仅检查目的IP地址并进行转发,该IP包到达目的主机后返回路径无法通过路由达到的,于是目的主机无法通过T
7、CP三次握手建立连接。在此期间因为TCP缓存队列已经填满,而拒绝新的连接请求。目的主机一直尝试直至超时(大约75秒)。这就是该攻击类型的基本机制。发动攻击的主机只要发送较少的,来源地址经过伪装而且无法通过路由达到的SYN连接请求至目标主机提供TCP服务的端口,将目的主机的TCP缓存队列填满,就可以实施一次成功的攻击。实际情况下,发动攻击时往往是持续且高速的。下图为SYNFlood攻击过程示意图:-
此文档下载收益归作者所有