华为防火墙默认账号密码:
Username:admin
Password:Admin@123
密码首次登陆后修改为admin@123
使用防火墙的管理口连接云,IP设为同网段:
[USG6000V1-GigabitEthernet0/0/0]ip address 192.168.56.123 24
[USG6000V1-GigabitEthernet0/0/0]service-manage ping permit 允许接口被访问
[USG6000V1-GigabitEthernet0/0/0]service-manage https permit 允许接口通过https访问
防火墙默认拒绝所有访问。 上述配置完成后,可以通过浏览器访问https://192.168.56.123:8443来访问防火墙。 (8443为连接到防火墙的管理端口)
防火墙的基本概念
安全区域:
- 防火墙的接口属于安全区域。
- 防火墙接口连接的网络要划分安全区域。
- 在一个安全区域内的设备具有相同的安全级别。
::: tip 安全区域之间流量访问是默认禁止的。 安全区域内部流量访问是默认放行的。 :::
[USG6000V1-policy-security]default packet-filter intrazone enable
使能区域内包过滤(拒绝区域内的访问通信)
安全区域类型:
- 默认类型:安全区域优先级值不能更改。 通过display zone查看。
- Local:优先级值为100,是防火墙的接口所在区域。 该区域针对防火墙的接口,防火墙接口连接一个安全区域,接口本身又属于Local区域。
- Trust:优先级值为85,用于划分受信任的区域。
- Untrust:优先级值为5,用于划分非信任的区域。
- DMZ:优先级值为50,用于划分受威胁程度高的区域。 为对外部提供服务的设备区域。
上图中安全区域trust中有一个接口0/0/0,该接口自动接入trust区域。
PC1和防火墙的通信配置:
[USG6000V1-zone-trust]add interface GigabitEthernet 1/0/0
将该接口连接的网络加入到trust区域内,不是将接口加入到trust区域内
安全区域间的流量默认禁止,需要做策略放行:
[USG6000V1]security-policy
[USG6000V1-GigabitEthernet1/0/0]service-manage ping permit 接口开启访问测试能力
完成上述配置后PC1可以和防火墙接口通信:
PC2和防火墙的通信配置:
[USG6000V1]firewall zone untrust
[USG6000V1-zone-untrust]add interface GigabitEthernet 1/0/1
[USG6000V1-GigabitEthernet1/0/1]service-manage ping permit
::: warning 防火墙的接口都属于Local区域,其他区域访问Local区域只需要接口放行,非Local区域之间需要通过security-policy放行。 security-policy针对的是非Local区域的访问,Local在接口上禁止访问(service-manage)。 上述配置可以不加security-policy的配置。 :::
[USG6000V1-policy-security]default action permit 默认放行所有(相当于防火墙失效,实验用)
PC1和PC2可以正常通信:
- 自定义类型(name)
[USG6000V1]firewall zone name first 自定义区域命名为first [USG6000V1-zone-first]set priority 84 更改自定义区域的优先级
防火墙的安全区域优先级值不能相同。 最多可以设置96个自定义区域。(优先级取值1-100,减去4个默认区域,还可以设置96个自定义区域) ::: tip 防火墙只转发区域间的流量,没有划分区域的网络不能通过防火墙。 :::
[USG6000V1-GigabitEthernet1/0/1]service-manage ? permit
all ALL service
enable Service manage switch on/off
http HTTP service
https HTTPS service
ping Ping service
snmp SNMP service
ssh SSH service
telnet
安全策略
配置多个安全策略时,需要先配置条件精确的策略,再配置条件宽泛的策略。 安全策略按照配置顺序依次匹配,如果匹配上则不进行后续匹配。如果都没有匹配上,安全策略还存在默认条目(匹配所有,动作拒绝)。 ::: tip 默认的条目最后执行。 如下:
[USG6000V1-policy-security]default xxxxxxxxx
其他节点的策略按照dis th查看到的顺序依次匹配生效。 default的条目策略更宽泛。 :::
通过rule move的命令可以改变书写策略条目的顺序(any是要操作的自定义rule名):
在配置安全策略条目时,需要依次指定Szone、Dzone、SIP、DIP、Service、VLAN等,最后设置访问动作。
会话表
防火墙根据会话表来实现数据的回包。 (防火墙接口设置A允许访问设备B,设备B不允许访问设备A,即B-A的数据包被防火墙过滤。为了保证A可以正常访问B,使用会话表记录A访问B的信息,后续B通过会话表回包给A被允许通过,但B主动向A发起的访问会被拒绝。) 在策略允许的情况下,防火墙收到第一个报文(首包)后,会根据报文的内容进行会话表项的创建,即报文内的5元组,回包时根据会话表项进行转发。
多通道协议:
多通道协议需要建立控制通道和数据通道两个通信连接,例如FTP。
FTP的模式
- 主动模式(PORT): 控制通道由PC发起连接,源端口随机产生,目标端口为21。 数据通道由服务器发起连接,源端口为20,目标端口随机产生。
- 被动模式(PASV): 控制通道由PC发起连接,源端口随机产生N,目标端口随机产生。 数据通道由PC发起连接,源端口N+1,目标端口随机产生。
::: tip FTP的主动和被动模式是建立在服务器视角的。 被动模式下,PC主动发起连接的源目端口都是不确定的。 :::
防火墙接收数据会创建会话表项。
防火墙策略是trust(客户端所在)到untrust(服务器所在)允许通信。
客户端向服务器发起通信
控制通道: 192.168.1.1:X ——> 192.168.2.2:21 防火墙产生该会话表项
服务器向客户端发起数据通信(主动模式):
数据通道: 192.168.2.2:20 ——> 192.168.1.1:随机值 防火墙没有对应表项,被丢弃
如上是主动模式下untrust到trust的回包被拒绝的流程。 如果是被动模式,由于做了trust到untrust的允许策略,即使客户端使用了随机的目标端口也不影响通信,只是多了一条防火墙的会话表项。
实验中使用主动模式仍可以在会话表中找到新增表项: 上述效果是因为防火墙对于多通道协议使用了ASPF的技术,可以帮助防火墙查看报文内数据信息(上层应用),主要用来判断访问的目标端口。
server-map表项
开启ASPF(针对应用层的包过滤)功能后,对于多通道协议,会生成server-map表项。 server-map表项是不安全的临时的表项。(不是五元组定义的表项) ::: tip Server-map表中记录了类似会话表中连接的状态,是简化的会话表,在真实流量到达前生成。在流量真实到达防火墙时,防火墙会基于Server-map表生成会话表,然后执行转发。 ::: 开启ASPF解决多通道协议问题,是生成Server-map表的一种方式。
ftp: 192.168.2.2 ——> 192.168.1.1 主要放行访问的源端口
上述的目标端口号2073是通过ASPF检查上层应用得到的端口值。 由于主动模式中服务器发起连接,源端口是20,而session table中没有端口号20的表项,如果根据session table访问,数据包会被丢弃。server-map表项不设置源端口,回包时就不会检查端口号,可以实现数据包的回包。
::: tip 防火墙实现多通道协议原理: 如上,在服务端第一次发送数据到防火墙时,此时会话表还未建立,通过ASPF允许策略在server-map中写入简要信息,数据经过server-map建立连接(不精确的)。 然后session table中记录该流量的协议、源目IP和端口号(随机的源端口号只在生成时是随机的,经过防火墙时已经确定)。 最后删除server-map中对应表项,后续流量通过session table转发(精确的)。 :::