• 工作总结
  • 工作计划
  • 心得体会
  • 领导讲话
  • 发言稿
  • 演讲稿
  • 述职报告
  • 入党申请
  • 党建材料
  • 党课下载
  • 脱贫攻坚
  • 对照材料
  • 主题教育
  • 事迹材料
  • 谈话记录
  • 扫黑除恶
  • 实施方案
  • 自查整改
  • 调查报告
  • 公文范文
  • 思想汇报
  • 当前位置: 雅意学习网 > 文档大全 > 公文范文 > 正文

    软件定义网络环境下DoS,攻防实验设计

    时间:2023-06-14 16:00:13 来源:雅意学习网 本文已影响 雅意学习网手机站

    陈 镭,杨章静,黄 璞

    (1. 南京审计大学 信息工程学院,江苏 南京 211815;
    2. 南京大学 计算机软件新技术国家重点实验室,江苏 南京 210232)

    软件定义网络(software defined networking,SDN)作为一种新型的网络架构[1-2],把网络控制平面与数据平面进行分离。其中控制平面拥有网络全局视图,集中管控网络资源,数据平面只转发数据,大大简化了网络的配置和管理。SDN 这一颠覆性的理念被认为将对未来网络产生革命性的影响,在很大程度上代表了未来网络的发展方向,因此将SDN 引入计算机网络教学是必然趋势。计算机网络课程教学,十分注重实践教学,通过各种不同的组网实验,让学生理解和掌握计算机网络的基本原理。

    目前大多高校SDN 教学实验中普遍存在实体硬件设备不足及实验场地的限制,很难大规模开展SDN实体设备教学实验。学生在SDN 的学习上操作受限,难以深入理解SDN 实验教学的原理和内涵。虚拟仿真实验具有成本低、效率高、功能全、灵活等优点,是高等教育信息化建设和实验教学的重要手段,在SDN教学实验中可以发挥重要的作用[3-6]。

    本文详细介绍了SDN 的背景知识;
    对比展示了SDN环境下几种不同的DoS攻击场景[7],包括控制平面、数据平面及网络主机遭受洪范式或隐藏式拒绝服务(denial of service,DoS)攻击的不同特点;
    采用轻量级网络仿真平台Mininet 搭建SDN 网络,使用Floodlight控制器软件和sFlow 流量监控软件,设计并实现了SDN环境下的洪范式和隐藏式DoS 攻击和防御仿真实验[8]。

    1.1 SDN 三层架构

    开放式网络基金会(ONF)提出的OpenFlow 协议,初步实现了SDN 的核心思想,如图1 所示,SDN架构从底向上分别是基础设施层、控制层和应用层。

    基础设施层由支持OpenFlow 协议的交换机组成,负责数据包的匹配和转发。控制层获取底层交换机的信息,实时维护网络拓扑和状态,并为应用层提供服务接口。应用层包含各种业务和应用,通过控制层提供的接口调用、编排网络资源。底层网络设备只负责数据转发,控制层集中掌控网络资源,通过应用程序就可以完成SDN 全局网络的管理。这种架构大大降低了网络的复杂度和搭建成本,加速了网络部署周期,提高了网络管理的灵活性。

    图1 SDN 三层架构图

    1.2 OpenFl ow 流表

    流表是交换机数据转发功能的核心。OpenFlow1.0协议中规定每个流表项由3 部分组成:包头域、计数器和动作。

    包头域用于数据包的包头内容进行匹配,共有12个匹配项,如表1 所示。包含了传统网络2 层到4 层的寻址信息(Mac、IP、端口)。OpenFlow 交换机可以看成是一种广义的转发设备,同时具备了传统网络交换机、路由器、防火墙的功能。

    计数器用于统计匹配到的数据包信息,可以对交换机中的每个数据流、端口、队列、流表分别统计。

    动作是指对匹配到的数据包的后续处理方式。OpenFlow 交换机如果没有定义动作,默认情况下数据包被丢弃。常见的动作有:转发、丢弃、排队等。

    表1 流表包头域

    1.3 SDN 工作流程

    当主机h1 与主机h2 进行通信时,如图2 所示,大致包含以下步骤[9]:

    步骤1 主机h1 向交换机s1 发送到主机h2 的数据包;
    交换机s1 查询流表,若s1 的流表中有匹配项,则转到步骤4。

    步骤2 s1 流表中无匹配项,则s1 通过Packet-In消息将数据包转发给控制器。

    步骤3 控制器收到s1 的请求信息后,生成相应的应答策略,并通过Packet-Out 消息下发至s1。

    步骤4 s1 执行流表中的应答策略,将数据包转发至交换机s2。当交换机s2 收到数据包以后,若s2 的流表中有匹配项,则转到步骤7;
    若s2 的流表中无匹配项,则转到步骤5。

    步骤5 与步骤2 相似,s2 流表中无匹配项,则s2 通过Packet-In 消息将数据包转发给控制器。

    步骤6 与步骤3 相似,控制器收到s2 的请求信息后,生成相应的应答策略,并通过Packet-Out 消息下发至s2。

    步骤7 s2 执行流表中的应答策略,将数据包转发至主机h2。

    图2 基于OpenFlow 的SDN 工作流程

    DoS 攻击通过在短时间内向目标网络或主机发送大量的数据包,占满带宽和服务资源。当正常用户进行网络通信时,就会出现请求异常或服务出错。DoS攻击简单有效,对正常的网络通信造成严重影响,是网络安全领域关注的重点。

    2.1 对控制器的DoS 攻击

    (1)控制器洪范式攻击[10]。当一个数据包没有匹配到任何流表项时,若交换机缓存未满,交换机将缓存报文内容,并将报文头封装在Packet-In 消息中转发给控制器;
    一旦交换机缓存满了,交换机会直接将整个报文都封装在Packet-In 消息中转发给控制器,这种方式会大大加重控制器的负担。此外,控制器有一个路径计算模块,当大量伪造的数据包到来时,控制器无法计算出完整的路径信息,会占用控制器大量计算资源,导致控制器无法提供正常服务。

    (2)控制器隐藏式攻击[11]。控制器的拓扑发现机制会受到一种隐藏式DoS 攻击影响。控制器周期性地向所有交换机下发封装有LLDP(链路层发现协议)帧的Packet-Out 消息。攻击者在探测LLDP 帧周期的基础上,对交换机之间链路发起DoS 攻击,造成LLDP帧连续丢失,使得控制器误以为该链路断开,无法准确获取网络拓扑信息。

    2.2 对交换机的DoS 攻击

    (1)交换机洪范式攻击[12]。OpenFlow 交换机流表的存储能力通常有限,攻击者针对交换机发起洪范式DoS 攻击,短时间内产生大量的虚假流请求,出现大量的无用流表项,这些规则将填满交换机流表,从而导致合法流量被丢弃。

    (2)交换机隐藏式攻击[13]。SDN 将数据层的控制能力完全抽离,数据层完全失去了主动监管网络流量的可能性,因此,数据层隐藏式DoS 攻击变得可行。数据层隐藏式DoS 攻击通过在流表中产生长期存在的流表规则,从而达到占用流表的攻击目的。

    2.3 对网络主机的DoS 攻击

    当攻击者的目标是网络主机时,会操纵僵尸网络向目标主机发送大量并发攻击流,从控制器和交换机的角度看,这些流量是正常流量,因为都是合法主机发送的合法数据流,但这些流量最终在目标主机处聚合,形成总量很大的异常流量[14],导致目标主机工作瘫痪。

    2.4 无法判断的攻击

    当网络流量压力比较大,而又无法确认当前流量是否为攻击流时,可以采用通过流表项将大量的流量转发到网络中的监控设备(例如防火墙),以此转移交换机的压力,也可以设置IP 地址的黑白名单,实现对数据流的辅助处理(见表2)。

    表2 SDN 环境下DoS 攻击特点及应对方法

    3.1 软硬件环境

    硬件环境:Intel(R) Core(TM) i5-8500U CPU @3.00 GHz 处理器,8 GB DDR4 内存,240 GB SSD 硬盘。

    软件环境:Ubuntu14.04 64 位操作系统,JDK1.7,Mininet 2.2.1,Open vSwith2.0.2,OpenFlow1.0 协议,Floodlight 0.9 版本控制器,sFlow-rt 2.0。

    3.2 构建网络拓扑

    Mininet 是一套扩展性很强的网络仿真实验平台,除了可以用于SDN 网络实验,还可以用于传统网络实验。Mininet 能够在一台单独的计算机上虚拟出网络主机、网络链路和交换设备等,组成一个完整的虚拟网络。Floodlight 控制器是一个模块化、高可用、支持OpenFlow 协议的控制器。sFlow 是一款实时监测网络流量的监控软件。sFlow 有Agent 和Collector 两个模块,Agent 内嵌于网络转发设备(如交换机、路由器),获取设备接口的统计信息,将信息封装成报文发送给Collector,Collector 对报文分析、汇总、生成流量报告。

    (1)启动Floodligh 控制器。

    进入 floodlight 目录,输入命令 java -jar target/floodlight.jar

    (2)创建网络拓扑,连接控制器。

    mn --controller=remote,ip=192.168.1.1,port=6633 --topo single,3 --switch ovsk,protocols=OpenFlow10

    (3)浏览器访问Floodlight。

    打开Floodlight 控制器的管理地址:http://localhost:8080/ui/index.html。从图形界面可看到,Mininet 成功连接到Floodlight,并可以看到Mininet 生成的网络拓扑。

    (4)配置sFlow Agent。

    先要在虚拟交换机端口处配置 Agent,这样Collector 才能对收集到的流量信息进行分析和呈现。切换到交换机s1 窗口,开启OvS 的sFlow 功能,配置Agent 的命令如下:

    ovs-vsctl -- --id=@sflow create sflow agent=eth0 target="192.168.1.1:6343" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow

    参数说明:agent,监控 eth0 网卡产生的流量;
    target,sFlow-rt 的ip,默认端口6343;
    bridge,需要开启sFlow 的网桥;
    sampling,采样率,表示每隔多少个Packet 取样一次;
    polling,轮询时间,每隔多少秒轮询一次。

    (5)配置sFlow-rt Collector。

    保持Mininet 运行的终端,再打开一个新的终端窗口,进入sFlow-rt 安装目录,输入./start.sh 命令,启动 sFlow-rt。sFlow Collector 的默认监听端口为6343,通过浏览器输入http://localhost:8008 打开监控页面。Agent 配置成功后,可以通过对其WebUI 中的Agents选项卡中192.168.1.1条目的网络流量进行查看。

    最终本文实验网络拓扑如图3 所示。网络中一共有1 台虚拟交换机s1,s1 上连接3 台客户机,分别为h1、h2、h3,为了方便测试网络连通性,在Mininet平台中对网络执行指令pingall,可测试出主机间能够相互通信。同时,s1 的其他端口分别连接Floodlight控制器和sFlow Collector 端。

    图3 SDN 环境下DoS 攻防实验网络拓扑图

    3.3 洪范式DoS 攻防实验

    (1)模拟发起洪范式DoS 攻击。

    在Mininet 终端中执行,h1 ping -f h2,-f 参数的意思是Ping Flood,模拟Flood Attack。可以看到,监测流量迅速飙升,如图4 中第1 阶段所示。在系统终端执行top 命令,查看到CPU 占用率也会突然增高。

    图4 洪范式DoS 攻防实验效果图

    (2)控制器向SDN 交换机增加流表规则。

    通过Floodlight 控制器提供的RESTful 接口向交换机s1 下发流表,丢弃攻击流量。在Floodlight 控制器中增加流表的命令如下:

    curl -d "{"switch": "00:00:00:00:00:00:00:01","name":"flow-drop","cookie":"0","priority":"32768",in_port":"1","active":"true","eth_type":"0x0800","ip_proto":"0x01","idle_timeout":"0","actions":"output=no-forwar d"}" http://192.168.1.1:8080/wm/staticflowpusher/json

    参数说明:name,给流表命名;
    cookie,流表规则标识;
    priority,优先级;
    in_port,入端口;
    active,是否激活;
    eth_type,以太网类型;
    ip_proto,协议类型;
    idle_timeout,存活时间;
    actions,动作。

    上述流表下发到s1 以后,监测流量迅速下降,如图4 中第2 阶段所示。所有经过交换机1 号端口的ICMP 流量都不会被转发出去,其他类型的流量(如HTTP)则可以正常转发,即h1 向h2 发送的Flood Attack 数据包迅速地被完全Drop 掉了,成功实现了对洪范式DoS 攻击的防御。

    (3)删除SDN 交换机中流表规则。

    为证明确实是因为添加了"flow-drop"流表项,阻断了Dos 攻击流量,最后通过Floodlight 控制器提供的RESTful 接口向交换机s1 下发删除流表命令:

    curl -X DELETE -d "{"name":"flow-drop"}"http://192.168.1.1:8080/wm/staticflowpusher/json

    上述流表下发到s1 以后,监测到流量又迅速飙升,如图4 中第3 阶段所示,从而可以证明SDN 交换机中的流表项拥有管控流量的能力。

    3.4 隐藏式DoS 攻防实验

    默认的流表规则采用空闲超时机制,即在规定时间内,如果没有数据包匹配,则该流表规则超时被删除;
    如果有数据包匹配,则重新更新存活时间,该机制使得一种数据层隐藏式DoS 攻击变得可行,从而达到长期占用流表的目的。

    一条流表规则的基本字段主要有:cookie,流表规则标识;
    priority,优先级,范围为0-65535,值越大,优先级越高;
    match,匹配规则;
    action,动作;
    packets,流表已匹配包数;
    bytes,流表已匹配字节数;
    age,流表已存在时间;
    timeout,存活时间,没有数据包匹配,流表会在到达给定时间后被自动删除。

    (1)模拟隐藏式DoS 攻击。

    因timeout 时间默认设置为5 s,所以在Mininet终端中执行指令,h1 ping –i 4 h2,-i 参数模拟每隔4 s从h1 主机(1 号端口)向h2 主机(2 号端口)发送ping 指令数据包。

    (2)周期性查询流表规则。

    周期性的通过Floodlight 控制器的UI 界面查询交换机s1 中的流表规则如图5 所示。从图5 中可看出,在timeout 为5 s 的情况下,当一条流表规则age 时间很长,而且匹配的packets 相对不多的情况下,很有可能是针对SDN 交换机的隐藏式DoS 攻击造成的。

    图5 OpenFlow1.0 交换机中端口和流表项

    (3)删除长期存在的流表规则。

    对被怀疑为隐藏式DoS 攻击的流表规则,通过Floodlight 控制器提供的RESTful 接口向交换机s1 下发删除流表命令进行删除:curl -X DELETE -d"{"cookie":"90071992524740992"}" http://192.168.1.1:8080/wm/staticflowpusher/json。

    SDN 可以对网络流量进行实时监控、提取、分析,及时调整流量。本文采用网络仿真平台Mininet 搭建SDN 网络,使学生在SDN 的学习中不受硬件条件的限制,降低了学习门槛,提高了学生实践的灵活性。结合使用Floodlight 控制器软件和sFlow 流量监控软件,展示了拓扑创建、主机间联通测试、流表下发、流量监测等过程,最后以SDN 环境下的洪范式和隐藏式DoS 攻防案例进行实验教学,使学生能够深入理解SDN 网络的机理和内涵。

    猜你喜欢 流表隐藏式交换机 基于匹配动作表模型的可编程数据平面流表归并计算机与现代化(2022年7期)2022-07-29隐藏式字幕助听障观众轻松看电影环球时报(2022-05-17)2022-05-17基于时序与集合的SDN流表更新策略河北大学学报(自然科学版)(2020年4期)2020-09-02一种新型老年代步车的设计与研究科学与信息化(2020年12期)2020-07-10浅析镶嵌式触摸感应蒸汽淋浴房佛山陶瓷(2019年7期)2019-09-24更换汇聚交换机遇到的问题网络安全和信息化(2019年7期)2019-07-10轿车隐藏式车门把手试验台的设计与开发科教导刊·电子版(2019年2期)2019-04-08基于地铁交换机电源设计思考电子制作(2019年24期)2019-02-23软件定义网络中一种两步式多级流表构建算法西安电子科技大学学报(2018年5期)2018-10-11一种高效的OpenFlow流表拆分压缩算法小型微型计算机系统(2018年2期)2018-03-27

    推荐访问:攻防 定义 实验

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章