防火墙安全策略配置指南:从区域划分到双机热备与故障排查
1. 防火墙到底在堵什么——先搞清楚安全边界的基本逻辑干网络这一行躲不开防火墙。不管是华为、华三、锐捷、深信服还是天融信名字不一样但核心逻辑都绕不开一件事在信任和不信任的网络之间按规矩放行流量。这个“规矩”就是安全策略而“信任和不信任”的边界就是区域Zone划分。很多刚入门的兄弟一上来就盯着“怎么配策略”“怎么放端口”但如果不理解防火墙的检查机制配出来的东西往往是“看起来通了实际一断电就完蛋”。我先把最底层的东西讲透。1.1 报文过墙的三段式检查会话、状态与策略传统路由器转发报文只看路由表有路由就转发。防火墙不是这么玩的它做的是三段式检查第一会话建立检查。报文到达防火墙后防火墙会先查会话表。如果这个报文属于一条已经建立的会话直接按会话表里的动作转发不再重复匹配策略。这就是“状态检测”的核心——性能快靠的是会话表缓存。第二状态有效性检查。TCP的握手、FIN、RSTUDP的上下行报文防火墙都会维护状态。比如TCP三次握手没完成属于半开连接很多防火墙默认会丢弃或限制。这就是为什么有些内网服务器对外提供服务时如果客户端只发了一个SYN就断开防火墙会认为这是扫描行为直接丢掉后续报文。第三策略逐条匹配。新会话的第一个报文会从头到尾匹配安全策略命中后执行动作允许或拒绝并生成会话表项。如果是拒绝直接丢弃如果是允许后续报文走会话表快速转发。新手容易犯的错是改了策略但老会话还留在会话表里表面看策略没生效。所以改完策略后要清理掉旧会话再验证华为的命令是reset session华三是reset session-table锐捷也有类似指令。1.2 区域划分的本质信任与不信任的边界防火墙的端口本身没有“安全”和“不安全”的属性安全属性是区域赋予的。比如华为/USG系列默认有这几个区域trust信任区通常放内网untrust不信任区通常放外网dmz隔离区放对外提供服务的服务器local防火墙自身接口所属区域区域之间默认互相隔离没有策略就放不通。这个“默认拒绝”原则是防火墙存在的根本意义。配置上有个关键点同一区域的接口互访默认是放行的不走安全策略。比如两个接口都在trust区域它们之间的流量默认通。所以有些兄弟把服务器接在trust区域又希望服务器和办公网隔离就发现策略怎么配都不生效——问题就出在“同区域互访默认放行”这个机制上。正确的做法是如果服务器和办公网要隔离就把服务器放到单独的dmz区域或单独的区域再配跨区域策略。华为的命令是[Huawei] firewall zone dmz [Huawei-zone-dmz] add interface GigabitEthernet1/0/2区域划分的思路决定了后面所有策略的复杂度。区域划得乱策略一定乱。2. 让设备先能管起来Web、SSH与设备登录的通行配置设备拿到手第一件事不是急着配策略而是先把管理通道打通。很多兄弟卡在这一步Web界面登不上、SSH连不上就开始怀疑设备坏了其实大部分是管理服务没开或者接口不在管理区域内。2.1 从Web登录开始HTTP/HTTPS服务与接口放行不管是新买的华为USG还是ensp里模拟的USG6000Web登录的基本条件是一样的第一设备启用了HTTP或HTTPS服务。ensp里默认可能是关闭的需要命令行打开[Huawei] web-manager enable [Huawei] web-manager security enable # 启用HTTPS第二登录接口属于某个区域且该区域到local区域有放行策略。这个太关键了。Web管理流量到达防火墙后目标是防火墙自身的Web服务所以属于“某区域到local区域”的流量。如果trust到local没有放行电脑接了trust口也登不上Web。至少要有这条策略[Huawei] security-policy [Huawei-policy-security] rule name permit_trust_to_local [Huawei-policy-security-rule-permit_trust_to_local] source-zone trust [Huawei-policy-security-rule-permit_trust_to_local] destination-zone local [Huawei-policy-security-rule-permit_trust_to_local] action permit由于各厂家命令行风格不同华三的F1000和华为的命名方式有点区别但思路一模一样的。在华三模拟器HCL里Web登录前还要注意默认管理口MGE口和业务口要区分开HCL里默认G1/0/0是管理口接了电脑后直接用默认地址192.168.0.1进Web浏览器要用IE兼容模式或Chrome的--ignore-certificate-errors参数不然证书报错会拦着你。2.2 SSH方式的登录路径与密钥配置Web界面适合图形化操作但批量配置或生产环境我个人更推荐SSH。华为防火墙开启SSH的步骤比交换机多两步容易漏[Huawei] stelnet server enable [Huawei] ssh user admin [Huawei] ssh user admin authentication-type password [Huawei] ssh user admin service-type all [Huawei] user-interface vty 0 4 [Huawei-ui-vty0-4] authentication-mode aaa [Huawei-ui-vty0-4] protocol inbound ssh华三的SSH配置类似但增加了ssh server enable和local-user的配套配置。锐捷的防火墙RG-WALL系列SSH默认密码强度和登录IP限制比较坑经常遇到“Permission denied”排查时先看login user是否绑定了源IP限制。SSH登录还有一个容易忽略的问题防火墙的管理VTY有限制如果同时登录了Web和SSH可能占用两个VTY通道VTY满4个之后新连接直接拒绝。遇到“Connected but no banner”的情况先看看在线用户数。2.3 登录密码找回与常见登录报错处理“绿盟防火墙重置密码”“天融信镜像登录密码忘了”“通过SmartKit能恢复华为防火墙Web登录密码吗”——类似的提问在社区里太多了。密码恢复这件事不同厂家思路不一样但大方向是通过Console口进入设备底层重置配置或跳过认证。华为的USG防火墙Console口登录后如果设备还能启动可以尝试reset saved-configuration后重启但会丢失配置。如果只是想找回密码而不丢配置通过SmartKit工具确实可以生成恢复包前提是设备序列号和工具匹配。绿盟的防火墙重置密码通常是在Console口下进入BootROM菜单选择“清空配置文件”或“跳过密码验证”选项。不同版本的BootROM菜单选项名称不一样但一般在启动阶段按CtrlB进入。天融信的VMware镜像密码忘了最直接的办法是挂载虚拟机的Console口进入单用户模式修改密码前提是镜像没有加密引导。遇到Web登录报“证书错误”或者“无法建立安全连接”先检查系统时间。防火墙内置证书对时间非常敏感设备时间偏差超过一定范围HTTPS握手直接失败。这个是所有品牌通病。3. 策略才是灵魂黑白名单、区域控制与地址封禁管理通道打通之后真正开始干活就是配策略。这里我把黑白名单和区域控制放一起讲因为这俩是日常用得最多的也是最容易混淆的。3.1 黑白名单的适用场景与配置差异黑名单和白名单名字像但思路完全相反黑名单的意思是“除了名单里的其他都放行”。适合拦截已知的恶意IP、攻击源。它的特点是配置简单、误伤率低但前提是你得知道谁在搞你。白名单的意思是“只有名单里的才放行其他全拒绝”。适合管理接口保护、核心业务系统对外暴露面收敛。比如防火墙的SSH管理口只允许10.10.1.0/24这个管理网段访问其余全部拒绝这就是白名单思路。在华为防火墙上黑白名单通常在“攻击防范”或“策略”里做。但很多兄弟把黑白名单和安全策略混为一谈其实它们是两层东西白名单/黑名单是“更前置的过滤”命中黑名单直接丢弃不进入会话建立流程安全策略是“会话建立时的通行规则”举个例子你在Web界面的黑名单里加了一个IP但安全策略里有一条允许所有IP访问HTTP服务那这个IP访问HTTP时照样会被黑名单拦截因为黑名单的优先级更高。深信服防火墙封禁区域地址的操作路径一般是“对象”-“地址”-“新增地址组”然后在“安全策略”里把动作选为“拒绝”源区域选对应的区域。它的特色是图形化界面把“源区域”“目的区域”“服务”“动作”做成了清晰的逻辑链比命令行直观很多但原理一样。3.2 基于区域和地址的控制策略一个典型的企业出口防火墙配置至少包含这几类策略策略方向源区域目的区域服务动作内网访问外网trustuntrust任意允许外网访问内网WebuntrustdmzHTTP/HTTPS允许管理访问trustlocalSSH/HTTPS允许内网隔离trusttrust不限全拒绝具体到华为的命令行一条策略长这样[Huawei] security-policy [Huawei-policy-security] rule name permit_out [Huawei-policy-security-rule-permit_out] source-zone trust [Huawei-policy-security-rule-permit_out] destination-zone untrust [Huawei-policy-security-rule-permit_out] action permit注意这里没有写源地址表示trust区域所有地址都能出外网。实际生产环境通常会加source-address限制防止内网某些网段被攻破后直接外联。锐捷防火墙的配置思路类似但它有一个“双向NAT”和“策略路由”的联动问题。尤其在做端口映射时如果目的地址转换DNAT和安全策略的“目的地址”不一致流量会被安全策略挡住。很多兄弟配完端口映射外网访问不了查路由、查NAT都没问题其实问题出在安全策略里目的地址写的是公网口IP而不是映射后的服务器内网IP。这是锐捷和华三的常见坑。3.3 策略排错为什么规则配了还是不生效策略不生效的场景我在群里见过太多了总结下来就四个原因第一区域搞错了。报文从哪个口进、从哪个口出决定了源区域和目的区域。如果一个口划到了dmz你却在源区域写trust策略永远不匹配。第二策略顺序问题。防火墙的策略是从上到下匹配命中即停止。如果你在允许策略上面有一条拒绝所有策略后面的允许策略就不起作用。HCL里配置F1000时往策略组里加规则要注意顺序先加的还是后加的在图形界面里顺序不同。第三会话表没清。前面说过通了的老会话不重新匹配策略。改完策略敲一条reset session不然测试结果会骗你。第四双机热备状态下策略没同步。这个放到后面的双机热备章节细说但如果主备设备的策略不一致主设备允许的流量切换到备设备后直接被丢。4. 容器与主机侧防火墙亲儿子和继子要一碗水端平大型防火墙负责边界防护到了服务器内部还有一层主机级防护。尤其是现在的应用基本都是容器化部署docker端口映射和外层防火墙之间的爱恨情仇说多了都是泪。4.1 Docker端口映射与宿主机防火墙的联调用Docker发布服务时大家都会写这样的命令docker run -d -p 8080:80 nginx意思很直白宿主机8080端口映射到容器80端口。但很多兄弟发现在宿主机本机访问curl localhost:8080有响应局域网其他机器访问就是不通。如果网段没问题、容器在正常运行问题九成在宿主机防火墙上。这个坑的本质是Docker的端口映射不是监听在特定网卡上的而是通过iptables的NAT规则转发。如果宿主机防火墙的INPUT链默认丢弃外来报文即使Docker的NAT规则存在报文也进不了NAT转发流程或者被拦在转发链之前。操作上的建议是不要盲目关掉整个防火墙而是放行你要用的端口。比如CentOS/RHEL系列firewall-cmd --permanent --add-port8080/tcp firewall-cmd --reloadUbuntu系列的ufwufw allow 8080/tcp但这里有一个Docker特有的细节Docker会直接操作iptables的DOCKER链如果ufw或firewalld配置的规则顺序和DOCKER链冲突可能出现“防火墙规则放行了端口但还是不通”的情况。这时候查看iptables的完整规则iptables -t nat -L -n --line-numbers重点关注DOCKER链里的DNAT规则是否在所有规则之前。有些工具会自动调整防火墙链顺序比如docker-compose的端口发布有时候会和firewalld直接冲突。个人踩坑经验在同时使用firewalld和Docker的机器上最好用docker-compose的ports字段管理端口并单独在firewalld的服务里放行端口不要用firewall-cmd --add-rich-rule去指定DOCKER网段Rich Rule和Docker的链交互很容易出现隐蔽冲突。4.2 麒麟系统与Linux主机的防火墙管理国产化环境里“银河麒麟”系统越来越常见。麒麟系统默认带的是基于firewalld的防火墙管理框架跟CentOS的操作习惯很接近。常用命令# 查看当前防火墙状态 systemctl status firewalld # 临时关闭重启后失效 systemctl stop firewalld # 永久关闭 systemctl disable firewalld # 放行端口 firewall-cmd --permanent --add-port8080/tcp firewall-cmd --reload但麒麟系统有个别版本默认没有装firewalld而是用的iptables服务。所以操作前先确认systemctl status iptables如果用的是iptables服务放行端口的姿势就不一样了iptables -I INPUT -p tcp --dport 8080 -j ACCEPT service iptables saveUbuntu关闭防火墙的命令比较简单sudo ufw disable但我还是要说一句生产环境直接disable不叫配置防火墙叫裸奔。就算图省事也应该至少放行22、80、443这几个基础端口再做ufw enable。4.3 Windows与用户态防火墙的取舍“关闭防火墙有影响吗”这个问题在防火墙相关检索词里长期排前几。我直接给结论个人电脑关掉Windows防火墙影响可能不大服务器关掉系统防火墙影响相当于把家门敞开。Windows防火墙至少会做三件事拦截入站未授权连接、按配置文件区分域/专用/公用网络、对应用出站行为做提示。关掉它公共WiFi环境下别人可能直接扫描到你的共享端口除非你确认自己没有任何服务暴露否则不建议关。至于“西门子博途防火墙”设置——工业场景里的Windows机器或IPC博途TIA Portal有时候会提示防火墙拦截了PLC通信这时不是关掉防火墙而是应该在Windows防火墙的“允许应用通过防火墙”里把博途相关的通信服务比如S7协议对应的端口加入允许列表。5. 高可用双机热备RBMVRRP架构的搭建与验证出口防火墙单机运行最怕的就是设备硬件故障——设备一挂整个网络断完。做企业网络设计时双机热备几乎是标准要求。这里讲一下HCL环境里做华为双机热备最典型的组合RBMRemote Backup Management联合VRRP虚拟路由器冗余协议。5.1 双机热备解决什么问题双机热备核心解决三个问题设备故障时自动切换主设备挂掉备设备接管流量会话信息同步主设备已经建立的会话表同步给备设备切换后用户不需要重新建立连接网关地址不变化对外呈现同一个虚拟IP终端无感知如果没有会话同步主备切换后所有TCP连接断掉用户侧的感受就是“网络断了一下”视频会议直接掉线。有了会话同步切换时间能做到秒级以内。5.2 RBMVRRP的配置要点华为的双机热备核心是配置HRP华为冗余协议但HCL模拟器里常见的是RBMVRRP的组合。关键配置步骤分三块第一接口和VRRP配置。两台防火墙对应接口配置相同IP形成一个VRRP备份组[FW1] interface GigabitEthernet1/0/0 [FW1-GigabitEthernet1/0/0] ip address 10.1.1.1 24 [FW1] interface GigabitEthernet1/0/0 [FW1] vrrp vrid 1 virtual-ip 10.1.1.254 [FW1] vrrp vrid 1 priority 120FW2的优先级低于FW1默认100作为备用。第二RBM通道配置。两台设备之间用一条专用链路连接用于同步会话和状态信息[FW1] hrp interface GigabitEthernet1/0/2 remote 10.1.2.2 [FW1] hrp enable华三的F1000在HCL里的双机热备用的是“双机热备VRRP”的组合配置命令叫remote-backup思路类似但命令行位置不同注意区分。第三策略和NAT的自动同步。华为HRP开启后安全策略会自动从主设备同步到备设备。但要注意接口IP、VRRP优先级这类接口层配置不会同步必须手动配置两台设备。每次改完配置建议在主设备上敲display hrp configuration确认同步状态看到“Configuration is synchronized”才表示策略同步完成。5.3 主备切换与回切验证配置完成后不能只盯着“两台设备都绿灯”就完事必须主动模拟故障。我常用的验证手法在主设备上连续ping内网某台服务器然后直接查看主设备。从主设备上强制触发切换[FW1] hrp standby此时流量应该无缝切换到备设备ping的丢包率在1-3个包以内是比较理想的。如果丢包超过10个大概率是会话同步没做全检查一下HRP链路状态的“peer”是否UP。回切验证同样重要。把主设备恢复优先级或重新hrp active观察设备是否能把流量抢回来。注意回切通常建议手动执行不要让两台设备频繁自动倒换否则会出现“脑裂”风险——两边都以为自己是主设备导致流量来回跳。HCL模拟器里做这个实验有一个坑模拟器默认不支持HRP的全部特性有些版本可能在配置hrp enable后报错解决方法是先配置hrp interface并确保链路两端的IP能互通再开启hrp enable。顺序反了经常起不来。6. 故障排查笔记自动开启、端口不通、模拟器异常与常用恢复手段最后这部分我把高频搜索里那些“疑难杂症”集中过一遍。这些东西很多人花一整天去查其实就是几个小原因。6.1 防火墙每次关机重启后都开启是怎么回事“防火墙每次关机重启后都开启”这个问题分两种情况情况一说的是Windows系统防火墙。你在“Windows Defender防火墙”里手动关了重启之后又自动开了。原因是Windows有个“服务”叫mpssvc安全中心它会在检测到防火墙被禁用后按照组策略或安全基线自动恢复。尤其是Windows 10/11的家庭版系统会定期检查安全状态把被禁用的防火墙重新启用。解决方法不推荐粗暴改服务而是用gpedit.msc打开组策略在“计算机配置 - 管理模板 - 网络 - 网络连接 - Windows Defender 防火墙”里设置“所有配置文件”的状态为“已禁用允许”这样系统不会自动恢复。情况二说的是硬件防火墙或虚拟化防火墙镜像。设备配置没有保存到Flash每次重启都是出厂配置出厂配置里防火墙默认开启。解决方法是配置完成后执行save命令。天融信的VMware镜像有时候出现重启丢配置是因为虚拟机磁盘快照没有固化建议关闭虚拟机后拍快照或克隆。6.2 443端口不可达与Web管理界面异常“远程计算机不接受端口 443 上的连接这可能是由于防火墙或安全策略设置”——这是Windows连接时报的经典提示。排查思路按从近到远检查先本机测试在目标服务器上执行netstat -ano | findstr 443确认443端口确实在监听再本机防火墙测试临时添加一条入站规则允许443或直接netsh advfirewall show allprofiles state看防火墙状态然后边界防火墙如果是端口映射进内网检查边界防火墙的DNAT和安全策略是否同时放行了443最后看安全设备IPS/上网行为管理之类的设备如果串联在网络里也可能拦截443这里我要单独提一个“Web界面打开但死活不显示登录页”的情况很多时候防火墙的Web服务是用HTTPS的你拿http://去访问它可能根本不响应443的HTTP明文请求。直接访问https://ip。6.3 模拟器实验里的防火墙专属疑难杂症ensp防火墙一直“####”的问题模拟器玩家应该都遇到过。界面卡在连不上的状态有几个常见原因虚拟网卡和设备的桥接状态没起来在ensp菜单里重启设备或清理ensp的临时进程防火墙Web服务没开。ensp里USG6000默认没有开启Web一定要先命令行web-manager enable浏览器缓存和证书问题。换成Edge的IE模式或者Chrome加--ignore-certificate-errors参数再访问ensp和VirtualBox冲突。华三的HCL以及ensp同时安装了有时候会导致设备启动异常先把HCL退出再开ensp或者反过来HCL模拟器里华三F1000登录Web界面默认情况下管理口地址是192.168.0.1但不同版本差异很大。实在找不准地址,看设备启动时的Console日志会打印管理口IP。华三设备默认密码一般是admin/admin部分新版本强制要求首次修改。6.4 防火墙密码恢复与重置的通用路径“绿盟防火墙重置密码”“锐捷防火墙密码恢复”这类需求本质都是“我进不去了怎么恢复控制权”。我把通用路径说一下第一Console口永远是最后一道门。只要Console口没被禁用通过串口连接总有办法。第二启动菜单里通常有“恢复出厂”或“跳过配置”选项。不同品牌按CtrlB、CtrlE或者CtrlBreak进入的时机不同但进入后找“Reset configuration”或“Ignore configuration”这类词。第三如果只是Web密码忘了SSH也许还通着。用SSH进去删掉旧的Web用户重新建一个比直接重置配置损失小得多。第四厂家工具和账号体系。有些品牌提供专用的密码恢复工具但只要不涉及个人敏感信息就不建议在公共场合讨论具体绕过方案建议大家通过厂家技术通道处理确保合规。最后说几句个人体会做防火墙这么多年我的体会是防火墙本身不复杂复杂的是“你永远不知道它在你没看见的地方做了什么”。它的每一个默认行为——默认拒绝、会话老化、高优先级黑名单、同域放行——都在默默影响你的网络。所以排查问题的时候第一反应不要是“这台设备是不是坏了”而是“我是不是还有一条规则没看到”。多看display log、会话表和安全策略命中计数比反复重启设备有用得多。给刚入行的兄弟一个建议别在模拟器里背命令找一台真实设备把自己常用的几种场景Web管理、SSH、端口映射、双机热备完整搭一遍写一份自己的操作手册。这比收藏一百篇教程都管用。