大家好,欢迎来到IT知识分享网。
第4章 什么是软件定义安全
1.软件定义安全的含义
1.1 软件定义安全的提出
虚拟化、云计算、软件定义架构的出现,对安全体系提出了新的挑战。如果要跟上网络演进的步伐和业务快速创新的速度,安全体系应该朝以下方向演变。
𝟭 安全机制软件化
安全防护机制的部署应提升到软件层面的调度、下发和远程快速版本更新,更多地由软件完成自动分析、按需调度和动态部署。系统应该有能力根据多种因素,自适应地自动调度和部署安全防护机制,以提供快速响应能力和按需动态防护。
𝟮 接口开放,易扩展
提供开放接口,以支持快速的安全能力创新,便于扩展新的安全服务,对业务需求的变化作出快速响应。
𝟯 架构功能分离
安全功能不应被禁锢在一个个封闭的黑盒中,安全产品不应实现全功能栈。很多定制开发的功能可以独立于安全产品之外的组件形态,调用安全产品的应用接口,即可实现多种复杂的组合功能。
Gartner于2012年最先提出软件定义安全,通过分离安全数据平面与控制平面,将物理及虚拟的网络安全设备与其接入模式、部署方式、实现功能进行解耦,在底层将物理及虚拟的网络安全设备抽象为安全资源池,顶层统一通过软件编程的方式进行智能化、自动化的业务编排和管理,以完成相应的安全功能,从而实现灵活的安全防护机制,以应对软件定义数据中心和新型IT系统的安全防护需求。
1.2 软件定义安全的不同结构
➊ AMQ方案:SDN控制器上的安全应用
AMQ:Automated Malware Quarantine,恶意软件自动隔离
AMQ集中在控制器上实现,对于网络中其他设备几乎是透明的。这种设计不仅要实时监测流入的数据,而且只适用于静态数据流。AMQ可以只检测、隔离可疑数据流,这样可以增加灵活性,提高效率。
➋ FRESCO实现方案:SDN控制器上的安全内核
FRESCO系统的结构如下图所示。图中主要的扩展内容都部署在SDN的控制平面,维持了原有数据平面功能的单一性,避免给数据平面造成新的负担。图中的模块用于实现基本安全动作,利用FRESCO提供的脚本语言可以将这些基本模块进行自定义组织,形成一个完整的动作链,即为图中的实例。实例利用事件作为输入,触发相应模块的功能。事件可能由FRESCO系统中的模块产生,也可能由传统安全设备产生。当事件发生时,根据由脚本自定义的实例,几个模块组织在一起,形成一系列的安全动作,通过集成在网络控制器内的安全执行内核实现。FRESCO应用层的能力呈现都需要控制平面的功能扩展——安全执行内核提供支持。
以检测网络恶意扫描为例,下图描述了利用3个模块实现该功能的流程。当有TCP连接成功建立时触发第一个模块,检测发起连接的源IP地址是否在黑名单上,其结果作为第一个模块的输出,同时也作为第二个模块的输入。如果源IP地址在黑名单上,则第二个模块直接进行丢包处理,不再调用第三个模块。如果不在黑名单上,则对其进行检测,检测结果作为第二个模块的输出,同时作为第三个模块的输入。如果检测为网络恶意扫描,则第三个模块对数据流重定向,并进行深入分析处理;否则下发路由信息,发送至目的地址。
FRESCO采用了安全应用与网络控制器紧耦合的方式,需要在网络控制器上增加安全执行内核。另外,安全能力作为SDN应用部署在控制器上,也使安全应用过于依赖控制层环境,较难实现迁移复用;并且上层应用产生的安全策略可能与控制层上其他应用下发的策略冲突。
➌ 应用感知的数据平面方案:数据平面上的安全功能实现
应用感知的数据平面方案结构如下图,主要针对数据平面进行扩展。原有的网络在数据包与当前流表不匹配时,直接将数据包交由控制器处理(见图中的步骤①~⑤)。当请求数量增多时,控制平面容易成为瓶颈。该方案在交换机中新加入了应用表app-table,它最初由控制平面根据配置策略进行初始化,表中存放匹配的数据流应经过哪些应用处理,通过软件在应用表中写入编排好的安全应用,则可实现软件定义的安全防护。
➍ Avant-guard:数据平面上的安全功能实现
1.3 软件定义安全的相关概念
安全自动化是指安全控制处理过程中没有人为参与。它主要应用于网络协议和网络配置,也应用于智能电网部署、机械制造等方面。
安全信息智能化是指通过对历史数据的整理分析,在系统中建立判断、识别等功能,形成立体化的识别保护模式。
移动目标防御(MTD)不仅依赖于安全系统自身的复杂性来保护目标,而且充分利用时间、空间及物理环境的复杂性,从而极大地增加了攻击难度。
2.软件定义安全的特点
2.1 开放的生态环境
2.2 数据平面和控制平面分离
2.3 可编程的安全能力
2.4 与网络环境松耦合
松,即网络控制和安全控制是独立的两个服务,从技术上简化了实现复杂度,从架构上分开了网络运维团队和安全运维团队的责权;
耦合,即安全控制平台可借助网络控制器的应用接口实现调度,且网络业务调整会及时通告安全应用。
与网络环境松耦合可使整体安全架构和决策逻辑保持稳定高效。当资产迁移时,只需要通过网络控制器调度流量,即可维持流量还是依次经过原先的安全设备;当业务变更时,也只需要通过网络控制,将流量通过新插入的安全设备,或跳过弃用的旧设备,就能组成新的服务链。
3.相关支撑技术
3.1 流信息收集和控制
在SDN环境中,安全控制平台可借助网络控制器,对全局范围内的网络流量进行收集。如OpenFlow SDN中,可向SDN控制器发送流量查询请求,SDN控制器收到请求后,将向相应交换机发送ofp_flow_stats_request
请求,接着后者会将其所有流表上传,最后安全控制平台可收集若干或所有交换机的所有流表。
3.2 标准化应用接口
随着Web应用的不断发展,面向资源的应用接口逐渐在替代面向方法的Web服务接口,最典型的面向资源的应用接口是RESTful API。本质上说,RESTful是一种HTTP访问,RESTful请求中的URL是一个资源主体或资源集合,请求中的方法GET、POST、PUT和DELETE分别对应这些资源的获取、新建、更新和删除操作。
3.3 分布式消息通信
3.4 策略管理系统
❁ 策略表示
❁ 策略分析
- 策略分析工具
- 策略间的详细对比
策略拓扑结构分析
。策略的拓扑结构显式地描绘出该策略所涉及的网络地址的层级结构,以及该策略所检测的网络流量的方向。利用基于区间长度优先的分层算法,策略中的所有网络地址被组织成树状结构。
策略拓扑分布统计
。策略的拓扑结构给网络运维人员提供了一个较为粗粒度的全局概览,以便对策略进行定性的感知。策略的拓扑分布统计量化地显示了该策略所涉及的网络地址在源和目的地址段的二维正交空间中包含的规则数目。
❁ 策略部署
- 策略部署
3.5 服务编排与服务链
3.6 数据平面加速
- 收包模型
在当前网包处理条件下,频繁的上下文切换所引入的开销已变得相当可观。因此,不少网络处理平台都转而采用轮询的收包方式以提升性能。
- 处理器与进程/线程
目前的处理器都是多核心NUMA结构。为了充分提高并行性,网络处理程序大都采用了多线程的处理模型。多线程程序之间的数据共享和交互更便利,且性能较高。但是多线程程序要特别注意内存分配和使用问题,推荐的做法是根据业务需求,将内存划分为线程独享和线程间共享两部分,并预先分配好。除此之外,不同于传统操作系统调度进程,网络处理程序调度的对象是网包。因此,处理线程最好和特定的CPU核心进行绑定,并且屏蔽操作系统的时钟中断,从而保证CPU处理资源的最大化利用。最后,在NUMA体系结构下,不同核心访问内存的延时并不相同。为了在有限的时钟周期内完成对网包的处理,系统设计应当将逻辑流程划分为流水的方式,使处理器对网包的操作能够在离其最近的内存上完成。
- 内存
内存访问是拉长网包处理延时的主要原因,因此编程时应尽量一次性将所需的内容读取到缓存中进行处理。对于系统频繁申请/释放的数据结构,如会话表项等,可充分利用硬件单元或引入固定大小的内存池进行管理。此外,在实际应用中应使用大页表,减少缺页中断。
- 缓存
由于系统对缓存的读写是按行操作的,不同核心对共享数据不同部分的操作可能并非主观上的并行操作。如果这些数据存储在同一个缓存行中,则CPU实际上仍然是串行执行的,这就引入了False Sharing。此外,频繁访问的数据结构还需要考虑根据缓存行的大小进行对齐。否则,即使读写的大小是一个缓存行大小,但数据实际分布在两个缓存行上,CPU在执行时也会产生两次读写缓存的操作。
- 协议栈
目前大部分网络处理程序都是在Linux系统下开发的。Linux/UNIX本身是面向控制平面设计的系统,它们对于吞吐、延时等指标并不能达到最优,在网络协议栈方面尤其如此。因此,对于高性能的网络设备,大都需要自研一套高效的协议栈。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137503.html