基于SDN的DDoS攻击检测与防御(25)

这篇具有很好参考价值的文章主要介绍了基于SDN的DDoS攻击检测与防御(25)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

预备知识  
SDN     


      软件定义网络(英语:software-defined networking,缩写作 SDN)是一种新型网络架构。它利用OpenFlow协议将路由器的控制平面(control plane)从数据平面(data plane)中分离,改以软件方式实现。该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。  

      Facebook与Google都在他们的数据中心中使用OpenFlow协议,并成立了开放网络基金会来推动这个技术。【来源:Wikipedia】  

Mininet    

      Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。

      Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX\RYU\Floodlight\OpenDaylight等),同时,Mininet可以运行在多种操作系统上(windows\linux\Mac OS),具有很强的系统兼容性。最令人兴奋的一点是:在Mininet上进行的实验,可以无缝的移到真实的环境中去(官方是这么说的)【来源:CSDN】  

      Mininet:http://mininet.org/
基于SDN的DDoS攻击检测与防御(25)     
Floodlight 

      Floodlight是Apache授权并基于JAVA开发的企业级OpenFlow控制器,当前最新版本是1.2。
 基于SDN的DDoS攻击检测与防御(25)
     
      Floodlight OpenFlow Controller -ProjectFloodlight:http://www.projectfloodlight.org/floodlight/ sFlow

      sFlow是一款适用于高速交换网络中的监控软件,可以实时监测网络流量,sFlow需要交换机支持才能使用,而OpenvSwitch支持这个功能。sFlow监控工具由sFlow Agent和sFlow Collector两部分组成。Agent作为客户端,一般内嵌于网络转发设备(如交换机、路由器),通过获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文发送到指定的Collector。Collector作为远端服务器,负责对sFlow报文分析、汇总、生成流量报告。

      sFlow-RT:https://inmon.com/products/sFlow-RT.php

实验目的
1、了解sFlow-RT的配置

2、基于SDN的DDoS攻击仿真

3、掌握利用Floodlight进行DDoS防御的原理和方法

实验环境
操作系统:Ubuntu14.04 LTS

所用工具:Mininet,Floodlight,sFlow-RT

网络拓扑:
基于SDN的DDoS攻击检测与防御(25)

实验步骤一
实验拓扑构建

      桌面空白处,右键-打开终端,切换到HOME目录
基于SDN的DDoS攻击检测与防御(25)
 基于SDN的DDoS攻击检测与防御(25)    
 
      启动Floodlight 控制器
基于SDN的DDoS攻击检测与防御(25)    
      在输出信息中可以看到监听的端口
基于SDN的DDoS攻击检测与防御(25)
基于SDN的DDoS攻击检测与防御(25)     
      其中 6653 是OpenFlow swith的端口,等会我们用mininet 创建网络拓扑需要用到这个端口,8080 则是 Floodlight 的WebUI端口,我们可以用浏览器访问它
基于SDN的DDoS攻击检测与防御(25)     
      保持 Floodlight 运行的终端,再新开一个终端窗口,输入如下指令,构建我们所需的拓扑结构。
    
      命令解释:

      sudo:以管理员权限运行,因为mininet要调用内核的东西

      mn:就是mininet的命令简写

      --controller=remote:使用远程的控制器

      ip,port:控制器的ip和端口

      --topo:指定拓扑类型,single 就是单一拓扑,就是最简单的交换机下面接主机,后面的3 表示,三台主机。

      创建过程非常快,类似这样:
基于SDN的DDoS攻击检测与防御(25)     
      当你看到 mininet> 标识符,表示拓扑创建完成,我们可以输入一些指令查看网络拓扑。

      nodes 指令显示节点信息:
基于SDN的DDoS攻击检测与防御(25)     
      links指令显示链路信息:
基于SDN的DDoS攻击检测与防御(25)     
      还有检测网络链路连通性情况的pingall 指令:
基于SDN的DDoS攻击检测与防御(25)     
      想使用更多指令,可以键入 help 进行查看:

基于SDN的DDoS攻击检测与防御(25)
      除了在mininet 控制台之外,Floodlight 的WebUI提供一种更友好的方式查看网络拓扑情况,可以点击左侧的菜单查看相应的信息。
基于SDN的DDoS攻击检测与防御(25)
     
实验步骤二
DDoS 攻击检测


      启动sFlow-RT进行流量监控:

      保持Mininet 运行的终端,再新开一个终端窗口,输入如下指令,启动sFlow-RT。(启动后不要关闭此终端)
基于SDN的DDoS攻击检测与防御(25)     
      可以看到如下信息:
基于SDN的DDoS攻击检测与防御(25)     
      其中 6343 是sFlow Collector 的默认端口,8008 则是 sFlow 的WebUI端口。

      配置sFlow Agent:

      我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。

      键入以下指令部署sFlow Agent :

      sudo ovs-vsctl -- --id=@sflow create sflow agent=eth0 \

      target=\"127.0.0.1:6343\" sampling=10 polling=20 -- -- set bridge s1 \

      sflow=@sflow
基于SDN的DDoS攻击检测与防御(25)     
      指令说明:

      1)agent:监控 eth0 网卡产生的流量;

      2)target:sFlow-RT的IP,默认端口6343;

      3)bridge:需要开启sFlow的网桥;

      4)sampling:采样率,表示每隔N个Packet就取样一次

      5)polling:轮询时间,每隔N秒polling一次

      提示:如果有N个网桥,就需要执行N次部署 sFlowAgent 的指令,我们本次实验中只有一个网桥,所以执行一次就可以了。

      通过如下指令可以查看已经配置的 sFlow Agent信息: 
基于SDN的DDoS攻击检测与防御(25)     
      输入ip link 指令可以查看,虚拟交换机端口与端口编号的映射(提示:实验机中的端口编号可能有所不同。)
基于SDN的DDoS攻击检测与防御(25)
     
      可以看到s1 交换机对应的编号是4,交换机连接host1的端口对应的编号是5,依次类推。

      查看sFlow Agent 是否配置成功,我们可以通过其WebUI进行查看,浏览器中访问:
基于SDN的DDoS攻击检测与防御(25)     
      可以看到已经添加到了监控对象,点击查看详情:
基于SDN的DDoS攻击检测与防御(25)
     
      看到各个端口的各种信息,但是好像没有我们需要的流量信息,我们先添加一个,点击页面上的 Flows 选项
基于SDN的DDoS攻击检测与防御(25)
    
      然后分别在Name ,Keys,Value,Filter列填入:flows;ipsource,ipdestination,stack;bytes;留空 ,然后点击下面的 Submit 提交
基于SDN的DDoS攻击检测与防御(25)    
      然后再回到 Agent选项,查看监控的详情,就能看到 Flows信息了(提示:如还是看不到 flows,可在 mininet 控制台中执行 pingall 产生流量 。)
基于SDN的DDoS攻击检测与防御(25)     
      点击 5.flows 进去即可查看交换机1号端口的流量详情
基于SDN的DDoS攻击检测与防御(25)
     
      然后切换到mininet 控制台窗口,使用如下指令,打开 Host1,和Host2的终端:
基于SDN的DDoS攻击检测与防御(25)
      
      然后在 Host1 上启动一个 http 服务
基于SDN的DDoS攻击检测与防御(25)
    
      在 Host2 上 ping Host1
基于SDN的DDoS攻击检测与防御(25)    
      然后去观察流量
基于SDN的DDoS攻击检测与防御(25)
    
      可以看到,流量很正常,在 Host2 终端中可以按 Ctrl+c,停止ping。可以试试访问一下 Host1的HTTP服务。
基于SDN的DDoS攻击检测与防御(25)     
      接下来,我们进行DDoS 模拟攻击,在 mininet 终端中执行,h2 ping -f h1 ,-f 参数的意思就是  Ping Flood ,模拟 Flood Attack。
基于SDN的DDoS攻击检测与防御(25)     
      再去观察交换机流量
基于SDN的DDoS攻击检测与防御(25)
    
      流量随之飙升,我们可以在系统终端中执行,top 命令,查看 cpu占用
基于SDN的DDoS攻击检测与防御(25)     
      回到 mininet 终端,按 Ctrl+C 终止Ping Flood ,然后再观察流量
基于SDN的DDoS攻击检测与防御(25)     
      发现流量马上就下降了。

实验步骤三
DDoS 攻击防御


      我们首先在mininet 终端执行 h2 ping -f h1 模拟 Ping Flood Attack。会发现流量马上又上来了。
基于SDN的DDoS攻击检测与防御(25)
     
      接下来,我们通过Floodlight控制器向OpenFlow交换机下发流表,抑制攻击流量。在此之前,我们先了解一些概念。

1)什么是流表:

      流表是交换机进行转发策略控制的核心数据结构。交换机芯片通过查找流表项来决策进入交换机网络的数据包执行适当的处理动作。可以理解为交换机收到数据包之后该做什么的一系列规则。

2)下发流表:

      下发一条流表好比一条指令,告诉交换机收到数据包之后该做什么。

3)OpenFlow流表项结构简介

      OpenFlow每个流表项由三个部分组成:用于数据包匹配的包头域(Header Fields),用于统计匹配数据包个数的计数器(Counters),用于对匹配的数据包如何处理的动作(Actions)

      包头域:OpenFlow流表的包头域(OpenFlow v1.1之后被称作匹配域),用于对交换机接收到的数据包的包头内容进行匹配。在OpenFlow v1.0中,流表的包头域中包括了12个元组(Tuple):
基于SDN的DDoS攻击检测与防御(25)
     
     (图片来源:Juniper Networks)

      对应的中文解释:
基于SDN的DDoS攻击检测与防御(25)
     
      关于OpenFLow 流表的详细情况,大家可以自行查找相关资料。

      打开一个系统终端,输入如下指令,调用Floodlight 的API 查询现有流表
基于SDN的DDoS攻击检测与防御(25)
    
      返回为空:
基于SDN的DDoS攻击检测与防御(25)     
      提示:API文档请参考:Static Flow Pusher API pre-v1.0 -Floodlight Controller - Project Floodlight https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/1343498/Static+Flow+Pusher+API+pre-v1.0?showComments=true&showCommentArea=true
      Static Entry Pusher API - FloodlightController - Project Floodlight 
https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/1343518/Static+Entry+Pusher+API
    基于SDN的DDoS攻击检测与防御(25)
      然后我们添加一条静态流表,为了方便操作和查看,新建一个 ddos.json 的文件,将流表内容写入到这个文件,然后通过 API 进行提交,文件内容如下:
基于SDN的DDoS攻击检测与防御(25)     
      ddos.json字段解释:

      switch:交换机dpid(如果你不知道,可以在控制器的WebUI界面查看)
基于SDN的DDoS攻击检测与防御(25)     
      name:随意取一个名字即可

      cookie:流表规则标识

      in_port:入端口

      priority:优先级

      active:是否激活

      actions:动作

      注意:不同版本的Floodlight API 在字段上可能不同。以下是 1.0 版本的API 
基于SDN的DDoS攻击检测与防御(25)   基于SDN的DDoS攻击检测与防御(25)   
    
      执行下列指令,下发流表Drop数据包:

      curl -X POST -d @ddos.json  http://localhost:8080/wm/staticflowentrypusher/json
基于SDN的DDoS攻击检测与防御(25)     
      返回“Entry pushed”,表示流表下发成功,再次查询流表:
基于SDN的DDoS攻击检测与防御(25)     
      切换到 sFlow 这边查看流量:
基于SDN的DDoS攻击检测与防御(25)     
      发现流表下发之后,流量迅速下降,h1向h2泛洪的数据包迅速的被完全Drop掉了。

      切换到 h2 的终端,访问 h1的web服务
基于SDN的DDoS攻击检测与防御(25)    
      同样无法访问了。这是因为我们下发的流表是把所有的数据包都Drop掉了。这并不是我们想要的效果,等下我们再来解决这个问题。

       执行以下指令删除刚刚下发的流表:

      curl -X DELETE -d'{"name":"flow-mod-dropt"}' \

      http://localhost:8080/wm/staticflowentrypusher/json
基于SDN的DDoS攻击检测与防御(25)     
      再次观察流量:
基于SDN的DDoS攻击检测与防御(25)     
      攻击的数据包流表又恢复了。

      改造需要下发的流表,让OpenFlowSwitch 只Drop掉 ICMP的流量,不影响正常的HTTP服务。修改内容如下:
基于SDN的DDoS攻击检测与防御(25)     
      添加了两个字段,eth_type: 指定以太网类型为ipv4,ip_proto:指定协议类型为ICMP。

      再次下发流表:
基于SDN的DDoS攻击检测与防御(25)     
      此时再观察流量和访问 h1 的HTTP服务
基于SDN的DDoS攻击检测与防御(25)     
      可以发现,流量下降到正常,但HTTP服务依然可以访问,没有受到影响。文章来源地址https://www.toymoban.com/news/detail-485017.html

到了这里,关于基于SDN的DDoS攻击检测与防御(25)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx防御DDOS攻击

    防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈。DDOS的特点是分布式,针对带宽和服务攻击,也就 是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。对于七层的应用攻击,我们还是可以做一些配置

    2024年02月04日
    浏览(44)
  • 【DDoS攻击检测】基于改进的非洲秃鹫优化算法和一种新的DDoS攻击检测传递函数的特征选择方法(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 ​ 🎉3 参考文献 🌈4 Matlab代码实现 物联

    2024年02月13日
    浏览(12)
  • DDOS攻击防御实战(威胁情报)

    `不知道大家最近有没有关注到,百度云CDN不支持免费了,网站安全问题越来越严重了……         Distributed Denial of Service 分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,分布式拒绝服务攻击已经出现了很多次,导致很多的大

    2024年02月09日
    浏览(30)
  • 利用Floodlight进行DDOS攻击防御实验笔记

            Floodlight是Apache授权并基于JAVA开发的企业级OpenFlow控制器,当前最新版本是1.2。         Floodlight OpenFlow Controller -ProjectFloodlight:http://www.projectfloodlight.org/floodlight/         把同一时间,经过同一网络中具有某种共同特征或属性的数据抽象为一个流。比如,一般

    2024年02月07日
    浏览(19)
  • DDoS攻击:网络安全的威胁与防御

    随着互联网的普及和信息技术的发展,网络安全威胁也日益增多。其中,DDoS攻击作为一种常见而具有破坏性的网络攻击方式,对个人、企业乃至整个网络生态系统带来了严重的威胁。本文将介绍DDoS攻击的概念、危害以及其重要性,并旨在提供有效的防御措施以保护网络安全

    2024年02月08日
    浏览(24)
  • 魔兽世界服务器被攻击怎么办?DDoS攻击防御方法

    魔兽世界服务器被攻击在目前来说也是比较常见的,同行竞争激烈,在官服开放时也遇到过DDOS攻击,要是飞飞没记错是在22年9月14日,从刚开始的身份验证服务器出现问题,到确定是DDOS攻击导致,再到DDOS攻击结束,差不多3个小时时间。 DDOS攻击是一种较常见的网络攻击技术

    2024年02月15日
    浏览(23)
  • 浅谈DDoS攻击 1 - 多IP防御的新思路

    随着物联网的发展, DDoS 攻击变得越来越普遍. 站长们或多或少都听说过或实际被 DDoS 攻击过. 本文通过我这几年应对 DDoS 的经验, 来给大家描述一个开销比较小的 DDoS 防御思路, 希望能够抛砖引玉. 常见的 DDoS 攻击从流量真实性 (流量是否真正作用到了业务上) 上来讲, 显而易见

    2024年01月21日
    浏览(15)
  • cloudflare防CC、DDOs攻击保姆级教程,附带防御规则

    安全级别设置为:高 咨询通过期设置为: 15到30分钟 浏览器完整性检查设置为:打开 1、点右边箭头中的 部署DDos  2、按照下面的图片配置 替代名称:ddos 规则集操作:阻止 规则敏感度:高  3、配置完记得点右下角的保存 把自动程序攻击模式:开启 1、先创建规则   2、按下

    2024年02月06日
    浏览(45)
  • 基于深度学习的人工智能安全:威胁检测、攻击防御和安全评估

    作者:禅与计算机程序设计艺术 随着人工智能技术的不断发展,给社会带来的影响越来越大。越来越多的企业和个人都依赖于AI产品或服务,同时也面临着各种各样的安全风险,比如身份验证缺失、数据泄露、恶意软件等。如何保障AI产品及服务的安全,成为当前和未来的重

    2024年02月13日
    浏览(21)
  • DDoS检测防御实现方案

    流量采集模式 通过分光器将流量直接镜像到攻击检测器,收包采用DPDK库。 当前整机流量、源IP信息、连接数 、连接内容(五元组等)的信息汇聚 当发生告警时采样原始数据包, 采用固定采样算法 基于检测对象的TCP syn ack psh ack established的个数、流量信息汇聚 基于检测对象的

    2024年02月07日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包