防火墙是数据中心最外圈的那道墙,它做的事说起来很简单:按一张规则表决定哪个包能过、哪个不能过。而它的第一原则不是【拦得多】,而是默认拒绝——没写进允许表的一律不通。这条原则之所以重要,是因为黑名单要求你先知道什么是坏的,而新攻击的特征还没人知道。
上一节讲的是物理边界(谁能走到机器跟前)。这一节开始讲网络边界(谁能碰到这台机器)——两节合起来,才是数据中心【墙】的完整含义。
它也接着 网络的虚拟化① VLAN 那条线:那一节讲的是把一个大网络切成很多小块(VLAN),这一节讲的是在块与块之间决定谁能过。分段是划线,防火墙是设卡——两个动作经常一起出现,但解决的不是同一个问题。
一、防火墙只做一件事:按规则决定放不放
不管防火墙后面挂了多少功能,最核心的动作只有一个:拿这条连接的几个特征,去规则表里逐条比对,命中哪条就按哪条处理。
老式防火墙比对的是【五元组】:
| 看什么 | 例子 |
|---|---|
| 源地址 | 从哪来 |
| 目的地址 | 去哪 |
| 源端口 | 从哪个口来 |
| 目的端口 | 去哪个服务 |
| 协议 | TCP / UDP / ICMP |
为什么要记住【五元组】这个概念:因为后面所有的变化(下一节的 DMZ、再后面的 NGFW)讲的都是在这个基础上加看什么。五元组是防火墙的最小视野——它只看得见【谁跟谁在通】,看不见【在聊什么】。
二、动手 Demo:五元组与默认拒绝
看到什么算成功:
==================================================================================================
【Demo 5】数据中心的【城墙】:防火墙
==================================================================================================
防火墙是数据中心最外圈的那道墙。它的工作听起来很简单:
按规则表决定,哪个包能过、哪个不能过。
【一】老式防火墙只看五元组
序号 源地址 目的地址 目的端口 动作
--------------------------------------------------------------------------------------------
1 任意 10.0.0.80 443 允许
2 10.0.1.0/24 10.0.0.90 3306 允许
3 10.0.1.0/24 10.0.0.80 22 允许
... 任意 任意 任意 拒绝
最后一行就是第一原则:【默认拒绝】。
没写进允许表的,一律不通——这叫白名单,比黑名单稳得多。
【二】默认拒绝 vs 默认放行,被突破的概率差多少
策略 放行的东西 被漏进来的可能
--------------------------------------------------------------------------------------------
默认放行(黑名单) 除了知道坏的,其余全通 高:新东西一律先放进来
默认拒绝(白名单) 只有写明的业务端口 低:新的东西要人先开口子
黑名单的问题在于【你得先知道它坏】——而新攻击的特征还没人知道。
【三】老式状态检测 vs 下一代防火墙(NGFW)
对比项 老式状态检测 下一代防火墙 NGFW
----------------------------------------------------------------------------------------
看什么 五元组 五元组 + 应用 + 用户 + 内容
443 里面 只知道是 HTTPS 能认出这是哪个应用
管得住吗 只能按 IP 段放或堵 按应用、按用户、按内容管
能不能防隧道 不能:别的协议能塞进 443 能:应用识别(6000+ 种)
交付形态 一台硬件设备 硬件 / 虚拟 / 云服务(FWaaS)
【四】为什么【只开 443】不等于安全
允许 443 出站,本意是【只让大家上网页】。
但任何协议都能伪装成 443:把别的流量塞进这条通道,
老式防火墙只看到【一条 443 连接】,看不出里面装的是什么。
这就是 NGFW 存在的第一个理由——把 443 拆开看,认出应用再决定放不放。
一句话收束:防火墙的第一原则不是【拦住多少】,而是【默认拒绝】——
把不知道的先关在门外,每开一个口子都要有人负责。
读结果:
- 第一张表的最后一行才是它的灵魂。前三行是【允许什么】,最后一行是【除这些之外全部拒绝】——顺序不能颠倒。如果先写【允许这些】再写【其余允许】,等于什么都没做;而如果规则表是从上往下匹配的,那【默认拒绝】必须放在最后一条,也必须在逻辑上是默认行为。
- 第二张表讲的是一个哲学差别:黑名单是【列举坏的东西】,白名单是【列举好的东西】。 攻击技术每天都在变,列举【坏的】这件事永远滞后;而【好的东西】是有限且稳定的——所以我方的服务列表可以提前写死。 这就是为什么安全领域里白名单几乎总是更稳的选择(代价是维护成本:每加一个服务都要人开口子)。
- 第三张表里【443 里面】那一行是 NGFW 存在的直接理由。老式防火墙看到 443 只知道【这是网页流量】;而任何协议都能伪装成 443——所以【只开 443】这条看似保守的规则,实际上开了一条能看到底的口子。NGFW 把包拆开看应用,补的就是这个洞。
三、从状态检测到下一代防火墙
防火墙这几十年的演进,其实就沿着一条线:看的东西越来越多。
| 代数 | 看什么 | 能管住什么 |
|---|---|---|
| 包过滤 | 五元组 | 按地址和端口放行 |
| 状态检测 | 五元组 + 连接状态 | 只放行【自己发起的连接的回包】 |
| 下一代(NGFW) | + 应用 + 用户 + 内容 | 认出这是哪个应用、哪个人在用 |
每一步解决的都是前一步的漏洞:
- 包过滤的漏洞是【回包随便进】——所以加了状态检测(记住这条连接是谁发起的)。
- 状态检测的漏洞是【只看端口,不看内容】——所以加了应用识别(认出 443 里跑的是什么)。
而 NGFW 这一代还有两个值得注意的变化(写在 Demo 第三张表的最后一行):
- 交付形态变了:不再只是【一台放在机房的硬件盒子】,可以是虚拟化的软件,也可以是云上的服务(防火墙即服务)。这一点对云特别重要——因为云上根本没有一个固定的【机房边界】给你放盒子。
- 商业模式变了:从【买设备】变成【订服务】。因为威胁特征库要一直更新,买断的设备第二年就过期了——订阅制让更新变成服务的一部分。
四、为什么【只开 443】不等于安全
这一段值得单独展开,因为它是很多团队真实踩过的坑:
一个常见的出口策略是【只允许 443 出站】——本意是【只让大家上网页,别的不许】。听起来很严格。但问题在于:
- 443 是一个端口,不是一种用途。任何协议都可以被包装进 443 里传出去——从外面看,它和浏览网页没有区别。
- 所以它挡不住【数据外传】。攻击者拿到数据之后,只要把数据塞进一条 443 连接就能送出去——而这条连接在防火墙眼里是【完全正常的网页流量】。
这就是内容检测和应用识别存在的理由:光看【走哪个门】已经不够了,还要看【门里面走的是什么】。
一句话总结这一节:防火墙的第一原则是【默认拒绝】,第一视野是【五元组】,而它必须进化到【能看见门里面】——否则这道墙只挡住了不懂门道的人。
30 秒实验
打开你自己电脑的防火墙设置(Windows 是【Windows Defender 防火墙】,macOS 是【防火墙】),做两件事:
- 看【入站规则】里有多少条是【允许】,多少条是【阻止】(通常有几百条,绝大多数是系统预置的)。
- 找你最熟悉的一个软件(比如浏览器或聊天工具),看它自己加了哪些规则 ——注意它是给自己开了一个【端口】,还是开了一个【程序】。
做完你会对【默认拒绝】有具体的感受:你的电脑默认就是【入站全拒、出站全放】的——也就是说,别人主动连你连不上,但你主动连出去没人管。这也顺便解释了本节第四段:为什么【数据外传】这么难防——因为在出口这一侧,默认是放行的。
常见误区
-
错误:防火墙越严越好,规则越少越安全。——纠正:规则少不等于安全,也可能是【该开的没开】——而一个没开的业务口子会逼着人去找绕过去的办法(比如把服务挪到一个【已经开着的】端口上,或者干脆申请放开一大段)。所以规则表的质量标准不是【条数】,而是【每一条都能说出它为什么存在】。 定期复核时该问的是:这条规则是谁开的、为哪个业务开的、现在还开着的必要是什么。
-
错误:防火墙是网络设备,和业务系统没关系。——纠正:防火墙规则表其实就是业务关系的书面版本。哪台机器能访问数据库、哪个网段能连到支付接口——这些都是业务规则,只是写成了网络语言。所以改防火墙规则这件事,本质上是在改业务边界,必须让业务方参与。现实中很多故障不是被攻击,而是一次没通知的规则变更把某个接口掐断了。
-
错误:有了下一代防火墙,老式的五元组规则就不用管了。——纠正:NGFW 是【在五元组之上】做判断,不是【取代五元组】。它是先按地址和端口筛一遍,再对放行的流量做应用识别——第一层没收紧,第二层就要处理更多的流量,性能会先撑不住。所以正确做法是两层都要:用五元组把不需要的流量挡在门外(便宜且快),再让应用识别去对付那些伪装成合法端口的流量(贵但准)。
-
错误:出口开放 443 是必须的,所以数据外传防不住。——纠正:443 确实必须开,但【防不住】和【没法管】是两件事。能做的是几件事:限制【谁能连出去】(不是所有服务器都需要访问互联网)、对出站流量做应用识别和内容检查、记录外传的流量特征以便事后追溯。重点是:出口控制的目标不是【拦住所有外传】,而是【让外传这件事留痕、并且不是随便哪台机器都能做】。
自测三问(点开对答案)
1. 为什么【默认拒绝】比【默认放行 + 黑名单】更稳? —— 因为**两者面对的是【未知】**。黑名单要求**先知道什么是坏的**,才能把它列进去——**而新攻击的特征还没人知道,所以它天然滞后一个周期**。白名单反过来:**它只需要知道【什么是好的】**,而**自己需要的服务是有限的、可以提前写死的**。所以面对【没见过的攻击】,黑名单放行、白名单拦截。代价是**白名单维护更贵**——每加一个新服务都要有人开口子(也正是本节误区 1 说的那个麻烦)。 2. 为什么【只允许 443 出站】不能防住数据外传? —— 因为**443 是一个端口,不是一种用途**。端口就像门牌号,**它只说明【走哪个门】,不说明【门里搬的是什么】**。任何协议都能被包装进 443 传输,**从防火墙看来,它和普通的网页流量没有任何区别**。所以【只开 443】这条规则实际上开了一条【外观合法、内容不限】的通道——**攻击者拿到数据后,只要把它塞进一条 443 连接就能送出去**。要防住这个,得靠**应用识别与内容检查**把门拆开看(也就是 NGFW 那一层做的事)。 3. 状态检测比包过滤多解决了什么问题? —— 它解决了**【回包怎么进】**的问题。包过滤只看五元组,所以它无法区分【这条连接是内部主动发起的】和【外面主动连进来的】——**结果就是:为了让内部能上外网,规则表里会写一条很宽的入站规则,等于把这个口子也对着外面开了**。状态检测通过**记住连接状态**,做到【只放行由内部发起的那条连接的回包】——**外面主动发起的连接依旧被拒**。**这就是为什么它成为标配**:它让【允许出站】不再意味着【顺带允许入站】。- ☐ 下一节(6-6 防火墙之后的缓冲地带:DMZ)
相关笔记
- 安全对策的物理性架构 —— 上一篇:物理边界上的五层防线
- 防火墙之后的缓冲地带 —— 下一篇:墙和墙之间那块地方放什么
- 网络的虚拟化① VLAN —— 分段:把大网切成小块
- ☁️ 云计算 · 索引 —— 全课路线图