从包过滤到NGFW:防火墙工作原理与安全策略配置实战
刚接触网络运维的朋友十有八九会把防火墙理解成一堵实体的墙——网线一插坏流量挡在外面好流量放进来。真实情况比这复杂一点但也没那么玄乎。防火墙本质上是网络流量的安检门它不区分“好人坏人”而是按照你预先定好的规则决定每个数据包能不能通过。这篇内容我会从最基础的原理讲起把包过滤、状态检测、应用层防护这些概念掰开揉碎再结合常见设备讲讲配置思路和踩坑记录。不管你是刚入门的大学生、转行做运维的新人还是只想知道“Windows防火墙能不能关”的普通用户都能在这里找到能直接用的答案。1. 先搞懂防火墙到底在防什么1.1 没有防火墙的网络是什么状态很多人觉得防火墙是“防止黑客攻击”的这话没错但太笼统。咱们把场景缩小到一台普通服务器它上面开了Web服务80端口、远程管理22或3389端口、数据库服务3306或1521端口。如果没有防火墙这台服务器的所有端口都直接暴露给整个网络。任何人只要能路由到你就可以不断尝试连接、猜密码、打补丁滞后的服务甚至直接用漏洞扫描工具把端口列表全摸一遍。这相当于一栋楼的大门、单元门、房间门全敞着还在门口贴了一张“欢迎光临”。你说安全不安全不一定出事但出事只是时间问题。防火墙干的事就是给这栋楼加装门禁明确谁能进、能进到哪一层、能待多久。它工作在网络的边界或者设备前面每个数据包过来时都要经过规则检查符合规则才放行不符合就丢弃。所以它的核心价值不是“防病毒”而是收敛暴露面、控制访问路径。1.2 防火墙的三大核心动作允许、拒绝、重定向防火墙处理流量时底层动作就三种允许Permit、拒绝Deny、重定向Redirect。不要小看这三个动作整个安全策略体系都是围绕它们搭起来的。允许和拒绝很好理解管理员定义规则比如“研发部网段可以访问服务器的80端口其他网段不行”防火墙就照此执行。拒绝的方式也有讲究常见的是“直接丢弃Drop”和“回复拒绝Reject”。直接丢弃会让发起方一直等到超时隐蔽性更强回复拒绝则立刻告诉对方“此路不通”排查问题时更容易判断是不是防火墙拦的。重定向稍微进阶一点常见于“端口映射”和“策略路由”。比如内网一台Web服务器没有公网IP防火墙把公网IP的80端口映射到内网服务器IP或者把某些特定流量先引到安全设备上做深度检测再放回原路径。这是防火墙从“门禁”升级成“交通警察”的关键能力。新手最容易忽略的一点是防火墙默认动作通常是“拒绝一切”尤其是企业级设备。很多人配置完策略发现业务不通第一反应是“防火墙坏了”其实大概率是你没写“允许”那一条。记住这个逻辑后面排查能省一大半时间。2. 三种主流防火墙类型别再傻傻分不清2.1 包过滤防火墙最基础的一代包过滤防火墙是最古老的形态它的工作方式非常简单拆开数据包的头部看看五元组——源IP、目的IP、源端口、目的端口、协议号——然后对照规则表放行或丢弃。它的优点是快因为只看头部不拆内容转发延迟极低。但缺点也很明显它不关心数据包是不是某个连接的一部分。举个例子你允许了内网访问外网的DNS查询UDP 53端口攻击者完全可以伪造一个源端口是53的数据包混进来你允许了TCP 80端口别人也能用非标准协议往80端口塞东西。包过滤的检查颗粒度太粗只能挡“明面上的坏人”防不住“伪装成好人的坏人”。今天纯包过滤防火墙已经很少单独出现了但它的理念还活在ACL访问控制列表里。很多路由器、三层交换机的IP ACL其实就是包过滤逻辑拿来做个简单隔离够用但别指望它防住真正有组织的攻击。2.2 状态检测防火墙如今企业主力状态检测防火墙Stateful Inspection在包过滤的基础上多干了一件事记住连接状态。它会维护一张会话表记录每个TCP/UDP连接的五元组、状态、超时时间。一个外网数据包进来防火墙先查会话表如果发现自己人刚才发起了这条连接那这个返回包就直接放行如果会话表里根本没有对应记录再走常规策略检查。这个机制解决了包过滤最大的痛点。比如你允许内网主动访问外网的Web服务外网服务器返回的数据包到达防火墙时状态检测防火墙一看会话表里有记录知道这是回包直接放行包过滤防火墙则要傻乎乎地再查一遍规则而且外网口的入方向规则往往没写那么细很容易误判。状态检测防火墙的代价是要占用内存维护会话表对并发连接数有要求。现在市面上的企业防火墙从华为、锐捷到深信服、山石几乎都是状态检测为基础再加应用识别、入侵防御等增强功能。你如果在华为USG上配置过安全策略会发现它默认就是按“区域源目地址服务”来做的背后就是会话机制在工作。2.3 应用层防火墙懂业务的“老中医”应用层防火墙Application Firewall或者叫下一代防火墙NGFW是在状态检测之上又加了**深度包检测DPI**能力。它不仅仅是看五元组还会把数据包的内容拆开识别出具体应用甚至解析应用内部的命令。举个很实际的例子你网络里有人用迅雷下载普通的包过滤防火墙只能看到一堆乱七八糟的连接根本不知道这是BT流量应用层防火墙却能通过流量特征识别出“这是迅雷”然后按你的策略决定是限速、阻断还是放行。再比如通过HTTP 80端口传文件包过滤防火墙看到的是“正常的Web访问”但应用层防火墙能做内容审计发现里面其实在传一个可执行文件然后发出告警。现在的主流防火墙产品基本都是“状态检测应用层识别入侵防御病毒过滤”的组合体。这也是为什么华为、锐捷、华三这些品牌的防火墙配置里有“安全策略”而没有传统意义的“ACL”因为光靠ACL已经管不住现在的应用层威胁了。类型检查深度性能损耗典型功能适用场景包过滤网络层头部低五元组控制路由器ACL、简单隔离状态检测网络层连接状态中会话表、状态跟踪企业边界防火墙的基础能力应用层/NGFW网络层应用层内容高应用识别、威胁防护互联网出口、数据中心核心防护3. 小白必看的部署位置和策略设计思路3.1 防火墙该放在网络的哪个位置初学者最容易犯的错是把防火墙当成一个“哪都能插”的设备。其实它的位置直接决定了防护效果。最常见的是边界部署把防火墙放在内网和公网之间保护整个内部网络。这是防火墙最经典的用法几乎所有企业出口都会有一台防火墙。内网用户访问互联网要经过它外部用户访问公司网站、邮件系统也要经过它。第二种是区域间部署在内部网络里再划分不同安全域。比如财务部、研发部、服务器区彼此之间用防火墙隔离。研发部被攻击了不至于直接横向打到财务系统。这种部署对策略设计能力要求更高因为你要清楚每个部门之间的访问关系。第三种是关键服务器前端部署也叫“前置防火墙”专门保护数据库、核心业务服务器。即使黑客突破了边界防火墙还要再绕过一层才能碰到核心数据。这也是等保测评里常说的“纵深防御”思路。我见过不少小型公司就一台防火墙放在出口内网所有机器同一个网段随便互访。这种做法只能说聊胜于无真出了事边界防火墙能看到攻击流量但挡不住内网横向移动。3.2 黑白名单、安全区域和默认动作黑白名单大家听得多但我要泼盆冷水生产环境不要只靠黑名单过活。黑名单的思路是“我知道你是坏人所以不放行”问题在于攻击手段永远在变你根本列不完所有坏人。白名单的思路是“我只认识好人其他一律不放行”这种“默认拒绝”策略虽然配置麻烦但安全性高得多。企业级防火墙普遍用**安全区域Zone**来组织策略。华为的叫法很典型trust信任区、untrust非信任区、dmz隔离区。内网接口划到trust区域公网接口划到untrust区域对外提供服务的服务器放在dmz区域。策略写起来就是“从trust到untrust允许什么”、“从untrust到dmz允许什么”。这样一眼就能看出流量方向不至于把规则写得乱七八糟。默认动作几乎都是“拒绝”。你新买的防火墙默认状态下区域之间是不通流的。这就会出开篇说的那个问题配置完发现网络不通。所以做策略时一定要养成习惯先想清楚业务流向再动手配置。比如员工要上网方向就是“trust到untrust”服务是HTTP/HTTPS/DNS别人要访问公司官网方向就是“untrust到dmz”服务是HTTP/HTTPS。方向搞反策略写得再精细也是白搭。4. 实操从登录到下发策略的完整流程4.1 登录防火墙的几种方式拿到一台全新的企业级防火墙你至少要会用三种方式登录Console口、Web界面、SSH命令行。Console口是本地登录新设备第一次配置IP时几乎必用。用SecureCRT或者Xshell连接设备的console口波特率通常选9600就能进入命令行。企业级设备华为USG、华三F1000、锐捷等第一次开机一般都会让你设置管理员密码或者有一个默认密码具体看型号和文档。Web管理是现在的主流尤其是图形化设备。前提是你已经把设备接口配上IP能从电脑ping通。登录地址一般是https://防火墙管理IP注意是HTTPS不是HTTP现代防火墙基本都强制加密登录。第一次登录可能会提示证书不信任这是正常的因为设备用的是自签名证书。SSH适用于远程维护。在命令行里配上允许SSH登录的ACL和用户名密码就能像操作Linux服务器一样远程管理防火墙。这个方式在设备“上架”之后最常用毕竟你不能每次都跑到机房插Console线。4.2 一条安全策略是怎么配出来的策略配置的通用思路业界有个口诀源、目的、服务、动作、时间。翻译成人话就是——谁访问谁、访问什么服务、允不允许、什么时候允许。拿一个最常见的例子来说你有一台Web服务器在DMZ区IP是192.168.10.10内网用户trust区域网段192.168.0.0/16要访问它上面的80端口。安全策略可以这么拆源地址trust区域192.168.0.0/16目的地址dmz区域192.168.10.10服务HTTPTCP 80动作允许在命令行或Web界面里实际配置大概是这样的以华为USG的Web界面为例安全策略 新建策略 名称Allow-LAN-to-Web 源区域trust 目的区域dmz 源地址192.168.0.0/16 目的地址192.168.10.10 服务HTTP 动作允许配完之后别忘了检查两点会话表里有没有生成对应会话以及策略顺序。很多设备策略是自上而下匹配的如果上面有一条全局拒绝策略你这条允许策略放下面就会被挡住。我一开始也犯过这种错配完策略业务还是不通查了半天发现是策略顺序的问题。配置命令的语法各厂商略有差异但思路一样。比如锐捷防火墙的命令行也是“源zone到目的zone rule”ensp模拟器里的USG防火墙实验也是这么配的。学会一套换个品牌也就一天上手。4.3 给Windows Server放行特定端口还有一类“防火墙”是大家在日常办公中最常遇到的Windows防火墙。它虽然叫防火墙但本质上是主机防火墙保护的是单台电脑或服务器。很多运维新手处理数据库连接失败时第一反应是关掉Windows防火墙。你如果只是测试环境关掉确实能快速定位问题但生产服务器你总不能每配一个应用就关一次防火墙吧正确做法是放行指定端口。以Windows Server放行1521端口Oracle数据库默认端口为例图形化操作是控制面板 Windows Defender防火墙 高级设置 入站规则 新建规则 规则类型端口 协议TCP 特定本地端口1521 操作允许连接 配置文件勾选域、专用、公用看实际情况 名称Allow Oracle 1521命令行操作更快用PowerShell或者CMD管理员模式netsh advfirewall firewall add rule nameAllow Oracle 1521 dirin actionallow protocolTCP localport1521注意一个细节Windows防火墙默认配置里入站连接默认是“阻止”出站连接默认是“允许”。所以你的服务器要对外提供服务必须在入站方向放行端口如果服务器要主动访问外部数据库通常不需要改出站规则除非业务本身要限制外连。5. 常见问题与排查技巧实录5.1 关闭防火墙到底有没有影响这是搜索热度很高的一个问题我直接给结论有影响但影响大小取决于你所处的环境。对于个人家庭电脑如果你从不共享文件、不开启远程桌面、没有安装暴露型服务关闭Windows防火墙短期内也许没什么明显症状。但这不等于你“安全了”。现代恶意软件和蠕虫仍然会扫描开放端口一旦你的电脑中了某个利用漏洞的病毒防火墙能在入口处多一层拦截。哪怕拦截不了病毒它也能挡住不少主动扫描和未授权访问。对于企业服务器关闭防火墙的影响就是灾难性的。等保测评里你要是把生产服务器的防火墙关掉基本就是“高风险”整改意见直接给你标红。服务器不像家用电脑它有固定IP、开放端口、可能还有公网映射等于在门口贴了“快来打我”的告示。正确做法不是“关闭”而是最小化开放。只放行业务需要的端口管理端口如3389改成强密码并且限制来源IP不用的端口一律不留。5.2 业务不通时怎么快速定位是不是防火墙拦了排查防火墙问题最怕的是“瞎猜”。我自己的排查顺序一般是第一步先确认物理连通性。ping一下目标IPping不通先看网线、IP地址、路由有没有问题。如果ping通但业务端口不通多数是防火墙策略问题。第二步telnet测试端口。在客户端输入telnet 192.168.10.10 1521如果卡住或者连接失败基本可以断定中间某台设备的防火墙把端口拦了。第三步看防火墙会话表和日志。企业级防火墙都有“会话列表”或“流量日志”能看到这个数据包是被允许还是被拒绝。华为的web界面可以直接搜索源IP和目的IP查一下有没有产生会话。如果在会话表里能看到“deny”记录那就是策略没放开。第四步关掉Windows防火墙做对比测试。如果服务器是Windows系统排查时可以临时把Windows防火墙关了看业务是否恢复。恢复就说明问题在Windows防火墙入站规则直接加放行规则就行。注意测试完记得重新打开防火墙。整个过程要记录每一步的结论别做过就忘。很多时候排查不顺利是因为“前后不一致”——刚才关了防火墙业务通了后来又把防火墙开了又不通了你还在那怀疑是不是路由器问题。5.3 几个容易踩的坑和避坑心得踩坑一忘改默认密码和管理接口。新防火墙的web管理通常有个默认IP和默认密码如果不上线前改掉等于把大门钥匙挂在门框上。我建议拿到设备后第一件事就是改密码限制管理源只允许内网指定IP登录。踩坑二策略顺序搞混。设备匹配策略是自上而下的第一条匹配就生效。所以宽泛的“拒绝所有”策略一定要放最下面精确的“允许”策略放上面。如果你先写一条“拒绝所有”后面每一条允许策略都会被它掐死。踩坑三只配了入方向忘了回包流量。状态检测设备一般不需要为回包单独写策略但如果你在路由器上用ACL做过滤或者某台设备关闭了状态检测机制那必须额外考虑回程流量。很多老工程师都在这上面翻过车业务单向通、回包丢得干干净净。踩坑四安全区域划分太粗。很多人把所有服务器都放在trust区域跟办公网一个信任级别防火墙策略形同虚设。好歹把服务器区单独划一个zone和办公网之间做最小化访问控制。踩坑五不重视日志留存。防火墙日志是追溯攻击路径和排查故障的重要依据。生产环境一定要把日志接到日志服务器或云端日志平台别只存在本地硬盘上。本地硬盘满了新日志覆盖旧日志到时候想查什么都没得查。我在实际配置中还有一个小习惯每次改完策略都会先在测试环境里验证一遍用telnet、curl或者直接构造流量测试放行和拒绝是否符合预期。正式设备上改策略前先备份配置文件。企业级防火墙基本都有“保存配置”和“导出配置”功能一条命令的事别偷懒。宁可多花五分钟备份也不要等业务断了半小时再后悔。防火墙这东西原理说破了就一层窗户纸真正难的是面对复杂业务时能有条理地梳理访问关系、控制好每个开放端口。刚开始配策略被业务部门追着问“为什么上不了网”是常态但只要你把“源、目的、服务、动作”这几个要素嚼透了再结合日志和会话表反复验证很快就能从“看见防火墙就头大”变成“出一张策略表就跟喝水一样自然”。希望这篇内容能帮你少走点弯路。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →