Contents

FRESCO:Modular Composable Security Services for Software-Defined Networks

Shin S W, Porras P, Yegneswara V, et al. Fresco: Modular composable security services for software-defined networks[C]//20th Annual Network & Distributed System Security Symposium. NDSS, 2013.

本文提供了一个应用框架FRESCO,可供研究人员和开发代人员更简单地实现各种检测、缓解模块。

基本介绍

它提供API,可用来调用Module,Module是各种安全功能,如:firewall,scan detector,attack reflector,IDS detection logic。当前提供16个Module,每个Module有5个接口:input,output,event,parameter,action,M之间可以配合使用以实现更复杂的应用。

  • 由于Controller不存TCP会话信息而分析却需要,FRESCO-DG存储和管理这些并在FRESCO应用之间共享。

  • FRESCO的功能模块化可通过共享数据和事件调用API来驱动。

  • FRESCO可将检测结果转为规则(可能很复杂)

FRESCO的架构图如图1

https://s2.ax1x.com/2019/04/20/ECH84U.png

由应用层和安全执行内核(SEK)组成,均在NOX控制器上运行。应用层使用NOX的python模块实现,它提供两个开发功能:DE和RC(Resource Controller)。开发者可以利用应用层的脚本进行开发应用(应用是基于模块的),当收到相应触发事件时被实例化的模块就会被激活。模块也可以对相应的事件生成新的流规则,这些规则会在SEK部分被处理。

FRESCO的详细价绍

FRESCO Application Layer

应用层中,模块是其基本组成单元,应用是模块的组装。每个模块有5个接口:input,output,parameter,action,event

  • input:模块的输入
  • output:模块的输出
  • parameter:模块的配置参数
  • action:模块要对网络包或流进行的操作
  • event:模块的触发事件

举个粟子:一个丢弃所有HTTP包的应用。它由两个模块组成,结构图如图2.

https://s2.ax1x.com/2019/04/20/ECOfSS.md.png

第一个Module: input:包的端口值,parameter:80,event:当有新流到达时触发,output:端口值与80的比较结果 第二个M: input:第一个M的输出,action:drop或forward。

action是从NOX得到且是所有的switch都支持的,它基本有三种:drop,output,group:通过具体的组来处理。还有一种可选的:set action:switch重写匹配包的字段。FRESCO将其分为三种:redirect,mirror:拷贝并交付到某个镜像端口,quarantine:交流从网络隔离,只允许交付给指定主机。

FRESCO Development Enviroment(DE)

提供API给开发者,屏蔽NOX实现和复杂的OF协议;释放安全功能相同的应用。DE提供以下四个功能:

  • script-to-module translation:将脚本转换成相应的Modules并实例化。授权管理员会生成应用ID,相应脚本会嵌入ID并使用私钥加密,实例化的时候会进行解密并通过ID验证权限。
  • Database management:收集网络或switch状态,并提供接口给实例调用,也可用来暂存实例。
  • Event management:当指定事件发生时激活实例,也提供API供应用产生事件。事件有:flow arrivals,denied connections,session resets.
  • Instance execution:加载实例到内存并运行。加载时利用公钥解密并验计ID。 ###FRESCO Resource Controller(RC) 监控switches并跟踪状态,当FRESCO要插表但表满,就会删旧表。需要功能:1.定期收集switch状态;2.垃圾处理,当表快满了(超过指定thresh)删除最长时间未用的表。 ###FRESCO Script Language 脚本语言需要定义六个变量:type:需要实例化模型的类型,input,output,parameter,action,event。每个变量可定义多值,用逗号分割。变量总结在表1中。图3是对图2中的例子用脚本语言描述。

https://s2.ax1x.com/2019/04/20/EPSomF.png

https://s2.ax1x.com/2019/04/25/EZHLid.md.png

图4是对应的脚本执行:1.生成脚本;2.加载到FRESCO;3.switch收到符合条件的包;4.报告事件;5,6创建实例并加载;7.发action到FRESCO;8.将action转成rule并插入switch。

https://s2.ax1x.com/2019/04/25/EZHjzt.md.png

FRESCO Security Enforcement Kernel(SEK)

SEK解决:1.流表冲突,保证安全流表优先级;2.解决set action会绕过规则的问题:如set action可能过虚拟隧道绕过禁止两主机建立连接的问题,这个在[31]中更详细说明。 解决问题1需要的特征:

  • 规则源识别,FRESCO对规则进行数据签名,以便SEK识别。
  • Rule conflict detection:SEK中的检测算法检测规则冲突;详见附录A1
  • Conflict resolution:优先级高的覆盖低的。

实现

其本实现环境

FRESCO 应用是用python编写,在NOX上运行。 FRESCO SEK是NOX源码的一个扩展,C++代码,修改send_openflow_command用来接收应用rule并将其发到switch,修改的目的是解决冲突问题,保证安全规则被插入到switch中。

工作实例:

Implementing Reflector Net

实现一个反射网,将布置该服务的OF网转接到远程蜜罐。

  • 检测实例:检测网络扫描,当TCP_Connection:Fail值数到达一个阈值时触发实例,如图5左.其输出作为第二个实例的输入。参数有:input,output:两个,sIP和检测结果,parameter:扫描算法的参数,设为5.,action:无
  • 重定向实例:将恶意扫描转到蜜罐,图5右。当scan_result=1时将重定向所有的源IP。

https://s2.ax1x.com/2019/04/20/EPe9JO.md.png

图6为测试,主机2扫描4,包被交付到S时S将统计发送给FRESCO,检测到扫描将包重定向到3,3将结果返回给扫描者2,完成防御。

https://s2.ax1x.com/2019/04/20/EPeZwt.png

Cooperating with a Legacy Security Application

与其他应用协作可将其他应用的alert信息利用action转成流规则。传递的消息格式有两种:FRESCO类型:MESSAGE_LEGACY:FRESCO;标准格式类型:MESSAGE_LEGACY:IDMEF。 例:见图7,1.攻击者咸染C;2.BotHunter检测到;3.BotHunter发message给FRESCO;4.5.FRESCO根据结果实现检疫action;6.c被隔离。

https://s2.ax1x.com/2019/04/20/EPeqtf.md.png

botHunter使用FRESCO API传递感染信息包括:victim_ip,confidence_score,当score大于thresh时执行隔离,实现脚本见图8

https://s2.ax1x.com/2019/04/20/EPmSns.md.png

评估实例:

评价环境:mininet:i3CPU,4G RAM;SEK:HP ProCurve 6600 OF-enable switch 。本部分有三个应用:

FRESCO Scan Service

扫描检测,见图10

https://s2.ax1x.com/2019/04/20/EPnfLd.png

三个模块代码量为:205pythonk,24 script。 三个模块内容为:检测是否在表中;在:交付,不在:检测;是否扫描:是重定向,否:交付。 图11为相应的脚本。

https://s2.ax1x.com/2019/04/20/EPnqSS.md.png

FRESCO BotMiner Service

图12为BotMiner实现;图13为相应脚本;321行python,40行script.

https://s2.ax1x.com/2019/04/20/EPunFx.png

https://s2.ax1x.com/2019/04/20/EPullD.md.png

FRESCO P2P Plotter Service

P2P恶意软件发现。恶意软件特征:低volume,低churn。 图14,15为说明图和脚本

https://s2.ax1x.com/2019/04/20/EPuaff.png

https://s2.ax1x.com/2019/04/20/EPuB6g.md.png

评估

1.代码量 比较FRESCO和非FRESCO实现的应用。 用FRESCO实现[24]中的算法并与其比较,表2为比较结果,其中FRESCO的代码量大大减少。

https://s2.ax1x.com/2019/04/20/EPuqtx.png

2.资源消耗

  • 下发流表耗时比较 5个FRESCO应用与NOX的比较,结果见表3

https://s2.ax1x.com/2019/04/20/EPKPAI.png

FRESCO更 耗时一些,但这是运行在mininet中,如果在物理机上会减少很多耗时。

  • 垃圾收集 FRESCO垃圾收集器阈值设为0.75,比较流表中项的个数见图16,使用FRESCO时维持在一个数,而不使用则一直涨。

https://s2.ax1x.com/2019/04/20/EPKuHs.png