- 防火墙基本概念
- 安全区域(Security Zone),简称为区域(Zone),是防火墙的重要概念。防火墙大部分的安全策略都基于安全区域实施。
- 一个安全区域是防火墙若干接口所连网络的集合,一个区域内的用户具有相同的安全属性。
- 默认安全区域
华为防火墙确认已创建四个区域,untrust、dmz、trust和local区域。安全区域有以下特性:
-
-
默认的安全区域不能删除,也不允许修改安全优先级。
-
每个Zone都必须设置一个安全优先级(Priority),值越大,则Zone的安全优先级越高。
-
用户可根据自己的需求创建自定义的Zone。
-
防火墙默认安全区域均为小写字母,且大小写敏感,包括:
- 非受信区域(untrust):通常用于定义Internet等不安全的网络。
- 非军事化区域(dmz):通常用于定义内网服务器所在区域。因为这种设备虽然部署在内网,但是经常需要被外网访问,存在较大安全隐患,同时一般又不允许其主动访问外网,所以将其部署一个优先级比trust低,但是比untrust高的安全区域中。
- DMZ(Demilitarized Zone)起源于军方,是介于严格的军事管制区和松散的公共区域之间的一种有着部分管制的区域。防火墙设备引用了这一术语,指代一个逻辑上和物理上都与内部网络和外部网络分离的安全区域。
- DMZ安全区域很好地解决了服务器的放置问题。该安全区域可以放置需要对外提供网络服务的设备,如WWW服务器、FTP服务器等。上述服务器如果放置于内部网络,外部恶意用户则有可能利用某些服务的安全漏洞攻击内部网络;如果放置于外部网络,则无法保障它们的安全。
-
受信区域(trust):通常用于定义内网终端用户所在区域。
-
本地区域(local):local区域定义的是设备本身,包括设备的各接口本身。凡是由设备构造并主动发出的报文均可认为是从Local区域中发出,凡是需要设备响应并处理(而不仅是检测或直接转发)的报文均可认为是由local区域接收。用户不能改变local区域本身的任何配置,包括向其中添加接口。
-
- 由于local区域的特殊性,在很多需要设备本身进行报文收发的应用中,需要开放对端所在安全区域与local区域之间的安全策略。
-
-
-
-
区域间(Interzone)示例
- 流量的源、目的地址决定了互访的区域。本例1中PC访问防火墙的接口的流量实际上是从trust zone到达local zone;本例2中PC访问Internet的流量实际上是从trust zone到达untrust zone。
-
防火墙基本概念:安全策略
- 安全策略是控制防火墙对流量转发以及对流量进行内容安全一体化检测的策略。
- 当防火墙收到流量后,对流量的属性(五元组、用户、时间段等)进行识别,然后与安全策略的条件进行匹配。如果条件匹配,则此流量被执行对应的动作。
-
安全策略组成
-
安全策略的组成有匹配条件、动作和安全配置文件(可选)。安全配置文件实现内容安全。
-
安全策略动作如果为"允许"则可配置安全配置文件,如果为"禁止"则可配置反馈报文。
-
动作说明:
- 允许:如果动作为"允许",则对流量进行如下处理:
- 如果没有配置内容安全检测,则允许流量通过。
- 如果配置内容安全检测,最终根据内容安全检测的结论来判断是否对流量进行放行。内容安全检测包括反病毒、入侵防御等,它是通过在安全策略中引用安全配置文件实现的。如果其中一个安全配置文件阻断该流量,则防火墙阻断该流量。如果所有的安全配置文件都允许该流量转发,则防火墙允许该流量转发。
-
禁止:表示拒绝符合条件的流量通过。
- 如果动作为"禁止",防火墙不仅可以将报文丢弃,还可以针对不同的报文类型选择发送对应的反馈报文。发起连接请求的客户端/服务器收到防火墙发送的阻断报文后,可以快速结束会话并让用户感知到请求被阻断。
- Reset客户端:防火墙向TCP客户端发送TCP reset报文。
- Reset服务器:防火墙向TCP服务器发送TCP reset报文。
- ICMP不可达:FW向报文客户端发送ICMP不可达报文。
-
更多详细信息,可以参考文档,"安全策略"章节,https://support.huawei.com/hedex/hdx.dodocid=EDOC1100084128\&lang=zh\&idPath=24030814|9856724|21430823|22984765|23176238。
-
-
-
安全策略的匹配过程
-
当配置多条安全策略规则时,安全策略的匹配按照策略列表的顺序执行,即从策略列表顶端开始逐条向下匹配。如果流量匹配了某个安全策略,将不再进行下一个策略的匹配。
-
安全策略的配置顺序很重要,需要先配置条件精确的策略,再配置宽泛的策略。
-
系统默认存在一条缺省安全策略default。缺省安全策略位于策略列表的最底部,优先级最低,所有匹配条件均为any,动作默认为禁止。如果所有配置的策略都未匹配,则将匹配缺省安全策略default。
-
-
-
防火墙基本概念:会话表
- 会话表是用来记录TCP、UDP、ICMP等协议连接状态的表项,是防火墙转发报文的重要依据。
- 防火墙采用了基于"状态"的报文控制机制:只对首包或者少量报文进行检测就确定一条连接的状态,大量报文直接根据所属连接的状态进行控制。这种状态检测机制迅速提高了防火墙的检测和转发效率。会话表就是为了记录连接的状态而存在的。设备在转发TCP、UDP和ICMP报文时都需要查询会话表,来判断该报文所属的连接并采取相应的处理措施。
- 本例中PC1向PC2发起HTTP连接,所以在防火墙会话表中标示出"http"协议和连接信息,并识别出此流量在公共路由表中被转发(图中VPN:public)。
-
会话表的创建和包处理过程
- 防火墙状态检测开启情况下,流量的首包会创建会话表项,后续包即可直接匹配会话表项。
- 本流程只是一个示意图,展示了华为防火墙各个模块的基本处理顺序。实际不同的报文处理并非严格按照此流程图依次进行(若无对应配置),且与具体产品实现相关。
- 更多详细信息,可以参考指定型号防火墙产品文档,"报文转发流程"章节。
-
会话表的老化时间与长连接
- 防火墙为各种协议设定了会话老化机制。当一条会话在老化时间内没有被任何报文匹配,则会被从会话表中删除。这种机制可以避免防火墙的设备资源被大量无用、陈旧的会话表项消耗。
- 但是对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。例如:
- 用户通过FTP下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文。
- 用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于TCP的会话老化时间。
- 此时如果其会话表项被删除,则该业务会中断。长连接(Long Link)机制可以给部分连接设定超长的老化时间,有效解决这个问题。
-
多通道协议在防火墙上的问题
- 如果在防火墙上配置严格的单向安全策略,那么防火墙将只允许业务单方向发起访问。这会导致一些特殊的协议无法工作,例如FTP。
- FTP主动模式传输文件时,首先需要客户端主动向服务器端发起控制连接,然后需要服务器端向客户端发起数据连接。如果设备上配置的安全策略仅允许客户端报文单方向通过,则FTP文件传输不能成功。
- 同FTP,通信过程中需占用两个或两个以上端口的协议被称为多通道协议。多通道协议都需要考虑此类问题。
- 单通道协议:通信过程中只需占用一个端口的协议。如:WWW只需占用80端口。
- 多通道协议:通信过程中需占用两个或两个以上端口的协议。
- FTP协议是一个典型的多通道协议,在其工作过程中,FTP Client和FTP Server之间将会建立两条连接:控制连接和数据连接。控制连接用来传输FTP指令和参数,其中就包括建立数据连接所需要的信息。数据连接用来获取服务器目录及传输数据。数据连接使用的端口号是在控制连接中临时协商的。根据数据连接的发起方式FTP协议分为两种工作模式:主动模式(PORT模式)和被动模式(PASV模式)。主动模式中,FTP Server 20号端口主动向FTP Client随机端口发起数据连接;被动模式中,FTP Server被动接收FTP Client发起的数据连接。模式在一般的FTP客户端中都是可以设置的,这里我们以主动模式为例。
- 多通道协议存在时,防火墙配置较为宽泛的安全策略也可以解决协议不可用问题,但是存在安全隐患。
-
多通道协议 -- FTP过程详解
- 大部分多媒体应用协议(如H.323、SIP)、FTP、netmeeting等协议使用约定的固定端口来初始化一个控制连接,再动态的协商出端口用于数据传输。端口的选择是不可预测的。其中的某些应用甚至可能要同时用到多个端口。传统的包过滤防火墙可以通过配置ACL过滤规则匹配单通道协议的应用传输,保障内部网络不受攻击,但只能阻止一些使用固定端口的应用,无法匹配使用协商出随机端口传输数据的多通道协议应用,留下了许多安全隐患。
-
ASPF与Server-map
- 为了解决多通道协议的问题,防火墙需要识别协议在应用层协商的地址和端口。这需要开启ASPF (Application Specific Packet Filter,针对应用层的包过滤)功能。
- ASPF也称作基于状态的报文过滤,ASPF功能可以自动检测某些报文的应用层信息并根据应用层信息放开相应的访问规则,即生成Server-map表。
- Server-map表也记录了类似会话表中连接的状态。Server-map表中的信息相对简单,是简化的会话表,在真实流量到达前生成。在流量真实到达防火墙时,防火墙会基于Server-map表生成会话表,然后执行转发。
- 开启ASPF解决多通道协议问题,是生成Server-map表的一种方式。
- 防火墙上配置了ASPF功能后,会检测FTP控制连接中协商的数据连接端口信息,然后生成Server-map表项。Server-map表项包含了FTP控制通道中协商的数据通道的信息。防火墙为命中Server-map表的数据创建会话表。
- 在防火墙配置了ASPF、NAT Server和No-PAT方式的源NAT时,都会生成相应的Server-map表项。
-
Server-map表与简化的包转发过程
- 当防火墙接收到一个报文且没有命中会话表时,防火墙进入首包处理流程,查询是否有命中的Server-map表。如果有,则会生成会话表转发报文;如果没有,则执行其他包处理过程。
-
防火墙基础配置-接口
- 创建接口/进入接口视图
Huawei\] interface interface-type interface-number 和交换机、路由器相同,interface命令用来创建接口或进入指定的接口视图。 1. 1. (接口视图)配置接口允许通过的协议 \[Huawei-GigabitEthernet0/0/1\] service-manage { http \| https \| ping \| ssh \| snmp \| netconf \| telnet \| all } { permit \| deny } service-manage命令用来允许或拒绝管理员通过HTTP、HTTPS、Ping、SSH、SNMP、NETCONF以及Telnet访问设备。 缺省情况下,接口开启了访问控制管理功能。仅有管理接口下 HTTP、HTTPS、Ping权限放开。非管理口所有权限都关闭。此时,即使配置了接口所在安全域允许访问local区域的安全策略,也不能通过该接口访问本地防火墙。 1. 防火墙基础配置 - 安全区域 1. 创建安全区域 \[Huawei\] firewall zone name zone-name \[ id id
firewall zone name命令用来创建安全区域,并进入安全区域视图。id表示安全区域ID,取值4~99,默认递增。
firewall zone命令用来并进入安全区域视图。防火墙默认的四个区域无需创建也不能删除。
-
- (安全区域视图)设置安全区域优先级
Huawei-zone-name\] set priority security-priority 优先级取值范围为1~100,全局唯一,值越大优先级越高。系统默认的安全区域不能被删除,优先级也无法被重新配置或者删除。 1. 1. (安全区域视图)添加接口到安全区域 \[Huawei-zone-name\] add interface interface-type { interface-number \| interface-number.subinterface-number } 安全区域在使用时需要与防火墙的特定接口相关联,即需要将接口加入到安全区域。该接口既可以是物理接口,也可以是逻辑接口。 1. 防火墙基础配置 - 安全策略 1. 进入安全策略视图 \[Huawei\] security-policy 安全策略规则的创建、复制、移动和重命名都在此视图下完成。 1. 1. (安全策略视图)创建规则 \[Huawei-policy-security\] rule name rule-name rule name命令用来创建安全策略规则,并进入安全策略规则视图。 1. 1. (安全策略规则视图)配置安全策略规则的源安全区域 \[Huawei-policy-security-rule-name\] source-zone { zone-name \&\<1-6\> \| any } 命令中zone-name必须为系统已经存在的安全区域名称。安全策略规则一次最多添加或删除6个安全区域。 1. 1. (安全策略规则视图)配置安全策略规则的目的安全区域 \[Huawei-policy-security-rule-name\] destination-zone { zone-name \&\<1-6\> \| any } 1. 1. (安全策略规则视图)配置安全策略规则的源IP地址 \[Huawei-policy-security-rule-name\] source-address ipv4-address { ipv4-mask-length \| mask mask-address} 命令中mask-address使用反掩码。 1. 1. (安全策略规则视图)配置安全策略规则的目的IP地址 \[Huawei-policy-security-rule-name\] destination-address ipv4-address { ipv4-mask-length \| mask mask-address} 命令中mask-address使用反掩码。 1. 1. (安全策略规则视图)配置服务 \[Huawei\] service { service-name \&\<1-6\> \| any } service命令用来配置服务,例如service protocol命令用来在安全策略中直接引用TCP/UDP/SCTP端口或IP层协议。 1. 1. (安全策略规则视图)配置安全策略规则的动作 \[Huawei\] action { permit \| deny } 防火墙默认的动作为deny。 1. 防火墙配置案例 防火墙 1...部署环境,拓扑,安装loop back,安装360极速浏览器,   必须连接防火墙0/0/0口  浏览器打开[https://192.168.0.1:8443](https://192.168.0.1:8443 "https://192.168.0.1:8443"),刷新一下 (可以用360极速浏览器,或火狐, 其他不一定好使)  用户名 admin,密码Admin@123  修改密码,重新登陆,  登录成功。打不开的页面刷新一下。  默认策略  连接控制台  \[USG6000V1\]int g 0/0/0 \[USG6000V1-GigabitEthernet0/0/0\]dis this interface GigabitEthernet0/0/0 undo shutdown ip binding vpn-instance default ip address 192.168.0.1 255.255.255.0 service-manage http permit service-manage https permit service-manage ping permit service-manage ssh permit service-manage snmp permit service-manage telnet permit service-manage netconf permit return 默认g0/0/0口允许了ping和https,所以必须用0口才能登陆。 2.查看防火墙的zone,默认有5个zone,和默认的优先级 \[USG6000V1\]dis zone local priority is 100 interface of the zone is (0): trust priority is 85 interface of the zone is (1): GigabitEthernet0/0/0 untrust priority is 5 interface of the zone is (0): dmz priority is 50 interface of the zone is (0): **简单实验:client,能够访问server的http服务,其他服务无法访问。**  Client, 10.1.12.1,网关10.1.12.254, Server,10.1.23.100,网关10.1.23.254, FW,接口IP配置好。  打开server的http功能, 配置接口IP,然后把两个接口分别放到某个zone里,再配置zone策略: \[USG6000V1-GigabitEthernet1/0/1\]ip add 10.1.12.254 24 \[USG6000V1-GigabitEthernet1/0/2\]ip add 10.1.23.254 24 \[USG6000V1-zone-trust\]add interface GigabitEthernet 1/0/1 \[USG6000V1-zone-trust\]dis this firewall zone trust set priority 85 add interface GigabitEthernet0/0/0 add interface GigabitEthernet1/0/1 \[USG6000V1-zone-untrust\]add interface g 1/0/2 \[USG6000V1-zone-untrust\]dis this firewall zone untrust set priority 5 add interface GigabitEthernet1/0/2 此时client无法ping通网关,因为接口未配置允许ping,接口下配置允许ping: \[USG6000V1-GigabitEthernet1/0/1\]service-manage ping permit 配置后可以ping通,如果要deny就配置如下: \[USG6000V1-GigabitEthernet1/0/1\]service-manage ping deny 。 配置策略: \[USG6000V1\]security-policy \[USG6000V1-policy-security\]rule name permit_trust_untrust_http \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]source-zone trust \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]destination-zone untru St \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]action permit \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]dis this rule name permit_trust_untrust_http source-zone trust destination-zone untrust action permit 此时是放行了两个区域的所有策略。测试一下: 如果精确放行,只放行http服务,就加一条http,那么其他的服务全部默认拒绝 \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]service http \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]dis this rule name permit_trust_untrust_http source-zone trust destination-zone untrust service http action permit WEB页面配置策略:从trust到untrust放行icmp   后配置的策略会在上面优先执行。类似ACL顺序。 查看FW的会话表:能够看出正在连接的会话。所以服务器回包时候,会直接查询会话表,实现通信,所以防火墙只需要放行一边就行,流量能出去能建立会话,流量就可以按照会话回来。 \[USG6000V1\]dis firewall session ta Current Total Sessions : 5 icmp VPN: public --\> public 10.1.12.1:256 --\> 10.1.23.100:2048 tcp VPN: default --\> default 192.168.0.100:51132 --\> 192.168.0.1:8443 tcp VPN: default --\> default 192.168.0.100:51125 --\> 192.168.0.1:8443 tcp VPN: default --\> default 192.168.0.100:51128 --\> 192.168.0.1:8443 tcp VPN: default --\> default 192.168.0.100:51129 --\> 192.168.0.1:8443 \[USG6000V1\]dis firewall session table verbose (细节) Current Total Sessions : 6 tcp VPN: default --\> default ID: c387fb6c5562750c8c66601f18 Zone: trust --\> local TTL: 00:20:00 Left: 00:19:19 Interface: InLoopBack0 NextHop: 127.0.0.1 MAC: 0000-0000-0000 \<--packets: 615 bytes: 814,962 --\> packets: 386 bytes: 56,221 192.168.0.100:50691 --\> 192.168.0.1:8443 PolicyName: --- 会话过一会就会消失。减小防火墙压力, 会话表老化时间不同,下面是老化时间表:  但是某些服务需要长时间连接,例如FTP, 在策略中配置长连接(long link): \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]long-link enable \[USG6000V1-policy-security-rule-permit_trust_untrust_http\]long-link aging-time 2