
很多新手认为防火墙与路由器和交换机是没有什么区别的!答案是错误的!
工作原理的本质上来说,路由器与交换机的本质是转发,而防火墙的本质是控制!

什么是Firewall?

墙:始于防、忠于守,自古至今,墙这个词给予人安全之意!
防火墙,顾名思义,阻挡的是火,这一词语源于建筑领域,其作用是隔离火灾,阻止火势从灾区蔓延到另一个区域!而在通信领域中,防火墙也形象的体现出这一点,用通讯的领域来定义,就是用于保护一个网络免受来自另一个网络的攻击和入侵行为!
防火墙有硬软之分,而在实际生产环境中,通常会用到硬件防火墙,并灵活的应用于网络边界,子网隔离等位置,如企业网络的出口,大型网络内部的子网隔离以及数据中心边界等....
软件防火墙举例:
企业中,软件防火墙只能保护单台计算机,而保护局域网中所有的客户端就显得力不从心!
例如图片中的360软件的流量防火墙。

例如,微软的Windows 10系统中自带的系统防火墙:

硬件防火墙:品牌很多,如思科,深信服,天融信等等,这里举例华为防火墙。在实际的生产环境中通常都用用web界面的形式进行部署调试,用命令行来调试的大多都是专业的网络运维工程师了,会涉及到我分享的以下专业命令了。
华为usg系列防火墙,何为USG?
2013年9月华为在首届企业网络大会中发出了下一代防火墙USG6600,这标志着华为防火墙进入了一个新的历史发展阶段。

我们打开华为的ENSP模拟器可以看到华为提供了USG5500系列的防火墙,虽然这系列的防火墙现已经被淘汰了,但是拿来做实验还是凑活用的!值的注意的是,在实际的生产环境中,我们尽量不要使用图中的G0/0口,这个口的作用主要是管理,其他的口你可以用作数据转发。


华为防火墙配置实验
实验拓扑图如下:

实验的具体配置和原理讲解
①在企业内部核心交换机上(拓扑中也可使用路由器替代)配置相应的VLAN1的地址:
[rys-s5700_1]interface Vlanif 1
[rys-s5700_1-Vlanif1]ip address 10.0.0.2 24

因为所有端口都是属于vlan1的,所有没必要将该PC1直连的端口划分到vlan1下,唯一改的是将混合端口变为了access类型:
[rys-s5700_1-GigabitEthernet0/0/2]port link-type access

站在企业内部核心交换机上,去Ping防火墙的G0/0/2的接口,发现属于直连网段的他们竟然不能互相通信:(解决办法在防火墙配置下查看。)
[rys-s5700_1-GigabitEthernet0/0/24]ping 10.0.0.1
不通的原因在于:防火墙中引入了一个重要的概念 安全区域,简称为Zone
安全区域是一个或多个接口的集合,防火墙通过安全区域来划分网络,标识报文流动的“路线”! 默认情况下,报文在不同的安全区域之间流动时会收到控制,报文在同一个安全区域间流动时不受控制,但是华为防火墙也支持对同一个安全区域流动的报文进行控制!这里我们所说的控制是指通过的规则,也称之为“安全策略”,来实现的!

在配置完指定区域之后,我站在企业内部的核心交换上来测试是否能够Ping 通防火墙的trust区域的接口地址:(在trust区域中访问防火墙的本身接口)
<rys-s5700_1>ping 10.0.0.1
如果你要在untrust区域中测试通信是不能够通信的,目前只能保证trust区域和防火墙本身能够互相访问。

为了实现数据的传输,这里有必要在核心交换机上做一条静态路由:(拓扑中的运营商路由器以及防火墙本身也需要配置一条双向的静态路由)
[rys-s5700_1]ip route-static 0.0.0.0 0 10.0.0.1

②拓扑中的防火墙的配置如下:
按照拓扑中地址将接口配置:
[rys-Firewall-GigabitEthernet0/0/2]ip address 10.0.0.1 24
[rys-Firewall-GigabitEthernet0/0/5]ip add 10.0.100.1 24
[rys-Firewall-GigabitEthernet0/0/1]ip add 60.0.60.1 30
[rys-Firewall]display ip interface brief
其中,我们看到G0/0/0是防火墙的管理口的默认地址,记住默认管理地址是192.168.0.1即可。

我们先来了解下防火墙的工作模式:为了彰显防火墙的控制本质,推荐使用路由模式。
透明网桥模式(可将防火墙当成二层交换机)。
路由模式*(可将防火墙当成三层设备来使用)。
在防火墙的Zone的概念中,有一个很重要的信任的级别,优先级越高越受信任。
[rys-Firewall]display zone
防火墙默认有4个安全区域,每一个安全区域都有一个唯一的安全级别,
Trust区域
该区域内的网络受信任程度高,通常用来定义内部用户所在的网络。优先级为85.
那么为何不将Trust区域的优先级设置成100呢?因为在办公网络中,并不代表每个客户端的上网行为都是守规矩的!
DMZ区域:
该区域内的网络用户的收信人程度中等,通常用来定义内部服务器所在的网络。优先级为50
Untrust区域:
该区域代表的是受不信任的网络,通常用来定义Internet等不安全的网络。优先级为5.
Local区域:
该区域中不能添加任何接口,防火墙上所有接口的本身都隐含着属于Local区域。这个区域的作用在于使能每个接口都能够访问防火墙本身,又能确定Local区域和其他安全区域的域间关系!


华为官方规定:报文在两个安全区域之间流动时,报文从高级别的安全区域向低级别的安全区域流动时为出方向(outbound),报文从低级别向高级别的安全区域流动时为入方向(Inbound)

既然有了明确的受信任程度,因此要在防火墙上将接口划入相应的区域:
1.指定trust区域
[rys-Firewall]firewall zone trust
[rys-Firewall-zone-trust]add interface GigabitEthernet 0/0/2

定义好区域后,查看下配置,图中会出现G0/0/0,这就说明防火墙上所有接口的本身都隐含着属于Local区域的理论真实性
[rys-Firewall-zone-trust]display this
2.指定DMZ区域:
[rys-Firewall]firewall zone dmz
[rys-Firewall-zone-dmz]add interface GigabitEthernet 0/0/5
3.指定Untrust区域:
[rys-Firewall]firewall zone untrust
[rys-Firewall-zone-untrust]add interface GigabitEthernet 0/0/1

在划分区域时值的注意的是,接口是必须要划入区域才可以被使用。

为实现数据传输,在防火墙上增加一条去往运营商的静态路由条目以及回局域网的回程静态路由:
[rys-Firewall]ip route-static 0.0.0.0 0 60.0.60.2
[rys-Firewall]ip route-static 192.168.0.0 24 10.0.0.2

查看防火墙的路由表,保证即有访问外网的路由条目又有回局域网的静态路由条目:
[rys-Firewall]display ip routing-table

③企业内部的DMZ区域的交换机上接口配置:
[rys_DMZ-1-GigabitEthernet0/0/3]dis ip interface brief


在DMZ区域中,我站在server-1上去Ping防火墙的G0/0/5接口,同样也是Ping不通的:

④ISP中国联通配置:
<ChinaUnicom_BJ-1>dis ip interface brief

实现数据的传输,在设备上配置一条静态路由:
[ChinaUnicom_BJ-1]ip route-static 0.0.0.0 0 60.0.60.1
针对目前阶段实验来说,我在R2上配置了一条静态路由,而在实际的生产环境中,往往都是在防火墙的外网接口做一个NAT转换的,后续实验我会讲解NAT的。
在实际的生产环境中,防火墙的外网口往往都是要配置NAT服务,目前实验阶段,我只配置静态路由。


防火墙安全策略
我们已经配置了拓扑中的路由条目,按理说站在PC机上访问公网地址,就应该能正常访问了,可是测试结果如下:

造成这样的通讯故障原因在于:
在实际的生产环境中,安全策略是一个常见的故障点,很多时候都是由于安全策略拒绝了报文通过,导致业务不通,常用的检查手段:
[rys-Firewall]display firewall statistic system discard


缺省包过滤本质上是一种缺省的安全策略(华为防火墙的术语)。缺省包中没有具体的条件,它对所有的报文都生效!它的动作也分为允许和通过,默认情况下,缺省包过滤的工作是拒绝的,也就意味着在没有配置任何安全策略的前提下,防火墙是不允许报文在安全区域之间流动的。
生产环境中建议不要轻易的将缺省包过滤的工作设置成允许,而是通过配置条件精确的安全策略来控制报文的转发。


我们可以看下在华为防火墙中的一些默认策略:
<rys-Firewall>display current-configuration
interzone:区域间。
direction:方向。
从中我们可以看到trust和loacl区域之间可以互访。
华为官方规定:报文在两个安全区域之间流动时,报文从高级别的安全区域向低级别的安全区域流动时为出方向(outbound),报文从低级别向高级别的安全区域流动时为入方向(Inbound)

因此,通过查看到的结论,我们就应该从安全策略方面入手解决,这就引出了我刚刚介绍的方向的问题
例如,我站在trust区域访问l外网的untrust区域,就是为outbound方向。而在华为防火墙中规定是高优先级是可以访问低优先级
来验证一下这个理论:我站在DMZ区域问防火墙,通信失败!

而站在防火墙本身去Ping DMZ区域中的服务器:通讯却是正常的!

那么会有人问,双方的通讯都是双向的,既然站在防火墙本身去访问DMZ区域时,是一定有ICMP的reply的报文,而在抓包中我却清清楚楚有看的到!

但我站在服务器上去Ping 防火墙本身,清清楚楚的看到了ICMP报文已经成功封装出去,但却看不到了ICMP的relpy报文了:
在华为防火墙中,是不关注像ICMP的reply这样的回包的,而防火墙识别的数据报文是否通过是基于会话的!







