📚 第九章 网络安全
📄 一句话概括

插上网线不等于能上网——802.1X 把交换机端口变成一道门禁。 它在认证通过前不关端口,而是只放行「我要认证」这一种报文。

📝 本节和前面几节的关系

上一节的 TLS 保护的是「内容」。 这一节保护的是「谁被允许接入」,而且它工作在二层,比 IP 还早。 Demo 把一次完整认证拆成七步,再算一台 48 口交换机一天的账。

一、三个角色,各干一件事

802.1X 把参与者分成三方, 这个分法和 RADIUS 那套是同一个思路:干活的不管判断,判断的不碰流量。

角色 是谁 干什么
请求者 你的电脑 出示身份
认证者 交换机端口 只放行认证报文,通过后放行流量
认证服务器 通常是 RADIUS 真正做判断

第二行是整套机制的枢纽:端口在认证通过前不是「关着」,而是「只放行一种报文」。 所以设备能说话,但只能说「我要认证」这句话。 这比「先开再踢」安全得多——因为「先开」的那一瞬间,攻击已经进去了。 这也解释了为什么它能工作在二层:认证报文走的是 EAPOL,一种二层帧,不需要 IP 地址。 所以一台还没拿到 IP 的电脑也能认证——这个顺序很重要,反过来的话整套机制就没法启动。

二、EAP 的几种方式,好坏差别很大

EAP 只是一个「装认证方法的信封」,里面装什么决定了安全性:

方式 怎么验 安全性
EAP-MD5 口令的哈希 弱,可离线爆破
EAP-TLS 双方都用证书 最强,但要给每台终端发证书
PEAP 先建 TLS 隧道,再传用户名口令 常用,部署成本低

第一行的问题和前面讲过的完全一样:它只把口令做了个哈希就发过去,抓到就能离线爆破, 而且没有「服务器证明自己」这一步,所以可以被假 AP 骗走凭证。 它今天基本只出现在教科书里。 第三行是折中的答案:先用服务器的证书建一条 TLS 隧道,再在隧道里传用户名口令。 这样终端只要信任 CA 就行,不用给每台机器发证书, 部署成本立刻从「几千张证书」降到「一个 CA」。

三、按人分流,才是它真正的价值

很多人以为 802.1X 的作用是「拦住外人」,其实它更大的价值在后面一步: RADIUS 的回应里可以带一个 VLAN 号,交换机收到就把这个端口划进那个 VLAN。 于是同一根网线、同一个端口,换个账号登录,网络行为完全不一样。 教工进内网、学生只上外网、打印机只开打印端口、认证失败只能到修复页—— 这张表才是「准入控制」这个词的真实含义。 它和「端口绑定 MAC 地址」的差别在这里:MAC 地址谁都能改,账号改不了。 绑定 MAC 只能防「随手插错口」,防不了「有心人换张网卡」。 所以绑定 MAC 是「防呆」,802.1X 才是「防人」。 最后一个现实问题:认证服务挂了,全网就上不了线。 所以真实部署一定配「认证失败后回落到某个受限 VLAN」, 而不是直接断网——安全措施的第一原则是「自己坏掉时不能拖垮业务」。

四、动手 Demo:802.1X 的三方握手,和一台交换机的账

把一次完整认证拆成七步,数清每步几个报文;再按 48 口、200 台终端算一天的量。

steps = [
    ("插上网线",         "端口未授权",   "只有 EAPOL 能过"),
    ("交换机问身份",     "EAP-Req/Id",   "1 个报文"),
    ("终端报用户名",     "EAP-Res/Id",   "1 个报文"),
    ("交换机转 RADIUS",  "自己不做判断", "1 个报文"),
    ("RADIUS 与终端",    "口令或证书",   "2 到 4 个报文"),
    ("RADIUS 回成功",    "EAP-Success",  "1 个报文"),
    ("端口转为已授权",   "放行流量",     "0 个报文"),
]

low = 1 + 1 + 1 + 2 + 1
for a, b, c in steps:
    print(a, b, c)
print("最少", low, "个报文")
print("200 台一天", 200 * low, "个,约", 200 * low * 60 // 1024, "KB")

实跑输出:

--------------------------------------------------------------------
802.1X 的三方握手,和一台交换机的账
--------------------------------------------------------------------
**有线网络里有个尴尬的事实**:**网线一插就能通,谁插的都一样。**
**802.1X 就是给「插上网线」这件事加一道门禁。**
**它把参与者分成三方,各自干一件事。**

  角色               是谁                  干什么
  ----------------------------------------------------------------------
  **请求者**         **你的电脑**          **出示身份**
  **认证者**         **交换机端口**        **在通过之前只放行认证报文**
  **认证服务器**     **通常是 RADIUS**     **真正做判断**

**第二行是整套机制的关键**:**端口在认证通过前不是「关着」,而是「只放行一种报文」。**
**所以设备能说话,但只能说「我要认证」这句话。**
**这比「先开再踢」安全得多**——**因为「先开」的那一瞬间,攻击已经进去了。**

  步骤                                发生了什么             报文
  -------------------------------------------------------------------------------
  ① 插上网线                          **端口处于未授权**     **只有 EAPOL 能过**
  ② 交换机发 EAP-Request/Identity     **问「你是谁」**       **1 个报文**
  ③ 终端回 EAP-Response/Identity      **报上用户名**         **1 个报文**
  ④ 交换机转发给 RADIUS               **自己不做判断**       **1 个报文**
  ⑤ RADIUS 与终端来回                 **口令或证书校验**     **2 到 4 个报文**
  ⑥ RADIUS 回 EAP-Success             **认证通过**           **1 个报文**
  ⑦ 端口转为已授权                    **放行正常流量**       **0 个报文**

**一次完整认证最少 6 个报文**,**加上 RADIUS 那边来回,实际在六到八个之间。**
**这些报文都在二层,走的是 EAPOL,不带 IP 地址**——
**所以「还没拿到 IP」的设备也能认证,这个顺序很重要。**

**现在算一台交换机的账**:

  项目                     结果
  -------------------------------------
  端口数                   **48**
  每天上线终端             **200 台**
  每台认证报文             **6 个**
  一天报文总数             **1200 个**
  假设每个报文 60 字节     **70 KB**

**数字很小,说明身份认证本身不费带宽。**
**真正费事的是「认证之后给什么权限」**——
**RADIUS 的回应里可以带一个 VLAN 号,交换机收到就把端口划进那个 VLAN。**

  身份             分到哪个 VLAN     能干什么
  --------------------------------------------------------
  **教工账号**     **VLAN 10**       **能访问内网服务器**
  **学生账号**     **VLAN 20**       **只能上外网**
  **打印机**       **VLAN 30**       **只开打印端口**
  **认证失败**     **VLAN 99**       **只能到修复页**

**这张表说明 802.1X 的价值不在「拦人」,在「按人分流」**:
**同一根网线,换个账号登录,网络行为完全不一样。**
**这也正是它比「端口绑定 MAC 地址」高明的地方**——**MAC 谁都能改,账号改不了。**

七步里最少六个报文,加上 RADIUS 那边的来回,实际在六到八个之间。 这个数字小得出人意料——身份认证本身几乎不占带宽,它占的是「时间」。 注意第 1 步和第 7 步:一步报文都没有,因为它们不是报文,是端口的开关状态。 整套机制真正的动作就发生在这两步,前面五个报文全是为了让这个开关动一下。 最后那点流量算出来只有几十 KB,但它换来的是「按人分流」: RADIUS 返回一个 VLAN 号,端口就换一个身份。 所以 802.1X 的价值从来不在「拦人」,而在「分人」。

30 秒实验

  1. 算一下:如果每台终端每天重连 5 次,200 台一天多少报文?(6000 个,仍然只是几十万字节)
  2. 想一下:为什么认证报文要在二层走,而不能等拿到 IP 再说?
  3. 想一下:认证服务器挂了,网络该怎么表现?

常见误区

  1. 以为「插上网线就该通」。 802.1X 的存在就是为了推翻这句话,端口在认证前只放行 EAPOL。
  2. 以为「绑了 MAC 就等于准入控制」。 MAC 谁都能改,那是防呆不是防人。
  3. 以为「认证越严越好」。 服务器一挂就全网瘫痪,必须留回落通道。
自测三问(点开对答案) 1. 802.1X 的三个角色? —— **请求者、认证者(交换机端口)、认证服务器(RADIUS)**。 2. 认证通过前端口是怎么处理的? —— **不是关闭,而是只放行 EAPOL**,所以设备还能喊「我要认证」。 3. 为什么 PEAP 比 EAP-TLS 部署成本低? —— **终端只要信任 CA**,不用给每台机器单独发客户端证书。

全书到此结束。九章下来,从一根网线到一个网页,这条链上的每一环都拆开看过了。最后一句话 :协议之所以长成这样,不是因为设计者聪明,而是因为每一个约束都真实存在过。

相关笔记