如下图例子:防火墙策略为:禁止A和C通信,通过重写IP字段,达到了绕过的效果 美 国德克萨斯农工大学研究小组提出了一种其 中 提 出 了 基 于 别 名 集 的 SDN 安 全 策 略 冲 突 检 测 方 法 .该 方 法 将 通 信 中 源 地 址 和 目 的 地 址 分 别 放 到 两 个 地 址 集 合 中 ,并 将 Set-Field 操 作 中 被 修 改 的 地 址 也 加 入 到 上 述 两 个 集合,然后将源地址集合和目的地址集合与防火墙 的安全规则进行比较从而发现策略冲突。 但是上述方法可能存在误报。 比如
S1:Match(src=A,dst=B)→Set(src=D,dst=B) S2:Match(src=D,dst=B)→Set(src=D,dst=C) S3:Match(src=D,dst=C)→Set(src=D,dst=B)会检测出(A ,D )→ (B ,C ) 的冲突,但其实数据包只是从A到B没有违反安全规则。
lowpath 指 的 是 SDN 中 每 个 Flow 的 转 发 路径, 他的建立依赖于HSA算法 ,HSA提供一个提供了一个数据包路径计算模型。
包头可以看作一个点, HeaderSpace 空 间 {0,1}L ,L 为包头最大长度.网络设备的转发操作可以根据 HeaderSpace空间的转发规则描述成一个转 换函数T我 们 将 a 和 b 之 间 的 路 径 (Flowpath)描 述 为 如 下 (switch,rule)序 列 : (s 1 ,r 1 ) → :: → (s n - 1 ,r n - 1 ) → (s n ,r n ) .
获取flow path的过程主要有两个部分:第一是通过网络拓扑找到下一跳。第二是通过比较上一跳中的目的地址和现在的下一跳流表项的源地址有没有交集,如果有,加入flowpath, 循环往复。 Shifted Flowpath: 存在重写操作的flowpath Shifted Flowpath Space: Shifted Flowpath 构成转换空间 Deny Authorization Space; 防火墙中的deny规则组成的授权空间。
防火墙规则包含5个域:源地址、源 端 口 、目 的 地 址 、目 的 端 口 和 协 议
考虑源目地址,提取防火墙的源目地址,并且计算重写的流路径,也就是shifed flowpath, 如果两者存在重叠证明存在违反防火墙的策略。除此之外,还需要考虑添加新的防火 墙规则和更新防火墙规则以及添加新的流表项和更 新流表项这些情况,以及当检测出冲突之后,如何自动处理。
如果是完全违反,可以直接删除整条flowpath,或者禁止违反的流表项插入。 对于部分违反,通过添加更高 优先级的Deny规则来解决策略的部分违反。
当更新或者添加防火墙规则时,重新计算Deny Authorization Space, 然后和Shifted Flowpath Space比较是否有冲突(主要是提取源目IP 进行对比)
如 果 Shifted Flowpath Space 比 防 火 墙 的 Deny Authorization Space 小 ,那 么 Shifted Flowpath 就 可 以 被 移 除 .但 是 如 果 Shifted Flowpath Space 比 新 的 防 火 墙 Deny Authorization Space 大 ,我 们 就 需 要 阻 止 Shifted Flowpath Space 中 与 防 火 墙 冲 突 的部分信息流. 下图为例,通过插入更高更高优先级阻断流表
重 新 计 算 Shifted Flowpath,我 们 再 将 新 的 Shifted Flowpath Space和 Deny Authorization Space进行 比较,检测是否存在冲突 下图为例子Shifted Flowpath Space(1110→x100)比防火墙的 Deny Authorization Space(1110→xx00)小.所 以 添 加 这 条 新 的 流 表 项的 请 求 被 拒 绝 .当 Shifted Flowpath Space 比 Deny Authorization Space 大 时 ,冲 突 部 分 将 会 在 头 尾 交 换 机 处 被 阻 断