专栏首页SDNLAB基于OpenFlow架构的IaaS云安全

基于OpenFlow架构的IaaS云安全

编者按:云计算技术的服务型基础设施即服务(IaaS),以其可扩展性、高效性及弹性等特点正在成为资源利用的主导方式。在从云计算的IaaS应用获得便捷的同时,安全漏洞和隐患也需要被关注。在这项工作中,我们提出建议架构,并已形成论文《An OpenFlow-based Architecture for IaaS Security》,以解决云计算的安全问题以及展示我们实验活动的第一批成果。

简介

IaaS的服务模式允许在不关注底层物理基础设施的情况下,配置和运行异构应用程序。云计算技术创建出一个可以重现真实操作环境的虚拟化试验床,包含以下优势:

  • 一个在内部重现真实世界场景进行测试活动的机会;
  • 自动处理整个平台的备份和故障恢复的可行性;
  • 自动配置和管理试验平台的组件和版本化;

基于学术研究分析,云计算的安全问题涉及很多不同的领域。认证、授权和计费的处理方式也将受到很大的影响:安全威胁往往起源于内部用户,所以往往按照明确的全局策略,只允许有认证的用户才能访问指定资源。与平台资源相关的用户行为应该被监管以便进一步分析处理违反策略的行为。另一个重要的工作就是管理安全策略,来保证整个云数据存储的可用性、完整性和保密性。在这种情况下,先进的加密方案可以用来保证只有指定的认证用户才能在云数据存储中访问、修改和删除信息。

虚拟化技术是IaaS模型的核心,它正迅速的改变网络安全的需求。传统的安全手段,如内部安全设备和访问控制名单在处理虚拟服务器和资源时,由于要应变拓扑的快速变化而需要更新,这是不可持续的,只有经过授权的主机和设备才能够在虚拟网络里通信,而恶意访问则会以某种方式被限制。虚拟层也带来了新的安全挑战,因为虚拟客户端很容易被入侵并且损坏其他虚拟机。所以其中一个可能的补救措施就是检查虚拟机的行为,同时,检查虚拟机的镜像来核实他们的完整性。

为了有效处理云安全事件, 我们提出基于OpenFlow架构的识别攻击模式,并且实现缓解、恢复策略以对安全事件做出反应,这种结构的设计已经在IaaS云平台OpenNebula中部署实施 ,它代表了一个真实的区域管制中心(ACC)。在试验平台运行的应用程序强调了安全解决方案自动处理灾难和攻击的恢复需求。这里提出为了设计结构进行的初次实验活动:

  • 不同的开源OpenFlow控制器之间的性能对比;
  • 在供应时间度量的基础上三种不同的开放源码的IaaS平台的特征;
  • 为了提供L2 VLAN封装/解封装,在所选择的控制器上执行新功能。

OpenFlow和SDN模式

基于软件定义网络(SDN)实现虚拟化实验平台网络处理和配置的方式,是一种对网络新的认知方式。与网络设备相关的数据平面及集中外部逻辑的控制平面与传统网络设备有明显不同。采用SDN收获的最大益处是对应用层的完全隔离和全局视图。第一种情况下研究人员可以在控制层之上创建自己的应用,与网络设备完全隔离开来。因此可以写入新的协议或应用程序,而不会影响设备的内部结构。第二个优点涉及网络本身的全局视图可用性,所以很容易对事件作出反应,并且改变拓扑。OpenFlow是这种途径的一个实现方式,包含了控制层和数据层之间的接口,定义了所有通过建立在网络交换机和外部控制器之间的安全通道信息,从而按照信息流来决定逻辑顺序。如今SDN对云计算网络服务十分有吸引力,因为它代表了一种灵活的动态创建虚拟网络的方式,并且保证多租户的二层隔离。另外,从之前的分析和实验得到的结果中可以确认OpenFlow可以使网络得到极大地灵活性,确保动态安全策略的实施,而不需要改变网络组件的内部结构。这就是为什么OpenFlow被认为是一种面对漏洞的有效算手段,即使是在一个像云计算IaaS这样的动态环境下也能在面临安全问题时自动执行减灾和恢复的策略。

合适架构

架构主要从三个不同的层来分析,云层展示了两个数据中心,位置上通过一个私有企业的骨干网连接,为了进一步提高数据中心的安全等级,可以利用一个基于MPLS(多协议标签交换协议)的拆分机制,把数据包分割成几部分,并重定向到分离路径,这样截获的恶意用户就不能重新构建消息了。每个数据中心都有自己的IaaS集群并有一个主节点用于负责管理所有基础设施。在虚拟化层,视图是独立于一个部署在数据中心的特定平台,关于组织架构,每一个物理机,即“计算”节点,创建一个虚拟交换机挂载所有的客户机网络接口。在虚拟交换层,使用OpenvSwitch技术,提供了一个套功能,其中的OpenFlow协议可以实现。交换机的流表通过OpenFlow的控制器编程:当由虚拟客户机所产生的数据包到达的交换机,并且没有匹配可用的规则,它被发送到控制器,它可以决定在交换机下发新的规则以转发或丢弃方式处理数据包。所有虚拟机产生的流量都会被控制,并且会根据一些有名的恶意攻击模式进行检查,以找出可能存在的攻击。当检测到异常网络活动时,由Snort产生警报并通过TLS(传输层安全)插件到达报警关联器,从而执行以下操作:

  • 事件存储
  • 对需要确定攻击的严重性级别信息提取后进行通知
  • 在上述严重级别的基础上识别缓解策略实施。

策略将由与IaaS的管理器和OpenFlow控制器交互触发。当一个虚拟试验平台遭到攻击被检测出来后,我们打算实施的策略主要是把被攻击的VM迁移到相同基础设施但不同的数据中心里,迁移完成后,关联器可以指示控制器改变客户之前托管的物理节点中虚拟交换机的信息流,以保证位置的透明度。

图1 整体架构

实验活动

展开的第一个实验工作,目标是从几个OpenFlow控制器中选择一个开源的解决方法。OFlops(OpenFlow Operations Per Second)完成了对控制器性能的比较,它是由两个软件包构成的。

  • OFlops,一个允许基准交换机许多功能的特定控制器;
  • Cbench(Controller benchmarker),通过模拟交换机的连接为控制器产生数据包传入;

这样可以计算出数据包传入率的最大值,数据包到达和传入的延迟以及处理延迟。

表1 Flow-mod每秒的消息数

上图显示出Flow-mod每秒的消息数,通过这个消息,控制器能够安装、修改或删除交换机列表的流规则。在比较中,也将考虑其他参数,如扩展性和易修改性, RESTful APIs的可用性和项目开发背后的支持。我们的选择落在Floodlight,这是一个在Apache许可证下发布的基于java事件的控制器,由一个开放社区开发。

为了提供L2隔离功能,使用VLAN技术在虚拟机之间通信,修改Floodlight的“转发”模块,使用OpenFlow技术以实现VLAN标签的封装/解封装。VLAN标签只能被云平台本身直接检索,可以识别到属于虚拟网络的虚拟机带有特别的VLAN标签。其他的修改则配合控制器与OpenvSwitch之间通道的保护措施。后一种本身支持SSL信号交换,所以我们用私钥或者公钥(由JAVA密钥工具生成)处理实现Floodlight连接模块中的通信安全。

作为本次实验最后一步,我们评估了三个不同的IaaS平台的“置备时间”:这个度量指的是从产生新的虚拟机(通过API)的请求开始直到平台获得“ready”的状态中间的这段时间。我们认为这会产生16种组合,他们由4个参数组合出来,分别是:

  • 服务提供:新的虚拟机的需求偏好,即虚拟CPU的数量和RAM的大小;
  • 数据存储(二进制):虚拟机的二级磁盘存储;
  • 物理节点压力:已经承载在节点上的虚拟机的数量(0-5);
  • 自动调度(二进制):负责挑选新虚拟机分配承载位置的设施。

表2 配置时间表

我们计算出创建10个请求不同但结构相同的虚拟机的算术平均值,以下是与我们观点相关的特定组合:(1)一个中间服务器请求(1个虚拟CPU,2GB RAM)(2)数据存储请求(3)物理节点上已承载的5个虚拟机(4)调度模块激活。

总结

在这次工作中我们先讨论了云计算环境的安全问题的挑战相关的背景。然后通过描述我们所需的所有架构组件,提出了一个基于SDN的保证网络安全和在攻击时的反应选择途径。未来我们的工作目标是使用更复杂的入侵检测机制,以便能够检测未知的和不寻常的流量模式。此外,我们打算通过进行云计算的IaaS平台之间更准确的比较来扩大实验活动,主要是基于其他一些参数,如:弹性、敏捷度、网络压力和CPU/存储器的使用率。

本文分享自微信公众号 - SDNLAB(SDNLAB),作者:SDNLAB君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何提高SDN可拓展性

    Software Defined Networking是一种控制平面和数据平面分离的可编程的网络架构,目前已经有许多商业落地案例。在部署SDN时,往往会因SDN...

    SDNLAB
  • 菜鸟驿站:学习SDN/NFV路上遇到的术语(一)

    SDN:软件定义网络(Software Defined Network,SDN),是一种新型的网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlo...

    SDNLAB
  • OpenFlow的伴侣协议:OF-CONFIG

    1 简介 在OpenFlow协议的规范中,控制器需要和配置好的交换机进行通信。而交换机在正常工作之前需要对其特性以及资源进行配置,才能正常工作。而这些配置超出了...

    SDNLAB
  • 每周分享第 31 期

    欢迎投稿,请前往 GitHub 的 ruanyf/weekly 提交 issue。

    ruanyf
  • 数字在计算机中的“硬币表示”

    上篇博文 引出了“硬币模型”,从“抛硬币”的角度描述了计算机数据的最本质属性。同时也介绍了为若干硬币赋予现实意义、实现更多数据展示的基本思路。

    zgq354
  • 图穷匕见:K近邻算法与手写数字识别

    机器学习算法是从数据中产生模型,也就是进行学习的算法。我们把经验提供给算法,它就能够根据经验数据产生模型。在面对新的情况时,模型就会为我们提供判断(预测)结果。...

    用户1682855
  • NIO源码阅读

      自己对着源码敲一遍练习,写上注释。发现NIO编程难度好高啊。。虽然很复杂,但是NIO编程的有点还是很多:

    用户3003813
  • 使用 RestTemplate 进行第三方Rest服务调用

    RestTemplate 是 Spring 提供的一个调用 Restful 服务的抽象层,它简化的同 Restful 服务的通信方式,隐藏了不必要的一些细节,让...

    码农小胖哥
  • 算法提高 P1001

    当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数...

    AI那点小事
  • 姬小光前端小讲堂【第001期】

    如果你还不知道前端开发是干嘛的,那美工你一定听说过;如果连美工也没听说过,那姑且就当我是个做网页的好啦~

    姬小光

扫码关注云+社区

领取腾讯云代金券