Post

云网络安全

SDN蛮重要的咧,OpenFlow也常碰到,那就都看一看......

云网络安全

SDN(软件定义网络)

出现背景

传统网络架构存在弊端,在不改变架构的前提下,难以通过补丁解决

  • 灵活性和可编程性
    • 传统网络架构的控制平面和数据平面紧密耦合,网络设备的功能和行为通常是固定的,难以动态调整。
  • 复杂性管理
    • 传统网络的配置和管理通常是手动的,需要熟练的网络工程师进行配置和调整。
    • 网络设备的管理界面和命令行接口通常是不统一的。

新型网络架构设计原则

  • 网络都可根据需求配置
  • 可以实时获取每一个网络设备的状态
  • 控制平面可对数据平面直接控制
  • 满足传统架构的需求

定义

摘自维基百科 https://en.wikipedia.org/wiki/Software-defined_networking

  • 利用OpenFlow协议将路由器的控制平面(control plane)从数据平面(data plane)中分离,改以软件方式实现,从而使得将分散在各个网络设备上的控制平面进行集中化管理成为可能。
  • 该架构可使网络管理员在不更动硬件设备的前提下,以中央控制方式用程序重新规划网络,为控制网络流量提供了新方案,也为核心网络和应用创新提供了良好平台。

NFV(网络功能虚拟化)

把网络功能抽象,使其可以在通用硬件上运行

出现背景

运营商有大量专用的硬件设备负责不同业务,开通新业务时难以利用已有设备,需要采购新设备

定义

  • 利用虚拟化技术,将网络节点阶层的功能,分割成几个功能区块,分别以软件方式实作,不再拘限于硬件架构。
  • 旨在将传统的网络设备(如路由器、防火墙、负载均衡器等)的功能虚拟化为软件实现,从而在通用硬件上运行

OpenFlow

起源于斯坦福大学的Clean Slate项目

能够控制网络交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。

控制器和交换机之间通过OpenFlow消息进行通信

  • 消息包括控制器发送给交换机的指令(如添加流表项、修改流表项、删除流表项等),以及交换机向控制器报告的状态信息(如数据包到达、流表溢出等)

流表(Flow Table)

交换机或路由器内的一个或多个表,用于存储流量转发规则。

  • 每条流表项包含匹配字段、计数器和指令
  • 当网络设备接收到数据包时,会根据流表项决定如何处理数据包

流表空间有限,通常只能存储8000条左右的处理规则

控制器(Controller)

负责集中管理和控制网络设备的逻辑实体。

  • 控制器可以通过OpenFlow协议向交换机或路由器下发流表项,定义数据包的转发行为。

OpenFlow通道(OpenFlow Channel)

用于控制器和网络设备之间通信的安全通道。通过这个通道,控制器可以向设备下发流表项,查询设备状态,或者接收设备发送的事件通知

SDN数据层安全

规则的有效性

攻击

协议漏洞

  • 基于TCP
    • 传统的TCP协议的安全问题都将威胁到OpenFlow通道的安全
  • 控制器、交换机缺乏SSL、TLS机制

流表溢出攻击

  • 由于流表空间有限,攻击者可以不断地伪造新的网络流,诱使控制器不断地在交换机中安装新的流处理规则
  • 当交换机中的流表空间被耗尽时,就没有空间来安装正常的新流处理规则,从而造成交换机性能的下降,甚至交换机的瘫痪

现有的僵尸网络规模能够以极高的速率产生恶意的新流,目前的异常流量识别技术却十分耗时且正确率无法保障

交换机身份伪造

  • 控制器向交换机获取数据通道ID,该ID唯一标志了控制器和该交换机之间的连接,也就间接定义了交换机的身份
  • 由于数据ID的定义规律是固定的,攻击者容易伪造身份

防护

  1. 升级OpenFlow版本
    • 1.0版本后都可以开启TLS,要求控制器和交换机间通过TLS进行通信,避免明文传输
  2. 使用AuthFlow
    • 利用L2协议实现了授权,以及将身份和网络流绑定
  3. Peer-Support
    • 充分整合全网空闲流表资源来缓解攻击
  4. HostWatcher
    • 通过编程实现网络策略,以解决TCP中的问题

SDN控制层安全

攻击

协议安全

针对该协议的数据层攻击也可以运用在控制层上,控制层也会受到拒绝服务攻击

  • 向数据层发送大量随机网络分组,使得数据层向控制层发送大量请求,造成控制器的拒绝服务攻击

非法接入控制器

窃取SDN网络管理员的账号密码,伪造合法身份登录SDN控制器并进行非法操作

控制接口安全

SDN识别

当数据层处理已知流和随机流时,由于处理随机流时,数据层需要询问控制层,会花费更长的时间

  • 随机生成若干报文在数据层发送,接收两次,由于第一次数据层会向控制层发送请求,是得T1>T2

SDN应用层安全

This post is licensed under CC BY 4.0 by the author.