华为防火墙技术漫谈
上QQ阅读APP看书,第一时间看更新

1.4 安全区域

前面强叔和大家聊了防火墙的概念和发展历史,并为大家介绍了华为的防火墙产品,相信大家对防火墙已经有了一个初步的认识。从本节开始,强叔将为大家讲解防火墙的技术知识,继续探究防火墙的精彩世界。

1.4.1 接口、网络和安全区域的关系

在“什么是防火墙”一节中我们提到,防火墙主要部署在网络边界起到隔离的作用,那么在防火墙上如何来区分不同的网络呢?

为此,我们在防火墙上引入了一个重要的概念:安全区域(Security Zone),简称为区域(Zone)。安全区域是一个或多个接口的集合,防火墙通过安全区域来划分网络、标识报文流动的“路线”。一般来说,当报文在不同的安全区域之间流动时才会受到控制。

说明

默认情况下,报文在不同的安全区域之间流动时受到控制,报文在同一个安全区域内流动时不受控制。但华为防火墙也支持对同一个安全区域内流动的报文控制。这里所说的控制是通过“规则”也叫作“安全策略”来实现的,具体内容我们将在第2章《安全策略》中介绍。

我们都知道,防火墙通过接口来连接网络,将接口划分到安全区域后,通过接口就能把安全区域和网络关联起来。通常说某个安全区域,也可以表示该安全区域中接口所连接的网络。接口、网络和安全区域的关系如图1-9所示。

图1-9 接口、网络和安全区域的关系

注意

在华为防火墙上,一个接口只能加入到一个安全区域中。

通过把接口划分到不同的安全区域中,就可以在防火墙上划分出不同的网络。如图1-10所示,我们把接口1和接口2划分到安全区域A中,把接口3划分到安全区域B中,把接口4划分到安全区域C中,这样在防火墙上就存在三个安全区域,对应三个网络。

图1-10 将接口划分到安全区域

华为防火墙上已经默认为大家提供三个安全区域,分别是Trust、DMZ和Untrust。光从名字看就知道这三个安全区域很有内涵,下面强叔就为大家逐一介绍。

· Trust区域。该区域内网络的受信任程度高,通常用来定义内部用户所在的网络。

· DMZ区域。该区域内网络的受信任程度中等,通常用来定义内部服务器所在的网络。

· Untrust区域。该区域代表的是不受信任的网络,通常用来定义Internet等不安全的网络。

说明

DMZ(Demilitarized Zone)是一个军事术语,是介于严格的军事管制区和松散的公共区域之间的管制区域。防火墙引用了这一术语,指代一个受信任程度处于内部网络和外部网络之间的安全区域。

在网络数量较少、环境简单的场合,使用默认提供的安全区域就可以满足划分网络的需求。如图1-11所示,假设接口1和接口2连接的是内部用户,那我们就把这两个接口划分到Trust区域中;接口3连接的是内部服务器,将它划分到DMZ区域;接口4连接Internet,将它划分到Untrust区域。当然,在网络数量较多的场合,还可以根据需要创建新的安全区域。

图1-11 将接口划分到默认的安全区域

由此我们可以描述处于不同网络的用户互访时报文在防火墙上所走的路线。例如,当内部网络中的用户访问Internet时,报文在防火墙上的路线是从Trust区域到Untrust区域;当Internet上的用户访问内部服务器时,报文在防火墙上的路线是从Untrust区域到DMZ区域。

除了在不同网络之间流动的报文之外,还存在从某个网络到达防火墙本身的报文(例如我们登录到防火墙上进行配置),以及从防火墙本身发出的报文。如何在防火墙上标识这类报文的路线呢?

如图1-12所示,防火墙上提供Local区域,代表防火墙本身。凡是由防火墙主动发出的报文均可认为是从Local区域中发出,凡是需要防火墙响应并处理(而不是转发)的报文均可认为是由Local区域接收。

图1-12 Local安全区域

关于Local区域,强叔还要再提醒一句,Local区域中不能添加任何接口,但防火墙上所有接口本身都隐含属于Local区域。也就是说,报文通过接口去往某个网络时,目的安全区域是该接口所在的安全区域;报文通过接口到达防火墙本身时,目的安全区域是Local区域。这样既可以使每个接口连接的其他设备能够访问防火墙自身,也能更明确Local区域和各个安全区域的域间关系,可谓一举两得。

1.4.2 报文在安全区域之间流动的方向

前面介绍过,不同的网络受信任的程度不同,在防火墙上用安全区域来表示网络后,怎么来判断一个安全区域的受信任程度呢?在华为防火墙上,每个安全区域都必须有一个安全级别,该安全级别是唯一的,用1~100的数字表示,数字越大,则代表该区域内的网络越可信。对于默认的安全区域,它们的安全级别是固定的:Local区域的安全级别是100, Trust区域的安全级别是85, DMZ区域的安全级别是50, Untrust区域的安全级别是5。

级别确定之后,安全区域就被分成了三六九等,高低有别。报文在两个安全区域之间流动时,我们规定:报文从低级别的安全区域向高级别的安全区域流动时为入方向(Inbound),报文从由高级别的安全区域向低级别的安全区域流动时为出方向(Outbound)。图1-13标明了Local区域、Trust区域、DMZ区域和Untrust区域间的方向。

图1-13 报文在安全区域之间流动的方向

通过设置安全级别,防火墙上的各个安全区域之间有了等级明确的域间关系。不同的安全区域代表不同的网络,防火墙成为连接各个网络的节点。以此为基础,防火墙就可以对各个网络之间流动的报文实施管控。

防火墙如何判断报文在哪两个安全区域之间流动呢?首先,源安全区域很容易确定,防火墙从哪个接口接收到报文,该接口所属的安全区域就是报文的源安全区域。

确定目的安全区域时分两种情况。三层模式下,防火墙通过查找路由表确定报文将要从哪个接口发出,该接口所属的安全区域就是报文的目的安全区域;二层模式下,防火墙通过查找MAC地址转发表确定报文将要从哪个接口发出,该接口所属的安全区域就是报文的目的安全区域。源安全区域和目的安全区域确定后,就可以知道报文是在哪两个安全区域之间流动了。

另外还有一种情况,在VPN场景中,防火墙收到的是封装的报文,将报文解封装后得到原始报文,然后还是通过查找路由表来确定目的安全区域,报文将要从哪个接口发出,该接口所属的安全区域就是报文的目的安全区域。

而源安全区域不能简单地根据收到报文的接口来确定,此时防火墙会采用“反向查找路由表”的方式来确定原始报文的源安全区域。具体来说,防火墙会把原始报文中的源地址假设成是目的地址,然后通过查找路由表确定这个目的地址的报文将要从哪个接口发出,该接口所属的安全区域是报文将要去往的安全区域。反过来说,报文也就是从该安全区域发出的,所以反查路由表得到的这个安全区域就是报文的源安全区域。

确定报文的源和目的安全区域是我们精确地配置安全策略的前提条件,请大家一定要掌握判断报文的源和目的安全区域的方法,本书后面的章节中在配置安全策略的时候也会提到这一点。

1.4.3 安全区域的配置

安全区域的配置主要包括创建安全区域以及将接口加入安全区域,下面给出了创建一个新的安全区域test,然后将接口GE0/0/1加入该安全区域的过程。接口GE0/0/1可以工作在三层模式也可以工作在二层模式。

配置命令非常简单,唯一需要注意的是,新创建的安全区域是没有安全级别的,我们必须为其设置安全级别,然后才能将接口加入安全区域。当然,鉴于安全级别的唯一性,设置的安全级别不能和已经存在的安全区域的级别相同。

        [FW]firewall zone name test                       //创建安全区域test
        [FW-zone-test]set priority 10                       //将安全级别设置为10
        [FW-zone-test]add interface GigabitEthernet 0/0/1       //将接口GE0/0/1加入安全区域

前面我们介绍的都是将物理接口加入安全区域的内容,除了物理接口,防火墙还支持逻辑接口,如子接口、VLANIF接口等,这些逻辑接口在使用时也需要加入安全区域。下面给出了将子接口和VLANIF接口加入安全区域的示例。

如图1-14所示,PC A和PC B属于不同的子网,交换机上通过两个VLAN将PC A和PC B所属的子网隔离,交换机连接到防火墙的接口GE0/0/1上。对于防火墙来说,这种组网是典型的“单臂”环境。

图1-14 防火墙的一个接口连接多个子网

这种情况下,防火墙的一个接口连接了两个子网,如果想为这两个子网设定不同的安全级别,即需要将PC A和PC B划分到不同的安全区域。该如何配置呢?因为防火墙上一个接口只能加入到一个安全区域中,所以不能简单地把接口GE0/0/1加入到某个安全区域,此时可以通过子接口或VLANIF接口来实现这个需求。

先来看一下子接口的实现情况。我们在接口GE0/0/1下创建两个子接口GE0/0/1.10和GE0/0/1.20,分别对应VLAN 10和VLAN 20,然后将这两个子接口划分到不同的安全区域,而接口GE0/0/1不用加入安全区域,即可实现将PC A和PC B划分到不同安全区域的目的,如图1-15所示。

图1-15 将子接口划分到安全区域

其具体配置如下。

        [FW]interface GigabitEthernet 0/0/1.10
        [FW-GigabitEthernet0/0/1.10]vlan-type dot1q 10
        [FW-GigabitEthernet0/0/1.10]ip address 192.168.10.1 24
        [FW-GigabitEthernet0/0/1.10]quit
        [FW]interface GigabitEthernet 0/0/1.20
        [FW-GigabitEthernet0/0/1.20]vlan-type dot1q 20
        [FW-GigabitEthernet0/0/1.20]ip address 192.168.20.1 24
        [FW-GigabitEthernet0/0/1.20]quit
        [FW]firewall zone name trust1
        [FW-zone-trust1]set priority 10
        [FW-zone-trust1]add interface GigabitEthernet 0/0/1.10
        [FW-zone-trust1]quit
        [FW]firewall zone name trust2
        [FW-zone-trust2]set priority 20
        [FW-zone-trust2]add interface GigabitEthernet 0/0/1.20
        [FW-zone-trust2]quit

完成上述配置后,PC A被划分到Trust1安全区域,PC B被划分到Trust2安全区域,此时就可以对PC A访问PC B的报文进行控制。

接下来看一下VLANIF接口的实现情况。还是图1-14所示的组网环境,我们可以在防火墙上创建两个VLAN并为各自的VLANIF接口配置IP地址,然后配置接口GE0/0/1工作在二层模式(透明模式),允许VLAN 10和VLAN 20的报文通过。将VLANIF10和VLANIF20划分到不同的安全区域,而接口GE0/0/1不用加入安全区域,即可实现将PC A和PC B划分到不同安全区域的目的,如图1-16所示。

图1-16 将VLANIF接口划分到安全区域

其具体配置如下。

        [FW]vlan 10
        [FW-vlan-10]quit
        [FW]interface Vlanif 10
        [FW-Vlanif10]quit
        [FW]vlan 20
        [FW-vlan-20]quit
        [FW]interface Vlanif 20
        [FW-Vlanif20]quit
        [FW]interface GigabitEthernet 0/0/1
        [FW-GigabitEthernet0/0/1]portswitch
        [FW-GigabitEthernet0/0/1]port link-type trunk
        [FW-GigabitEthernet0/0/1]port trunk permit vlan 10 20
        [FW-GigabitEthernet0/0/1]quit
        [FW]firewall zone name trust1
        [FW-zone-trust1]set priority 10
        [FW-zone-trust1]add interface Vlanif 10
        [FW-zone-trust1]quit
        [FW]firewall zone name trust2
        [FW-zone-trust2]set priority 20
        [FW-zone-trust2]add interface Vlanif 20
        [FW-zone-trust2]quit

完成上述配置后,PC A被划分到Trust1安全区域,PC B被划分到Trust2安全区域,此时就可以对PC A访问PC B的报文进行控制。

上面介绍了子接口和VLANIF接口加入安全区域的例子,除了这两个逻辑接口之外,防火墙还支持其他逻辑接口,如GRE(Generic Routing Encapsulation,通用路由封装)中用到的Tunnel接口、L2TP(Layer Two Tunneling Protocol,二层隧道协议)中用到的Virtual-Template接口等,这些逻辑接口在使用时也需要加入安全区域,我们将在后面GRE和L2TP的相应章节中介绍。

到这里,安全区域的概念和配置就介绍完了。希望通过强叔的介绍,可以让大家了解安全区域的作用,掌握安全区域之间的关系,为后面进一步学习防火墙知识打好基础。