防火墙使用安全区域来区分一个网络是否安全。
防火墙有4个默认的安全区域。
Local
Local表示本地,防火墙所有的接口都属于local区域。即使防火墙接口划分到了其他的安全区域,那么接口永远也属于local区域。
trust
Trust为受信任的区域,一般会把防火墙连接内网的接口划分到trust区域。
DMZ
Dmz为非军事化区域。一般把连接到数据中心的接口划分到dmz区域。这个区域的信任程度优于untrust,次于trust。因为服务器是内部的设备认为是可信的,可是服务器又会有让外网用户访问的需求,所以把dmz区域定义为中等信任的区域。
Untrust
Untrust为不受信任的区域,由于Internet非常不安全,所以一般把连接Internet的接口划分到untrust区域。
每个安全区域都会有一个优先级,默认安全区域优先级从高到低为:local>trust>dmz>untrust
防火墙除了以上4个默认的安全区域之外,用户还可以根据自己的需求自行创建安全区域,创建的安全区域需要设置安全区域优先级,优先级不可以和已有的安全区域优先级相同。
二、防火墙域间转发
缺省情况下,相同安全区域之间的网络需要进行访问,默认是可以通信的。
如图,PC1和PC2都是属于trust区域,他们之间是可以相互通信的。但是如果需要PC1或者PC2去访问另一个安全区域untrust的网络,这个时候默认是隔离的。
如果需要让不同安全区域也可以进行通信,那么就需要使用到安全策略。
安全策略是由匹配条件(五元组、用户、时间段等)和动作组成的控制规则,防火墙收到流量后,对流量的属性(五元组、用户、时间段等)进行识别,并将流量的属性与安全策略的匹配条件进行匹配。
security-policy
rule name 1
source-zone trust
destination-zone untrust
action permit
#
现在给防火墙添加一条安全策略:定义从源区域trust访问untrust的流量允许通过,那么trust区域就可以访问到untrust区域了。
当报文匹配安全策略后从防火墙转发出去时,防火墙会为这个流量添加一条会话表。会话表记录了不同安全区域之间经过防火墙的流量。
[USG6000V1]dis firewall session table
2022-07-02 05:39:25.630
Current Total Sessions : 3
icmp VPN: public --> public 192.168.1.1:5594 --> 192.168.3.1:2048
icmp VPN: public --> public ID: c487fbb5af74c20289762bfda0f
Zone: trust --> untrust TTL: 00:00:20 Left: 00:00:06
Recv Interface: GigabitEthernet1/0/0
Interface: GigabitEthernet1/0/2 NextHop: 192.168.3.1 MAC: 5489-9817-06d6
<--packets: 1 bytes: 60 --> packets: 1 bytes: 60
192.168.1.1:6106 --> 192.168.3.1:2048 PolicyName: 1
从这一条会话表可以知道,这个流量是匹配中的哪一条安全策略等信息。
三、报文转发流程
如果防火墙接收到一个数据包,那么会根据下面的流程进行处理:
如果报文从某个接口接收到或者准备从这个接口发送出去的时候,检查这个接口是否加入了安全区域,如果这个接口并没有加入任何的安全区域,那么这个直接把这个报文丢弃;如果该接口已经加入了安全区域,解析报文的目的IP地址在防火墙的路由表是否可以查询到对应的出接口,如果查询不到也是直接丢弃;如果有路由则查询防火墙的会话表,如果会话表有匹配的条目那么可以直接根据会话表进行转发,就不需要匹配安全策略了;如果会话表没有,那么就需要匹配安全策略了!
安全策略匹配机制
报文匹配安全策略,先检查这个报文是否符合第一条安全策略的条件,如果符合就按照安全策略定义的规则动作执行,动作有permit和deny,也就是允许转发和不允许转发。如果第一条安全策略没有命中,那么继续匹配其他的安全策略。如果匹配完所有的安全策略都没有命中,那么将执行默认的安全策略动作(deny)。
在配置安全策略的时候简历把精细的策略写到前面,没那么精细的策略放到后面,否则可能会先命中粗略的策略,进而报文匹配不到精细的策略,无法实现我们的需求。
,