🛡️ 第二章 针对网络的攻击
📄 一句话概括

防御的位置不是"哪里重要就放哪里",而是按流量的方向摆——大多数讨论都在讲"入口",但攻击得手之后的每一个动作,都是"出口"方向。

📝 本节和前面几节的关系

前面七节讲的是攻击的七种做法(看、改、冒、越权、借用、留门、压垮)。这一节开始换视角——从"攻击者怎么做"转到"防守方该把力气花在哪里"。

它是第二章后半段(2-9 到 2-15)的总纲。后面每一节讲的都是"某个位置上的某个手段":防火墙在边界、抓包在链路上、检测设备在关键节点、集中管理在后台、分段在网络里、无线在最后一跳。这一节要先把"位置"这件事说清楚。

一、先分清三个方向

这是本节最核心的一张表。看流量不能只看"从哪来",要看它往哪个方向去:

方向 指的是什么 谁在看这一段 典型动作
入口 从外部进入内部 边界设备 扫描、尝试登录、投递钓鱼邮件
出口 从内部发往外部 出口策略、网络检测 回连服务器、外传数据、解析恶意域名
内部 内部机器之间 分段策略、东西向检测 横向扫描、批量读取文件

三个方向里,被讨论最多的是"入口",但造成损失最多的往往是"出口"和"内部"。 原因很直白:

现实是:单点被攻破在绝大多数环境里是迟早的事。 所以真正决定损失大小的,是进来之后能做什么——而这一步全发生在出口和内部。

二、出口防御为什么特别值钱

一台被攻陷的机器要想有价值,必须满足两个条件之一:能跟外面联系(接受指令、回传结果),或者能把东西送出去(外传数据)。这两件事都走出口方向。

所以出口策略能做三件很关键的事:

  1. 掐断回连——恶意程序需要定期向它的控制服务器报到。如果这个方向的连接出不去,恶意程序就变成了一个孤岛。
  2. 拦住外传——数据要离开你的网络才能算被偷走。出口方向是"最后一关",也是唯一能拦住大批量外传的位置。
  3. 发现异常解析——恶意程序要找到它的服务器,通常得先做域名解析。异常解析是"里面有东西"的一个很强的信号。

一句话记法:入口防的是"它能不能进来",出口防的是"它出去能干成什么"。

三、"多层防御"到底是什么意思

"多层防御"(有时叫纵深防御)经常被说成"多买几台设备",但它真正的意思不是这个。它指的是:

假设每一层都可能被绕过,所以要在不同的位置、用不同的机制,让同一次攻击必须连续成功多次。

层次是这么设计的:

多层的价值不在"多",而在"彼此不依赖"——如果五层用的都是同一套机制(比如说都靠"认 IP"),那只要攻击者换个地址,五层就一起失效了。

四、动手 Demo:把十条流量按方向排一排

flows = [
    ("外部用户访问官网", "入口"),
    ("外网尝试连内网数据库端口", "入口"),
    ("钓鱼邮件带附件进入邮箱", "入口"),
    ("外部扫描内网段 IP", "入口"),
    ("已中招的主机回连命令控制服务器", "出口"),
    ("内部数据被打包传到境外云盘", "出口"),
    ("内网设备向恶意域名做域名解析", "出口"),
    ("被接管的设备主动连住宅代理服务", "出口"),
    ("一台机器扫同网段其他机器", "内部"),
    ("办公机访问内网文件服务器", "内部"),
]

实跑输出:

  流量                                        方向      常见的检查位置
  ------------------------------------------------------------------------------
  外部用户访问官网                                  入口      边界防火墙 / 入侵防御
  外网尝试连内网数据库端口                              入口      边界防火墙 / 入侵防御
  钓鱼邮件带附件进入邮箱                               入口      边界防火墙 / 入侵防御
  外部扫描内网段 IP                                入口      边界防火墙 / 入侵防御
  已中招的主机回连命令控制服务器                           出口      出口策略 / 网络检测响应
  内部数据被打包传到境外云盘                             出口      出口策略 / 网络检测响应
  内网设备向恶意域名做域名解析                            出口      出口策略 / 网络检测响应
  被接管的设备主动连住宅代理服务                           出口      出口策略 / 网络检测响应
  一台机器扫同网段其他机器                              内部      内网分段 / 东西向检测
  办公机访问内网文件服务器                              内部      内网分段 / 东西向检测

  入口 4 条 | 出口 4 条 | 内部 2 条

  ①【入口】永远是讨论最多的,因为攻击消息面就从那里进——
     但注意:攻击真正造成损失的那些动作,全都发生在【出口】和【内部】。
  ② 出口过滤能挡住的正是最要害的三件:僵尸回连、数据外传、恶意域名解析。
     一台被接管的机器之所以还有价值,就因为它【能把东西送出去】。
     把出口一关,它就从武器变成了孤岛。
  ③ 内部那两条解释了一个词:东西向流量。
     它指的是内网机器之间的通信——传统边界设备天生看不到这一段。
  ④ 为什么必须【多层】:2026 年的统计是,
     近五分之一的案例里,数据外泄发生在系统失陷后的第一个小时内;
     从初始入侵到外泄的平均时间已经压缩到小时级。
     单层防御只要被打穿一次,后面就没有第二次机会。

读这个输出:十条里有四条是出口方向,但多数单位在这四条上的投入远少于入口那四条。尤其注意"向恶意域名做解析"和"连住宅代理服务"这两条——它们看起来很普通(都是正常的出网访问),不看行为根本分辨不出来,这也正是它们难防的原因。

五、出口防御为什么常被忽略

三个原因:

  1. 直觉上"往外发"不像威胁。 出口流量有自己的业务(软件更新、云同步、备份),很容易被当成正常。
  2. 出口策略做细了会拦自己的业务。 业务系统往往需要访问很多外部地址,一刀切会立刻出问题——所以很多单位干脆放开。
  3. 没有人在看。 入口有设备、有检查项、有合规要求;出口往往既没有设备,也没有人负责。

但请看第四节的最后那条数据:近五分之一的案例中,数据外泄发生在失陷后的第一个小时之内。也就是说,靠"事后慢慢查"已经来不及了——必须有一条防线在数据往外走的那一刻就看得见。

六、⚠️ 2026 现状

30 秒实验

做一次"方向自查",两件事:

  1. 在你自己的电脑上打开"资源监视器"(Windows)或"活动监视器"(macOS)的网络标签,看当前有哪些程序在对外连接。你会看到很多你从没打开过的程序在联网——这就是出口方向的常态:它一直很忙,所以异常很难被发现。
  2. 想一想你的网络里有没有人在看"往外发的流量"。如果答案是"没人看",那这一节的结论就落到了你身上:你的防守只做了半张网。

这一节要带走的一句是:入口防的是"别让坏人进来",出口防的是"别让他把东西带走"——而后者,才是损失真正发生的地方。

常见误区

  1. 错误:只要把入口守住,后面就没问题了。——纠正:入口是必要条件,不是充分条件。 现实里入口防线的绕过方式太多(钓鱼邮件、自带设备、供应商接入、被攻陷的云服务、甚至内部人员)。所以必须假设"进来"迟早会发生,重点设计"进来之后能做什么"。这就是多层防御的出发点。

  2. 错误:多层防御就是多买几台设备。——纠正:关键在"机制不同、彼此不依赖"。如果五层都靠同一个判据(比如都只认 IP 地址、都只看端口),那攻击者换一个维度,五层就一起失效。有效的多层是在不同维度上设卡:身份、设备状态、行为模式、数据内容、网络位置。

  3. 错误:我们的内部网络很安全,都是自己人。——纠正:"内网可信"这个前提在 2026 年已经被主流架构抛弃了。 内部网络里同样会有被钓鱼的员工电脑、默认口令的设备、以及离职后没回收的账号。所以主流做法是内部也分段、内部也验证——不因为它在里面就默认它可信。

  4. 错误:出口策略太麻烦,业务会受影响,所以先放开。——纠正:这是一个权衡问题,不是一个"要不要"的问题(见 成本、便利性、安全性的考量)。务实的做法是分两步走:第一步只记录和告警(不拦),摸清正常的出口是什么样;第二步再对确认异常的类别收紧。先有可见性,再谈控制——直接一刀切必然失败。

自测三问(点开对答案) 1. 为什么说"攻击真正造成损失的动作,大多发生在出口方向"? —— 因为**一台被攻陷的机器要产生价值,必须能跟外面联系或能把东西送出去**。接受指令要走出口、回传结果要走出口、外传数据要走出口——**这三件事都在出口方向**。相反,入口只是"进来的那一下";进来之后要造成损失,**几乎每一步都要往外走**。所以出口方向是"损失的最后一道闸门"。 2. "多层防御"里,"多层"的关键是什么? —— 关键不是**数量**,而是**彼此不依赖**。如果多层的判据相同(都只认 IP、都只看端口),那绕过一个就等于绕过全部。有效的多层是在**不同维度设卡**:身份维度(你是谁)、设备维度(这台机器是否合规)、行为维度(这个动作是否异常)、数据维度(内容是否可以外发)、位置维度(从哪一段发起)。**维度不同,才叫真的一层。** 3. 为什么"先记录、后拦截"是出口策略更务实的落地顺序? —— 因为**你不知道正常的出口长什么样**。出口流量里本来就有大量合法访问(更新、云同步、备份、接口调用),一上来就拦必然误伤业务,然后被迫全放开。**先只记录和告警**,跑一段时间就能摸清"哪些目标、哪些时段、多大的量"是正常的;**有了这个基线,再收紧才有依据**。这也是本章后面 2-11 要讲的"先只检测不阻断"的同一个思路。

相关笔记