CN1545285A - 访问控制列表和安全策略数据库的方法 - Google Patents
访问控制列表和安全策略数据库的方法 Download PDFInfo
- Publication number
- CN1545285A CN1545285A CNA2003101035809A CN200310103580A CN1545285A CN 1545285 A CN1545285 A CN 1545285A CN A2003101035809 A CNA2003101035809 A CN A2003101035809A CN 200310103580 A CN200310103580 A CN 200310103580A CN 1545285 A CN1545285 A CN 1545285A
- Authority
- CN
- China
- Prior art keywords
- mask
- rule
- access control
- leaf
- acl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012360 testing method Methods 0.000 claims description 37
- 230000008878 coupling Effects 0.000 claims description 13
- 238000010168 coupling process Methods 0.000 claims description 13
- 238000005859 coupling reaction Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 8
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 230000009977 dual effect Effects 0.000 claims 1
- 239000002699 waste material Substances 0.000 abstract description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000004224 protection Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000005755 formation reaction Methods 0.000 description 3
- RZVAJINKPMORJF-UHFFFAOYSA-N Acetaminophen Chemical compound CC(=O)NC1=CC=C(O)C=C1 RZVAJINKPMORJF-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据通讯领域中访问控制列表和安全策略数据库的方法,包括:1.对访问控制列表或安全策略数据库的Radix树进行初始化;2.构造规则条目;3.将规则插入Radix树;4.重复第二步和第三步,将所有规则插入到Radix树中,形成整个访问控制列表或安全策略数据库;5.查询匹配的规则。本发明克服了现有技术中存在的无法自动对访问控制列表的规则条目进行排序,而必须人为控制、查询规则速度慢、系统资源浪费严重、效率低下等缺点,能够自动对规则进行排序、提高查询效率、节省系统资源。
Description
技术领域:
本发明涉及信息技术领域中的信息安全技术,具体的讲,涉及IP网络中实现访问控制列表或安全策略数据库的方法。
背景技术:
在计算机网络,如互联网Internet或企业内部互联网Intranet中,很多机构和企业都利用防火墙或者虚拟私有网络(Virtual Private Network-VPN)技术保护自身的私有网络,防止外部网络的恶意攻击,其中,作为最主要的一类防火墙,包过滤防火墙的安全性主要基于对包的IP地址和端口号的校验。事实上,在互联网上所有信息都是以包的形式传输的,信息包中包含了发送方和接收方的IP地址等信息。包过滤防火墙将所有通过的信息包中的发送方IP地址、接收方IP地址、上层协议、TCP(TransmissionControl Protocol,传输控制协议,传输层协议的一种)或UDP(UserDatagram Protocol,用户数据报协议,传输层协议的一种)端口、ICMP(Internet Control Message Protocol,互联网控制报文协议,用于控制IP协议)类型等信息读出,并按照预先设定的过滤规则(所有设定的过滤规则被称为访问控制列表,Access Control List-ACL)过滤信息包。那些不符合规定的信息包会被包过滤防火墙过滤掉,从而保证网络系统的安全。IP网络安全协议(即IPsec协议)用来对IP包提供机密性、完整性、抗重放攻击等保护,是VPN技术中的一种,在应用IPsec前,必须设置一些安全策略,即设定对那些IP包采取什么形式的保护。安全策略的选择逻辑通常包括源IP地址、目的IP地址、上层协议类型和端口号等。可以看出,访问控制列表和安全策略很类似,只是访问控制列表通常只有丢弃和通过两种操作,而安全策略除了这两种操作外,还有对IP包应用安全保护。
现有的大多数访问控制列表和安全策略方法都是以单向或双向链表的形式进行组织。以这种方式组织的软件或设备有RedHat Linux公司的防火墙软件ipchains和iptables、IPv6协议栈软件KAME中的IPsec安全策略管理、CISCO公司PIX防火墙的ACL。一般情况下,所有的规则都是按照一定的优先级排列成一个表,每个数据包会首先和第一条规则相比较,如果匹配,则按照策略的规定对数据包进行相应处理,否则继续与第二条规则比较,以此类推一直到表的最后。因此这种方式在进行规则匹配时效率比较低,特别是如果不能找到匹配项或者匹配规则处于表的最后,需要遍历整个表。由于进行包过滤或安全策略查询时,需要对每个IP包都进行这种查询操作,因此当表非常大,如规则达到几千条以上时,这种操作非常耗时,严重影响网络的吞吐率,事实上这种链表组织形式不适合大型规则表的情况。另外,这种表的另一个缺点是,优先次序需要人为控制,比如当某个IP包与一个包含有主机地址和一个网络地址的条目同时匹配时,可能需要把包含主机地址的条目排在前面,但当条目很多时,管理起来将非常困难。
中国专利申请02117607.8“自动按序配置访问控制列表规则的方法及其应用”提出了一种自动按序配置访问控制列表规则的方法。该方法根据系统设定的排序原则,自动计算出ACL规则位于ACL中的顺序位置,并将ACL规则按照计算出的顺序位置配置到ACL中。该专利提出的方法虽然解决了排序的问题,但必须在配置完所有规则后执行某个操作完成排序工作,并不是在加入时自动排序。
事实上,这种规则查找和路由查找有相似之处,只是路由查找只以目的IP地址进行查询,而规则查找还以源IP地址、协议类型、端口号等进行查询,查找的条件更多。路由查询的方法很多,如G.R.Wright和W.R.Stevens在1995年Addison-Wesley Publishing Company的″TCP/IPIllustrated,vol.2,″中介绍了Radix树这一特殊的二叉树,已经在Net/3、FreeBSD以及大多数高端路由器中用于组织路由表。Radix树法将查找的地址和树中的地址都看成比特序列,搜索过程从地址比特序列中最重要的位置开始,与树中结点逐个比特进行比较。一个对应比特的值指引搜索过程向左子树或者右子树进行搜索,重复此过程直到搜索到对应的路由条目。Sklower,K.1991.“A Tree-Based Packet Routing Table forBerkeley Unix”Proceedings of the 1991 Winter USENIX Conference,pp.93-99,Dallas,Tex.给出的Radix树方法和Net/1散列表的比较结构表明,用Radix树方法构造测试树比Net/1散列表快一倍,搜索速度快三倍。但是在控制列表访问中现有技术并未采用,对于安全策略的访问,虽然Linux操作系统中的IPsec实现软件FreeS/WAN使用了Radix树做为安全策略数据库的组织方式,但策略的选择逻辑只包含了源IP地址和目的IP地址,功能上不够完备。
发明内容:
本发明的目的是克服现有技术中存在的无法自动对访问控制列表的的规则条目进行排序、查询规则速度慢、系统资源浪费严重、效率低下等缺点,以期提出一种能够自动对规则进行排序、提高查询效率、节省系统资源的访问控制列表和安全策略数据库的方法。
为实现上述目的,本发明提出了一种访问控制列表和安全策略数据库的方法,其特征在于,包括以下步骤:
一、对访问控制列表或安全策略数据库的Radix树进行初始化;
1.确定Radix树中每个叶子键值的长度;
2.初始化规则Radix树,生成三个根结点;
3.初始化掩码Radix树,生成三个根结点;
二、构造规则条目
1.设置规则的源和目的IP地址、上层协议值、源和目的端口号,地址和端口均以网络字节排序;
2.设置规则的源和目的IP地址的掩码、上层协议的掩码、源和目的端口号的掩码,地址和端口的掩码也为网络序;
3.设置规则的处理方式,包括但不限于丢弃、允许通过或者安全保密处理;
4.将以上设置的各种数据组成一个完整的规则;
三、将规则插入Radix树
1.将规则和掩码的源和目的地址、上层协议以及端口号设置为一个连续的比特串,成为规则比特串和掩码比特串;
2.如果掩码比特串在掩码Radix树中不存在,则将新的掩码插入到掩码Radix树中;
3.将新规则插入到规则Radix树中,即向树中插入内部结点和叶子两个结点;
4.如果规则Radix树中已经存在和规则比特串相同的叶子,但掩码不同,则将这种称为重复键的规则也插到Radix树中;
四、重复第二步和第三步,将所有规则插入到Radix树中,形成整个访问控制列表或安全策略数据库;
五、查询匹配的规则
1.将IP包的源和目的IP地址、上层协议类型、TCP或UDP的源和目的端口或ICMP的类型和代码依照网络序提取出来,形成一个连续的比特串,称为查找键;
2.从Radix树的顶点开始,根据查找键的值向下搜索,如果查找键中在某个内部结点所设定的比特位的值是0,则沿左分支继续搜索,否则沿右分支继续搜索一直到某个叶子处停止;
3.比较查找键与叶子对应的比特串,如果叶子的键值相同则返回,否则继续;
4.将查找键包括地址、端口和上层协议的所有内容和叶子对应的掩码逐字节相与,得到的结果再和叶子的键值比较,如果相同则返回,否则继续;
5.沿树向上移动,每次移动一层,如果遇到的内部结点含有掩码,则对查找键和该掩码进行逻辑与运算,得到一个新键值,然后以这个键值做为新的查找键,在含该掩码的内部结点为顶点的子树中进行另一次查找,看是否能找到匹配的叶子,如果找不到,则回溯过程继续沿树上移,直到到达树的顶点;如果在整个回溯过程中都找不到匹配的叶子,则说明树中没有与该IP包匹配的规则。
采用本发明所述方法,与现有技术相比,解决了目前使用线性表组织的访问控制列表或安全策略数据库中存在的查询速度慢、必须人为对规则排序的缺点。每个规则的设置条件包括源和目的IP地址、上层协议、源和目的端口构成的五元组,并且端口也可设置范围。由于每次查找规则并不需要一条一条进行比较,而是根据IP包的条件直接搜索定位,因此平均查找时间和最坏条件下的查找时间相差很少。通过在CPU为1.8G,内存为1G的计算机上进行测试,当设置5000和1万条规则对数据进行过滤时,对吞吐量的影响很小。对于64字节的小包有一些影响,但对于512字节以上的包几乎没有影响。而使用以往的技术对吞吐率的影响非常大,相比较而言,本发明所述方法的优势十分明显。
附图说明:
图1是本发明所述方法的流程图。
图2是Radix路由表键值结构与本发明所述方法中Radix树键值结构对比图。
图3是某一条规则的组织结构图。
图4是包含有4条规则的Radix树示意图。
图5是增加规则的流程图。
图6是删除规则的流程图。
图7是初始化规则后Radix树示意图。
图8是增加规则1后的Radix树示意图。
图9是包含两条规则的访问控制策略图。
具体实施方式:
下面结合附图对技术方案的实施作进一步的详细描述:
本发明所提出的是一种基于Radix树实现访问控制列表或安全策略数据库的方法,每一个规则或策略的选择逻辑包括源和目的IP地址、上层协议类型、源和目的端口号,解决了现有技术中表的规模小、查找速度慢以及规则必须人为排序的问题。本发明中规则的IP地址可以是主机地址或网络地址,另外端口号可以是某个设定的值也可以是一段取值范围。
图2是Radix路由表使用的叶子的键值结构与本文规则Radix树中键值结构的对比图。可以看出路由表的键值只包括目的IP地址,而本文中的过滤规则的键值内容更丰富。其中长度设为17,族和类型可设为0,因为这两个值实际上没有使用。需要注意的的是键值的第一个比特记为第0比特,因此,源地址的第一个比特是第32比特。
图3是一条规则的组织结构。其中叶子结构和内部结点结构用于确定规则在Radix树中的位置;条件和条件掩码的结构如图1中下半部分所示的内容;而处理方式规定了对匹配这条规则的IP包的具体处理措施,如丢弃、允许通过、用密码算法保护等。
图4是包含有4条规则的Radix树示例。方角框表示内部结点,圆角框表示叶子。全0和全1的叶子以及顶点是初始化时加入的。其他4个叶子中的内容是设定的规则条件和条件的掩码。而除顶点以外的4个内部结点内部表示的值是指测试比特位置值。用来引导查询的方向。以标有50的内部结点举例,可以看出它下面的两个叶子正好是在第50比特的位置上不同(源地址的第一个比特的位置是32),左分支的为0(0-00000000二进制),右分支的为1(33-00110011二进制)。
图5是增加规则的流程图。在插入规则过程中,将规则中叶子的键值,也就是地址和端口等构成的比特串与树中与它最接近的叶子的键值相比,找到发生不同的比特位置,这个位置的值也是内部结点的测试比特值,通过这个值确定了叶子和内部结点在树中的位置。规则Radix树的掩码链表与Radix路由表的掩码链表类型,基本按连续1多的位于表的前面,少的位于后面的规律排列。掩码链表的功能是为回溯查询提供搜速方向。另外,内部结点的测试比特值与其掩码链表也有一定的关系,如果一个内部结点有掩码链表,那么它第一个掩码项的索引值取正减1后小于该结点的测试比特值,但又大于这个内部结点父结点的测试比特值。调整掩码链表遵循的就是这个规律。
图6是删除规则的流程图。其中调整掩码链表也遵循前面所说明的规律。另外,删除规则也就是将规则的叶子和内部结点从树中剥离下来。当删除某个叶子时,如果它的父结点(内部结点)不是与它一起插入的内部结点,即不属于同一个规则,还必须将当前父结点和与叶子一同插入的内部结点互换,然后再将叶子和一同插入的内部结点删除,这种情况会经常出现。
具体说来,本发明所述的访问控制列表和安全策略数据库的方法包括以下步骤:(如图1所示)
一、对访问控制列表或安全策略数据库的Radix树进行初始化;
1、确定Radix树中每个叶子键值的长度,一般情况下为源IP地址、目的IP地址、上层协议类型、源和目的端口号的长度总和,即17个字节。这里的叶子、内部结点、键值等术语与Radix路由表中对应术语的概念相同,使用的数据结构也相同,具体含义可参见″TCP/IP Illustrated,vol.2″中的有关内容;
2、初始化规则Radix树,生成三个根结点,其中顶点的测试比特位置值为32,因为源地址是从第32比特开始的,源地址的前面有4个字节的辅助信息。最左端叶子的键值为全0,最右端叶子的键值为全1;
3、初始化掩码Radix树,与规则Radix树类似,只是顶点的测试比特位置值为0。
二、构造规则条目
1、设置规则的源和目的IP地址、上层协议值、源和目的端口号,地址和端口都是以网络字节序,也就是big endian方式保存。如果协议是ICMP,源端口号和目的端口号变为类型和代码;
2、设置规则的源和目的IP地址的掩码、上层协议的掩码、源和目的端口号的掩码,地址和端口的掩码也是网络序。上层协议的掩码有两个值,一个为0,表示该规则忽略上层协议值,另一个为255,表示上层协议值必须是步骤1中设定的值。而端口的掩码可以有多种选择,但与IP地址的掩码类似,区别只是它是两个字节长,可选的值例如,0.0、255.255、255.192等,0表示忽略端口值;255.255表示端口值必须与步骤1中设定的相同;其他值与端口值配合,用来实现对端口范围的控制,例如步骤1中的源端口值设为64,掩码设为255.192,表示该规则用来限定源端口为64~127范围的数据包,其他情况在表1中说明;
3、设置规则的处理方式,如丢弃、允许通过或者一些安全保密处理,如加密和认证等;
4、将以上设置的各种数据组成一个完整的规则。
表1
序号 | 端口掩码的取值 | 掩码范围设置示例 | |||
十进制 | 十六进制 | 端口范围大小 | 范围 | 应设定的端口值 | |
1 | 255.254 | FFFE | 2 | 2~3 | 2 |
2 | 255.252 | FFFC | 4 | 8~11 | 8 |
3 | 255.248 | FFF8 | 8 | 32~39 | 32 |
4 | 255.240 | FFF0 | 16 | 64~79 | 64 |
5 | 255.224 | FFE0 | 32 | 32~63 | 32 |
6 | 255.192 | FFC0 | 64 | 128~192 | 128 |
7 | 255.128 | FF80 | 128 | 128~255 | 128 |
8 | 255.0 | FF00 | 256 | 0~255 | 0 |
9 | 254.0 | FE00 | 512 | 2048~2559 | 2048 |
10 | 252.0 | FC00 | 1024 | 16384~17407 | 16384 |
11 | 248.0 | F800 | 2048 | 2048~4095 | 2048 |
12 | 240.0 | F000 | 4096 | 4096~8191 | 4096 |
13 | 224.0 | E000 | 8192 | 8192~16383 | 8192 |
14 | 192.0 | C000 | 16384 | 32768~49151 | 32762 |
15 | 128.0 | 8000 | 32768 | 32768~65535 | 32768 |
三、将规则插入Radix树
1、将规则的源和目的地址、上层协议以及端口号看成一个连续的比特串,类似地,掩码也可以看成一个连续的比特串;
2、如果掩码比特串在掩码Radix树中不存在,则将新的掩码插入到掩码Radix树中,插入的过程在附图中说明;
3、将新规则插入到规则Radix树中,具体的说就是往树中插入了两个结点,一个是内部结点,一个是叶子。内部结点包含了查找时使用的比特位置值,而叶子则包含了规则的地址和掩码等信息;
4、如果规则Radix树中已经存在和规则比特串相同的叶子,但掩码不同,则将这种称为重复键的规则也插到Radix树中;
5、规则Radix树中还包含了一个掩码链表,在搜索发生回溯时使用。掩码链表被内部结点和叶子共同使用。因此由于树中插入了新的结点,因此这个掩码链表可能需要发生调整,如增加新的掩码项,如果不需要调整跳过这一步。
此步骤与一般的向RADIX路由表插入一条路由的过程类似,其中叶子的键值不只是简单的目的IP地址,还包括了源IP地址、上层协议、端口号。另外掩码也复杂一些,还会出现不连续的情况,例如:255.255.255.0255.255.255.0 0 255.255 255(这些值依次代表了源IP地址、目的IP地址、源端口、目的端口和上层协议的掩码),但掩码的索引值的计算方法路由表相同,即第一个0比特出现的位置值。
四、重复第二和三步骤,将所有规则插入到Radix树,形成整个访问控制列表或安全策略数据库,所有规则可以以任何顺序插入;
五、查询匹配的规则
1、将IP包的源和目的IP地址、上层协议类型、TCP或UDP的源和目的端口或ICMP的类型和代码按网络序提取出来,形成一个连续的比特串,称为查找键;
2、从树的顶点开始,根据查找键的值向下搜索,如果查找键中在某个内部结点所设定的比特位的值是0,则沿左分支继续搜索,否则沿右分支继续搜索一直到某个叶子处停止;
3、比较查找键与叶子对应的比特串,即叶子的键值是否完全相同,如果相同说明该IP包与该叶子对应的规则相匹配,即地址、上层协议以及掩码都和规则完全吻合,返回,否则继续;
4、将查找键包括地址、端口和上层协议的所有内容和叶子对应的掩码逐字节相与,得到的结果再和叶子的键值比较,如果相同说明找到了对应的规则,即IP包的地址属于规则设定的网络地址,或者端口属于设定的范围之内,返回,否则继续;
5、沿树向上移动,每次移动一层。如果遇到的内部结点含有掩码,则对查找键和该掩码进行逻辑与运算,得到一个新键值,然后以这个键值做为新的查找键,在含该掩码的内部结点为顶点的子树中进行另一次查找,看是否能找到匹配的叶子。如果找不到,则回溯过程继续沿树上移,直到到达树的顶点。如果在整个回溯过程中都找不到匹配的叶子,则说明树中没有与该IP包匹配的规则。
下面对于插入规则作一举例说明,假设需要插入两条规则,其具体数据如下:
源地址 目的地址 源端口 目的端口 协议处理方式
1. 192.168.1.1 192.168.2.0 0 23 17丢弃
255.255.25 5.255 255.255.255.0 0 255.255 255
2. 192.168.1.1 192.168.2.0 0 21 17加密
255.255.255.255 255.255.255.0 0 255.255 255
具体的插入步骤如下:
1.初始化规则Radix树,初始化后的树见附图6;
2.生成两条规则,规则中叶子和内部结点结构的值为空,规则条件及其掩码设成上面的数据,将规则条件等看成一个连续的比特串,类似地,所有掩码也视为一个比特串,比特串以big endian方式保存,例如192.168.1.1 192.168.2.0 0 23 17从低字节到高字节的十六进制为C0 A8 01 01 C0 A8 02 00 00 017 11;
3.插入规则1
1)因为该规则包含掩码,而且掩码Radix树为空,因此将该掩码插入树中,掩码的索引值为-89(掩码的第88比特为0,-88-1=-89);
2)从Radix树的顶点开始测试规则条件比特串,首先测试第32比特,也就是源地址的第1个比特,发现为1(192对应的二进制是11000000),因此沿树的右分支继续测试,但树的右分支为叶子,因此停止测试;
3)比较叶子的键值(全1)和规则比特串,可以发现它们在第34比特处不同(192的二进制为11000000,第32和33比特为1,34比特为0);
4)将规则中内部结点的测试比特值置为34,叶子的键值和掩码置为条件比特串和掩码比特串,并将叶子和内部结点插入树中,内部结点位于顶点的右分支,规则的叶子是内部结点的左分支,因为它在第34比特为0,而全1的叶子变成了内部结点的右分支,
5)由于34小于88(掩码索引取正值并减1),因此不需要增加掩码项,增加规则1后的Radix树参见附图7;
4.插入规则2
1)规则2也包含掩码,而且和规则1相同,经过在掩码Radix树中查询发现,该掩码已经存在,因此插入掩码的步骤跳过,掩码索引值仍为-89;
2)从Radix树的顶点开始测试规则条件比特串,首先测试第32比特,发现为1,因此沿树的右分支继续测试,第二次测试第34比特,发现为0,沿左分支继续测试,由于左分支为叶子,停止测试;
3)比较叶子的键值(规则1的条件)和规则比特串,可以发现它们在第118比特处不同(23的二进制为00010111,21的二进制为00010101,21的第118比特为0,23的为1);
4)将规则中内部结点的测试比特值置为118,叶子的键值和掩码置为条件比特串和掩码比特串,并将两者插入树中,内部结点位于测试比特值是34的内部结点的左分支,叶子是内部结点的左分支,因为它在第118比特为0,规则1的叶子变成了内部结点的右分支;
5)由于内部结点测试比特值为118,大于88(掩码索引取正值并减1),因此需要向掩码链表增加新的掩码项,掩码项的掩码就是规则2的掩码,并且内部结点和叶子都指向这个掩码项,增加规则2后的Radix树参见附图8。
对于查询规则,下面再进行进一步的举例说明,以前面示例中包含两条规则的访问控制策略表(参见附图8),针对以下条件的数据包进行规则查询:
源地址 目的地址 源端口 目的端口 协议
1. 192.168.1.1 192.168.2.1 1000 23 17
2. 192.168.1.1 192.168.2.2 2000 21 17
3. 192.168.1.1 192.168.2.3 3000 23 6
具体的查询步骤如下:
1、IP包的源和目的IP地址、上层协议类型、源和目的端口或按网络序提取出来,形成一个连续的比特串,即查找键;
2、针对IP包1查询规则
1)从Radix树的顶点开始对由IP包1形成查找键进行测试,首先测试第32比特,发现为1,沿右分支继续测试,接着测试第118比特,发现为1,也沿右分支继续测试,然而当前这个右分支是叶子,所以停止向下搜索;
2)从源地址的第一个字节开始,比较叶子的键值和查找键,发现目的地址的最后一个字节不同,说明没有完全匹配的规则,需要继续查询;
3)将叶子的掩码与查找键相与,相与的结果是:192.168.1.1192.168.2.0 0 23 17,再次比较这个比特串和键值,结果完全相同,说明已找到匹配的规则,该规则为之前插入的规则2。
3.针对IP包2查询规则
查询的过程与IP包1基本类似,IP包2查找到的规则是之前插入的规则1。
4.针对IP包3查询规则
1)从Radix树的顶点开始对由IP包2形成查找键进行测试,首先测试第32比特,发现为1,沿右分支继续测试,接着测试第118比特,发现为1,也沿右分支继续测试,然而当前这个右分支是叶子,所以停止向下搜索;
2)从源地址的第一个字节开始,比较叶子的键值和查找键,发现目的地址的最后一个字节不同,说明没有完全匹配的规则,需要继续查询;
3)将叶子的掩码与查找键相与,相与的结果是:192.168.1.1192.168.2.0 0 23 6,再次比较这个比特串和键值,结果在最后一个字节发现两者不同,因此需要沿树向上回溯查询;
4)首先向上回溯到测试比特为118的内部结点,并发现这个内部结点指向的掩码链表不为空,因此将掩码项中的掩码(也就是规则1和2的掩码)与查找键从步骤2中发现不同的字节开始相与,得到的是0 0 236,以这个比特串为新的查找键,以内部结点为树的顶点再次搜索;
5)首先测试第118比特,发现为1,找到右分支,再次与叶子比较,但叶子对应的值是0 0 23 17,不同,另外,内部结点118指向的掩码项只有一个,因此在该内部结点的回溯结束;
6)在向上回溯到测试比特值为34的内部结点,但该内部结点没有掩码链表,所以继续向上回溯一层,可已经到达树的顶点,并且顶点也没有掩码链表,所以查找结束,说明没有对应的规则。
Claims (14)
1、一种访问控制列表和安全策略数据库的方法,其特征在于,包括以下步骤:
第一步:对访问控制列表或安全策略数据库的Radix树进行初始化;
第二步:构造规则条目;
第三步:将规则插入Radix树;
第四步:重复第二步和第三步,将所有规则插入到Radix树中,形成整个访问控制列表或安全策略数据库;
第五步:查询匹配的规则。
2、根据权利要求1所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的第一步进一步包括以下步骤:
(1)确定Radix树中每个叶子键值的长度;
(2)初始化规则Radix树,生成三个根结点;
(3)初始化掩码Radix树,生成三个根结点。
3、根据权利要求2所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(1)中叶子键值长度为源IP地址、目的IP地址、上层协议类型、源和目的端口号的长度总和,即17个字节。
4、根据权利要求2所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(2)三个根节点中,最左端叶子的键值为全0,最右端叶子的键值为全1。
5、根据权利要求2所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(3)中的三个根节点顶点的测试比特位置值为0。
6、根据权利要求1所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的第二步进一步包括以下步骤:
(1)设置规则的源和目的IP地址、上层协议值、源和目的端口号,地址和端口均以网络字节排序;
(2)设置规则的源和目的IP地址的掩码、上层协议的掩码、源和目的端口号的掩码,地址和端口的掩码即为网络序;
(3)设置规则的处理方式,包括但不限于丢弃、允许通过或者安全保密处理;
(4)将以上设置的各种数据组成一个完整的规则。
7、根据权利要求6所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(1)中,如果规则采用的协议是ICMP协议,则源端口号和目的端口号相应更改为类型和代码。
8、根据权利要求6所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(2)中,上层协议的掩码有两个值,一个为0,表示该规则忽略上层协议值,另一个为255,表示上层协议值必须是步骤(1)中设定的值。
9、根据权利要求6所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(3)中的安全保密处理包括加密和认证两种方式。
10、根据权利要求1所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的第三步进一步包括以下步骤:
(1)将规则和掩码的源和目的地址、上层协议以及端口号设置为一个连续的比特串,成为规则比特串和掩码比特串;
(2)如果掩码比特串在掩码Radix树中不存在,则将新的掩码插入到掩码Radix树中;
(3)将新规则插入到规则Radix树中,即向树中插入内部结点和叶子两个结点;
(4)如果规则Radix树中已经存在和规则比特串相同的叶子,但掩码不同,则将这种称为重复键的规则也插到Radix树中。
11、根据权利要求10所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的步骤(3)中的内部结点包含查找时使用的比特位置值,叶子包含规则的地址和掩码信息。
12、根据权利要求10所述的访问控制列表和安全策略数据库的方法,其特征在于,如增加新的掩码项,则还需要在规则Radix树中包含一个掩码链表,在搜索发生回溯时使用。
13、根据权利要求1所述的访问控制列表和安全策略数据库的方法,其特征在于,所述第四步中,所有规则可以以任何顺序插入。
14、根据权利要求1所述的访问控制列表和安全策略数据库的方法,其特征在于,所述的第五步进一步包括以下步骤:
(1)将IP包的源和目的IP地址、上层协议类型、TCP或UDP的源和目的端口或ICMP的类型和代码依照网络序提取出来,形成一个连续的比特串,称为查找键;
(2)从Radix树的顶点开始,根据查找键的值向下搜索,如果查找键中在某个内部结点所设定的比特位的值是0,则沿左分支继续搜索,否则沿右分支继续搜索一直到某个叶子处停止;
(3)比较查找键与叶子对应的比特串,如果叶子的键值相同则返回,否则继续;
(4)将查找键包括地址、端口和上层协议的所有内容和叶子对应的掩码逐字节相与,得到的结果再和叶子的键值比较,如果相同则返回,否则继续;
(5)沿树向上移动,每次移动一层,如果遇到的内部结点含有掩码,则对查找键和该掩码进行逻辑与运算,得到一个新键值,然后以这个键值做为新的查找键,在含该掩码的内部结点为顶点的子树中进行另一次查找,看是否能找到匹配的叶子,如果找不到,则回溯过程继续沿树上移,直到到达树的顶点;如果在整个回溯过程中都找不到匹配的叶子,则说明树中没有与该IP包匹配的规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101035809A CN100417150C (zh) | 2003-11-11 | 2003-11-11 | 访问控制列表和安全策略数据库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101035809A CN100417150C (zh) | 2003-11-11 | 2003-11-11 | 访问控制列表和安全策略数据库的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1545285A true CN1545285A (zh) | 2004-11-10 |
CN100417150C CN100417150C (zh) | 2008-09-03 |
Family
ID=34333323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101035809A Expired - Lifetime CN100417150C (zh) | 2003-11-11 | 2003-11-11 | 访问控制列表和安全策略数据库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100417150C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100393071C (zh) * | 2005-06-30 | 2008-06-04 | 杭州华三通信技术有限公司 | 配置访问控制列表的方法及其应用 |
CN100433009C (zh) * | 2005-11-24 | 2008-11-12 | 华为技术有限公司 | 静态范围匹配表的管理维护方法 |
CN1897564B (zh) * | 2005-07-11 | 2010-04-14 | 中兴通讯股份有限公司 | 基于递归流分类算法的策略路由匹配方法 |
CN1859384B (zh) * | 2005-12-29 | 2011-02-02 | 华为技术有限公司 | 控制用户报文通过网络隔离设备的方法 |
CN101515874B (zh) * | 2008-02-21 | 2011-07-27 | 卓望数码技术(深圳)有限公司 | 网络服务器的访问控制方法及控制系统 |
CN101091369B (zh) * | 2004-12-22 | 2012-11-14 | 艾利森电话股份有限公司 | 用于控制个人数据的装置和方法 |
CN104361296A (zh) * | 2014-11-14 | 2015-02-18 | 武汉烽火网络有限责任公司 | 一种并行的大容量访问控制列表的查找方法 |
CN105187436A (zh) * | 2015-09-25 | 2015-12-23 | 中国航天科工集团第二研究院七〇六所 | 一种基于散列表的包过滤主机网络控制方法 |
CN109587117A (zh) * | 2018-11-09 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 一种全网udp端口扫描的防重放攻击方法 |
CN109617927A (zh) * | 2019-01-30 | 2019-04-12 | 新华三信息安全技术有限公司 | 一种匹配安全策略的方法及装置 |
CN116132187A (zh) * | 2023-02-23 | 2023-05-16 | 北京京航计算通讯研究所 | 一种数据包过滤方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860011A (en) * | 1996-02-29 | 1999-01-12 | Parasoft Corporation | Method and system for automatically checking computer source code quality based on rules |
US6493706B1 (en) * | 1999-10-26 | 2002-12-10 | Cisco Technology, Inc. | Arrangement for enhancing weighted element searches in dynamically balanced trees |
JP3591426B2 (ja) * | 2000-05-30 | 2004-11-17 | 日本電信電話株式会社 | プレフィックスを含む複数アドレスによる連想情報探索方法及び装置 |
WO2003001318A2 (en) * | 2001-06-26 | 2003-01-03 | Allot Communications Ltd. | Method for filter selection and array matching |
-
2003
- 2003-11-11 CN CNB2003101035809A patent/CN100417150C/zh not_active Expired - Lifetime
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101091369B (zh) * | 2004-12-22 | 2012-11-14 | 艾利森电话股份有限公司 | 用于控制个人数据的装置和方法 |
CN100393071C (zh) * | 2005-06-30 | 2008-06-04 | 杭州华三通信技术有限公司 | 配置访问控制列表的方法及其应用 |
CN1897564B (zh) * | 2005-07-11 | 2010-04-14 | 中兴通讯股份有限公司 | 基于递归流分类算法的策略路由匹配方法 |
CN100433009C (zh) * | 2005-11-24 | 2008-11-12 | 华为技术有限公司 | 静态范围匹配表的管理维护方法 |
CN1859384B (zh) * | 2005-12-29 | 2011-02-02 | 华为技术有限公司 | 控制用户报文通过网络隔离设备的方法 |
CN101515874B (zh) * | 2008-02-21 | 2011-07-27 | 卓望数码技术(深圳)有限公司 | 网络服务器的访问控制方法及控制系统 |
CN104361296B (zh) * | 2014-11-14 | 2017-03-15 | 武汉烽火网络有限责任公司 | 一种并行的大容量访问控制列表的查找方法 |
CN104361296A (zh) * | 2014-11-14 | 2015-02-18 | 武汉烽火网络有限责任公司 | 一种并行的大容量访问控制列表的查找方法 |
CN105187436A (zh) * | 2015-09-25 | 2015-12-23 | 中国航天科工集团第二研究院七〇六所 | 一种基于散列表的包过滤主机网络控制方法 |
CN105187436B (zh) * | 2015-09-25 | 2019-03-08 | 中国航天科工集团第二研究院七〇六所 | 一种基于散列表的包过滤主机网络控制方法 |
CN109587117A (zh) * | 2018-11-09 | 2019-04-05 | 杭州安恒信息技术股份有限公司 | 一种全网udp端口扫描的防重放攻击方法 |
CN109587117B (zh) * | 2018-11-09 | 2021-03-30 | 杭州安恒信息技术股份有限公司 | 一种全网udp端口扫描的防重放攻击方法 |
CN109617927A (zh) * | 2019-01-30 | 2019-04-12 | 新华三信息安全技术有限公司 | 一种匹配安全策略的方法及装置 |
CN109617927B (zh) * | 2019-01-30 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种匹配安全策略的方法及装置 |
CN116132187A (zh) * | 2023-02-23 | 2023-05-16 | 北京京航计算通讯研究所 | 一种数据包过滤方法及系统 |
CN116132187B (zh) * | 2023-02-23 | 2024-05-14 | 北京京航计算通讯研究所 | 一种数据包过滤方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100417150C (zh) | 2008-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101345759B (zh) | 关联存储器中的因特网协议安全性匹配值 | |
US7389532B2 (en) | Method for indexing a plurality of policy filters | |
US8397285B2 (en) | Multi-pattern packet content inspection mechanisms employing tagged values | |
CN1195279C (zh) | 对软件管理树进行模式范围比较的方法、装置和系统 | |
CN1545285A (zh) | 访问控制列表和安全策略数据库的方法 | |
US7957387B2 (en) | Packet classification | |
US10229139B2 (en) | Incremental update heuristics | |
US20130036102A1 (en) | Incremental update | |
US20140279850A1 (en) | Batch incremental update | |
US7251651B2 (en) | Packet classification | |
US20130218853A1 (en) | Rule Modification in Decision Trees | |
CN1317119A (zh) | 控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法 | |
CN101035062A (zh) | 一种三重内容可寻址存储器报文分类的规则更新方法 | |
CN101060521A (zh) | 信息包过滤方法及网络防火墙 | |
CN101030947A (zh) | 一种报文发送的方法和装置 | |
CN1913527A (zh) | 处理过滤规则的装置和方法 | |
CN1543150A (zh) | 分组分类装置和使用字段级特里结构的方法 | |
CN1863142A (zh) | 给数据流提供不同的服务质量策略的方法 | |
CN101047649A (zh) | 一种转发数据流的方法和设备 | |
CN1750538A (zh) | 基于p2p高速下载软件产生流量的发现及控制方法 | |
CN1874218A (zh) | 一种许可证管理方法、系统及装置 | |
CN1946060A (zh) | 实现重定向报文正确转发的方法及第一部件、第二部件 | |
WO2023019876A1 (zh) | 基于智能决策的数据传输方法、装置、设备及存储介质 | |
CN1604564A (zh) | 基于策略树的报文分组过滤及管理方法 | |
CN1529473A (zh) | 实现IPsec标准中不同安全终点的安全联盟嵌套方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080903 |