前言
前面我们讲解了什么是防火墙,18图详解防火墙和路由器、交换机的区别,今天继续介绍下防火墙的基本原理,主要从安全区域、安全策略、会话表、server-map四个方面说起。
安全区域
1、什么是安全区域
安全区域是防火墙中重要的概念,防火墙可以将不同的接口划分到不同的安全区域。
一个安全区域可以说就是若干个接口的集合,一个安全区域里面的接口具有相同的安全属性。
如下图所示:防火墙把不同的接口分成3个安全区域,出口区为untrust区域,内网区分为trust区和DMZ区;
2、默认安全区域
华为防火墙划分了4个默认的安全区域:
(1)受信区域(trust):通过将内网终端用户所在区域划分为trust区域;
(2)非受信区域(untrust):通常将Internet等不安全的网络划分为untrust区域;
(3)非军事化区域(dmz):通常将内网服务器所在区域划分为DMZ区域;
(4)本地区域(local):设备本身,包括设备的各接口本身;
- 由设备主动发出的报文均可认为是从Local区域中发出的;
- 如果需要设备响应并处理的报文均可认为是由local区域接收。
3、默认安全区域优先级
默认的安全区域不能够删除,每个安全区域都设置了固定的优先级。优先级值越大,表示优先级越高。
用户也可以根据自己的需求创建安全区域;
4、不同安全区域间通信举例
如上图所示:
PC连接防火墙的G0/0/1口,防火墙将G0/0/1口划分在trust区域;
运营商网络连接防火墙的G0/0/2口,防火墙将G0/0/2划分在untrust区域;
那么如果PC需要访问internet是否能够通过防火墙呢?这个就和防火墙的安全策略有关。下面我们就来讲下安全策略。
安全策略
1、什么是安全策略
安全策略是防火墙中对流量转发、以及对流量中的内容进行安全一体化检测的策略。
当防火墙收到流量后,会对流量的属性(包括五元组、用户、时间段等)进行识别,从而和安全策略进行匹配,如果能够匹配上,则执行相应的动作。
如上图所示:PC访问internet,匹配到防火墙安全策略,动作为permit,因此流量可以通过防火墙。如果动作为deny,则流量不能够通过防火墙。
2、安全策略组成
安全策略由匹配条件、动作、安全配置文件组成。
(1)匹配条件:
匹配条件包括五元组(源地址、目的地址、源端口、目的端口、协议)、VLAN、源安全区域、目的安全区域、用户、时间段等
(2)动作:
动作包括允许和禁止。
如果动作为“允许”:
- 如果没有配置内容安全检测,则允许流量通过。
- 如果配置内容安全检测,最终根据内容安全检测的结论来判断是否对流量进行放行。
禁止:表示拒绝符合条件的流量通过。
- 如果动作为“禁止”,防火墙不仅可以将报文丢弃;
- 还可以针对不同的报文类型选择发送对应的反馈报文。发起连接请求的客户端/服务器收到防火墙发送的阻断报文后,可以快速结束会话并让用户感知到请求被阻断。
(3)安全配置文件:
内容安全检测包括反病毒、入侵防御等,它是通过在安全策略中引用安全配置文件实现的。
- 如果其中一个安全配置文件阻断该流量,则防火墙阻断该流量。
- 如果所有的安全配置文件都允许该流量转发,则防火墙允许该流量转发。
3、安全策略匹配过程
防火墙的安全策略一般配置很多条,如果都可以匹配应该优先匹配哪一条呢?
安全策略的匹配按照策略列表顺序执行,从上往下逐条匹配,如果匹配了某条策略,将不再往下匹配。
因此,配置安全策略的顺序很重要,需要优先配置精确的安全策略,然后再配置粗略的安全策略。
系统默认存在一条缺省安全策略default。
缺省安全策略位于策略列表的最底部,优先级最低,所有匹配条件均为any,动作默认为禁止。如果所有配置的策略都未匹配,则将匹配缺省安全策略default。
会话表
1、什么会话表?
会话表用来记录TCP、UDP、ICMP等协议连接状态的表项,是防火墙转发报文的重要依据;
那么什么是基于连接状态转发报文呢?防火墙基于“状态”转发报文:
(1)只对首包或者少量报文进行检测然后确认一个连接状态;(会话表)
(2)后续大量的报文根据连接状态进行控制;
会话表就记录了大量的连接状态;这种机制大大的提升了防火墙的检测和转发效率。
如上图所示:客户端PC1访问服务器PC2,PC1向PC2发起HTTP连接;
(1)PC1发送报文;
(2)首包达到防火墙,创建会话表项(如下);防火墙会话表中标示出“http”协议和连接信息,并识别出此流量在公共路由表中被转发;
(3)防火墙放行报文;
(4)PC2回复报文;
(5)回复报文匹配防火墙会话;
(6)防火墙转发报文;
2、会话表的创建
防火墙在开启状态检测情况下,只有首包会创建会话表项,后续报文匹配会话表即可转发;
3、会话表老化时间
对于一个已经建立的会话表表项,只有当它不断被报文匹配才有存在的必要。如果长时间没有报文匹配,则说明可能通信双方已经断开了连接,不再需要该条会话表项了。
为了节约系统资源,系统会在一条表项连续未被匹配一段时间后,将其删除,即会话表项已经老化。
4、长连接
对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。
例如:
- 用户通过FTP下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文。
- 用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于TCP的会话老化时间。
如果只靠延长这些业务所属协议的老化时间来解决这个问题,会导致一些同样属于这个协议,但是其实并不需要这么长的老化时间的会话长时间不能得到老化。
这会导致系统资源被大量占用,性能下降,甚至无法再为其他业务建立会话。所以必须缩小延长老化时间的流量范围。
长连接功能可以解决这一问题。长连接功能可以为这些特殊流量设定超长的老化时间。
Server-map
1、为什么会出现server-map表?
由于会话表对哪些报文属于同一条流量的标准过于严格,会导致一些特殊协议不能正确匹配会话表。
Server-map表可以解决这一问题。
例如使用FTP协议的port方式传输文件时:
- 既需要客户端主动向服务器端发起控制连接;
- 又需要服务器端主动向客户端发起服务器数据连接;
如果设备上配置的安全策略为允许单方向上报文主动通过,则FTP文件传输不能成功。
2、server-map表原理
通常情况下,如果在设备上配置严格的安全策略,那么设备将只允许内网用户单方向主动访问外网。
为了解决这一类问题,FW引入了Server-map表,Server-map用于存放一种映射关系。
- 这种映射关系可以是控制数据协商出来的数据连接关系;
- 也可以是配置NAT中的地址映射关系;
使得外部网络能透过设备主动访问内部网络。
生成Server-map表之后,如果一个数据连接匹配了Server-map表项,那么就能够被设备正常转发,并在匹配Server-map表后创建会话,保证后续报文能够按照会话表转发。
3、server-map表报文转发过程
防火墙收到报文后,如果没有命中会话表,防火墙则进入首包处理流程,查询是否命中server-map表。
- 如果命中,则生成会话表,转发报文;
- 如果没有命中,则执行其他包处理流程。