DoS攻击(拒绝服务攻击)
拒绝服务攻击DoS(Denial of Service):使系统过于忙碌而不能执行有用的业务并且占尽关键系统资源。
它是基于这样的思想:用数据包淹没本地系统,以打扰或严重阻止捆绑本地的服务响应外来合法的请求,甚至使本地系统崩溃。
SYN洪泛攻击
SYN泛洪是一种常见的Dos攻击方法,SYN洪泛攻击发生在三次握手建立TCP连接的过程中。
具体过程
- 攻击者发送TCP的SYN,服务器返回ACK后,该攻击者就不对其进行确认,那么这个TCP连接处于挂起状态,所谓的半连接状态。
- 服务器收不到再确认的话,还会重复发送ACK给攻击者,这样就更加浪费服务器资源。
- 攻击者如果发送非常大量的这种TCP连接,由于每一个都无法完成三次握手,所以服务器上这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务。
解决方法(SYN cookie)
- 当服务器接收到一个SYN报文段时,其并不知道该报文段来自一个合法用户还是要进行SYN洪泛攻击的攻击者,因此服务器不会为该报文段生成一个半开的连接,相反服务器会生成一个初始序列号,该序列号是一个散列函数生成的,该散列函数由SYN报文段的源IP地址和目的IP地址、源端口号和目的端口号以及仅有服务器知道的秘密数生成,这个初始序列号被称为cookie。服务器会发送这种具有特殊初始序列号的SYNACK报文段,且服务器并不记录该cookie以及其他任何关于SYN的状态信息。
- 如果客户是合法的,则它将返回一个ACK报文段,当服务器收到ACK报文段后,需要验证ACK是否与前面发送的某个SYN相对应。由于服务器没有记录SYN报文段的相关信息,所以其会使用SYNACK报文段的源IP地址和目的IP地址,源端口号和目的端口号以及仅有服务器知道的秘密数生成一个散列函数。如果这个函数的结果(cookie值)加1和客户ACK报文段中的确认值相同,那么服务器会认为该ACK对应于较早的SYN报文段,则其合法,因此服务器会生成一个套接字的全开连接。
- 如果客户没有返回一个ACK报文段,则说明之前的SYN报文段属于要进行SYN洪泛攻击的攻击者,但其并没有对服务器造成任何危害,因为服务器没有为它分配任何资源。
DDos攻击
DDoS攻击(Distributed denial of service attack)即分布式拒绝服务攻击,是一种基于DoS的分布的、协同的大规模攻击方式。单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击。与DoS攻击由单台主机发起攻击相比较,分布式拒绝服务攻击DDoS是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起的集团行为。