第112篇:端口安全——MAC 地址绑定与 Sticky MAC
关键词
端口安全、Sticky MAC、MAC 地址绑定、MAC 泛洪、安全 MAC、端口封锁
一、什么是端口安全?
1.1 问题场景
场景一:MAC 地址泛洪攻击
攻击者发送大量源 MAC 不断变化的帧 → 交换机 MAC 表充满
→ 交换机退化为 HUB 模式(泛洪所有帧)
→ 攻击者可以嗅探所有流量
场景二:非法设备接入
某员工私自将个人笔记本接入办公网络 → 绕过 IT 合规检查
场景三:端口 MAC 数量过多
一个端口下接了小型交换机,下面又接了多台 PC
→ 广播域不受控,排障困难
1.2 端口安全的作用
端口安全(Port Security) 控制交换机端口的 MAC 地址学习行为:
| 功能 | 说明 |
|---|---|
| 限制 MAC 地址数量 | 端口最多学习 N 个 MAC 地址 |
| 限制特定 MAC 地址 | 只允许指定 MAC 的设备接入 |
| Sticky MAC | 动态学习到的 MAC 自动变成静态绑定 |
| 违规动作 | 发现违规后保护/封锁/告警 |
二、端口安全的工作模式
2.1 MAC 学习方式
| 模式 | 说明 |
|---|---|
| 动态学习 | 端口自动学习 MAC 地址,到达上限后不再学习 |
| 静态配置 | 手动指定允许的 MAC 地址 |
| Sticky MAC | 动态学习到的 MAC 自动保存到配置中(重启不丢失) |
2.2 违规处理动作
| 动作 | 说明 | 恢复方式 |
|---|---|---|
| Protect | 丢弃非法源 MAC 的帧,不告警 | 不自动恢复 |
| Restrict | 丢弃非法帧并记录日志 | 不自动恢复 |
| Shutdown | 端口 Error-Disable,彻底中断 | 手动恢复或 auto-recovery |
三、配置示例
3.1 限制 MAC 地址数量
# 端口最多学习 5 个 MAC 地址,超限 shutdown
interface GigabitEthernet0/0/1
port-security enable
port-security max-mac-num 5
port-security protect-action shutdown
# 自动恢复
error-down auto-recovery cause port-security interval 300
3.2 静态 MAC 绑定
# 只允许指定 MAC 的设备接入
interface GigabitEthernet0/0/2
port-security enable
port-security mac-address aaaa-bbbb-cccc
port-security mac-address dddd-eeee-ffff
port-security max-mac-num 2
port-security protect-action shutdown
3.3 Sticky MAC(推荐方式)
Sticky MAC 结合了动态学习的便利和静态配置的持久性:
interface GigabitEthernet0/0/3
port-security enable
port-security max-mac-num 2
port-security mac-address sticky
port-security protect-action restrict
# 端口学习到 MAC 后自动 sticky
当端口学习到第一个 MAC(0001-0001-0001),配置会自动变为:
interface GigabitEthernet0/0/3
port-security mac-address sticky 0001-0001-0001 vlan 10
3.4 查看端口安全状态
# 查看端口安全配置
display port-security
-----------------------------------------------
Port Enable MAC num Action Sticky
GE0/0/1 Y 5 shutdown No
GE0/0/3 Y 2 restrict Yes
# 查看安全 MAC 地址表
display mac-address security
-----------------------------------------------
MAC地址 VLAN 接口 Type
0001-0001-0001 10 GE0/0/3 Sticky
0001-0001-0002 10 GE0/0/3 Sticky
四、Sticky MAC 的工作原理
Sticky MAC 本质是动态 MAC 自动转换为安全静态 MAC:
1. 端口启用 Sticky MAC → 开始学习(端口初始状态正常)
2. PC-A 接入(MAC=AAAA)→ 交换机学习到 AAAA
└→ 自动保存:port-security mac-address sticky AAAA vlan 10
3. PC-A 离线 → MAC 地址不老化(因为是静态)
└→ 配置文件中永久存在
4. PC-A 再次上线 → 直接匹配静态 MAC,端口正常
5. 非法设备(MAC=BBBB)接入 → MAC 地址计数已达上限
└→ 触发 protect-action
注意:Sticky MAC 的老化时间由用户决定——可以通过 undo port-security mac-address sticky <mac> 手动清除。
五、实战案例
5.1 案例:某楼层交换机 CPU 异常高
现象:某楼层接入交换机 CPU 经常 100%,网络时断时续。
排查:
1. display mac-address → MAC 表有 8000+ 条目(已满)
2. MAC 表统计显示 90% 的 MAC 来自一个端口(GE0/0/10)
3. display mac-address interface GigabitEthernet0/0/10 → 几秒就换一批 MAC
根因:某个端口下被接入了小型交换机(或恶意攻击),大量 MAC 涌上来。
解决方案:
interface GigabitEthernet0/0/10
port-security enable
port-security max-mac-num 5
port-security protect-action shutdown
error-down auto-recovery cause port-security interval 600
5.2 案例:违规私接设备
现象:某工位的员工离职后,新员工用自己的笔记本上网被阻断。
根因:端口配置了 Sticky MAC,绑定了旧员工的 MAC 地址。
处理:
# 查看安全 MAC 表
display mac-address security interface GigabitEthernet0/0/5
# 清除旧 MAC
undo port-security mac-address sticky <old-mac> vlan 10
# 重新学习新 MAC(或者手工添加新 MAC)
port-security mac-address sticky <new-mac> vlan 10
六、端口安全 vs IPSG
| 对比项 | 端口安全(Port Security) | IP Source Guard |
|---|---|---|
| 检查内容 | MAC 地址 | IP 地址 + MAC 地址 |
| 数据来源 | 动态学习 / 静态 / Sticky | DHCP Snooping 绑定表 |
| 防护目标 | 防 MAC 泛洪、防非法 MAC | 防 IP 欺骗 |
| 检查层级 | 二层(MAC 帧) | 三层(IP 报文) |
| 适用场景 | 限制设备接入数量 | 防止篡改 IP 地址 |
最佳实践:两者配合使用——端口安全限制 MAC,IPSG 限制 IP。
七、注意事项
| 注意点 | 说明 |
|---|---|
| 不能同时与 MAC 地址漂移检测共享部分功能 | 注意冲突 |
| Trunk 端口谨慎使用 | Trunk 端口的多个 VLAN 多有大量 MAC |
| Sticky MAC 有保存上限 | 设备 Flash 空间有限 |
| Shutdown 后需手动/自动恢复 | error-down auto-recovery cause port-security |
| 端口安全不能防 ARP 欺骗 | 需要 DAI |
八、总结
| 知识点 | 核心要点 |
|---|---|
| 端口安全 | 控制端口 MAC 地址学习的行为 |
| MAC 数量限制 | 防止 MAC 泛洪攻击 |
| Sticky MAC | 动态 MAC 自动保存在配置中 |
| 违规动作 | Protect/Restrict/Shutdown 三种选择 |
| 适用场景 | 接入层限制设备接入 |
| 组合使用 | 端口安全 + IPSG + DAI 完整防护 |
九、思考
- 端口安全的三种违规处理动作分别是什么?有什么区别?
- Sticky MAC 和静态 MAC 有什么区别?
- 如果端口配置了 max-mac-num=2 但第三台设备接入,会发生什么?
- 端口安全能防 ARP 欺骗吗?为什么?
- 为什么 Trunk 端口通常不建议启用端口安全?
下篇预告:第113篇《MAC 地址漂移检测与处理》——讲解 MAC 地址在网络中频繁迁移的原因、检测方法和处理策略。