读书笔记-《华为防火墙技术漫谈》01

一、防火墙基础知识

1、防火墙基本概念

防火墙主要用于保护一个网络免受来自另一个网络的攻击和入侵行为。由于其隔离和防御性质,防火墙可以在不同位置进行灵活部署,例如网络边界、子网隔离等,例如在企业网络出口、大型网络内部子网隔离以及数据中心边界等地。

防火墙与路由器和交换机有着明显的区别。路由器用于连接不同的网络,通过路由协议确保网络之间的互联互通,以确保数据包能够被正确转发到目标地。交换机则用于构建局域网,作为局域网通信的关键中继点,通过二层和三层交换来快速转发数据包。相比之下,防火墙的主要部署位置是网络边界,其主要任务是对进出网络的访问行为进行严格控制,安全防护是其核心特点。而路由器和交换机的本质是数据包的转发,而防火墙的本质是流量的控制和审查。

防火墙的功能包括以下几个关键点:

  1. 包过滤:防火墙能够审查网络数据包的源地址、目标地址、端口号和协议等信息,并根据预定义的规则来决定是否允许数据包通过或将其丢弃。

  2. 状态检测:一些高级防火墙可以追踪网络连接的状态,以确保只有已建立的合法连接能够传输数据,而不允许未经请求的数据进入网络。

  3. NAT(网络地址转换):防火墙可以执行网络地址转换,使内部网络上的多台计算机共享一个公共IP地址,从而提高网络安全性并减少IP地址的使用。

  4. 应用层过滤:某些高级防火墙能够检查数据包中的应用层协议信息,以便防止恶意应用和攻击。

  5. 代理服务:一些防火墙可以充当代理服务器,与外部服务器通信,以隐藏内部网络的细节。

  6. VPN支持:某些防火墙提供虚拟专用网络(VPN)功能,用于安全加密和连接远程网络。

这些功能协助防火墙在网络中扮演关键的安全角色,确保网络免受未经授权的访问和潜在威胁的影响。

2、接口、网络和安全区域

安全区域(Security Zone)是指由一个或多个接口组成的集合,它在防火墙中的作用是划分网络,并确定报文流动的路径。每个接口只能归属于一个安全区域,这意味着防火墙中的接口必须被明确定义为属于某个特定的安全区域,以便有效地控制流量的流向和实施安全策略。

在华为防火墙中,安全区域一般被分为以下四种:

  1. Trust(受信任)区域:通常用于定义内部用户所在的网络,代表了高度受信任的网络。

  2. Untrust(不受信任)区域:通常用于表示不受信任的网络,例如互联网等不安全的网络。

  3. Dmz(半信任)区域:在该区域内的网络具有中等程度的受信任性,通常用于定义内部服务器所在的网络。

  4. Local(本地)区域:本地区域代表了防火墙本身。所有由防火墙主动发出的报文被视为来自本地区域,而需要防火墙响应和处理而不是转发的报文被视为送达本地区域。尽管Local区域中不能添加额外的接口,但防火墙上的所有接口都隐含属于Local区域。

在华为防火墙中,每个安全区域都必须分配一个唯一的安全级别,该级别的范围通常在1到100之间。安全级别数值越高,表示该区域内的网络越受信任。文中将四个区域的安全级别设为:Local: 100,Trust:85,DMZ: 50,Untrust: 5

需要注意的是,在防火墙中,数据包的源和目的安全区域的确定方式会根据不同情况而有所不同。通常情况下,数据包的源安全区域可以根据接收数据包的接口来确定,而目的安全区域可以通过查找路由表来确定。在VPN场景中,防火墙会解封装报文,并根据路由表来确定目的安全区域,同时通过反向查找路由表的方式来确定源安全区域。

这些安全区域和级别的设置以及源目安全区域的确定方式,有助于防火墙实施流量控制和安全策略,确保网络的安全性和隔离。

3、安全区域的配置

在安全区域的设置中,首先需要创建一个新的安全区域,如下所示:

[FW] firewall zone name test //创建安全区域

然后,为了将接口加入到这个安全区域中,必须先为该安全区域设置一个安全级别,如下所示:

[fw-zone-test] set priority 10 //必须先设置安全级别,才能将接口加入到安全区域

接下来,可以将特定接口(例如:gi 0/0/1)添加到已创建的安全区域,示例如下:

[fw-zone-test] add interface gi 0/0/1 //将接口 gi 0/0/1 加入安全区域

需要注意的是,防火墙不仅支持物理接口,还支持逻辑接口,例如子接口、vlanif接口、GRE中的TUNNEL接口,以及L2TP中的virtual-template接口等。这些接口在配置时也需要将其加入到相应的安全区域中。

4、状态监测与会话机制

状态监测采用基于连接的检测机制,将所有属于同一连接的通信双方之间交互的报文视为一个整体的数据流。这意味着同一个数据流内的报文不再被看作孤立的个体,而是相互关联的。举例来说,当为数据流的第一个报文建立会话时,后续报文将直接匹配会话进行转发,无需再次进行规则检查,从而提高了转发效率。

会话表的结构如下所示:

http VPN: public ----> public 192.168.0.1:2049 ----> 172.16.0.1:80

在会话表中,各部分的含义如下:

  • http 表示协议
  • 192.168.0.1 表示源地址
  • 2049 表示源端口
  • 172.16.0.1 表示目的地址
  • 80 表示目的端口

五元组,即源地址、源端口、目的地址、目的端口和协议,唯一确定了一条连接。任何具有相同这五个元素的报文都可视为属于同一条流。

对于某些协议,其报文中可能没有端口信息。以ICMP协议为例,其报文中没有端口信息。在这种情况下,防火墙会将ICMP报文头中的ID字段值作为ICMP会话的源端口,同时会将固定值2048作为ICMP会话的目的端口。