1. 项目概述:为什么需要一份“保姆级”的防火墙策略配置指南?
如果你正在学习华为网络技术,或者在工作中需要部署、管理华为防火墙,那么“安全策略配置”绝对是你绕不开的核心技能。无论是备考华为认证,还是处理真实的网络割接、安全加固,配置防火墙策略都是检验你网络功底和安全意识的试金石。我见过太多初学者,甚至是工作一两年的工程师,在面对防火墙策略时依然会犯怵:命令行(CLI)里那一长串的规则到底怎么写?Web界面里密密麻麻的选项又该怎么选?策略不生效时,该从哪里开始排查?
这正是我写下这篇教程的初衷。它不仅仅是一份操作手册,更是我过去多年在项目交付和故障排查中,关于华为防火墙安全策略配置的经验凝结。我们将从最基础的命令行配置开始,一步步深入到图形化(Web)界面的操作,并重点剖析两者背后的逻辑关联与差异。无论你是习惯在黑色终端里敲命令的“极客”,还是偏爱通过可视化界面进行管理的工程师,这篇文章都将为你提供一条清晰、可复现的路径。我们的目标很明确:让你不仅能“配通”,更能“配懂”,理解每一条策略背后的安全意图和转发原理,从而在面对复杂网络时,能够独立设计并实施一套坚固的安全防线。
2. 实验环境搭建与基础概念扫盲
在动手配置之前,我们必须先把“舞台”搭好,并统一“语言”。这部分是后续所有操作的基础,跳过它,你很可能会在后续步骤中感到困惑。
2.1 eNSP模拟器与防火墙镜像准备
华为eNSP(Enterprise Network Simulation Platform)是我们学习和实验的绝佳工具。首先,你需要从华为官网或可信渠道获取eNSP的安装包以及USG6000V系列的防火墙镜像文件。安装过程需要注意关闭电脑上的杀毒软件和Windows Defender的实时保护,以避免驱动安装失败。一个常见的“坑”是,安装完成后,首次启动设备时,eNSP会调用VirtualBox创建虚拟机,如果VirtualBox版本不兼容或网络适配器设置有问题,设备会一直停留在“####”启动状态。我的经验是,确保使用eNSP推荐或内置的VirtualBox版本,并在VirtualBox全局设置中,将“主机虚拟网络管理器”里的相关网卡(如VirtualBox Host-Only Ethernet Adapter)的DHCP服务启用。
导入USG6000V镜像后,在eNSP中拖出一台防火墙,启动它。首次启动会稍慢,因为需要初始化虚拟硬盘。看到命令行界面出现<USG6000V>提示符,并且接口状态灯由红变绿,就表示设备启动成功了。为了后续Web管理,我们通常需要给防火墙的一个接口(例如GigabitEthernet 0/0/0,即G0/0/0)配置一个管理IP地址,并将其加入安全区域。
2.2 防火墙安全策略核心概念解析
配置策略前,必须理解三个核心概念:安全区域(Security Zone)、安全策略(Security Policy)和会话表(Session Table)。这是华为防火墙工作的基石。
安全区域(Zone):防火墙将具有相同安全属性的接口(物理口、子接口、VLANIF等)划分到同一个逻辑区域。常见的预定义区域有:
- Trust(信任区域):通常放置内部网络,如办公网、服务器区。
- Untrust(非信任区域):通常放置外部网络,如互联网出口。
- DMZ(非军事化区):放置对外提供服务的服务器,如Web、Mail服务器。
- Local(本地区域):代表防火墙本身。所有以防火墙为源或目的IP的流量,都属于与Local区域的交互。
注意:一个接口只能属于一个安全区域,但一个区域可以包含多个接口。流量在区域之间流动时才受安全策略控制,区域内流动默认不受控(可配置)。
安全策略(Policy):是控制区域间流量的规则。一条完整的安全策略通常包含以下元素:
- 源安全区域 & 目的安全区域:定义流量的方向,如从Trust到Untrust。
- 源地址 & 目的地址:可以是IP、网段或地址对象。
- 服务:定义流量类型,如TCP 80(HTTP)、ICMP等。
- 动作:permit(允许)或deny(拒绝)。
- 内容安全配置文件(可选):如入侵防御(IPS)、防病毒(AV)、URL过滤等,用于对允许的流量进行深度检测。
会话表(Session):这是防火墙状态检测(Stateful Inspection)的关键。当一条“首包”命中了一条动作为
permit的安全策略后,防火墙不仅会放行这个数据包,还会在内存中创建一条会话表项。会话表记录了这条连接的五元组信息(源IP、目的IP、源端口、目的端口、协议)以及状态。后续属于同一条连接的数据包(如回包),将直接匹配会话表进行快速转发,而不再重新去匹配复杂的安全策略列表,这极大地提升了转发效率。理解“策略控制首包,会话指导后续包”这一点,对故障排查至关重要。
3. 命令行(CLI)配置:从零构建安全策略
命令行是理解防火墙工作原理最直接的方式。我们通过一个经典场景来演练:允许内网(Trust)用户访问互联网(Untrust)的Web服务(HTTP/HTTPS)和进行Ping测试,但禁止互联网用户主动访问内网。
3.1 基础网络与区域规划
假设拓扑如下:防火墙的G1/0/1接口连接内网交换机,IP为192.168.1.1/24;G1/0/0接口连接运营商路由器,IP为202.100.1.2/30。内网用户网段是192.168.1.0/24。
首先,我们进行基础配置:
system-view sysname FW # 配置接口IP并加入安全区域 interface GigabitEthernet 1/0/1 ip address 192.168.1.1 255.255.255.0 zone trust quit interface GigabitEthernet 1/0/0 ip address 202.100.1.2 255.255.255.252 zone untrust quit # 配置默认路由,指向运营商网关 ip route-static 0.0.0.0 0.0.0.0 202.100.1.13.2 创建地址对象与服务对象
在配置策略前,先定义好要引用的地址和服务,这是一种好习惯,能让策略更清晰,也便于后期维护。
# 创建内网地址对象 ip address-set trust-lan type object address 192.168.1.0 mask 255.255.255.0 # 创建服务对象(HTTP和HTTPS) service-set http type object service protocol tcp source-port 0 to 65535 destination-port 80 service-set https type object service protocol tcp source-port 0 to 65535 destination-port 443 # 注意:ICMP协议在华为防火墙中通常直接使用`protocol icmp`,较少用服务对象定义。3.3 配置核心安全策略
现在,配置从Trust到Untrust的放行策略。策略是按顺序匹配的,因此规则的顺序(rule-id)非常重要。
security-policy rule name trust-to-untrust-web # 规则名,要有意义 source-zone trust destination-zone untrust source-address address-set trust-lan service http https action permit rule name trust-to-untrust-ping source-zone trust destination-zone untrust source-address address-set trust-lan protocol icmp action permit rule name deny-all # 默认拒绝所有,这是防火墙的“安全底线” source-zone any destination-zone any action deny配置要点与避坑指南:
- 规则顺序:防火墙从上到下逐条匹配策略。一旦流量匹配某条规则,则执行相应动作并停止后续匹配。因此,必须将精确的、范围小的规则放在前面,将宽泛的、拒绝的规则(如
deny-all)放在最后。如果把deny-all放在第一条,那么所有流量都被拒绝,后面的规则根本不会生效。 - 地址对象 vs 直接写IP:对于需要重复使用的地址或网段,强烈建议使用地址对象。当内网网段变更时,你只需要修改地址对象定义,所有引用了该对象的策略会自动生效,无需逐条修改策略,极大减少出错概率。
any关键字的使用:在源/目区域或地址中使用any代表所有。在deny-all规则中使用它来构建默认拒绝策略是标准做法。但在普通允许规则中,应尽量避免使用any,遵循“最小权限原则”,只开放必要的访问路径。
3.4 配置NAT策略实现内网上网
内网私网地址(192.168.1.0/24)无法在互联网上路由,因此需要配置NAT(网络地址转换)。我们配置Easy IP,将内网地址转换为防火墙出接口(G1/0/0)的公网IP。
nat-policy rule name nat-outbound source-zone trust destination-zone untrust source-address address-set trust-lan action source-nat easy-ip关键理解:NAT策略和安全策略是独立处理的两个模块,但执行有先后顺序。对于出向流量(Trust->Untrust),典型的处理顺序是:匹配安全策略(检查是否允许)-> 匹配NAT策略(进行地址转换)-> 查找路由转发。也就是说,流量必须先被安全策略permit,才有资格进入NAT处理流程。
4. Web界面(GUI)配置:可视化策略管理实战
对于更复杂的策略或偏好图形化管理的场景,Web界面提供了更直观的操作方式。我们以完成上述相同功能为例,演示Web配置流程。
4.1 登录与初始化
- 确保防火墙G1/0/0或G1/0/1接口的IP已配置,并且你的电脑与其中一个接口在同一网段(例如,将电脑IP设为192.168.1.100/24,连接G1/0/1)。
- 在浏览器输入防火墙管理IP(如https://192.168.1.1)。首次登录使用默认用户名
admin和密码Admin@123,系统会强制要求修改密码。 - 登录后,你可能会看到仪表盘。我们直接进入策略配置核心区域。
4.2 通过Web界面配置安全策略
在Web界面中,安全策略的配置逻辑与命令行一致,但形式更为直观。
- 创建地址对象:导航至“对象” -> “地址” -> “地址对象”,点击“新建”。名称输入
trust-lan,地址类型选择“IP地址”,输入192.168.1.0/24,点击“确定”。 - 创建服务对象:导航至“对象” -> “服务” -> “服务对象”,点击“新建”。名称输入
http,服务类型选择“TCP”,目的端口输入80。同样方法创建https,目的端口443。 - 配置安全策略:
- 导航至“策略” -> “安全策略”,点击“新建”。
- 策略名称:输入
trust-to-untrust-web。 - 源安全区域:勾选
trust。 - 目的安全区域:勾选
untrust。 - 源地址:点击“选择”,在弹出的窗口中,从“地址对象”列表里勾选刚才创建的
trust-lan。 - 服务:点击“选择”,添加
http和https服务对象。 - 动作:选择“允许”。
- 点击“确定”保存。这条策略就创建好了。
- 配置Ping策略:再次点击“新建”。
- 名称:
trust-to-untrust-ping。 - 源/目区域同上。
- 源地址同上,选择
trust-lan。 - 服务:这里不选服务对象,而是直接在下方的“服务”标签页中,协议类型选择“ICMP”。这是Web界面和命令行思维的一个小差异,命令行用
protocol icmp,Web界面在服务中选择ICMP协议。 - 动作:“允许”。
- 点击“确定”。
- 名称:
- 配置默认拒绝策略:通常,Web界面在策略列表最下方会有一条隐含的“默认拒绝所有”规则。但为了清晰,我们可以显式创建一条:新建策略,名称
deny-all,源/目区域均选any,动作“拒绝”,不指定任何地址和服务(即匹配所有)。将其拖拽到策略列表的最底部。
Web界面操作心得:
- 策略匹配顺序:Web界面中的策略列表顺序就是匹配顺序,你可以直接通过拖拽来调整策略的上下位置,非常方便。
- 策略命中计数:每条策略右侧的“命中计数”是一个极其有用的排错工具。如果流量不通,可以查看预期应该匹配的策略计数是否增加。如果不增加,说明流量没有匹配到这条策略,可能是区域、地址或服务定义错误。
- 对象复用:在Web界面中创建的对象(地址、服务)会在全局生效,在任何策略中都可以方便地引用,保持了配置的一致性。
4.3 通过Web界面配置NAT策略
- 导航至“策略” -> “NAT策略” -> “源NAT”。
- 点击“新建”,进入配置页面。
- 规则名称:输入
nat-outbound。 - 源安全区域:选择
trust。 - 目的安全区域:选择
untrust。 - 源地址:点击“选择”,添加地址对象
trust-lan。 - 动作:选择“出接口地址(Easy IP)”。
- 出接口:选择连接互联网的接口,如
GigabitEthernet1/0/0。 - 点击“确定”完成配置。
在Web界面配置完成后,你可以立即在“监控” -> “会话列表”中,尝试从内网PC ping一个外网地址(如8.8.8.8),如果配置正确,应该能看到生成的ICMP会话。
5. 策略配置深度解析与高级技巧
掌握了基础配置后,我们深入探讨一些高级特性和配置技巧,这些能让你应对更复杂的场景。
5.1 策略的“启用/禁用”与“日志记录”
每条安全策略都可以单独启用或禁用。在排查复杂问题时,临时禁用某条策略(而不是删除)是隔离问题的好方法。在命令行中,在规则视图下使用disable或enable命令;在Web界面,直接点击策略列表前的复选框。
日志记录是安全审计和故障排查的利器。对于关键策略(特别是拒绝策略),建议启用日志记录。
- 命令行:在规则视图下,使用
logging命令。 - Web界面:在新建或编辑策略时,勾选“记录日志”选项。 启用后,当有流量命中该策略时,防火墙会生成日志信息,你可以通过“监控” -> “日志” -> “策略日志”进行查看。日志会记录命中时间、源目IP、端口、动作等信息,对于追踪攻击源或分析异常流量至关重要。
5.2 长连接与会话老化时间
防火墙的会话表项不会永久存在,有一个老化时间。对于不同的协议,默认老化时间不同(例如TCP协议通常是1200秒,ICMP是10秒)。在某些特定场景下,如数据库的长连接、视频会议等,可能需要调整这个时间,防止会话过早被删除导致连接中断。
- 命令行:
set flow aging-time命令。 - Web界面:在“系统” -> “配置” -> “会话管理”中设置。
注意:盲目延长所有会话的老化时间会消耗更多防火墙内存资源,应针对特定服务进行精细调整。
5.3 双向NAT与服务器映射(NAT Server)
我们之前配置的Easy IP是“源NAT”,解决内网用户上网问题。当需要将内网服务器(如Web服务器)发布到公网时,就需要使用“目的NAT”,即NAT Server。 假设内网Web服务器IP是192.168.1.100,我们希望公网用户通过访问防火墙公网IP 202.100.1.2的80端口来访问它。
- 命令行:
nat-policy rule name nat-server-web source-zone untrust destination-zone trust destination-address 202.100.1.2 mask 255.255.255.255 service http action destination-nat static to 192.168.1.100 - Web界面:在“NAT策略”中,选择“目的NAT”,新建规则,转换方式选择“静态映射(一对一)”,公网地址填写防火墙接口IP,私网地址填写服务器IP,并选择对应服务。
关键点:配置NAT Server后,必须同时配置一条允许从Untrust到Trust的、目的地址为服务器私网IP的安全策略。因为NAT(地址转换)发生在策略检查之后或同时,策略检查时,目的地址已经是转换后的私网地址了。
6. 故障排查:当策略不生效时,你该如何思考?
配置完成后流量不通,是最常见的问题。不要慌张,按照一个清晰的排查路径,大部分问题都能快速定位。
6.1 系统性排查路径(四步法)
第一步:检查物理与网络层
- 接口状态:使用
display interface brief命令或在Web界面的“接口管理”中,确认相关接口的物理状态(Status)和协议状态(Protocol)是否为Up。 - IP地址与路由:使用
display ip routing-table检查防火墙是否有到达源和目的地址的正确路由。特别是默认路由是否存在。 - 区域绑定:使用
display zone确认接口是否已正确加入预期的安全区域。
- 接口状态:使用
第二步:检查安全策略
- 会话表:使用
display firewall session table或查看Web“会话列表”。这是最直接的证据。- 如果有会话生成,且状态正常,说明策略已放行,问题可能出在路由或终端本身。
- 如果根本没有会话生成,说明流量没有命中任何
permit策略,或者更早的阶段(如路由)就被丢弃了。
- 策略命中计数:在Web界面直接查看,或在命令行使用
display security-policy rule all查看规则的“Hit”计数。确认你期望的规则计数是否增加。 - 策略顺序:再次确认策略顺序,是否被前面的某条规则(尤其是deny规则)提前匹配并拒绝了。
- 会话表:使用
第三步:检查NAT策略
- 如果涉及NAT,使用
display nat-policy或查看Web“NAT策略”列表,确认策略是否配置正确。 - 使用
display nat session查看NAT会话表,确认地址转换是否正常进行。
- 如果涉及NAT,使用
第四步:深入诊断工具
- 抓包:在防火墙的出入接口上抓包,是终极定位手段。命令行使用
capture-packet命令,Web界面在“监控”->“抓包”中可配置。通过抓包可以看清报文在经过防火墙时,IP和端口是否按预期进行了转换。 - 调试流:对于复杂策略,可以使用
debugging命令(生产环境慎用)来跟踪特定流量的处理过程,查看其在各模块(路由、策略、NAT)的处理结果。
- 抓包:在防火墙的出入接口上抓包,是终极定位手段。命令行使用
6.2 常见问题速查表
| 问题现象 | 可能原因 | 排查命令/位置 |
|---|---|---|
| 内网无法上网 | 1. 缺省路由未配置或错误。 2. Trust->Untrust安全策略未配置或拒绝。 3. NAT策略未配置或错误。 4. 接口区域未绑定或绑定错误。 | display ip routing-tabledisplay security-policy rule alldisplay nat-policydisplay zone |
| 公网无法访问内部服务器 | 1. NAT Server规则配置错误(公网IP、端口)。 2. Untrust->Trust安全策略未放行。 3. 服务器本地防火墙或路由问题。 | display nat-policydisplay security-policy rule all检查服务器网络配置 |
| Ping通但TCP不通 | 1. 安全策略中未放行对应服务(如TCP 80)。 2. 中间网络设备(如运营商)拦截了特定端口。 3. 服务器应用未监听或故障。 | display firewall session table protocol tcp检查策略服务配置 |
| 策略命中计数不增加 | 1. 流量未到达防火墙(路由问题)。 2. 流量匹配了更前面的某条规则(通常是deny)。 3. 源/目区域、地址、服务定义错误。 | display ip routing-table按顺序检查所有策略 核对地址对象和服务对象 |
| 会话表瞬间建立又删除 | 1. 对方不回复(如路由不可达)。 2. 防火墙上有单向攻击防范策略(如TCP SYN检查)拦截。 | display firewall session table verbose查看状态检查攻击防范配置 |
6.3 我的排错心得:会话表是“黄金标准”
在多年的排错中,我养成的一个核心习惯是:遇到网络不通,第一时间查看会话表。会话表是防火墙转发决策的最终体现。
- 如果会话表里有这条流量的正向和反向条目,且状态正常(如TCP为
ESTABLISHED),那么防火墙肯定已经放行了,问题一定在防火墙之外(客户端、服务器或中间网络)。 - 如果只有正向会话,没有反向,可能是对方没有回应,需要排查对端。
- 如果根本没有会话,那问题100%出在防火墙或防火墙之前(流量根本没到防火墙,或者到了但被策略拒绝/丢弃)。这时再按照上述四步法,从基础网络到策略,层层排查。
这种基于会话表的“二分法”判断,能让你在几分钟内就将问题范围缩小一半,极大提升排错效率。