附录:什么是安全策略异常?
我们知道,安全策略主要由匹配条件和动作两部分组成。要分析安全策略的异常情况,首先要看匹配条件的关系,其次看动作是否相同。假设有两个安全策略Policy 1和Policy 2,Policy 1在Policy 2之前。安全策略的异常情况如表1 安全策略的异常情况分析所示。
匹配条件的关系 |
动作 |
异常分析 |
---|---|---|
Policy 1包含Policy 2 |
相同 |
冗余异常,Policy 2永远也不能命中。删除Policy 2。 |
不同 |
屏蔽异常,Policy 2永远也不能命中。 根据业务需求分析Policy 2的必要性,删除Policy 2或者调整Policy 2到Policy 1之前。 |
|
Policy 2包含Policy 1 |
相同 |
冗余异常,Policy 1冗余。删除Policy 1。 |
不同 |
归纳异常,根据业务需求分析Policy 1的必要性,删除Policy 1或保持现状。 |
|
Policy 1和Policy 2存在交叉 |
相同 |
冗余异常,交叉部分冗余,可以合并Policy 1和Policy 2。 |
不同 |
关联异常,交叉部分的处理动作将按照Policy 1处理。 分析Policy 1和Policy 2的交叉部分业务需求,确定适用的安全策略并调整配置。 |
|
Policy 1和Policy 2不相关 |
相同 |
无异常,不需要处理。 |
不同 |
无异常,不需要处理。 |
屏蔽异常
当Policy 1的匹配条件包含了Policy 2的匹配条件,且动作不同时,即为屏蔽异常。所有可能命中Policy 2的报文已经命中了Policy 1,因此Policy 2永远也不会命中,它就是影子策略。
示例:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.1-10.1.1.100 |
10.2.1.1-10.2.1.10 |
telnet ftp |
permit |
102 |
Policy 2 |
trust |
dmz |
10.1.1.10 |
10.2.1.10 |
telnet |
deny |
请结合业务需求分析Policy 2是否合理(符合条件的报文是否应该被阻断)。如果Policy 2本身是合理的,请调整Policy 2到Policy 1之前。否则请删除Policy 2。
当Policy 1和Policy 2的匹配条件完全相同时,请根据业务需求删除Policy 1或Policy 2。
关联异常
当Policy 1包含Policy 2的部分匹配条件,Policy 2也包含Policy 1的部分匹配条件时,我们称这两条安全策略具有交叉关系。当它们的动作不同时,即为关联异常。你需要结合业务需求,确认两条安全策略的匹配条件交叉的部分应该如何处理(Permit / Deny)。
示例:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.10 |
10.2.1.1-10.2.1.10 |
telnet |
deny |
102 |
Policy 2 |
trust |
dmz |
10.1.1.1-10.1.1.10 |
10.2.1.1 |
telnet |
permit |
如上例,从10.1.1.10访问10.2.1.1的Telnet业务将命中Policy 1,被阻断。如果调整两条安全策略的顺序,上述业务将被允许。建议调整两条安全策略的匹配条件,使之取消关联。
如果上述Telnet业务需要阻断:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.10 |
10.2.1.1-10.2.1.10 |
telnet |
deny |
102 |
Policy 2 |
trust |
dmz |
10.1.1.1-10.1.1.9 |
10.2.1.1 |
telnet |
permit |
如果上述Telnet业务需要放行:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.10 |
10.2.1.2-10.2.1.10 |
telnet |
deny |
102 |
Policy 2 |
trust |
dmz |
10.1.1.1-10.1.1.10 |
10.2.1.1 |
telnet |
permit |
冗余异常
当两条安全策略的匹配条件有重叠(包含关系或者交叉关系),且动作相同时,即为冗余异常。冗余异常不会影响安全策略匹配的结果,但是会增加安全策略列表的长度,进而影响匹配速度和防火墙的性能。此外,冗余策略也会增加管理工作的复杂度。
示例:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.1-10.1.1.100 |
10.2.1.1-10.2.1.10 |
telnet ftp |
permit |
102 |
Policy 2 |
trust |
dmz |
10.1.1.1-10.1.1.100 |
10.2.1.10 |
telnet |
permit |
如上例所示,当Policy 1的匹配条件包含Policy 2时,Policy 2即为冗余策略,可以删除Policy 2。反之删除Policy 1。
当Policy 1和Policy 2的匹配条件完全相同时,删除Policy 1或Policy 2均可。
当Policy 1和Policy 2的匹配条件存在交叉时,可以从任意策略中删除交叉部分的匹配条件,或者合并这两条策略。
归纳异常
当Policy 2的匹配条件包含Policy 1时,我们认为Policy 2归纳了Policy 1。如果它们的动作不同,则为归纳异常。如果交换两条安全策略的顺序,则为屏蔽异常。
示例:
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Policy 1 |
trust |
dmz |
10.1.1.10 |
10.2.1.10 |
telnet |
deny |
102 |
Policy 2 |
trust |
dmz |
10.1.1.1-10.1.1.100 |
10.2.1.1-10.2.1.10 |
telnet ftp |
permit |
在一条安全策略之前插入一个特定的例外策略是常见的,因此归纳异常很可能是正常的。建议结合业务需求,重点分析Policy 1是否Policy 2的合理例外。