第2章 安全策略
2.1 安全策略初体验
我们在上一章中多次提到了“规则”。规则是实施安全控制的“安检员”,它在防火墙转发报文的过程中扮演着重要角色,只有规则允许通过,报文才能在安全区域之间流动,否则报文将被丢弃。
规则在防火墙上的具体体现就是“安全策略”。安全策略涵盖的内容很多,实现原理也比较复杂,本章我们就来对安全策略进行详细介绍。
2.1.1 基本概念
首先我们从一个简单的网络环境讲起,如图2-1所示,PC和Web服务器位于不同的网络,分别与防火墙相连,PC属于Trust安全区域,Web服务器属于Untrust安全区域。
图2-1 PC访问Web服务器组网示意
如果想在防火墙上允许PC访问Web服务器,用文字的形式来描述这个需求就是:允许Trust安全区域到Untrust安全区域的、源地址是192.168.0.1、目的地址是172.16.0.1、目的端口是80(HTTP协议)的报文通过。
我们把这段文字描述改用安全策略的方式来表示,同时补充隐含的源端口信息,结果如图2-2所示。
图2-2 PC访问Web服务器的安全策略
从图2-2可知,安全策略基于安全区域的域间关系来呈现,其内容包括两个组成部分。
· 条件。检查报文的依据,防火墙将报文中携带的信息与条件逐一对比,以此来判断报文是否匹配。
· 动作。对匹配了条件的报文执行的动作,包括允许通过(permit)或拒绝通过(deny),一条策略中只能有一个动作。
这里还要特意说明一下安全策略中的条件,可分为多个字段,如源地址、目的地址、源端口、目的端口等,这些字段之间是“与”的关系,也就是说,只有报文中的信息和所有字段都匹配上,才算是命中了这条策略。如果同一个字段中有多个匹配项,如同时有两个源地址或三个目的地址,那么这些匹配项之间是“或”的关系,只要报文匹配了其中的一项,就算匹配了该条件。
安全策略配置完成后,PC就可以访问Web服务器了。Web服务器回应给PC的报文,会匹配会话转发,不需要再配置额外的安全策略,这一点我们在1.5节“状态检测和会话机制”中已经介绍过了。
在实际的网络环境中,不仅仅只有PC和Web服务器这两个特定目标之间通信,通常是两个网络之间的通信,如192.168.0.0/24网段访问172.16.0.0/24网段。所以我们会把安全策略的条件配置成一个网段,如允许Trust安全区域到Untrust安全区域的、源地址是192.168.0.0/24网段、目的地址是172.16.0.0/24网段的报文通过。此时如果有新的需求,不想让192.168.0.0/24网段中的特定地址192.168.0.100访问172.16.0.0/24网段,该如何配置呢?
我们可以再配置一条新的安全策略,拒绝Trust安全区域到Untrust安全区域的、源地址是192.168.0.100的报文通过。看到这里大家可能会有疑问,这两条安全策略中的条件都有源地址192.168.0.100,也就是说,192.168.0.100发出的报文,既可以命中第一条安全策略,也可以命中第二条安全策略,但是两条安全策略的动作却是冲突的,防火墙处理报文时应该以哪条安全策略的动作为准呢?
下面我们就来讲解安全策略之间的匹配顺序。
2.1.2 匹配顺序
安全策略之间是存在顺序的,防火墙在两个安全区域之间转发报文时,会按照从上到下的顺序逐条查找域间存在的安全策略。如果报文命中了某一条安全策略,就会执行该安全策略中的动作,或允许通过或拒绝通过,不会再继续向下查找;如果报文没有命中某条安全策略,则会向下继续查找。
基于上述实现方式,我们在配置安全策略时要遵循“先精细,后粗犷”的原则。具体来说,就是先配置匹配范围小、条件精确的安全策略,然后再配置匹配范围大、条件宽泛的安全策略。相信大家都配置过ACL规则,安全策略的配置和ACL规则是一个道理。
以上面我们说到的情况为例,如图2-3所示,我们要先配置第一条安全策略:拒绝Trust安全区域到Untrust安全区域的、源地址是192.168.0.100的报文通过;然后再配置第二条安全策略:允许Trust安全区域到Untrust安全区域的、源地址是192.168.0.0/24网段、目的地址是172.16.0.0/24网段的报文通过。
图2-3 安全策略的匹配顺序
防火墙在查找安全策略时,源地址是192.168.0.100的报文会首先命中第一条策略,然后执行拒绝通过的动作,而192.168.0.0/24网段的其他报文会命中第二条策略,执行允许通过的动作。如果我们把两条安全策略的顺序调换,源地址是192.168.0.100的报文就永远不会命中动作为拒绝通过的那条策略,我们的目的也就没有达到。
到这里大家可能又有问题了,如果查找安全策略时,所有的安全策略都没有命中,防火墙该如何处理呢?针对这种情况,防火墙提供了“缺省包过滤”功能。
2.1.3 缺省包过滤
缺省包过滤本质上也是一种安全策略,也可以叫作缺省的安全策略。缺省包过滤中没有具体的条件,它对所有的报文均生效,它的动作也是分为允许通过或拒绝通过两种。需要注意的是,缺省包过滤只是一种叫法,一直以来华为防火墙都沿用了这样的叫法,和第一代包过滤防火墙是没有关系的。
缺省包过滤的条件最宽泛,所有的报文都可以匹配上,所以防火墙把缺省包过滤作为处理报文的最后手段。如图2-4所示,报文如果没有命中任何一条安全策略,最后将会命中缺省包过滤,防火墙将会对报文执行缺省包过滤中配置的动作。
图2-4 安全策略和缺省包过滤
默认情况下,缺省包过滤的动作是拒绝通过,也就是说,如果没有配置任何安全策略,防火墙是不允许报文在安全区域之间流动的。有时候为了简化配置,大家会把两个安全区域之间缺省包过滤的动作设置成允许通过。这样操作确实省时省事,但是会带来极大的安全风险,允许所有报文通过,网络隔离和访问控制都无法实现,防火墙也就失去了存在的意义。所以我们建议不要轻易将缺省包过滤的动作设置成允许通过,而是通过配置条件精确的安全策略来控制报文的转发。
上面说的安全策略都是针对报文在两个安全区域之间流动的情况。华为防火墙对于安全区域之内流动的报文能进行控制吗?当然可以。默认情况下,报文在安全区域之内流动是不受安全策略控制的,报文可以自由通行。华为防火墙也支持安全区域内的安全策略,我们可以配置安全策略来限制某些特定的报文通过,灵活应对各种组网环境,满足特殊场景的需求。
另外还有一点需要特别说明,当防火墙的接口工作在二层模式(透明模式)时,经过防火墙的报文也会受到安全策略的控制,所以这种情况下也需要配置相应的安全策略对报文进行管控。
除了经过防火墙转发的报文,防火墙本身与外界交互的报文也同样受安全策略的控制,产生这一类报文的业务包括管理员登录防火墙、防火墙与其他设备建立VPN等。针对这些业务配置安全策略,安全策略中的条件也各不相同,我们将在2.4节“Local区域的安全策略”中为大家详细介绍。
通过强叔的介绍,相信大家对安全策略已经有了初步的了解。任何事物都不是一成不变的,华为防火墙上的安全策略也在与时俱进,不断发展,下一节我们就为大家讲解华为防火墙安全策略的发展历程。