☰
华为USG防火墙配置实战:从安全区域到策略排查的完整思路
2026/10/2 4:28:58 网站建设 项目流程

做防火墙配置这件事,说难不难,说简单也不简单。工具、命令、手册到处都是,但真正到了生产环境里,你会发现大部分问题不是出在"不会敲命令",而是出在"没想清楚流量该怎么走"就急着动手,结果策略写得一团乱,业务上线那天才手忙脚乱地排查。这篇博文不是给你背命令手册,而是把我这些年配置FW防火墙(主要是华为USG系列,其他厂商思路大同小异)的完整思路、常用命令和踩坑经验串起来讲一遍,让还没上手的运维、网络工程师少走点弯路。

1. 动手配FW防火墙之前,先把模型和区域想清楚

1.1 部署模式:路由模式、透明模式、混合模式怎么选

防火墙到货之后,第一个要决定的不是配什么策略,而是这台设备以什么身份进网络。部署模式选错了,后面所有接口规划、路由配置都得推倒重来。

路由模式是最常见的做法。防火墙本身就是一个三层设备,每个接口分配IP地址,内部网络走内网IP段,外部网络走公网IP段,中间由防火墙做路由和转发。新建网络、替换原有网关设备、或者干脆重新梳理出口网络时,基本都选路由模式。好处是逻辑清晰,区域划分方便,安全策略也好写;坏处是必须重新规划IP和路由。

透明模式适合那种"网络已经跑得好好的,只想在中间塞一台防火墙做安全过滤"的场景。防火墙像一根网线一样串在交换机或路由器之间,接口不配IP,所有流量照原样转发,二层透传。好处是改动最小,不需要动现有网络规划;坏处是排障的时候不太直观,策略命中情况的可见性比路由模式差一些。

混合模式一般是用在多业务场景,比如一部分接口跑路由、一部分接口跑透明。这种模式维护成本高,中小型项目里我基本不推荐,除非确实有明确的复杂需求。

我的建议是:如果你还拿不准,优先选路由模式。健壮的防火墙配置,一定是建立在清晰的网络拓扑之上的。

1.2 安全区域(zone)是防火墙逻辑的起点

大多数防火墙厂商都采用"区域-策略"模型。华为USG默认自带几个安全区域:trust(信任区)、untrust(非信任区)、dmz(隔离区,也叫服务器区),另外还有一个特别重要的local区域。

Local区域是防火墙自己。所有发给防火墙本身、或者由防火墙主动发起的管理流量、健康检查流量,源或目标都是local区域。

这里有一个新手必踩的坑:很多人在配置策略时只记得放行trust到untrust的流量,却忘了管理流量(比如内网PC去Web登录防火墙,或者防火墙主动去连NTP服务器)本质上是"local参与"的流量。一旦local区域相关的策略没写,就会出现"业务能通但管理死掉"的奇怪现象。

打个生活化的比方:安全区域就像小区里的不同门禁等级。trust区域是业主自住区,untrust区域是公共外部马路,dmz区域是访客接待区。防火墙策略就是门卫手里的准入名单,不同区域的访客想去别的区域,必须按照名单逐条核对。local区域则是门卫自己——门卫要开门、要打电话确认、要记录访客,这些动作也需要自成一条准入规则,否则门卫连门都出不去。

1.3 默认拒绝与白名单思想:防火墙不是"装了就安全"

绝大多数企业级防火墙出厂策略都是默认拒绝——只要没有显式匹配到放行策略,流量一律被丢弃。这和家用路由器那种"默认全放行"的逻辑完全不同。

所以"配置防火墙"这件事,本质上是在一张全黑名单基础上,按最小权限原则逐步添加白名单条目。这也是为什么防火墙黑白名单的管理思路要尽早建立:白名单是日常业务的正常放行规则,黑名单则是应急封禁用的紧急规则。

我见过不少团队把防火墙当成"装了就能拦截攻击的神器",结果装完之后策略配得比筛子还宽,什么源区域、目标端口都不管,直接放行所有协议。这种配置等于没装。正确的方式是每个策略都讲清楚三个要素:谁(源)、去哪(目标)、干什么(服务),缺一个都不叫清晰的安全策略。

2. 初始化和网络可达:从console登录到区域接口规划

2.1 第一次登录:console、出厂默认密码与管理口IP

新防火墙拆箱后,第一件事永远是用console线登录。不要一上来就想着Web界面,Web界面连不上时你连原因都定位不了。

华为USG的默认情况大概是这样:接口GE0/0/0默认IP是192.168.0.1(部分新版本可能是其他地址,以设备标识为准),console默认用户admin,默认密码Admin@123。插上console线,用SecureCRT或Xshell连接,波特率9600,进入命令行后第一步就是改密码。

system-view aaa local-user admin password cipher 你自己定义的新密码 local-user admin privilege level 15 local-user admin service-type telnet ssh terminal http quit quit save

这个地方要给一个特别提醒:除了登录密码,还有BootROM密码。热搜词里提到的"华为usg防火墙boot密码"就是这个东西。如果不改BootROM密码,别人只要重启设备、在BootROM菜单里做恢复出厂或重置console密码,你的管理员密码就形同虚设了。所以生产环境的华为防火墙,建议把BootROM密码也一并改掉,并且和console密码分开记录。

BootROM密码设置方式:

system-view bootrom password enable 设置你的BootROM密码 quit

以后再进BootROM菜单就要输密码了,这能避免"物理接触设备就能接管防火墙"的最坏情况。

2.2 接口IP、zone绑定与路由基础

设备能登录之后,开始规划接口。假设最简单的上网场景:

  • 内网口 GE1/0/0:192.168.10.1/24,划入trust
  • 外网口 GE1/0/1:公网IP 202.100.10.2/30,划入untrust
  • 服务器区 GE1/0/2:192.168.20.1/24,划入dmz

配置命令:

system-view interface GigabitEthernet1/0/0 ip address 192.168.10.1 255.255.255.0 quit interface GigabitEthernet1/0/1 ip address 202.100.10.2 255.255.255.252 quit interface GigabitEthernet1/0/2 ip address 192.168.20.1 255.255.255.0 quit firewall zone trust add interface GigabitEthernet1/0/0 quit firewall zone untrust add interface GigabitEthernet1/0/1 quit firewall zone dmz add interface GigabitEthernet1/0/2 quit

注意看,接口配完IP之后,必须显式加入对应安全区域,否则接口不会参与防火墙的区域模型,策略匹配时就会出现"源区域找不到接口"的诡异问题。很多远程配置场景下,这一步漏了,后面Web就登录不上去了。

接着配默认路由。华为USG的命令是:

ip route-static 0.0.0.0 0 202.100.10.1

这条默认路由表示所有去往外网的流量交给上一跳运营商网关。没有这条路由,内网设备就算策略放行了也出不去。

2.3 地址对象与地址组:减少重复劳动

真实项目里,策略不会只有三五条,而是一写就是几十上百条。如果每条策略里都直接写IP地址,后期维护绝对是噩梦。所以不管规模大小,我都习惯先建地址对象、地址组,再写策略。

华为USG创建地址对象:

ip address-set 办公网段 type object address 0 192.168.10.0 mask 24 quit ip address-set 服务器网段 type object address 0 192.168.20.0 mask 24 quit ip address-set 数据中心 type object-group address 0 192.168.30.0 mask 24 address 1 192.168.40.0 mask 24 quit

地址对象的最大价值在于:策略与具体IP解耦。以后办公网段从192.168.10.0/24扩成192.168.10.0/23,只需要改地址对象,所有引用这个对象的策略自动生效。如果你当初直接写IP字面量,光是排查哪些策略涉及变更就要花掉一个下午。

3. 安全策略和NAT:开放业务的最小化放行逻辑

3.1 安全策略的匹配顺序:从上到下,依次匹配

防火墙策略的匹配规则,通俗讲就是"从上往下逐条找,找到第一条匹配的就执行"。这有点像小区门禁的访客名单:门卫拿着一叠名单,从第一张开始翻,翻到名字和来访信息对上就直接放行或拦截,不会继续往下翻。

所以策略顺序的重要性怎么强调都不过分。一个生产环境里常见的错误是:把一条"放行所有IP到所有IP"的全放行策略写在最上面,下面再写精细的拒绝策略。结果拒绝策略永远不会被匹配,安全策略形同虚设。

华为USG查看和调整策略顺序:

display security-policy rule all # 调整顺序,把指定规则移到最前面 security-policy rule name deny_blocklist move rule name deny_blocklist before rule name permit_internet quit

正确的策略布局是:

  1. 全局黑名单/紧急封禁策略(放在最前,防止漏网)
  2. 按业务放行的精细策略(数量最多)
  3. 最后的兜底拒绝策略(也可以配置default动作拒绝)

3.2 源NAT、目的NAT与双向NAT:出口上网与服务器发布

安全策略解决"能不能过"的问题,NAT解决"地址怎么变"的问题。两者是独立的,但也经常要配合。

出口上网用的是源NAT。内网设备访问外网时,把私有IP转换成公网IP。出口带宽不大、公网IP也不多的情况下,最实用的是easy-ip(也叫PAT,端口地址转换),所有内网设备共用出口接口的公网IP:

nat-policy rule name source_nat_outbound source-zone trust destination-zone untrust action source-nat easy-ip quit

服务器发布用的是目的NAT。外网访问你发布的公网IP时,把公网IP和端口映射到内网服务器:

nat server server_web global 202.100.10.2 inside 192.168.20.10 tcp 80

如果你有多个公网IP,也可以把Web服务映射到202.100.10.3,SSH服务映射到202.100.10.4,互不干扰。这里有个特别常见的坑:做端口映射时,目的NAT只负责地址变换,能不能通过,还需要安全策略同时放行。很多人配完NAT之后发现外网访问还是不通,原因就是忘了写对应的放行策略。

3.3 不同场景下的策略设计:办公上网、服务器发布、跨区域互访

我把常见场景的最小放行策略列个表,供参考:

场景源区域目标区域放行服务策略思路
办公网上网trustuntrustDNS、HTTP、HTTPS、部分TCP业务端口按需精准放行,不全部放行
服务器对外发布untrustdmz公网映射端口(如80、443)只放行对外服务端口
内网访问服务器trustdmz按业务端口放行最小权限,禁止内网裸奔访问
管理防火墙运维网段localSSH、HTTPS限定源IP,绝不对外开放管理端口

对应的策略命令示例:

security-policy rule name trust_to_dmz_web source-zone trust destination-zone dmz destination-address 0 192.168.20.10 mask 32 service tcp 443 action permit rule name untrust_to_dmz_web source-zone untrust destination-zone dmz destination-address 0 192.168.20.10 mask 32 service http service https action permit quit

这里的核心原则,还是那句话:能不放行就不放行,能限定端口就限定端口,能限定源IP就限定源IP。配置防火墙不是在开店门,而是给每扇门配上专属钥匙。

4. 管理通道与加固:SSH/Web远程管理、备份与回滚

4.1 远程管理三件套:Web、SSH、Ping

防火墙配好了,业务通了,接下来你要考虑的是:以后怎么管这台设备。

很多工程师图省事,直接开启所有接口的Web管理权限。这样做的风险不用多说,防火墙的管理口一旦暴露在公网,离被爆破就不远了。正确的做法是:只允许内网运维网段访问管理服务。

华为USG开启Web和SSH管理并限制来源:

system-view manager-user admin password cipher 你的运维密码 service-type web ssh quit firewall zone trust add interface GigabitEthernet1/0/0 quit # 放行运维网段到local的SSH和HTTPS security-policy rule name permit_mgmt source-zone trust source-address 0 192.168.10.0 mask 24 destination-zone local service https service ssh action permit quit

再顺带一提,Ping管理也是常见的运维需求。如果管理网段内需要探测防火墙存活,可以放行到local的icmp协议:

security-policy rule name permit_ping_mgmt source-zone trust destination-zone local service icmp action permit quit

4.2 管理通道加固:把能封的口都封上

管理通道加固这件事,我建议做到这几条:

  1. 禁用Telnet,只保留SSH,且SSH版本用2.0。
  2. 修改Web管理默认端口,不让他人一眼看出你在用防火墙管理界面。
  3. 配置登录失败锁定策略,防止暴力破解。
  4. 管理源IP尽量缩小范围,比如只允许运维中继服务器的IP来访问。

华为USG配置登录锁定和源限制:

system-view aaa authentication-scheme default local-user admin auto-lock 5 # 连续5次失败锁定 quit quit # 配置管理源ACL,仅允许指定IP访问 acl 2001 rule 5 permit source 192.168.10.50 0 rule 10 deny quit

在Web界面上,这个对应"管理接口和ACL"的选项,把访问管理的接口绑定到内网口,并把ACL应用上去。命令行习惯好的团队,每一步加固都做到位,后期出问题的概率会低很多。

4.3 配置备份与回滚:比想象中更重要

防火墙的配置文件,一旦配乱了或者被误删,恢复起来往往比"重新配一遍"还难,因为你未必记得当初所有细节。

所以从第一台设备开始,我养成的习惯就是:

  1. 每次变更前执行display current-configuration,把当前配置导出存档。
  2. 变更完,执行save保存配置到flash(如果不save,重启后所有配置全部丢失,这是最经典的事故现场)。
  3. 定期把配置文件导出到本地,用日期命名,例如fw1_config_20260110.cfg。

华为USG导出配置:

display current-configuration # 在Web界面的系统管理-配置管理中也可以直接导出cfg文件

如果你用ensp模拟器做实验,也可以用相同的方式导出配置。其实ensp里命令和真机几乎一样,练习用ensp配置防火墙web登录、配置安全策略,跟在真机上差别不大,很适合零基础练手。

5. 业务不通时的高频排查链路:会话表、策略命中与日志

5.1 先看会话表再猜策略

业务不通的时候,大多数人第一反应是去翻安全策略,从头到尾看一遍"是不是哪里少放行了"。这个思路不能说错,但效率太低。真正靠谱的排查链路,一定是从会话表开始。

会话表(session table)是防火墙转发流量的核心凭证。只要一个数据包成功通过了安全策略和NAT处理,防火墙就会在会话表里记一条状态。之后这个连接的所有后续报文,防火墙直接查会话表转发,不再重复匹配策略。

所以排查的第一条命令是:

display firewall session table ipv4 source-ip 192.168.10.100

如果会话表里有这条连接,说明包已经正常到达防火墙并完成转发,问题大概率在下一跳路由或目标服务器上。如果会话表里空空如也,那才轮到去看策略、看路由。

5.2 策略命中、日志和抓包三板斧

会话表里没有连接,就按顺序往下查:

第一步,查路由。防火墙有没有到目标地址的路由?默认路由配了吗?去往内网的回程路由对吗?命令是display ip routing-table。

第二步,查策略命中次数。每条安全策略上都有一条命中计数,如果一条策略的命中数是0,说明根本没有流量匹配到它。这时你大概能判断出:流量走的区域和你写的源区域不一致,或者前面的策略把流量拦截了。

display security-policy rule all display security-policy statistics rule-name permit_internet

第三步,查日志。防火墙默认会记录策略命中和丢弃日志。重点看有没有如下日志:

display logbuffer

常见的是Denied by policy: ...这种格式,它会明确告诉你哪条策略拦了流量。

第四步,抓包。如果策略、路由都正常,会话表也有连接但业务还是不通,就要考虑是不是NAT没生效,或者对端回了包防火墙没有回程会话。在华为USG上可以这样抓包:

capture-packet interface GigabitEthernet1/0/0 destination 192.168.20.10

抓包的文件可以用Wireshark打开分析,重点看SYN有没有到服务器、SYN-ACK有没有回来、NAT之后地址是不是预期的那样。

5.3 几个常见场景的坑

我把这几年排查中遇到的经典问题整理一下,你们对照着看:

场景一:内网能上网,但外网访问不了发布的服务器

排查发现,目的NAT配置正确,路由也正确,安全策略也放了,但问题出在"来回路径不一致"。比如服务器回应外网请求后,防火墙发现回程流量没有对应的会话,直接将包丢弃。查看会话表时会发现只有入方向的半条会话。这个问题的根源,往往是源NAT策略范围太大,把untrust区域的流量也做了源NAT,导致服务器看到的源地址是内网地址而不是外网地址,回包路径就乱了。

场景二:策略顺序写反,放行条目不生效

最典型的一条是:"放行所有源IP到untrust区域"写在了"封禁某恶意IP"策略的前面。恶意IP的流量命中了全放行策略,下面的封禁策略永远没有机会执行。排查方式就是用display security-policy statistics看那个封禁策略的命中数,一看是0,立刻就能定位。

场景三:一重启配置全丢

这不是排查问题,而是事故现场。不少人配完了策略没有执行save,设备断电重启后回到出厂状态。尤其是远程机房设备,一次意外重启就可能让整个业务中断一整天。所以配完任何策略后的固定动作必须是:save,再检查一遍display current-configuration里的配置确实写入了flash。

另外提一句,很多人会问"防火墙关闭有影响吗"。个人电脑的Windows防火墙如果碰到错误代码0x800706d9这类服务异常,重启Windows Firewall服务确实能解决;但企业出口的FW防火墙一旦关掉,就等于把公司所有内网直接暴露在公网面前。这不是影响不影响的问题,是底线问题。防火墙的正确用法永远是精细化配置,而不是图省事关闭。

最后说一点实际配置中的个人体会

接触防火墙这些年,我最大的感受是:配置防火墙真正考验人的不是技术原理,而是对业务的把控能力。每一条安全策略背后,都对应着一个真实的业务连接——谁在访问谁、访问什么端口、路径上有没有NAT。策略写得乱,未来排查的每一分钟都是偿还当下的懒惰。

给第一次独立做防火墙项目的朋友几个建议:

第一,动手配置前先在纸上把拓扑画清楚,标出每个区域、每个接口IP、每条默认路由的方向,这是所有工作的起点。

第二,每写一条策略,都问自己三个问题:源是谁?目标是谁?服务是什么?答不上任何一条,这条策略就不要写。

第三,养成变更操作留痕的习惯。我是每改完一个模块就导一份配置,顺便给设备做一次配置注释,用description字段把每个接口、每个策略的用途写明白。半年后再看,你会感谢当初那个爱记备注的自己。

防火墙的配置不是一锤子买卖,而是一个持续收敛、不断精细化的过程。希望这篇分享能让你少踩几个坑,把更多精力花在真正重要的业务保障上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询