Page 1

2007 , 43 ( 26 )

Computer Engineering and Applications 计算机工程与应用

135

防火墙安全策略的语义分析方法 邓文俊 1, 梁意文 2

DENG Wen- jun1, LIANG Yi- wen2 1. 武汉大学 软件工程国家重点实验室, 武汉 430072 2. 武汉大学 计算机学院, 武汉 430072 1.State Key Laboratory of Software Engineering, Wuhan University, Wuhan 430072 , China 2.School of Computer Science , Wuhan University, Wuhan 430072 , China DENG Wen - jun , LIANG Yi - wen .Semantic method to analyze fir ewall policy .Computer Engineer ing and Applications, 2007 , 43( 26) : 135- 137. Abstr act : Presents a semantic method to analyze security policy.Translates security policy into a prioritized logic program, and then computes its semantics.Semantics is easy to understand, so it is simple for administrator to analyze firewall policy and check it out. Key wor ds: firewall; security policy; prioritized logic program 摘

要: 给出了通过语义分析防火墙安全策略的方法。先将安全策略用一个优先逻辑程序表示, 然后计算其语义。由于语义容易理

解, 管理员能很容易地分析安全策略配置, 检测配置的正确性。 关键词: 防火墙; 安全策略; 优先逻辑程序 文章编号: 1002- 8331( 2007) 26- 0135- 03

文献标识码: A

中图分类号: TP393.08

引言

只能是其中的一部分。这好比盲人摸象, 还要求盲人有一定的

防火墙是一种防御网络攻击的技术, 一种均衡保护网络中

大象的相关知识。所以, 这类方法实际效果和作用有限。

的物理安全、个人安全、操作安全、通信安全的方法 [1]。依据其工

表1

作 的 协 议 层 , 防 火 墙 分 为 : 包 过 滤 防 火 墙( packet filters) 、环 形

属性

代理防火墙( circuit proxies) 、应用代理防火墙( application level

规则数

proxies) 。 [2]

防火墙是企业内部网络安全的基石, 被业界广泛使用。使

规则集合统计

最小值

最大值

平均值

2 671

144.0

对象数

24

5 847

968.0

接口数

13

4.1

用防火墙时, 管理员需根据用户要求, 配置和维护安全策略。网

注: 1 规则总数( 包括网络地址转换) ; 2 规则中网络对象

络安全专家一般认为, 企业防火墙安全策略的配置中大多存在

总数( 主机地址、子网等) ; 3 防火墙上网络接口总数。

问题。蠕虫病毒 Blaster 和 Sapphire 在网络上传播, 提供了一些 佐证 [3]。

本文用语义的方法解决以上问题。既然防火墙安全策略是 用一定语法描述的一组规则, 那么用比语法更易于理解的语

防火墙安全策略, 通常表现为一组规则的集合。表 1 中统

义, 就能很容易的分析安全策略。因此, 本文提出通过语义分析

计 了 2000 年 到 2001 年 间 , 电 信 、金 融 、学 院 、研 究 所 等 多 个 领

防火墙安全策略的方法。首先, 从众多逻辑程序中, 选择优先逻

域中, 37 个 Check Point FireWall- 1 型 防 火 墙 规 则 集 合 的 统 计

辑程序作为表达防火墙安全策略的方法, 并给出了选择的原

结果 [3]。从中可以看到现代防火墙的规则数量大。规则数多, 则

因。然后, 将防火墙安全策略表示为一个优先逻辑程序, 并计算

难以分析规则的含义; 规则难分析, 则难以检查其正确性; 正确

其语义, 通过语义解释防火墙安全策略。语义计算自动完成, 无

性难检查, 则无法判断安全策略是否满足用户需求。最后, 必然

需用户提问。语义能解释完整的防火墙安全策略。

导致防火墙安全策略的配置存在问题。 国 际 上 已 有 相 关 研 究 , 试 图 解 决 规 则 多 、配 置 难 以 理 解 的 问题。这些研究的基本想法相同, 都使用某种系统自动分析防 火墙规则, 解释安全策略的实际效果。其中具有代表性的是文

[4 , 5]。在文 [4]中, 作者用二元决策图( binary decision diagrams) 的方法; 在文 [5]中, 作者使用专家系统的方法。两种方法均采用

2 2.1

优先逻辑程序 优先逻辑程序的定义 优先逻辑程序是逻辑程序( Logic program) 的一个分支。逻

辑程序使用逻辑语言表达知识, 并用自动推理方法处理知识。

用户提问系统回答的方式。用户需提问, 则要求用户对防火墙

一般而言, 逻辑程序使用一阶逻辑语言。因为一逻辑成容易理

技术有了解; 系统针对问题回答, 则不能解释安全策略全部, 而

解, 并且已被证明可以表达计算性问题 [6]。

作者简介: 邓文俊( 1980- ) , 男, 博士生; 梁意文( 1962- ) , 男, 教授, 博士生导师, 主要研究领域为人工免疫、信息安全。


2007 , 43 ( 26 )

136

Computer Engineering and Applications 计算机工程与应用

优 先 逻 辑 程 序 建 立 在 扩 展 逻 辑 程 序( extended logic pro- gram) 基础上。扩展逻辑程序 [6]是一组如下形式规则的集合:

L0←L1, …, Lm, not Lm+1, …, not Ln Not 是弱否定( negation as failure) , 表示没有明确 的 证 据 证 明 。 其 中 , Li 是 形 如 p 或 ┒p 的 公 式 , 称 为 文 字( literal) 。 p 是 原 子 ( atom) , 是形如 P( t1, …, tn) 的公式。P 是谓词( predicate) , ti 是项 ( term) 。项的定义如下: ( 1) 常量是项。

destination_IP( X, Y) 表示数据包 X 的目的 地 址 为 Y, source_port ( X, Y) 表示数据包 X 的源端口为 Y, destination_port( X, Y) 表示 数 据 包 X 的 目 的 端 口 为 Y, flag( X, Y) 表 示 数 据 包 X 的 状 态 为 Y。使用 TCP 协议, 目的地址 10.10.10.3( 168432643) 端口 80 的 数据包, 其表达为: {packet( p1) , protocol( p1 , pr6) , destination_IP ( p1 , i168432643) , destination_port( p1 , pt80) }。 3.1.2 表达网络拓扑( 网络节点和接口)

PC、服务器、交换机、集线器都是网络上的节点。连接上网

( 2) 变量是项。

络的任何硬件都是网络上的一个节点。一个节点至少有一个接

( 3) 若 f n 是 n 元函数, t1, …, tn 是项, 则 f (n t1, …, tn) 也是项。

口, 用于接入网络。节点可以有多个接口。例如一台 IBM 服务

一个优先逻辑程序( 是一 个 三 元 组( П, N, <) , 其 中 П 是 一

器上有两块网卡。WEB 服务器是节点, 每块网卡是节点上的一

个扩展逻辑程序; N 是一个命 名 函 数 , 给 П 中 的 每 个 规 则 一 个

个接口。每个接口有一个 IP 地址, 每个 IP 上 可 以 开 放 0 个 到

名字; <是建立在 N 名字上的一个严格偏序关系 [7]。P1 是一个优

多个端口。 用 node( X) 表 示 X 是 网 络 上 的 节 点 , interface( X, Y) 表 示

先逻辑程序:

N1: Fly( x) ←Bird( x) , not ┒Fly( x) N2: Fly( x) ←Penguin( x) , notFly( x) N3: Bird( Tweety) ← N4: Penguin( tweety) ←

Y 是 节 点 X 上 的 接 口 , interface_IP( X, Y) 表 示 X 接 口 的 IP 地 址是 Y, interface_mask ( X, Y) 表示 X 接口的子网掩码是 Y, in terface_gateway( X, Y) 表 示 X 接 口 的 网 关 是 Y, interface_port ( X, Y) 表示接口 X 上打开端口 Y。 如图 1 所示, 防火墙服务器为网络上一个节点, 该节点上

N2<N1

2.2

优先逻辑程序的优点 表达防火墙安全策略的方法很多, 例如二元决策、图论、状

态自动机等等 [8]。本文选择逻辑程序的原因有 3 个: ( 1) 容 易 理 解 : 逻 辑 程 序 使 用 一 阶 逻 辑 语 言 , 所 以 容 易 理 解。容易理解, 则对用户技术背景的要求低, 易学易用。 ( 2) 表达能力强: 从发展趋势看, 防火墙技术从无状态到有 状态, 从简单包过滤到应用层协议, 从单点防火墙到分布式防 火墙, 其技术趋向完备, 安全策略趋向复杂。逻辑程序表达知识 的能力强, 完全能应对防火墙技术的发展, 可扩展性好。

有 3 块网卡, 也就是 3 个接口。接口 1 和外网连接, 其 IP 为

192.168.1.1 。接口 2 和企业内部 PC 组成的内网 1 连接, 其 IP 为 10.10.10.1 。 接 口 3 和 企 业 的 服 务 器 组 成 的 内 网 2 连 接 , 其 IP 为 10.10.20.1 。3 个接口的子网掩码均为 255.255.255.0 。这样 一 个 网 络 拓 扑 结 构 的 优 先 逻 辑 描 述 如 下 : {node( n1) , inter- face( n1 , in1) , interface( n1 , in2) , interface( n1 , in3) , interface_IP ( in1 , i3232235777) , interface_IP ( in2 , i168430081) , interface_IP ( in3, i168432641) , interface_mask( in1, m4294967040) , interface_ mask( in2 , m4294967040) , interface_mask( in3 , m4294967040) }。

( 3) 已 经 过 理 论 证 明 : 逻 辑 程 序 从 1960 年 至 今 , 已 有 一 套 完备的、可靠的理论基础。从而, 能在理论上保证安全策略的计 算结果与其实际效果一致。 逻辑程序有很多种 [6], 本文选择优先逻辑程序, 是因为其在 规则间存在优先级别, 与防火墙规则匹配方式暗合。防火墙在 匹配规则时, 靠前的规则优先匹配。一旦匹配, 则后面的规则不 予考虑。例如, 防火墙中有两条规则( 1) 接受 IP 为 192.168.1.1 的数据包;( 2) 拒绝 IP 为 192.168.1.1 的数据包。如果防火墙接 收到来自此 IP 的数据包, 规则( 1) 在前, 优先匹配, 防火墙将接 受数据包。若规则集合中存在这样互相矛盾的规则 , 除优先逻 辑程序外, 其他逻辑程序将因为程序本身存在不一致而没有语 义 [6]。而优先逻辑程序, 由于规则优先级, 能计算得到语义 [7]。

3.1.3

表达访问控制规则 访问控制规则, 分为规则体和规则头。其意义与高级语言

3 防火墙安全策略检查 3.1 优先逻辑表达安全策略

中的条件语句相似, 规则体表达的是 IF 部分, 规则头表达的是 THEN 部分。规则体描述对数据包属性和网络接口 的 要 求 , 规

3.1.1

则头描述对数据包的处理。到达的数据包, 如果满足规则体的

表达数据包 数据包是网络中传播的对象, 具有一组属性。大多数的防

要求, 则对数据包进行规则头中的处理。目的是分析防火墙的

火墙安全策略使用数据包的 6 个属性: 协议类型、源( IP) 地址、

安全策略, 所以, 不关心如何处理数据包, 而是处理后的结

目 的( IP) 地 址 、源 端 口 、目 的 端 口 、状 态 , 以 上 属 性 的 值 据 为 整

—状态。关注于数据包的状态转换关系, 即状态转换图。数 果——

数类型。其中, 状态为 TCP 连接 使 用 : 0 表 示 新 连 接 , 1 表 示 已

据包的状态有许多, 本文只采用最常用的 5 种: 等待进入状态

有 连 接 。 IP 地 址 32 位 的 二 进 制 数 , 转 换 为 10 进 制 为 0 到

( waitin) , 新 进 入 的 数 据 包 等 待 处 理 ; 等 待 出 去 状 态( waitout) ,

4 294 967 295 间的整数。端口是 0 到 65 535 间的整数。 用 packet( X) 表 示 X 是 数 据 包 , Protocol( X, Y) 表 示 数 据 包

X 使 用 Y 协 议 , source_IP( X, Y) 表 示 数 据 包 X 的 源 地 址 为 Y,

新出去的数据包等待处理; 拒绝状态( drop) , 被丢 弃 ; 接 受 状 态 ( accept) , 已 接 受 ; 转 发 状 态( forward) , 通 过 本 接 口 路 由 到 其 他

IP 地址。


邓文俊, 梁意文: 防火墙安全策略的语义分析方法 Computer Engineering and Applications 计算机工程与应用 用 state( X, Y) 表示数据包 X 处于 Y 状态。图 1 中, 防火墙

3.2.2

2007 , 43 ( 26 )

137

解释语义 关于优先逻辑程序的语义, 已有研究成果。文 [7]中定义了

对 外 开 放 80 端 口 , 其 规 则 表 示 为 : n1 : state( X, accept) ←packet ( X) , state( X, waitin) , protocol( X, pr6) , destination_port( X, p80) ,

优先逻辑程序的语义, 文 [9]给出计算语义的详细算法。其源码

‘←’ 左边为规则头, 右边为规则 destination_IP( X, i3232235777) 。

和 实 验 系 统 在 网 址 : http : //www.cit.uws.edu.au/ ̄yan/plps.html 可

体。 ‘n1 ’为规则的名字。每条规则有一个名字, 名字间存在优先

以得到。 上面给出的网址中下载计算语义的软件, 然后使用该软件

关系。优先级低的优先匹配, 从前到后, 优先级别依次上升。

3.1.4

计算防火墙规则的语义。接下来, 将语义解释为防火墙安全策

一个例子 例 1 在图 1 描述的网络拓扑结构下, 配 置 防 火 墙 安 全 策

略。要求 : 对 外 网 开 放 WEB 服 务 80 端 口 , 对 内 网 1 数 据 库 端 口 1521 和 WEB 服务 80 端口。其规则如下:

//网络拓扑结构 n1 : node( n1) ← .n2 : interface( n1 , in1) ← .n3 : interface( n1 , in2) ← . n4 : interface( n1 , in3) ←.n5 : interface_IP( in1 , i3232235777) ←.n6 : inter- face_IP( in2 , i168430081) ←.n7 : interface_IP( in3 , i168432641) ←.// 访 问

略。将表达数据包空间的优先逻辑程序与例 1 中的优先逻辑程 序合并, 计算得到其语 义 如 下 : state( p4 , waitin) state( p3 , waitin)

state( p2 , waitin) state( p1 , waitin) state( p4 , accept) state( p3 , drop) state( p2 , accept) state( p1 , accept) …… 。 其 中 , state( p4 , accept) 说 明 数 据 包 p4 被 接 受 , state( p3 , drop) 说 明 数 据 包 p3 被 抛 弃 。 同样, 数据报 p2 , p1 也被接受。从中可以看到, 由于一阶逻辑的 易理解特性, 很容易立即语义所表达的防火墙策略。

控制策略规则

n8: state( X, drop) : - packet( X) , state( X, waitin) , not state( X, accept) .

结论

n9: state( X, accept) : - packet( X) , state( X, waitin) , not state( X, drop) .

发挥防火墙的作用, 依赖于安全策略的正确配置。好比高

n10 : state( X, accept) : - packet( X) , state( X, waitin) , protocol( X,

性能的 F1 跑车, 需要优秀的驾驶员。但是, 由于现代防火墙的

pr6) , destination_port( X, pt80) , destination_IP( X, i3232235777) . n11 : state( X, accept) : - packet( X) , state( X, waitin) , protocol( X, pr6) , destination_port( X, pt80) , destination_IP( X, i168430081) . n12 : state( X, accept) : - packet( X) , state( X, waitin) , protocol( X, pr6) , destination_port( X, pt1521) , destination_IP( X, i168430081) . N8<n9 , n9<n10 , n10<n11 , n11<n12

3.2

性非常困难。本文给出了通过语义分析防火墙安全策略的方 法。在本文中, 用逻辑程序设计的方法表达防火墙安全策略, 先 将安全策略表示为一个优先逻辑程序, 然后计算其的语义, 通 过语义解释安全策略配置。由于逻辑程序具有表达知识和自动 推理的两大特点, 因此, 同其他研究方法相比较, 此方法具有可

语义计算及解释

3.2.1

安全策略复杂、规则庞大, 使得人工分析安全策略, 检测其正确

扩展、容易理解, 自动计算无需用户操作的特点。 接下来, 将研究通过语义比较不同防火墙安全策略的优

计算语义 已将防火墙安全策略表达为一个优先逻辑程序 , 要计算其

劣, 给出评价防火墙安全策略的方法和标准。目前的工作, 正在

语义还需要将数据包空间作为输入, 加入到优先逻辑程序中。

着手建立一套实验系统。用一些真实的防火墙规则 , 测试计算

因为, 防火墙根据配置的安全策略处理数据包, 没有数据包作

防火墙安全策略语义的效率问题和一致性问题。 ( 收稿日期: 2007 年 1 月)

为输入, 无法理解安全策略的作用。 把所有数据包的集合, 称为数据包空间。数据包空间是非 常大的, 如果仅仅只考虑 6 个属性的数据包, 其空间就有 28×

参考文献:

232×232×216×216×22=2106。所以, 要依据规则具体情况, 对数据包进

[1] Icove D, Seger K, VonStorch W.Computer crime[M].Sebastopol , Cal-

行一个划分。以例 1 为例, 其 IP 被划分为 4 块: i3232235777 ,

i168430081 , i168432641 , iother。iother 表示除前三个 IP 外的所 有 IP。同样对端口做类似的处理。这样, 数据包空间就缩小为

28×22×22×3×3×22=9×214。表 2 中, 展示了例 1 的数据包空间中的 几个数据。

ifornia : O’Reilley & Associates Inc , 1995. [2] Schuba C L.On the modeling, design , and implementation of fire- wall technology[D].Purdue University, 1997- 12. [3] Wool A.A quantitative study of firewall configuration errors[J].IEEE Computer , 2004 , 37( 6) : 62- 67. [4] Hazelhurst.Algorithms for analyzing firewall and router access

表2

例 1 数据包空间中的几个数据包

包名

协议

目的地址

目的端口

p1

pr6

i3232235777

pt80

waitin

p2

pr6

i168430081

pt80

waitin

p3

pr6

i3232235777

pt80

waitin

p4

pr6

i168430081

pt80

waitin

状态

lists , TR- Wits- CS- 1999- 5[R].University of Witwatersrand , South Africa , 1999- 07. [5] Pasi Eronen , Jukka Zitting.An expert system for analyzing firewall rules[C]//6th Nordic Workshop on Secure IT Systems, 2001: 100- 107. [6] Baral C, Gelfond M.Logic programming and knowledge representa- tion[J].Journal of Logic Programming, 1994( 19/20) : 143- 148. [7] Zhang Y, Foo N Y.Answer sets for prioritized logic programs[C]//

其优先逻辑表达如下:

Proceedings of the 1997 International Logic Programming Sympo-

packet( p1 ) . destination_port( p1 , pt80 ) . destination_IP( p1 ,

sium( ILPS’97) .[S.l.]: MIT Press, 1997 : 69- 83.

i3232235777) .protocol( p1 , pr6) .state( p1 , waitin) . packet( p2 ) . destination_port( p2 , pt80 ) . destination_IP( p2 , i168430081) .protocol( p2 , pr6) .state( p2 , waitin) . packet( p3 ) . destination_port( p3 , pt1521 ) . destination_IP( p3 , i3232235777) .protocol( p3 , pr6) .state( p3 , waitin) . packet( p4 ) . destination_port( p4 , pt1521 ) . destination_IP( p4 , i168430081) .protocol( p4 , pr6) .state( p4 , waitin) .

[8] Adi K, Felty A, Loggripo L, et al.Evaluation of current research in firewall analysis[D].Rapport de recherche.Dé partement de la dé fence nationale , Canada , 2003. [9] Zhang Y, Wu C M, Bai Y.Implementing prioritized logic program- ming[J].AI Communications , 2001 , 14( 4) : 183- 196. [10] Zhang Y, Two results for prioritized logic programming[J].Theory and Practice of Logic Programming, 2003 , 3( 2) : 223- 242.

防火墙安全策略的语义分析方法  

Presents a semantic method to analyze security policy.Translates security policy into a prioritized logic program, and then computes its sem...