基于dpdk的DDos攻击实验

news/2024/10/19 1:35:58/

基于dpdk的模拟DDos攻击实验

实验概述&实验目的

分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

​本实验利用10Gbps网卡前端的服务器来模拟僵尸网络所产生的流量。利用Trex进行发包来尝试逼近带宽的理论值,以达到模拟DDos攻击时服务器没有多余流量来为非攻击者使用的情况。

​根据以太网帧的结构分析,帧的大小介于64bit和1518bit,本实验采用这两个极限值作为网络包的大小来进行流量监测。dpdk是绕过linux内核的网络发包环境,实验将采用控制变量法,对不同大小的报文用不同的核数进行流量监测,分析不同核数时的cpu利用率以及吞吐量(实验结果用图示表示,自变量为核数和包大小)。

带*为非必要操作

物理实验环境

服务器:DELL EMC 至强服务器

工作站:DELL 工作站

网卡:INTEL X710 10Gbps

软件环境配备

系统 Ubuntu Server 18.04 LTS,用户名:seu,密码:seu

*连接外网

服务器共有四个网口 eno1~eno4,将网线插在左数第一个网口对应 eno1,并配置 interfaces 文件

$ vi /etc/network/interfacesauto eno1
iface eno1 inet dhcp

/etc/resolv.conf中加入DNS配置

nameserver 223.5.5.5
nameserver 223.6.6.6

要先手动设置 IP 再使用 dhclient 命令启用 DHCP,每次重启服务器后如需连接外网,需输入这两行命令

ifconfig eno1 192.168.0.102 netmask 255.255.255.0
dhclient eno1

执行完成就可以连通外网了

*安装依赖

使用 apt-get 命令安装 dpdk 依赖

sudo apt update
sudo apt install -y dpdk dpdk-dev dpdk-doc

安装其他依赖,可以直接在本地保存为 install.sh,服务器开启 netcat 监听 nc -l 8080 < install.sh

然后本地使用 nc $SERVER_IP 8080 > install.sh 传到服务器上 sh install.sh执行

sudo apt-get updatesudo apt-get upgradesudo apt-get install -y cmake gcc g++ git automake llvm llvm-dev llvm-runtime libtool bison flex build-essential vim# Install pkg-config here, as it is required for p4lang/PI
# installation to succeed.
sudo apt-get install -y pkg-configsudo apt-get install -y wget curl zip unzip rar unrar unarsudo apt-get install -y libgc-dev libfl-dev libgmp-dev libevent-dev libssl-dev libjudy-dev libpcap-dev tcpdumpsudo apt-get install -y libboost-dev libboost-iostreams-dev libboost-graph-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libboost-thread-devsudo apt-get install -y libreadline6 libreadline6-dev
# 这里如果提示废弃就执行下面的安装
sudo apt-get install -y libreadline-dev # Deps needed to build PI:
sudo apt-get install -y libjudy-dev libreadline-dev valgrind libtool-bin libboost-dev libboost-system-dev libboost-thread-dev# Things needed for `cd tutorials/exercises/basic ; make run` to work:
sudo apt-get install -y libgflags-dev net-toolssudo apt-get install -y doxygen graphviz texlive-fullsudo apt-get install -y bridge-utils tcpreplay
sudo apt-get install -y zlib1g-dev pciutils kmod strace  ## needed by cisco trex

*设置网口

服务器网卡的ip为:192.168.200.2 和192.168.201.2
工作站ip为:		192.168.0.101

服务器平台下:

ifconfig -a查看网口信息,列出了 X710 网卡的两个网口信息,默认驱动是 Kernel Driver i40e,先设置 IP

# ddos.py
import os
from trex_stl_lib.api import *
​
c = STLClient(server = "localhost")
​
try:
​ports = [0,1]c.connect()c.reset(ports)
​c.push_remote(pcap_filename = '/home/seu/Downloads/PCAP-01-12_0750-0818/SAT-01-12-2018_0750',ports = [0,1],ipg_usec = 0.1,count = 100)
​c.wait_on_traffic()
​
​stats = c.get_stats()for port in ports:opackets = stats[port]['opackets']print("{0} packets were Tx on port {1}\n".format(opackets, port))
​
except STLError as e:print(e)sys.exit(1)
​
finally:c.disconnect()#cd /etc/v2.75
sudo ifconfig enp59s0f0 192.168.200.2
sudo ifconfig enp59s0f1 192.168.201.2

在工作站的主机上 ping 一下服务器保证双向联通

ping 192.168.200.2

ping 192.168.201.2

*安装TRex()

将装有 TRex 压缩包的U盘插在服务器上,fdisk -l查看是哪个设备,并挂载设备

mount /dev/sdb1 /mnt
cd /mnt

将压缩包拷贝到 /home/seu 目录下使用 tar -xzvf trex.tar解压,版本是 v2.75

进行端口绑定

cd v2.75
sudo ./dpdk_setup_ports.py -i	

进行发包测试

服务器下执行:

sudo ./t-rex-64 -f avl/sfr_delay_10_1g.yaml -m 5 -l 1000#delay_10_1g代表1Gbps
#参数m是发包重放次数,此处是5倍,为5Gpbs
#l 是网络抖动检测

显示的结果如下图:

-Per port stats table ports |               0 |               1 -----------------------------------------------------------------------------------------opackets |        27882688 |        35434728 obytes |      8217921859 |     28586813888 ipackets |         5007937 |             709 ibytes |      4647534484 |           79608 ierrors |               0 |               0 oerrors |               0 |               0 Tx Bw |       1.18 Gbps |       3.81 Gbps -Global stats enabled Cpu Utilization : 31.6  %  31.6 Gb/core Platform_factor : 1.0  Total-Tx        :       5.00 Gbps  Total-Rx        :       0.00  bps  Total-PPS       :       1.07 Mpps  Total-CPS       :      20.51 Kcps  Expected-PPS    :       1.08 Mpps  Expected-CPS    :      20.61 Kcps  Expected-BPS    :       5.02 Gbps  Active-flows    :    21328  Clients :      511   Socket-util : 0.0775 %    Open-flows      :  1342791  Servers :     5621   Socket :    24927 Socket/Clients :  48.8 drop-rate       :       5.00 Gbps   current time    : 66.5 sec  test duration   : 3533.5 sec  -Latency stats enabled Cpu Utilization : 0.1 %  if|   tx_ok , rx_ok  , rx check ,error,       latency (usec) ,    Jitter          max window |         ,        ,          ,     ,   average   ,   max  ,    (usec)                     ---------------------------------------------------------------------------------------------------------------- 0 |    65254,   12858,         0,    0,          7  ,      23,       1      |  10  10  15  10  12  11  12  23  10  10  15  18  12 1 |    65254,     136,         0,    0,          3  ,       0,       0      |  0  0  0  0  0  0  0  0  0  0  0  0  0 

进行发包实验

变更-c的参数,观察cpu利用率以及吞吐率并绘制不同包大小、不同核数时cpu利用率以及吞吐率。

sudo ./t-rex-64 -f cap2/imix_1518.yaml -m 823451 -l 1000 -c 2#参数c为服务器应用的核数
#cap2/imix_1518.yaml 为包大小1518B的配置文件

其他包大小的配置文件名如下:

cap2/imix_64.yamlcap2/imix_594.yaml

以下为输出的结果:

-Per port stats table ports |               0 |               1 -----------------------------------------------------------------------------------------opackets |        34232892 |           42080 obytes |     51904428378 |         2777280 ipackets |               0 |               0 ibytes |               0 |               0 ierrors |               0 |               0 oerrors |               0 |               0 Tx Bw |       9.89 Gbps |     527.55 Kbps -Global stats enabled Cpu Utilization : 100.0  %  9.9 Gb/core Platform_factor : 1.0  Total-Tx        :       9.89 Gbps  Total-Rx        :       0.00  bps  Total-PPS       :     816.02 Kpps  Total-CPS       :       0.00  cps  Expected-PPS    :       6.59 Gpps  Expected-CPS    :       6.59 Gcps  Expected-BPS    :      80.00 Tbps  Active-flows    :     1600  Clients :      254   Socket-util : 0.0100 %    Open-flows      :     1600  Servers :    65534   Socket :     1600 Socket/Clients :  6.3 Total_queue_full : 72264932         drop-rate       :       9.89 Gbps   current time    : 43.3 sec  test duration   : 3556.7 sec  -Latency stats enabled Cpu Utilization : 0.1 %  if|   tx_ok , rx_ok  , rx check ,error,       latency (usec) ,    Jitter          max window |         ,        ,          ,     ,   average   ,   max  ,    (usec)                     ---------------------------------------------------------------------------------------------------------------- 0 |    42080,       0,         0,    0,          0  ,       0,       0      |  0  0  0  0  0  0  0  0  0  0  0  0  0 1 |    42081,       0,         0,    0,          0  ,       0,       0      |  0  0  0  0  0  0  0  0  0  0  0  0  0 

http://www.ppmy.cn/news/123157.html

相关文章

akka基础

基本概念消息传递API 通用API消息传递方式 Future机制Actor生命周期处理状态和错误 监督kill actor生命周期监控和DeathWatch安全重启状态 纵向扩展 Router调度方式使用策略 横向扩展 订阅集群事件启动、退出、状态种子节点客户端、服务器、workeractor寻址邮箱熔断配置 ps:本…

高防服务器,可以防多大的ddos攻击

高防服务器是一种能够帮助网站应对拒绝服务攻击&#xff0c;可以抵御 DDoS攻击&#xff0c; CC攻击的云服 务器&#xff0c;并且能够有效地识别和清理恶意流量&#xff0c;为用户提供网络安全维护。所以&#xff0c;高防御服务器能 抵御哪些攻击呢&#xff1f;高防服务器是一种…

如何使用高防CDN防御DDOS攻击呢?

众所周知&#xff0c;DDOS攻击是一种恶意的攻击手段&#xff0c;主要以消耗网络带宽的攻击手段。快快网络官网新上线的高防CDN可以高效防御DDOS攻击&#xff0c;那么&#xff0c;如何使用高防CDN防御DDOS攻击呢&#xff1f; 高防CDN的原理就是构建在网络之上的内容分发网络&am…

一个AK/SK泄露检测的实现思路

01、简介 在企业上云的过程中&#xff0c;AK/SK泄露导致的数据泄露事件屡见不鲜。在企业混合云架构下&#xff0c;公有云和私有云都存在大量的AccessKey&#xff0c;如何有效地检测可能的AK/SK泄露事件&#xff0c;一直困扰着企业的安全人员。 本文提供了一种比较容易实现的思路…

急救120

Microsoft VBScript 编译器错误 错误 800a03f6 缺少 End /iisHelp/common/500-100.asp&#xff0c;行242 ADODB.Recordset 错误 800a0e7d 在一个已关闭的或无效连接的对象参照上操作不被允许。 /reg.asp&#xff0c;行15 <%dim userdim pasuser request.Quer…

KALI attack 实验室

目录 如何使用KALI attack “网站“实验 MITMF安装与使用 自动化脚本实现的&#xff0c;现在实现了&#xff1a; 白帽黑客使用Kali Linux“中国菜刀”weevely网站shentou技巧 john如何解密mysql数据库 如何使用KALI attack “网站“实验 此内容仅为参考或学习,请勿用于其…

kali新手入门教学(11)--ddos攻击

DDOS 全名是 Distribution Denial of service (分布式拒绝服务攻击)&#xff0c;指借助于客户/服务器技术&#xff0c;将多个计算机联合起来作为攻击平台&#xff0c;对一个或多个目标发动 DoS 攻击&#xff0c;从而成倍地提高拒绝服务攻击的威力。 通常&#xff0c;攻击者使用…

DDOS高防

全球DDoS防护 根据攻击来源就近调度阿里云全球DDoS防护节点 利用Anycast和GSLB技术&#xff0c;调度阿里云分布全球的DDoS防护节点&#xff0c;在发起攻击源头进行过滤&#xff0c;将防护能力最大化。 DDoS防护 帮助您自动智能防护DDoS攻击&#xff0c;减少业务损失&#x…