华为USG防火墙配置实战:从安全区域到策略排查的完整思路
做防火墙配置这件事说难不难说简单也不简单。工具、命令、手册到处都是但真正到了生产环境里你会发现大部分问题不是出在不会敲命令而是出在没想清楚流量该怎么走就急着动手结果策略写得一团乱业务上线那天才手忙脚乱地排查。这篇博文不是给你背命令手册而是把我这些年配置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默认密码Admin123。插上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/0192.168.10.1/24划入trust外网口 GE1/0/1公网IP 202.100.10.2/30划入untrust服务器区 GE1/0/2192.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正确的策略布局是全局黑名单/紧急封禁策略放在最前防止漏网按业务放行的精细策略数量最多最后的兜底拒绝策略也可以配置default动作拒绝3.2 源NAT、目的NAT与双向NAT出口上网与服务器发布安全策略解决能不能过的问题NAT解决地址怎么变的问题。两者是独立的但也经常要配合。出口上网用的是源NAT。内网设备访问外网时把私有IP转换成公网IP。出口带宽不大、公网IP也不多的情况下最实用的是easy-ip也叫PAT端口地址转换所有内网设备共用出口接口的公网IPnat-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.3SSH服务映射到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 quit4.2 管理通道加固把能封的口都封上管理通道加固这件事我建议做到这几条禁用Telnet只保留SSH且SSH版本用2.0。修改Web管理默认端口不让他人一眼看出你在用防火墙管理界面。配置登录失败锁定策略防止暴力破解。管理源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 配置备份与回滚比想象中更重要防火墙的配置文件一旦配乱了或者被误删恢复起来往往比重新配一遍还难因为你未必记得当初所有细节。所以从第一台设备开始我养成的习惯就是每次变更前执行display current-configuration把当前配置导出存档。变更完执行save保存配置到flash如果不save重启后所有配置全部丢失这是最经典的事故现场。定期把配置文件导出到本地用日期命名例如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字段把每个接口、每个策略的用途写明白。半年后再看你会感谢当初那个爱记备注的自己。防火墙的配置不是一锤子买卖而是一个持续收敛、不断精细化的过程。希望这篇分享能让你少踩几个坑把更多精力花在真正重要的业务保障上。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →