什么是DDoS攻击

DDoS(分布式拒绝服务攻击)攻击。最可怕的黑客攻击,可以把你的网站系统给搞瘫痪了。

DoS攻击,就是黑客知道你的服务器地址,假设你的系统每秒能抗下1000个请求,黑客就以每秒1000请求访问你,你的服务器线程资源全部打满,正常用户根本无法发送请求,你的网站就宕机了。甚至他以每秒1万个请求攻击你的服务器,那可能就导致系统机器挂了。

DoS攻击是一对一的,就是黑客搞一台高性能服务器,拼命发送请求给你的一台服务器,但是如果你的服务器配置超高,每秒能抗下1万请求,结果黑客的及其每秒只能请求5000个请求,那就没用了。

DDoS的意思就是黑客控制大量的及其,比如普通人的电脑,或者一些公司的服务器,被他的一些木马植入给控制了,就是所谓的“肉鸡”, 然后黑客下达命令,让所有的肉鸡一起发送请求给攻击目标,直接搞瘫你的服务器。

image.png

DDoS攻击方式

TCP三次握手的SYN Flood攻击

tcp三次握手
1、客户端发送一个SYN请求,指明客户端的端口号以及TCP连接的初始序列号
2、服务器收到SYN后,返回一个SYN+ACK,表示请求被接收,TCP序列号加1
3、客户端收到服务器的SYN+ACK后,返回一个ACK给服务器,TCP序列号加1,连接建立完毕,接着就可以通信了。

如果服务器没有收到第三步的ACK,会重试返回SYN+ACK给客户端,同时处于SYN_RECV状态,把客户端放入等待列表。重试会3~5次,每隔30秒重试一次,遍历等待列表,再次重试发送SYN+ACK。
只要返回SYN+ACK给客户端,就会为客户端预留一部分资源,重试期间都会保留,等待跟客户端建立连接。所以如果说太多的客户端来建立连接,资源就会耗尽,此时正常用户在操作时就无法与服务器建立新的TCP连接。

所以,黑客就可以伪造大量的不同IP地址去发送SYN请求给一台服务器建立TCP连接,每次都是卡在服务器返回SYN+ACK, 但是黑客是不会返回最后的ACK状态的,所以就会导致服务器可能为了黑客的肉鸡客户端建立了大量的半连接放在等待列表里面,占用大量的资源,然后不断的重试。一旦服务器的资源好景,那么正常的请求过来,就无法建立TCP连接。
要知道,HTTP底层就是基于TCP连接实现的,一旦你无法建立TCP连接,那么这台服务器自然也接收不了任何的HTTP请求。

image.png

利用DNS查询的DNS Query Flood攻击

DNS Query Flood攻击,顾名思义,就是去攻击DNS服务器,伪造大量的域名解析请求发送给DNS服务器,然后DNS服务器必然没有,接着必然去找上级DNS服务器,一直到根域名服务器。
这么搞必然导致DNS服务器的组员耗尽,其他正常人浏览网页也要解析域名,此时就没法访问DNS域名服务器。

利用HTTP发起的CC攻击

CC攻击,HTTP Flood,直接在互联网上找到大量的HTTP代理,然后控制这些HTTP代理服务器去给目标服务器发送大量的HTTP请求。然后目标服务器直接就挂了。

Nginx、Tomcat、Jetty,及其上都是会部署Web服务器,都是一个进程,启动多个线程,来并发的处理各种HTTP请求。

控制大量的肉鸡,控制大量的HTTP代理,TCP SYN Flood,DNS Query Flood、HTTP Flood,搞瘫你的服务器,或者DNS服务器。
DDoS攻击,利用大量的机器进行分布式的海量请求发送,导致网站不可用。