基于区域的防火墙配置
先决条件 - 基于区域的防火墙
基于区域的防火墙是一种高级的状态防火墙方法。在有状态防火墙中,为有状态数据库中受信任(私有)网络生成的流量维护一个包含源 IP 地址、目标 IP 地址、源端口号和目标端口号的条目。这将仅包括使用有状态数据库的私有(可信)网络的回复在内的流量。
基于区域的防火墙程序:
- 创建区域并为其分配接口 –
在基于区域的防火墙中,会创建逻辑区域。一个区域被分配给一个接口。默认情况下,不允许从一个区域到另一个区域的流量。 - 创建类图——
创建区域后,将制定一个类映射策略,该策略将识别将应用策略的流量类型,如 ICMP。 - 创建策略映射并将类映射分配给策略映射 –
在识别类映射中的流量类型后,我们必须定义必须对流量采取的操作。动作可以是:- 检查:与 CBAC 的检查相同,即只允许来自将被检查的外部网络的流量(返回内部(受信任)网络的流量。
- 丢弃:这是所有流量的默认操作。在策略映射中配置的类映射可以配置为丢弃不需要的流量。
- Pass:这将允许从一个区域到另一个区域的流量。与检查操作不同,它不会为流量创建会话状态。如果我们想允许来自相反方向的流量,则应创建相应的策略。
- 配置区域对并分配策略 –
区域对仅配置为一个方向。策略定义了哪些流量被识别(什么类型的流量)然后应该采取什么行动(检查被拒绝,允许)。然后我们必须将此策略应用于区域对。
配置:
如图所示,4台路由器相互连接,Router1的fa0/0接口的IP地址为10.1.1.1/24,Router2的fa0/0接口的IP地址为10.1.1.2/24,Router2的fa0/0接口的IP地址为10.1.2.1/24它的 fa0/1 接口和 fa1/0 接口上的 10.1.3.1/24,Router3 在其 fa0/1 接口上具有 IP 地址 10.1.2.2/24,Router4 在其 fa0/1 接口上具有 10.1.3.2/24。
首先,我们必须执行路由,以便路由器可以相互访问。
在 Router2 上配置 RIP:
Router2(config)#router rip
Router2(config-router)#network 10.1.1.0
Router2(config-router)#network 10.1.2.0
Router2(config-router)#network 10.1.3.0
Router2(config-router)#no auto-summary
现在,在 Router1 上给出默认路由:
Router1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.2
在 Router2 上提供默认路由
Router3(config)#ip route 0.0.0.0 0.0.0.0 10.1.2.1
在 Router4 上提供默认路由
Router4(config)#ip route 0.0.0.0 0.0.0.0 10.1.3.1
现在,我们必须在 RIP 中重新分配默认路由:
Router2(config)#router rip
Router2(config-router)#default-information originate
这些路由器将能够相互ping通。
现在,配置基于区域的防火墙。
在这种情况下,我们将只允许从内部区域到外部区域的 ICMP 流量和 telnet 流量。
为完成此任务,将采取以下步骤:
- 创建区域并将接口分配给区域 –
首先,我们必须为区域配置一个名称,然后将其应用于接口(此处为 Router2)。配置区域并将它们命名为内部、外部和 dmz。Router2(config)#zone security inside Router2(config-sec-zone)#exit Router2(config)#zone security outside Router2(config-sec-zone)#exit Router2(config)#zone security dmz Router2(config-sec-zone)#exit
现在,将区域应用于接口。
Router2(config)#interface fa0/0 Router2(config-if)#zone-member security inside Router2(config)#interface fa0/1 Router2(config-if)#zone-member security outside Router2(config)#interface fa1/0 Router2(config-if)#zone-member security dmz
将区域应用到接口后,路由器将无法相互 ping,因为默认情况下,从一个区域到另一个区域的流量将被丢弃(根据默认策略)。
- 创建一个类图——
将创建类映射以识别我们要执行操作的流量类型。
配置类映射,说明将对其执行检查的流量类型。Router2(config)#class-map type inspect match-any in-out Router2(config-cmap)#match protocol icmp Router2(config-cmap)#match protocol telnet
match-any 表示类映射中的任何语句匹配,即用于 telnet 或 ICMP。我们已经为类映射命名。
- 创建策略映射并将类映射应用于策略映射 –
将配置策略映射以提及将执行的操作(检查、删除或通过)。在我们的场景中,我们将使用检查,即只有在有状态数据库中有条目的情况下,流量才会从外部进入到内部区域(内部区域发起的流量回复)。Router2(config)#policy-map type inspect in-out Router2(config-pmap)#class in-out Router2(config-pmap-c)#inspect
在这里,我们配置了一个名为 input 的策略映射,并为其分配了一个类映射(命名为 in-out),并且将采取的操作是检查。
在这里,我们取了同名的类映射和策略映射。可以取不同的名字,但那样会很复杂。 - 创建区域对并将策略映射应用于区域对 -
创建指定源和目标区域的区域对,并将策略映射应用于区域对。Router2(config)#zone-pair security in-outpair source inside destination outside Router2(config-sec-zone-pair)#service-policy type inspect in-out
在这里,在第一个命令中,请注意 in-outpair 是 zone-pair 的名称,其中内部区域将是源,外部区域将是目标。
这意味着已经在从内部区域到外部区域的方向上定义了一个区域对。在第二个命令中,in-out 是策略映射的名称。
现在,内部区域将用于 ping 和 telnet 外部区域设备,但反之亦然,我们必须定义单独的区域对。另外,请注意,内部区域设备将能够到达外部区域设备,但不能到达 DMZ 区域,因为尚未为其定义区域对。