防火墙安全策略的语义分析方法
DESCRIPTION
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 words: firewall; security policy; prioritized logic programTRANSCRIPT
2007, 43( 26)Computer Engineering and Applications 计算机工程与应用
表 1 规则集合统计
属性
规则数 1
对象数 2
接口数 3
最小值
5
24
2
最大值
2 671
5 847
13
平均值
144.0
968.0
4.1
注: 1 规则总数( 包括网络地址转换) ; 2 规则中网络对象
总数( 主机地址、子网等) ; 3 防火墙上网络接口总数。
1 引言
防火墙是一种防御网络攻击的技术 , 一种均衡保护网络中
的物理安全、个人安全、操作安全、通信安全的方法[1]。依据其工
作的协议层 , 防火墙分为 : 包过滤防火 墙( packet filters) 、环 形
代理防火墙( circuit proxies) 、应用代理防火墙( application level
proxies) [2]。
防火墙是企业内部网络安全的基石 , 被业界广泛使用。使
用防火墙时 , 管理员需根据用户要求 , 配置和维护安全策略。网
络安全专家一般认为 , 企业防火墙安全策略的配置中大多存在
问题。蠕虫病毒 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]。
防火墙安全策略的语义分析方法
邓文俊 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 firewall policy .Computer Engineer ing and Applications,
2007, 43( 26) : 135- 137.
Abstract: 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 words: firewall; security policy; prioritized logic program
摘 要: 给出了通过语义分析防火墙安全策略的方法。先将安全策略用一个优先逻辑程序表示 , 然后计算其语义。由于语义容易理
解 , 管理员能很容易地分析安全策略配置 , 检测配置的正确性。
关键词 : 防火墙; 安全策略; 优先逻辑程序
文章编号 : 1002- 8331( 2007) 26- 0135- 03 文献标识码 : A 中图分类号 : TP393.08
作者简介: 邓文俊( 1980- ) , 男 , 博士生; 梁意文( 1962- ) , 男 , 教授 , 博士生导师 , 主要研究领域为人工免疫、信息安全。
135
2007, 43( 26) 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) 常量是项。
( 2) 变量是项。
( 3) 若 f n 是 n 元函数, t1, ⋯, tn 是项, 则 f n( t1, ⋯, tn) 也是项。
一个优先逻辑程序( 是一个三元组( П, N, <) , 其中 П是一
个扩展逻辑程序 ; N 是一个命名函数 , 给 П中的每个规则一个
名字; <是建立在 N 名字上的一个严格偏序关系[7]。P1 是一个优
先逻辑程序 :
N1: Fly( x) ←Bird( x) , not ┒Fly( x)
N2: Fly( x) ←Penguin( x) , notFly( x)
N3: Bird( Tweety) ←
N4: Penguin( tweety) ←
N2<N1
2.2 优先逻辑程序的优点
表达防火墙安全策略的方法很多 , 例如二元决策、图论、状
态自动机等等[8]。本文选择逻辑程序的原因有 3 个:
( 1) 容 易 理 解 : 逻 辑 程 序 使 用 一 阶 逻 辑 语 言 , 所 以 容 易 理
解。容易理解 , 则对用户技术背景的要求低 , 易学易用。
( 2) 表达能力强 : 从发展趋势看 , 防火墙技术从无状态到有
状态 , 从简单包过滤到应用层协议 , 从单点防火墙到分布式防
火墙 , 其技术趋向完备 , 安全策略趋向复杂。逻辑程序表达知识
的能力强 , 完全能应对防火墙技术的发展 , 可扩展性好。
( 3) 已经过理论证明 : 逻辑程序从 1960 年至今 , 已有一套
完备的、可靠的理论基础。从而 , 能在理论上保证安全策略的计
算结果与其实际效果一致。
逻辑程序有很多种[6], 本文选择优先逻辑程序 , 是因为其在
规则间存在优先级别 , 与防火墙规则匹配方式暗合。防火墙在
匹配规则时 , 靠前的规则优先匹配。一旦匹配 , 则后面的规则不
予考虑。例如 , 防火墙中有两条规则( 1) 接受 IP 为 192.168.1.1
的数据包;( 2) 拒绝 IP 为 192.168.1.1 的数据包。如果防火墙接
收到来自此 IP 的数据包 , 规则( 1) 在前 , 优先匹配 , 防火墙将接
受数据包。若规则集合中存在这样互相矛盾的规则 , 除优先逻
辑程序外 , 其他逻辑程序将因为程序本身存在不一致而没有语
义[6]。而优先逻辑程序 , 由于规则优先级 , 能计算得到语义[7]。
3 防火墙安全策略检查
3.1 优先逻辑表达安全策略
3.1.1 表达数据包
数据包是网络中传播的对象 , 具有一组属性。大多数的防
火墙安全策略使用数据包的 6 个属性 : 协议类型、源( IP) 地址、
目的( IP) 地址、源端口、目的端口、状态 , 以上属性的值据为整
数类型。其中 , 状态为 TCP 连接使用 : 0 表示新连接 , 1 表示已
有 连 接 。 IP 地 址 32 位 的 二 进 制 数 , 转 换 为 10 进 制 为 0 到
4 294 967 295 间的整数。端口是 0 到 65 535 间的整数。
用 packet( X) 表示 X 是数据包 , Protocol( X, Y) 表示数据包
X 使用 Y 协议 , source_IP( X, Y) 表示数据包 X 的 源 地 址 为 Y,
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、服务器、交换机、集线器都是网络上的节点。连接上网
络的任何硬件都是网络上的一个节点。一个节点至少有一个接
口 , 用于接入网络。节点可以有多个接口。例如一台 IBM 服务
器上有两块网卡。WEB 服务器是节点 , 每块网卡是节点上的一
个接口。每个接口有一个 IP 地址 , 每个 IP 上可以开放 0 个到
多个端口。
用 node( X) 表 示 X 是 网 络 上 的 节 点 , interface( X, Y) 表 示
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 所示 , 防火墙服务器为网络上一个节点 , 该节点上
有 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.1.3 表达访问控制规则
访问控制规则 , 分为规则体和规则头。其意义与高级语言
中的条件语句相似 , 规则体表达的是 IF 部分 , 规则头表达的是
THEN 部分。规则体描述对数据包属性和网络接口的要求 , 规
则头描述对数据包的处理。到达的数据包 , 如果满足规则体的
要求 , 则对数据包进行规则头中的处理。目的是分析防火墙的
安全策略 , 所以 , 不关心如何处理数据包 , 而是处理后的结
果———状态。关注于数据包的状态转换关系 , 即状态转换图。数
据包的状态有许多 , 本文只采用最常用的 5 种 : 等待进入状态
( waitin) , 新 进 入 的 数 据 包 等 待 处 理 ; 等 待 出 去 状 态( waitout) ,
新出去的数据包等待处理 ; 拒绝状态( drop) , 被丢弃 ; 接受状态
( accept) , 已接受 ; 转发状态( forward) , 通过本接口路由到其他
IP 地址。
136
2007, 43( 26)Computer Engineering and Applications 计算机工程与应用
表 2 例 1 数据包空间中的几个数据包
包名
p1
p2
p3
p4
协议
pr6
pr6
pr6
pr6
目的地址
i3232235777
i168430081
i3232235777
i168430081
目的端口
pt80
pt80
pt80
pt80
状态
waitin
waitin
waitin
waitin
用 state( X, Y) 表示数据包 X 处于 Y 状态。图 1 中 , 防火墙
对外开放 80 端口 , 其规则表示为 : n1: state( X, accept) ←packet
( X) , state( X, waitin) , protocol( X, pr6) , destination_port( X, p80) ,
destination_IP( X, i3232235777) 。‘←’左边为规则头, 右边为规则
体。‘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) ←.//访 问
控制策略规则
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,
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 计算语义
已将防火墙安全策略表达为一个优先逻辑程序 , 要计算其
语义还需要将数据包空间作为输入 , 加入到优先逻辑程序中。
因为 , 防火墙根据配置的安全策略处理数据包 , 没有数据包作
为输入 , 无法理解安全策略的作用。
把所有数据包的集合 , 称为数据包空间。数据包空间是非
常大的 , 如果仅仅只考虑 6 个属性的数据包 , 其空间就有 28×
232×232×216×216×22=2106。所以 , 要依据规则具体情况 , 对数据包进
行一个划分。以例 1 为例 , 其 IP 被划分为 4 块 : i3232235777,
i168430081, i168432641, iother。iother 表示除前三个 IP 外的所
有 IP。同样对端口做类似的处理。这样 , 数据包空间就缩小为
28×22×22×3×3×22=9×214。表 2 中 , 展示了例 1 的数据包空间中的
几个数据。
其优先逻辑表达如下 :
packet( p1 ) . destination_port( p1 , pt80 ) . destination_IP( p1 ,
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) .
3.2.2 解释语义
关于优先逻辑程序的语义 , 已有研究成果。文[7]中定义了
优先逻辑程序的语义 , 文[9]给出计算语义的详细算法。其源码
和 实 验 系 统 在 网 址 : http: //www.cit.uws.edu.au/~yan/plps.html 可
以得到。
上面给出的网址中下载计算语义的软件 , 然后使用该软件
计算防火墙规则的语义。接下来 , 将语义解释为防火墙安全策
略。将表达数据包空间的优先逻辑程序与例 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 也被接受。从中可以看到 , 由于一阶逻辑的
易理解特性 , 很容易立即语义所表达的防火墙策略。
4 结论
发挥防火墙的作用 , 依赖于安全策略的正确配置。好比高
性能的 F1 跑车 , 需要优秀的驾驶员。但是 , 由于现代防火墙的
安全策略复杂、规则庞大 , 使得人工分析安全策略 , 检测其正确
性非常困难。本文给出了通过语义分析防火墙安全策略的方
法。在本文中 , 用逻辑程序设计的方法表达防火墙安全策略 , 先
将安全策略表示为一个优先逻辑程序 , 然后计算其的语义 , 通
过语义解释安全策略配置。由于逻辑程序具有表达知识和自动
推理的两大特点 , 因此 , 同其他研究方法相比较 , 此方法具有可
扩展、容易理解 , 自动计算无需用户操作的特点。
接下来 , 将研究通过语义比较不同防火墙安全策略的优
劣 , 给出评价防火墙安全策略的方法和标准。目前的工作 , 正在
着手建立一套实验系统。用一些真实的防火墙规则 , 测试计算
防火墙安全策略语义的效率问题和一致性问题。
( 收稿日期 : 2007 年 1 月)
参考文献:[1] Icove D, Seger K, VonStorch W.Computer crime[M].Sebastopol, Cal-
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
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-
sium( ILPS’97) .[S.l.]: MIT Press, 1997: 69- 83.
[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.
邓文俊 , 梁意文: 防火墙安全策略的语义分析方法 137