ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

防火墙核心原理与实战:从会话表到安全策略配置排障

防火墙核心原理与实战:从会话表到安全策略配置排障 做了这么多年网络运维和培训我见过太多新人一提到防火墙就发怵要么觉得这是个黑盒点几下鼠标就完事要么把防火墙跟杀毒软件划等号认为只要装上就天下太平。其实防火墙是网络工程师绕不开的核心设备它跟交换机、路由器最大的区别是——它管的是“允许谁通过”而不是“能不能通”。今天这篇东西我打算用最直白的方式把这个话题拆开揉碎讲清楚从最基础的概念一直到实操配置再到工作里常见的坑。不管你是准备考软考中级网络工程师还是刚入行做运维甚至只是在Windows上弹窗被防火墙拦截想自己搞定这篇都能帮上忙。1. 防火墙到底是什么1.1 先忘掉术语把它当一个小区的门卫我在给学员讲第一课时从来不喜欢直接背定义。防火墙这玩意儿本质上一个小区门口的保安而且这个保安比现实中的门卫还要死板——他不看脸不凭关系只认一张写着规矩的纸。这张纸就是安全策略。比如说小区规定外卖员只能从东门进送到单元楼下就得走业主可以随便进出但深夜十一点后必须刷卡消防车、救护车任何时候都得放行。防火墙干的就是这件事规定某某来源的流量去往某某目的地经过某某端口在什么时间段是允许还是拒绝。区别在于网络世界里的“来源”和“目的地”通常用IP地址表示“经过哪个门”对应端口号。很多新人会问路由器不也有ACL吗也能做访问控制为什么还要单独搞个防火墙这就要说到防火墙跟ACL的本质差异了——ACL是“只见树木不见森林”它对每一个经过的数据包独立做判断可不管这个包是不是某个正常连接的一部分。而防火墙管的是“连接”它维护一张会话表你发起的每个请求、返回的每个响应在它眼里是一整场对话而不是零散的碎片。1.2 为什么说状态检测是防火墙的灵魂这里必须重点讲一下状态检测也就是常说的状态防火墙。现代防火墙不管便宜的桌面级还是机房里的万兆设备核心机制都是这套当内网的一台机器访问外网某个网站时第一个数据包到达防火墙防火墙查了一遍策略发现允许于是它就在会话表里记下一条内网IP 192.168.1.10 发起了一个从随机端口 50000 到外网 IP 的 80 端口连接状态是 established。记录之后从外网返回的数据包到达防火墙时防火墙就不用再翻策略了——直接在会话表里匹配咦这个包属于刚才那条会话放行。最关键的在这如果外网某台机器在没有被内网发起连接的情况下突然主动发一个包进来想访问内网机器防火墙查会话表——查无此条再查策略——默认拒绝。这个包就被丢掉了。这就是防火墙比ACL安全得多的根本原因它天生就懂得“别人没叫你你就不能进来”。理解了这个后面遇到的很多问题就可以自行解释了。比如你明明添加了一条允许从外网访问内网某台服务器80端口的策略但外网就是访问不了——你大概率是忽略了那台服务器发起响应时回包也要走防火墙防火墙上如果没有配置把响应流量关联到原会话的机制通信就是废的。这类问题在后面的实操部分你还会频繁遇到。1.3 按形态和部署方式给防火墙分类从产品形态上看防火墙大概分成三类硬件防火墙是机房常见的那种盒子有专门的处理芯片性能和稳定性最强软件防火墙就是装在一台通用服务器上的软件比如常见的Linux下的iptables/firewalld、Windows Defender防火墙灵活性高、成本低云防火墙则是云厂商提供的虚拟化防火墙实例给云上VPC用的。从网络位置上分又分成三类这个对做网络规划的尤其重要。路由模式最常规防火墙部署在内网和外网之间接口配上不同网段的IP扮演一个三层路由的角色这也是大多数人理解的防火墙。透明模式则像一根电线一样串在链路中间接口不配IP不改变原有网络规划对两端设备来说它就像一根网线但过滤功能一个不少。旁挂模式更特殊防火墙不直接串在流量路径上而是通过交换机把流量引过来检查这在大型园区网和DC场景很常见。在这里插一个新手常踩的坑透明模式下防火墙接口能不能配IP热搜里就有这个问题。我的答案是透明模式的接口本身不配业务IP但你可以给防火墙配一个管理地址用来登录和维护设备。如果你非要在透明接口上配置跟业务网段同段的IP是有可能造成二层地址冲突或者路由混乱的我在项目里甚至见过有人这么配直接导致整个VLAN内二层环路。所以透明模式就是透明模式管理IP和管理VLAN划分清楚业务老老实实走二层转发就行。2. 安全区域、策略和会话——防火墙的三大支柱2.1 安全区域给网络划分信任等级防火墙处理流量很少拿着IP列表一个一个写策略那样会把人累死。它的设计思路是划分安全区域也就是按信任程度把网络分成几个逻辑区域最常见的三个trust区域对应内网可信度最高untrust区域对应外网不可信dmz区域对应对外提供服务的服务器区可信度中等。华为、H3C、深信服这些主流品牌都有类似的区域概念思科的叫ZPF本质一样。为什么要搞区域因为策略可以按区域来写这就是一种简化。比如一条经典策略允许trust访问untrust意思就是内网所有机器访问外网都被允许。再比如更常见的允许untrust访问dmz的TCP 80、443端口意思就是外网用户只能访问服务器区的网站其他一概不行。合理规划区域能让你后期维护的时候少掉一大把头发——总比对着上千条IP地址写策略清爽得多。我常在培训里打一个比方区域就是防火墙上挂着的几扇门门后面站着不同的人。你要做的就是告诉保安哪个区域里的人可以走到哪个区域走到哪个门口要用哪把钥匙也就是端口。2.2 黑白名单与安全策略你该用哪个很多初学者会在“黑白名单”和“安全策略”之间犯迷糊。从严格意义上讲黑白名单只是防火墙的一个基础功能模块它管的是“某个IP能不能来”适合快速封禁某个攻击源地址。比如你发现某个IP一直在扫你的服务器端口直接在黑名单里拉黑它一条命令的事而且优先级通常高于策略规则黑名单里只要命中就直接丢掉。白名单则相反只允许名单内的人访问适合管理后台这类敏感入口比如只允许公司办公网段的几个IP登录防火墙管理界面。安全策略则是更精细的规则可以组合源IP、目的IP、端口、协议、时间段、用户、应用甚至可以识别到这个流量是HTTP还是数据库协议。如果你只是防止某个IP捣乱用黑白名单就够了简单高效如果你要实现“销售部只能访问CRM系统”“研发部禁止访问外网视频网站”那必须靠安全策略。两者不冲突可以同时使用但注意优先级顺序——一般黑名单的优先级是最高的你得记住这点不然排查问题时会懵怎么策略全放行了某个IP就是不通十有八九是被黑名单截了。2.3 会话机制是排查故障的金钥匙前面提到防火墙基于会话工作现在可以把这个知识用起来了。你在做防火墙排障时第一件事就应该是看会话表而不是盯着策略看半天。每个主流防火墙都有查看会话的命令或界面华为的是display firewall session table深信服的可以在控制台直接看。我来给你演示一个典型的排查场景内网PC访问外网不通策略已经确认允许了trust到untrust的全部流量。这时候你要做的就是在防火墙上执行查看会话表的命令看看有没有产生对应的会话条目。如果压根没有会话说明访问请求根本没到达防火墙问题出在内网链路或者PC本身。如果有会话但状态是SYN_SENT说明请求发出去了但对方没回应问题可能出在外网链路或者目的服务器。如果会话状态是ESTABLISHED但PC还是打不开网页那问题可能不在防火墙而是在PC到防火墙这一段或者DNS解析出了问题。这一招在真实排障中非常管用能帮你把问题精准定位到一个很小的范围内。我甚至可以直白地告诉你判断一个网工有没有入门就看他排障时是先看会话表还是先瞎改策略。后者基本是还没开窍。3. 从终端到服务器手把手搞定Windows和Linux防火墙3.1 Windows防火墙最常被问的一个操作有个热搜词我印象特别深“防火墙阻止geekuninstaller.exe出站联网推荐不改程序文件”。这种场景太典型了——你装了个卸载工具或者破解软件Windows防火墙弹窗问要不要允许它联网你点了取消然后这软件就抽风了。网上很多人教你改配置文件其实完全没必要直接在Windows防火墙里给它放行就行了。我这么说可能得罪某些教程作者但就是事实。操作步骤非常直白按Win键搜索“Windows Defender防火墙”打开后在左侧找到“允许应用或功能通过Windows Defender防火墙”点击“更改设置”再点“允许其他应用”浏览找到geekuninstaller.exe添加进去然后确保它在“专用”和“公用”两个复选框里都被勾选点确定。整个过程用不了两分钟完全不需要动程序文件本身。注意一个细节如果你发现这个程序在列表里已经有了但那个程序依然不能联网最常见的原因是你勾选了“专用”网络但当前电脑连的是“公用”网络程序只被允许在专用网络下通信。这种时候你得把两个网络类型都勾上别只在一边打钩。Windows防火墙的逻辑就是在你当前活动的网络配置文件类型下必须有一条规则允许这个程序才行否则就拦截。3.2 445端口连不上是什么情况热搜里还有一个高频问题“远程计算机不接受端口445上的连接这可能是由于防火墙或安全策略设置”。这个问题在Windows局域网共享、打印机共享、SMB访问时特别常见。445端口被Windows防火墙默认拦截是家常便饭但它和前面允许程序联网的逻辑不一样——这是端口层面的限制你得从“高级设置”里放行。打开Windows Defender防火墙点“高级设置”在左侧选“入站规则”右侧选“新建规则”规则类型选“端口”协议选TCP特定本地端口填445然后选“允许连接”配置文件全部勾上起个名字比如“Allow SMB 445”完成。之后再从其他电脑访问共享基本就通了。但作为从业者我必须提醒你开放445端口是一把双刃剑。当年大规模勒索病毒传播主要就是通过这个端口进入内网漫游的。所以你放行它之前想清楚这端口开的必要性如果不是企业内部需要共享打印、共享文件我建议你就让它保持拦截状态。以及如果445端口是给公网用的那几乎可以断定你的服务器迟早要被打。内网使用也建议绑定来源IP限制而不是对所有人开放这是血泪教训。3.3 CentOS和openEuler的防火墙到底怎么配Linux的防火墙对新手来说是个坎其实搞懂了也不难。CentOS 7以后默认用的是firewalld它跟老生常谈的iptables有着不一样的配置方式但底层原理是一回事。一个习惯用iptables的人转到firewalld最大的困惑是为什么我设置了规则重启一下就没了因为firewalld是即时生效加永久保存两套机制你没加--permanent参数系统重启后配置就变成一次性的了。具体来说要永久开放TCP端口最推荐直接改配置文件路径是/etc/firewalld/zones/public.xml。这个文件里大概长这样?xml version1.0 encodingutf-8? zone shortPublic/short descriptionFor use in public areas./description service namessh/ port port8080 protocoltcp/ port port443 protocoltcp/ /zone改成这个文件后执行firewall-cmd --reload让它重新加载端口就永久放开了。如果你只是临时放一个端口测试效果可以省事用命令行firewall-cmd --add-port8080/tcp这种即时生效但重启就没了。新手最容易犯的错就是把临时命令当成永久配置然后某天服务器重启就把服务搞挂了。我的固定操作习惯是改配置文件加注释reload完再查一遍这样心里踏实。热搜里那句“openeuler系统为啥我开启了防火墙还能正常访问”也特别能代表一部分同学的困惑。其实原理很简单防火墙只拦截不符合策略的流量但系统默认放行了已建立的连接类似会话状态established和某些预定义的服务比如SSH。而且如果long-running连接在放行规则之前就被创建了reload后防火墙上关联的conntrack条目还在流量照样通。所以并不是防火墙开了等于没开而是它放行的东西你恰好还没触碰到。3.4 关防火墙这事为什么不能乱干热搜里“关闭防火墙”“防火墙关闭有影响吗”这种问题我一年能回答几百遍。直白地说从纯技术角度Windows或Linux的防火墙关了网速不会变快软件兼容性问题也不一定全都能解决当然确实有一类疑难杂症是防火墙拦截导致的但这是少数但它会把你的机器暴露在整个网络的扫描和攻击之下。我理解很多人的心理调试服务器时嫌防火墙碍事配个端口这个不通那个不通的火大干脆关掉。我在本地虚拟机或者纯内网测试环境里也会为了省事把firewalld停掉但加一个前提——这台机器不挂公网IP不运行重要业务。一旦涉及生产环境或者机器有公网IP我从来不建议关防火墙。真要觉得默认策略别扭你就把默认区域改成trust或者把用到的端口全部放行都比整体关闭强得多。另外Windows上的mpssvc服务就是Windows Defender防火墙服务不建议禁用禁用后防火墙界面会报错一些依赖WFPWindows过滤平台的软件也可能受影响。4. 企业级防火墙实战以华为USG6000V为例4.1 用ensp模拟防火墙上手零成本练习如果你想练习企业级防火墙配置但手头没有真机最方便的办法就是用华为的ensp模拟器里面自带USG6000V虚拟防火墙。这里有个很多新手都会遇到的问题就是导入时报“格式错误”。其实USG6000V设备包需要单独下载通常是一个zip文件你得先在ensp里通过“菜单—工具—注册设备”把它导入。报格式错误大多是下载的包不完整或者ensp版本太旧建议ensp升级到最新的V100R003C00SPC100以上版本。启动USG6000V时如果报错40尤其是Win11 25H2版本下特别常见。这个错误十有八九是VirtualBox版本不兼容或者虚拟化服务没开。USG6000V底层依赖VirtualBoxensp自带的VirtualBox版本较老在Win11新版本下启动虚拟机会失败。解决办法是更新VirtualBox但版本不能太新我用的是5.2.44这个经典版本稳定性比较好。同时检查Windows的Hyper-V和内核隔离是否关闭了这两个开着也会导致虚拟化冲突。导入成功、启动不报错之后你先别急着配业务。默认的USG6000V上电后管理地址通常需要通过console口进入在ensp里双击设备图标就能打开console窗口用默认账号admin密码Admin123登录。登录后先改密码这个是常识别留着默认密码当活靶子。4.2 Web登录配置让配置不再全靠命令行虽然命令行很酷但企业网络上绝大多数运维都是通过Web界面管理防火墙的。USG6000V的Web登录需要先给它配一个管理IP还得把对应区域的安全策略配置允许HTTPS管理默认情况下防火墙只允许console和SSH管理。你要把它配成可以用浏览器访问思路是选一个接口作为管理口给它配IP加入trust区域或单独的管理区域然后开启HTTPS服务再加一条放行管理网段访问防火墙IP的HTTPS端口策略。这里有个关键点不要搞混淆Web管理口的IP和策略必须跟业务区域的IP、策略分开。比如内网是192.168.1.0/24管理地址可以是192.168.10.254/24单独划一个管理VLAN这样既干净又安全。如果管理口和业务口混在一起一旦你写错一条策略管理界面挂掉就只能跑去机房接console线了我就是这么吃过亏的。ensp里想把Web页面调出来只需要在浏览器地址栏输入https://管理IP然后信任证书即可注意一定要用https而不是http。还有一个群友常问的“ensp防火墙连接云的时候无法连接端口”这通常是因为防火墙策略没有放行云接口所在区域的流量或者端口没有加入安全区域。云这个组件在ensp里模拟的是你的物理网卡本质上也是网络里的一个节点它也需要被区域策略约束别把云当成透明的直通线。4.3 三个经典企业场景的安全策略配置第一个场景是内网访问外网。防火墙配置两个区域内网接口加入trust外网接口加入untrust。策略写一条源区域trust目的区域untrust源地址是内网网段目的地址是any动作permit。这条策略配合NAT才能让内网机器真正上网因为公网IP有限需要用出接口地址做NAPT华为里的配置就是easy-ip或者地址池方式。新手经常忘记这一步导致策略放行了还是上不了网——需要在防火墙接口上做NAT转换这个跟策略是两回事。第二个场景是发布内网服务器到公网。服务器放在dmz区域接口地址用私网IP。此时需要两条配合一条安全策略允许untrust访问dmz的特定端口比如80和443另一条NAT策略把公网IP加端口映射到服务器的私网IP和端口。如果只是配置了安全策略而没做NAT映射或者NAT映射做了但策略顺序在拒绝规则之后效果就变成外网访问不了。这里的排查步骤就是前面说的先看会话表再看NAT映射最后看策略顺序不要乱。第三个场景稍微进阶一点是双机部署防火墙做OSPF。这个在热门搜索词里也出现了。双机防火墙通常用主备模式VRRP保证网关冗余OSPF跟上下游交换机做路由交换。但注意的是华为防火墙默认开启了会话同步和VGMP组当主设备宕机备设备接管后原有的会话表会通过备份通道同步过来用户感觉不到断连。如果OSPF的hello报文被防火墙策略拦截了邻居关系就起不来路由学不到这是配置双机时最常见的坑。你得在防火墙上显式放行OSPF协议通常是IP协议号89但不建议在业务策略里写很多设备在区域间默认会放行路由协议报文但有些设备默认不放行具体情况具体分析。4.4 防火墙旁挂部署时核心交换机要配VRF吗这个问题我犹豫了一下要不要写因为太进阶了但既然热搜里有我还是讲明白。旁挂模式一般是为了解决防火墙性能瓶颈或者透明审计的需求。在这个架构里防火墙不在数据转发的必经链路上而是通过交换机把流量引到防火墙做安全检查检查完再送回来。那核心交换机要不要配VRF答案是视情况而定。如果只是简单地把多个VLAN的流量送到防火墙做过滤并且防火墙用透明模式核心交换机完全不需要配VRF。但如果防火墙是路由模式同时又有一堆业务VLAN需要不同路由表隔离那么在核心上配VRF会更清晰——把防火墙旁的互联接口放入特定VRF让流量按照VRF独立路由。实际工程中我见到更多人用的是策略路由也就是在核心交换机上用policy-based routing把特定源IP的流量下一跳指向防火墙同时配上VRF规避路由环路。这个问题真不是一句话能说清的得结合具体的网络规模和业务隔离需求来定。5. 常见问题排查与避坑速查5.1 一张表整理高频问题写了这么多我把工作中和学员群里最常出现的问题整理成一个速查表方便你在遇到同类问题时快速定位。表里只列现象和核心思路具体操作对应参考前文的相关章节。问题现象排查思路常见原因和解决方向防火墙策略全放行了内网还是不能上网看会话表有没有对应条目看NAT配置是否缺失或错误有会话但没NAT加上easy-ip没有会话检查内网接口区域和路由回程外网访问内网服务器不通先查NAT映射再查策略最后查服务器本身防火墙映射配了但安全策略优先级被拒绝规则提前命中服务器系统防火墙拦截了该端口防火墙学习不到路由看接口是否加入正确区域看OSPF/BGP邻居状态看路由协议报文是否被策略丢弃邻居接口没加区域或区域间未放行路由协议hello报文认证不匹配远程445端口连不上确认是Windows防火墙还是网络设备拦截查端口监听状态目标机系统防火墙未放行445SMB服务没启动网络ACL拦截程序被Windows防火墙拦截出站在“允许应用通过防火墙”中放行该程序勾选对应网络类型程序只勾选专用网但当前网是公用网程序文件路径变化导致规则失效开启了防火墙但还能正常访问外部查看默认放行服务和established连接默认区域是public且放行了常见服务conntrack条目未淘汰导致旧连接继续放行eNSP导入防火墙报格式错误检查包是否完整、ensp版本是否兼容重新下载设备包升级ensp到SPC100以上更换兼容的VirtualBox版本eNSP启动防火墙报40确认虚拟化功能是否开启、VirtualBox版本关闭Hyper-V/内核隔离降级VirtualBox到5.2.x用Win10兼容模式运行ensp防火墙透明模式想配IP分清业务IP和管理IP透明接口不配业务IP管理IP单独一个VLAN不要用业务网段地址当管理地址双机防火墙OSPF邻居震荡查VGMP组状态和会话同步情况查接口心跳线是否中断主备切换后心跳线没接好导致备墙反复抢占OSPF网络类型不一致5.2 几个靠经验换来的避坑心得排障时不要一条策略一条策略去翻那是最后的手段。最高效的办法是先确定流量经过的所有设备在每一台上做二分查找。拿到防火墙的会话表你能立刻知道流量有没有到这一跳再决定继续往前查还是往后查。这个习惯我从入行养成到现在从来没有坑过我。配置安全策略的顺序很重要可以说是一条铁律具体规则放在前面宽泛规则放在后面。不少防火墙的策略匹配是从上往下的第一条匹配了就执行不再往下看。如果你第一条就写了“允许trust到untrust全部”后面再写“拒绝某IP去某网站”后一条规则实际上永远不会命中的。所以凡是拒绝的、特殊的规则一律往前面放。这个习惯能避免至少一半的“策略明明配了为什么没生效”问题。最后关于管理手段。防火墙永远要保留一个带外管理通道比如Console口或者独立的带外管理网口。你配Web管理、配SSH之前先确认这条通道是通的万一后面配置失误把正常的网络管理断掉了你还有一条后路可走。我干这行这么多年深夜跑去机房蹲在地上接console线救火的次数已经数不清了——每一次救火完我都告诉自己下次一定先留后路。后来我养成一个习惯新设备开局第一件事先把带外管理配上再谈业务配置。5.3 关于防火墙的认知升级从入门到熟练你对防火墙的认知基本会经历三个阶段。第一阶段觉得它是台神奇的设备跟普通设备不一样配起来到处是坑。第二阶段理解它就是个有状态的ACL盒子所有行为都围绕会话和策略展开这时你已经能独立解决大多数问题了。第三阶段你开始从网络架构整体考虑隔离和控制知道在哪些位置放防火墙更合适知道旁路和串联各自的代价知道安全不只是设备的事还有策略运营和日志分析。这个升级过程说到底就是不断踩坑、查会话表、画拓扑的过程。如果非要给新人一个建议我建议你不管在ensp里还是在真实机器上都亲手把文中的三个场景敲一遍路由模式上外网、DMZ发布服务器、双机主备加OSPF。敲完这三个你对防火墙的理解就会有一个质的飞跃远超过看十遍教材的效果。
返回列表