网络知识
Ops · Defense · Cisco / Huawei / H3C

网络安全加固实务

全书第 13 章讲攻击原理。这一页补防御侧:二层护栏怎么卡死、ACL 与状态墙差在哪、AAA 为什么两套协议、证书链在 TLS 里实际验什么。写法按 CCIE R&S / EI 的深度——机理、权衡、排障链,命令只是证据。

IEEE 802.1X + RFC 3748 EAP RADIUS UDP 1812/1813 TACACS+ TCP 49 三厂商 IOS / VRP / Comware
对照全书
13 安全基础 · 4.5 ARP · 6.3 NAT
RFC / 图谱
826 ARP · 4303 ESP · 7296 IKEv2 · 8446 TLS
隧道条目
ESP · WireGuard · OpenVPN
排障入口
分层决策树 · 全书 11.3
示例约定

下列 CLI 为自写教学片段,不是某厂商文档整段摘录。接口名按各家习惯:Cisco Gi0/1、华为 GigabitEthernet0/0/1、H3C GigabitEthernet1/0/1。安全特性语法随平台/版本漂移,拿不准处已标「以设备版本为准」。查看配置:Cisco show running-config;华为 / H3C 都是 display current-configuration(不是 show)。保存:Cisco end + write;华为 / H3C quit + save。

接入与二层防护

CAM · DAI · DHCP Snooping · VLAN hop · STP

接入交换机是攻击者离你最近的设备。CAM 表、ARP 缓存、DHCP 租约、VLAN 标签、STP 根桥——每一张「默认信任邻居」的表,都对应一种经典攻击和一套必须先开的护栏。

攻击 → 护栏对照

威胁被打的状态机制护栏
MAC 洪泛CAM / MAC 表溢出后未知单播泛洪伪造源 MAC 灌满 ASIC 表端口安全(限 MAC 数)
ARP 欺骗 / 毒化主机与网关 ARP 缓存无认证应答,冒充网关或主机DAI(依赖 DHCP Snooping 绑定表)
DHCP 欺骗 / 饿死租约与默认网关/DNS假服务器抢 Offer;耗尽地址池DHCP Snooping + 信任上行
VLAN 跳跃802.1Q 标签 / DTP 状态DTP 自协商成 trunk;双标签借 native VLAN关 DTP、改并标记 native VLAN
STP 抢根 / 单向环路根桥、端口角色、MAC 老化更优 BPDU;单向光纤让备口转指定BPDU Guard / Root Guard / Loop Guard / UDLD

端口安全:挡住 CAM 溢出

需求。交换机按源 MAC 学习、按目的 MAC 转发。CAM 是有限硬件表(老盒几千到几万条)。攻击者从接入口喷随机源 MAC,表满之后目的未知的单播被泛洪到 VLAN 内所有口——二层变成集线器,顺带为嗅探铺路。

机理。端口安全把「这个口允许出现的源 MAC」做成硬上限。超过上限按 violation 处理。Cisco 三种动作必须分清:

默认 maximum 1。PC + IP 电话是两个 MAC,必须至少 2,或用 multi-domain 把语音 VLAN 拆开。sticky 把学到的 MAC 写回运行配置,重载前要 write 才持久。

端口安全 · 自写示例 · 以设备版本为准
! access 口,最多 2 个 MAC,超限只丢+记日志
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10
 switchport port-security
 switchport port-security maximum 2
 switchport port-security mac-address sticky
 switchport port-security violation restrict
 spanning-tree portfast
 spanning-tree bpduguard enable
! 验证
show port-security interface Gi0/1
show port-security address
show interfaces status err-disabled
设计权衡

端口安全便宜、ASIC 就能做,但管不住 ARP 内容(合法 MAC 仍可发假 ARP)。无线、虚拟机热迁移、桌面虚拟化会让 MAC 飘口。今日园区更常把 802.1X 当主控、端口安全当「认证失败仍要限 MAC」的托底。不要在 trunk / EtherChannel 成员口上随手开端口安全。

DHCP Snooping:先有绑定表

需求。DHCP 无普遍认证(见 图谱 · DHCP、全书 6.4)。假服务器用更快的 Offer 把网关/DNS 指到攻击者;饿死则是耗尽合法地址池。

机理。交换机把口分成 trusted / untrusted。untrusted 口丢弃来自服务器的报文(Offer / ACK / NAK,以及 Leasequery 的应答 LeaseActive / LeaseUnassigned / LeaseUnknown),只允许 Discover / Request / Decline / Release / Inform。DHCP Leasequery 本身是查询请求,不是「来自服务器」。从合法交互里抽出绑定:MAC、IP、VLAN、接口、租期。这张表是 DAI 和 IPSG 的真源——没有绑定表就开 DAI,等于把全 VLAN 的 ARP 掐死。

Option-82(Relay Agent Information)是另一只坑:Cisco 开 snooping 后默认往 Discover 里插 option 82;若 DHCP 服务器或中继不认,客户端永远拿不到地址。对策是关插入,或让服务器按策略接受。

DHCP Snooping · 上行信任 · 自写示例
ip dhcp snooping
ip dhcp snooping vlan 10,20
! 服务器不认 option 82 时先关插入
no ip dhcp snooping information option
interface GigabitEthernet0/24
 description UPLINK-to-dist
 ip dhcp snooping trust
interface GigabitEthernet0/1
 ip dhcp snooping limit rate 15
show ip dhcp snooping binding
show ip dhcp snooping statistics

DAI:用绑定表审 ARP

需求。ARP 无认证(RFC 826、全书 4.5)。攻击者单播/广播假应答,把网关 IP 指到自己 MAC,流量被劫持。

机理。Dynamic ARP Inspection 在 untrusted 口截获 ARP Request/Reply,用 DHCP Snooping 绑定(或静态 ARP ACL)核对「发送方 IP ↔ 发送方 MAC ↔ 口 ↔ VLAN」。对不上就丢,可再开 src-mac / dst-mac / ip 一致性检查。trusted 口(上行、互联)不检查——否则会把合法网关的免费 ARP 也丢掉。

静态地址、打印机、集群 VIP 必须先做静态绑定,再开 DAI。速率限制要给:ARP 扫描或 Windows 开机风暴会把口打进 err-disable。

DAI / ARP 反欺骗 · 必须先有绑定
ip arp inspection vlan 10
ip arp inspection validate src-mac dst-mac ip
interface GigabitEthernet0/24
 ip arp inspection trust
! 静态打印机:ARP ACL。混合静态+DHCP 不要加 static
arp access-list STATIC-PRINT
 permit ip host 10.10.10.50 mac host 0000.5e00.5350
! static 把 ACL 隐式 deny 当显式 deny,不再回退查 DHCP Snooping 绑定,其余 DHCP 主机 ARP 会被黑洞。ACL 穷举全部静态映射时才可加 static
ip arp inspection filter STATIC-PRINT vlan 10
show ip arp inspection statistics
show ip arp inspection vlan 10

VLAN 跳跃:关 DTP、改 native

两条独立路径,别混成一种「VLAN 攻击」。

Switch spoofing

DTP 自协商成 trunk

Cisco 口默认可能是 dynamic auto/desirable。对端发 DTP,接入口变成 trunk,攻击者打任意 VLAN 标签进网。华为 / H3C 没有 DTP(Cisco 私有)。缓解:口显式 access 或 trunk,并 switchport nonegotiate。

Double-tag

借 native VLAN 剥一层

攻击者在 access 口发出「外层 = 干道 native VLAN、内层 = 目标 VLAN」。交换机当 untagged 剥掉外层,内层标签被带上 trunk。前提是攻击者所在 VLAN 恰好等于 trunk 的 native。缓解:native 不用 1、不承载用户、最好 vlan dot1q tag native。

Access / Trunk / native · 核心对照
vlan 99
 name UNUSED-NATIVE
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10
 switchport nonegotiate
interface GigabitEthernet0/24
 switchport mode trunk
 switchport trunk native vlan 99
 switchport trunk allowed vlan 10,20,30
 switchport nonegotiate
vlan dot1q tag native
show interfaces trunk
show dtp interface Gi0/1

STP:TCN、RSTP 握手、护栏该钉哪

威胁。接入口收到更优 BPDU,本交换机会认贼作父,整网拓扑被拽歪,流量经攻击者桥接。更隐蔽的是单向光纤:备口收不到 BPDU,Max Age 后转 Designated,环路形成。

802.1D 计时器与 TCN

默认 Hello 2 s、Max Age 20 s、Forward Delay 15 s。非边缘口从 Blocking 到 Forwarding 要听 15 + 学 15 ≈ 30 s。拓扑变化时,下游发 TCN 向根走;根在后续配置 BPDU 里置 TC。各桥把 MAC 老化从 300 s 临时改成 Forward Delay(15 s),用泛洪换收敛——大 VLAN 里这就是广播风暴的温床。

RSTP(802.1w)proposal / agreement

点到点指定口不再傻等 30 s,而是握手:

Proposal

指定口以 Discarding 发出 proposal(BPDU 里 Proposal 位置位),声称自己是该段指定。

Sync

对端把所有非边缘指定口立刻打成 Discarding(切断旧转发),保证本桥不会在握手中途成环。

Agreement

对端回 agreement。本端指定口立即 Forwarding。边缘口(PortFast / edged-port)不参与 sync。

RSTP 角色:Root / Designated / Alternate(通向根的备份,Discarding)/ Backup(同一网段的备份指定)。状态只剩 Discarding / Learning / Forwarding。TC 不再绕根走一圈:发起桥立即冲刷非边缘口 MAC,并在 2×Hello(TC While)内持续通告 TC。收敛按秒计而不是 30–50 s。

Cisco 园区常用 rapid-pvst(每 VLAN 一棵 RSTP)。华为默认 MSTP(多实例映射 VLAN),H3C 同样以 MSTP/RSTP 为主——不要假设对端是 PVST。

STP 模式与三道护栏
spanning-tree mode rapid-pvst
spanning-tree vlan 10 root primary
spanning-tree vlan 20 root secondary
spanning-tree portfast default
spanning-tree portfast bpduguard default
interface GigabitEthernet0/24
 spanning-tree guard root
interface GigabitEthernet1/0/25
 spanning-tree guard loop
udld enable
show spanning-tree vlan 10
show spanning-tree inconsistentports
护栏钉在哪触发后怎样别钉错
BPDU Guard边缘 / PortFast 接入口收到任何 BPDU → err-disable钉到上行会把自己拆掉
Root Guard「根不该从这里来」的口(面向接入的汇聚下行)收到更优 BPDU → root-inconsistent钉到真正通向根的口会拒收合法根
Loop Guard根口 / Alternate 的光纤或聚合BPDU 停了不转 Designated,进 loop-inconsistent与 Root Guard 同口互斥于多数平台
UDLD光纤互联侦测单向;aggressive 模式下失联 err-disable与 Loop Guard 互补,不是替代 STP

链路聚合:参数不一致就不 up

LACP 是 IEEE 标准(802.1AX / 原 802.3ad);PAgP 是 Cisco 私有。成员口必须同速、同双工、同 VLAN 集、同 native、同 STP 代价。哈希键选错会出现「聚合 up 但一条链路被打爆」——这叫极化:每跳都用同一套 src-dst-ip 哈希,流永远走同一成员。

LACP 聚合 · 厂商对象名不同
interface range GigabitEthernet0/1-2
 channel-group 1 mode active
interface Port-channel1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
show etherchannel summary
show etherchannel load-balance

网关冗余:HSRP 私有,VRRP 三家通用

Cisco 私有 HSRP(UDP 1985;v1 组播 224.0.0.2,虚 MAC 0000.0c07.acXX;v2 组播 224.0.0.102,虚 MAC 0000.0c9f.fXXX)。默认 Hello 3 s / Hold 10 s,优先级 100,默认不抢占。华为 / H3C 没有 HSRP,一律用标准 VRRP(IP 协议号 112,组播 224.0.0.18,虚 MAC 0000.5e00.01XX,通告默认 1 s,默认抢占)。Cisco 盒子两种都能跑,跨厂商必须 VRRP。

和 STP 对齐。HSRP/VRRP 主与该 VLAN 的 STP 根若不是同一台,流量先二层绕到根,再三层绕回来——次优路径,排障时像「网关活着但慢」。要么把优先级和 STP root primary 配在同一台,要么把接入做成 routed access,把 STP 从用户 VLAN 里拿掉。

SVI 上的第一跳冗余 · HSRP vs VRRP
! Cisco SVI;跨厂商改 vrrp 1 ip ...
interface Vlan10
 ip address 10.10.10.2 255.255.255.0
 standby version 2
 standby 10 ip 10.10.10.1
 standby 10 priority 110
 standby 10 preempt
! 教学用 0=明文(running-config 可见,有风险);7=后面已是 Type-7 密文,勿把明文塞进 key-string 7
 standby 10 authentication md5 key-string 0 <local-secret>
show standby brief

疑难 1 · 单向光纤导致二层环路

现象

CPU 升高、MAC 表疯狂翻动、同一 VLAN 内间歇性通断;show spanning-tree 里本该 Alternate 的口变成 Designated Forwarding。

逐层定位

先看接口光功率 / CRC / 单通计数,再看该口最后一次收到 BPDU 的时间。对端仍在转发,本端已听不到 BPDU。打开 Loop Guard 后口会进 loop-inconsistent 而不是成环;UDLD aggressive 会直接 err-disable。

根因

光纤单芯坏或收发接反,BPDU 只向一个方向走。STP 把「听不到更优 BPDU」理解成「我应该当指定」,环路形成。护栏是 Loop Guard + UDLD,不是再调 Hello 定时器。

疑难 2 · EtherChannel 协商不起

现象

一端 Port-channel / Eth-Trunk up,对端成员单独成口;或协议显示 suspended / unselected。

逐层定位

对两端的 mode(active/active 或一边 passive)、速率双工、allowed VLAN、native VLAN、STP 模式逐项 diff。Cisco on 与 active 不能组;华为 lacp-static 对 H3C 必须是 dynamic(都是 LACP)。

根因

LACP 要求两端都跑协议且参数一致。PAgP 是 Cisco 私有,对华为 / H3C 无效。

端口认证 802.1X / EAP

IEEE 802.1X · RFC 3748

端口安全管「几个 MAC」,802.1X 管「这台机器/这个用户是谁」。身份不在交换机上,交换机只做认证器。

三角色与报文路径

Supplicant

申请者

终端上的 802.1X 客户端。与交换机之间走 EAPoL,EtherType 0x888E,不出 VLAN、不经 IP。

Authenticator

认证器 = 交换机

未授权时只放 EAPoL(以及通常的 STP / LLDP / EAPOL-Start)。把 EAP 载荷重新封装进 RADIUS Access-Request 送给服务器。

Auth Server

认证服务器

几乎总是 RADIUS(UDP 1812)。EAP 在 RADIUS 里用 EAP-Message 属性(RFC 3579)来回挑战,直到 Accept / Reject。

EAP 本身是 RFC 3748 定义的框架:Request / Response / Success / Failure,具体算法是 Type 号插进去的方法。站内没有 RFC 3748 精读页,方法选型直接看下面;证书侧走 TLS 1.3 与 PKI。

EAP 方法外层内层互认证什么时候选
EAP-TLSTLS无(证书就是凭证)是(双方证书)有 PKI、机器证书;最干净也最重
PEAPTLS(验服务器证)常 EAP-MSCHAPv2视内层;用户侧多是口令有 AD 口令、不想给每台终端发证
EAP-TTLSTLSPAP / CHAP / MSCHAPv2 / EAP视内层要在隧道里跑非 EAP 口令协议
EAP-FASTTLS(PAC)多种视部署Cisco 历史方案;新网优先 TLS/PEAP
EAP-MD5无隧道挑战哈希否不要用于接入

交换机还常叠:MAB(用 MAC 当用户名骗过 RADIUS,给打印机)、Guest VLAN、Critical VLAN(RADIUS 全死时的逃生阀)、多域(数据 + 语音)。authentication order 是先试谁,authentication priority 是两者都成功时谁赢——先 MAB 再 802.1X 会让会说话的终端永远停在 MAB,除非 priority 把 dot1x 抬上去。

802.1X 接入口骨架 · 服务器侧另配
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
dot1x system-auth-control
radius server ISE
 address ipv4 10.255.1.10 auth-port 1812 acct-port 1813
! 教学用 0=明文(配置可见,有风险);7=后面已是 Type-7 密文,勿塞明文
 key 0 <shared>
interface GigabitEthernet0/1
 switchport mode access
 authentication port-control auto
 authentication host-mode multi-domain
 authentication order dot1x mab
 authentication priority dot1x mab
 mab
 dot1x pae authenticator
show authentication sessions interface Gi0/1 details
show aaa servers
设计权衡

802.1X 的代价是终端生态:打印机、摄像头、哑交换机下挂的 PC。MAB 把身份退化成 MAC,等于弱口令,必须配合 DHCP Snooping / DAI / 下载 ACL 收口。Critical VLAN 要假设「认证基础设施挂了业务也不能全黑」,但也不能大到变成旁路。

疑难 · 客户端一直 Connecting,口停在 unauthorized

现象

超管口能学到 MAC,但 EAPoL 有 Start 无 Success;用户说「网线插了没网」。

逐层定位

① 口上抓 ether proto 0x888e,确认 supplicant 是否在说话。② show aaa servers 看 RADIUS 是否 dead / RTT 爆炸。③ 服务器日志看 EAP 方法是否被拒(客户端 PEAP、策略只要 TLS)。④ 证书:PEAP 外层要验服务器证,系统时间错、中间 CA 没下到终端,会在 TLS 握手死掉——这已经不是二层问题。

根因

最常见是 RADIUS 不可达(UDP 1812 被管线 ACL 丢掉)或 EAP 方法/证书链不一致。交换机只是翻译器,它 Accept 不了它看不懂的 EAP。

ACL 访问控制列表

Standard · Extended · Wildcard

ACL 是无状态的有序列表:从上往下第一次命中就停。Cisco 表尾有一条写不出来的 deny any;华为 traffic-filter / H3C packet-filter 未命中默认放行,末尾规则要自己写。它不是防火墙,但几乎所有防火墙策略、QoS 分类、NAT 兴趣流、路由过滤,底层都还是这张表。

编号、命名、标准 vs 扩展

Cisco IOS华为 VRP / H3C
只匹配源标准:1–99、1300–1999基本:2000–2999
五元组扩展:100–199、2000–2699高级:3000–3999
命名ip access-list standard|extended NAME命名 ACL / 仍用 rule 号插入
下发到口ip access-group NAME in|out华为 traffic-filter;H3C packet-filter

通配符掩码(反掩码)

表示连续前缀时,通配符是子网掩码按位取反:0 = 这一位必须相等,1 = 无所谓。不是「再写一遍掩码」。算法:wildcard = 255.255.255.255 − subnet_mask(等价于按位 XOR)。非连续 wildcard(如 0.0.0.254)没有对应的合法子网掩码,不能用「掩码取反」反推。

要匹配的前缀子网掩码通配符写法
单主机 203.0.113.10255.255.255.2550.0.0.0host 203.0.113.10
192.168.10.0/24255.255.255.00.0.0.255192.168.10.0 0.0.0.255
10.0.0.0/8255.0.0.00.255.255.25510.0.0.0 0.255.255.255
172.16.32.0/20255.255.240.00.0.15.255240 的反码是 15
192.168.1.0/27255.255.255.2240.0.0.31192.168.1.0 0.0.0.31
任意0.0.0.0255.255.255.255any
例题

匹配 172.16.16.0–172.16.31.255:这是 /20,掩码 255.255.240.0,通配符 0.0.15.255,ACE 写 172.16.16.0 0.0.15.255。写成 0.0.31.255 会把 172.16.0.0/19 整块放进来。匹配奇数主机用 192.168.1.1 0.0.0.254(最低有效位为 1、其余 7 bit 通配)——能写不代表该写,排障极痛。

方向、隐式 deny、放置

标准靠近目的 · 扩展靠近源
! 标准:禁止 192.168.10.0/24 访问本路由器的这条出接口网段
access-list 10 deny 192.168.10.0 0.0.0.255
access-list 10 permit any
interface GigabitEthernet0/0
 ip access-group 10 out

! 扩展:在靠近源的入向丢掉去 203.0.113.10 以外的流量
ip access-list extended WAN-IN
 permit tcp any host 203.0.113.10 eq 443
 permit tcp any host 203.0.113.10 eq 80
 permit icmp any host 203.0.113.10 echo-reply
 deny ip any any log
interface GigabitEthernet0/0
 ip access-group WAN-IN in
show ip access-lists WAN-IN
show ip interface Gi0/0 | include access
局限

ACL 不跟踪连接:放行入向 TCP 80 不等于回程 ACK 自动合法,回程要另写或改用状态墙 / established(只看 ACK/RST 位,不是真状态机)。ACE 顺序错会「看起来配了没生效」。不要用 ACL 冒充 IPS——它不看载荷。

防火墙演进与区域

Packet filter → Stateful → NGFW

ACL 回答「这张包像不像允许的形状」。状态墙回答「这张包是不是我见过的那次对话的续集」。NGFW 再问「这是不是 Slack,是不是财务部的人」。

包过滤

五元组 + 方向。快、可硬件化、无会话表。代价:必须成对写回程,对分片、动态端口(FTP 数据、SIP)无能为力。Cisco ACL、华为 traffic-filter 属于这一层。

状态检测

看到合法的前向包(TCP SYN、UDP 首包)就在状态表里开一条流,回程自动放。TCP 按状态机(SYN-SENT → ESTABLISHED → FIN/RST);UDP/ICMP 用空闲计时器模拟虚连接。家用 NAT 路由器默认就是「内出回程放、外入默认拒」。

NGFW

在状态之上叠 App-ID(TLS 里看 SNI / 解密后再看)、User-ID、IPS 签名、文件类型。解密是性能与隐私的双重税,不是默认打开就赢。

区域(zone)与 DMZ

Zone-based 把接口编进安全域,策略写在 zone-pair(源域 → 目的域)上,而不是散落在每条口的 ACL。Cisco ZBFW 用 class-map / policy-map;ASA 用 security-level 0–100(高 → 低默认放,低 → 高要显式)。华为 USG / H3C SecPath 同样是域间策略,不是 IOS 那种接口 ACL。

DMZ 是「互联网可以碰到、但不能直接进内网」的隔离区。经典三腿:untrust / dmz / trust。Web 在 DMZ,数据库在 trust,只放 DMZ→trust 的数据库端口,不放 untrust→trust。双防火墙(外墙 + 内墙)比单箱三腿多一个独立故障域,代价是多一跳状态与更多不对称风险。

状态墙 vs ACL · 非对称路由

ACL 不在乎包从哪条口回来。状态墙在乎:回程必须打中建状态的那台箱的那张表。ECMP、双出口、策略路由把去程和回程拆开,表现是「SYN 出去了、SYN-ACK 在墙上看不到、客户端重传」。这不是 ACL 写错。对策:防火墙集群做状态同步、把对称路径设计进去、或把该流改成无状态旁路(等于放弃检查)。

疑难 · 非对称路由撞上状态墙

现象

内网访问分支偶尔建连失败;抓包在服务器网卡上看得到 SYN-ACK,客户端看不到;防火墙命中计数只涨「首包」。

逐层定位

去程 traceroute 走 FW-A,回程走 FW-B。FW-B 没有这条半连接,丢 SYN-ACK。查两边会话表、下一跳、是否开了不对称绕过或集群 sync。

根因

状态与路径绑定。先修对称(或 HA sync),再谈策略细不细。

NAT / PAT 的安全含义

RFC 1918 · 隐藏 ≠ 边界

全书 6.3 已讲地址复用。这里只补一句安全结论:NAT 改写的是地址,不是权限。

隐藏 RFC 1918 拓扑能降低被直接扫描的概率,但:UPnP / PCP / 应用层 ALG 会自己打洞;恶意代码从内往外连,NAT 会老老实实建映射;IPv6 双栈主机根本不走你的 NAT44。把 NAT 当安全边界,是把「地址不够用时的权宜」误认成策略引擎。

IPv6 侧的 NAT64 是协议翻译(IPv6 过渡),目的不是藏前缀。不要把 NAT44 的「安全感」搬到 NAT64 上。

AAA:认证 / 授权 / 审计

RADIUS · TACACS+ · 本地

谁能登录、登录后能敲哪条命令、事后能否还原操作——三件事可以拆开,也可以糊在一起。RADIUS 和 TACACS+ 的本质差别就在这里,不在「哪个更新」。

Authentication

认证

你是谁。口令、证书、令牌。失败就不该进入授权。

Authorization

授权

你能做什么。exec 级别、命令集、VLAN、ACL 名。802.1X 下发 VLAN 也是授权。

Accounting

审计

你做了什么。起止时间、命令记录、流量字节。出了事靠它,不靠回忆。

RADIUS vs TACACS+(不要写反)

RADIUSTACACS+
传输UDP 1812 认证 / 1813 计费
(历史 1645 / 1646 仍能见到)
TCP 49
加密范围经典 UDP RADIUS(非 RadSec)只保护口令字段;用户名、AV 对其余明文共享密钥混淆/保护整个报文 body(头仍可见;不是现代 AEAD)
AAA 模型认证与授权耦合在同一次 Access-Accept;计费另包认证 / 授权 / 审计三次会话,可拆开
属性IETF AV 对(RFC 2865/2866),厂商 VSATACACS+ AV 对;按命令授权是长项
出身IETF 标准,接入 / 802.1X / VPN 用户身份的默认选择Cisco 起源,现多厂商可对接;设备管理面常用
丢包行为UDP,要靠重传与超时;链路差时服务器容易被标 deadTCP,会话清晰,防火墙要放长连接

选型。终端入网、无线、802.1X、VPN 用户 → RADIUS(ISE / FreeRADIUS / 华为 Agile Controller)。网络设备管理员敲 CLI → TACACS+(或华为 HWTACACS),因为可以按命令授权:有人只能 display,有人才能 save。RADIUS 不是做不好设备登录,是做不好「每一条命令再问一次服务器」。

本地 vs 集中。本地用户是服务器全死时的逃生舱,应极少、极强、只从 OOB 进来。日常账号全部进 AAA;否则离职回收会变成「全世界都有 enable secret」。

设备管理面 AAA 骨架 · 自写
aaa new-model
tacacs server HQ
 address ipv4 10.255.1.20
! 教学用 0=明文(配置可见,有风险);7=后面已是 Type-7 密文,勿塞明文
 key 0 <shared>
aaa group server tacacs+ TAC
 server name HQ
aaa authentication login VTY group TAC local
aaa authorization exec VTY group TAC local
aaa authorization commands 15 VTY group TAC local
aaa accounting commands 15 VTY start-stop group TAC
ip tacacs source-interface Loopback0
! exec 授权 ≠ 逐命令授权;commands / accounting 必须在 line 下再绑一次
line vty 0 4
 login authentication VTY
 authorization exec VTY
 authorization commands 15 VTY
 accounting commands 15 VTY
 transport input ssh
验证

Cisco:show aaa servers、test aaa group TAC admin <pass> legacy、debug tacacs(生产慎用)。华为 / H3C:display hwtacacs-server / display hwtacacs scheme,看状态与时延。UDP 1812 被中间 ACL 丢掉时,RADIUS 表现为超时后回落到 local——如果你没写 local,整箱拒登。

VPN 类型总览

IPsec · SSL VPN · DMVPN · WG / OpenVPN

站点之间要的是稳定的三层邻接;人在酒店要的是能穿过只放 443 的防火墙。两者都叫 VPN,封装、认证和排障点完全不同。

类型数据面控制面 / 端口典型用途
站点到站点 IPsecESP(IP 协议 50);少用 AH(51)IKEv2 UDP 500;NAT-T 时 UDP 4500分支 ↔ 总部,隧道模式装整包
远程接入 SSL VPNTLS 里再装 IP / 应用代理常见 TCP 443员工、承包商;易穿防火墙
DMVPNmGRE + IPsecNHRP 解析 spoke 公网地址一句话:中心挂 mGRE,分支动态建 spoke-spoke,不必全互联配静态加密图
WireGuardUDP 上 AEAD常用 UDP 51820,可改现代轻量;算法不可协商
OpenVPN自定义记录 + TLS 控信道常用 UDP 1194;迫不得已 TCP 443tun 三层 / tap 二层;TCP 套 TCP 会放大重传

IPsec 排障先分清两层 SA:IKE SA 是控制通道,Child / IPsec SA 才是 ESP。抓物理口只能看见 SPI 与密文;明文在隧道虚口(Cisco VTI / 主机 utun)。AH 认证外层地址,过 NAT 必挂,现实中几乎绝迹。

设计权衡

分支多、要动态 spoke-spoke:DMVPN 或厂商等价(华为 DSVPN)。只要人、不要路由协议:SSL VPN 或 WireGuard。要合规算法套件可审计:IKEv2 + ESP。OpenVPN 的价值是生态与 tap;新部署若没有历史包袱,WG 或 IPsec 更干净。

PKI 与证书链

为 TLS / EAP-TLS 打底

证书不是「加密用的文件」,是「某把公钥属于某个名字」的签名陈述。TLS(RFC 8446)和 EAP-TLS 验的是这条陈述能不能连到你已信任的根。

根 CA

预置在系统 / 浏览器 / 超管信任锚。私钥离线。自签自己。

中间 CA

根签中间,中间签业务。吊销中间比吊销根现实。TLS 服务器必须把中间证书一起送出,客户端信任库通常只有根。

实体证书

叶子。SAN 里的 DNS / IP 必须对得上你要连的名字。KU / EKU 还得允许 serverAuth 或 clientAuth。

验证链:签名有效 → 当前时间在 notBefore / notAfter 内 → 名字匹配 → 用途匹配 → 一路到信任锚 → 没有被吊销。缺任何一环,客户端应拒绝,而不是「能握手就算了」。

CRL 是签发者定期发布的序列号黑名单,客户端要能拉到 CDP,有滞后。OCSP 是在线问「这张还活着吗」;OCSP stapling 让服务器代问并在握手里带上,避免客户端再打一枪隐私泄露。吊销基础设施不可达时,各实现的 soft-fail / hard-fail 策略不同——这是内网 MITM 设备最爱钻的空子。

自签证书只在「两端都手工信任这张」时有意义。浏览器报错点继续,等于把信任锚临时改成攻击者。内网设备管理 HTTPS、IKE 证书、EAP-TLS 机器证,应走企业中间 CA,而不是每台设备一张互不认识的自签。

纵深防御与控制面

Planes · CoPP · OSPF / BGP 安全

边界墙挡外网,挡不住已经坐在会议室的笔记本。最小权限的意思是:每张口、每个进程、每个路由邻接,默认不应比完成任务所需的更大。

分层

层对象本页对应手段
边界Internet / 专线 / 远程接入状态墙、DMZ、IPsec、uRPF、边缘 ACL
网络VLAN、路由域、网关二层护栏、ACL、控制面认证、CoPP
主机超管、服务器、PC802.1X、补丁、本地防火墙
应用TLS、API、身份证书链、AAA、最小授权
数据备份、密钥、日志加密静态数据、审计独立存放

三平面与管理面加固

数据面转发;控制面跑 STP / OSPF / BGP / ARP;管理面是 SSH、SNMP、NETCONF。打垮控制面,数据面的表会腐烂。Telnet(TCP 23)明文,应用 SSH(TCP 22) 替换;HTTP 管理面换成 HTTPS;SNMPv2c 团体字等于口令,换 SNMPv3 或至少接口 ACL。CoPP(Control Plane Policing)一句话:给打到 CPU 的包做 QoS——让 SSH / 路由协议有带宽,把异常扫描和伪造 BGP 挤到 policer 里丢掉。

控制面加深:OSPF 状态机、LSA、区域、认证

OSPF 直接封装在 IP,协议号 89。组播 224.0.0.5(所有 OSPF 路由器)、224.0.0.6(DR/BDR)。管理距离 / 优先级:Cisco OSPF AD 统一 110(内部/外部不分)。华为 / H3C 的 OSPF preference 默认 10 只覆盖内部路由(intra / inter-area);ASE / NSSA 外部路由默认约 150。「OSPF 压过静态 60」只对内部路由成立;外部路由通常静态 60 胜。这是跨厂商最容易踩的坑。

邻居状态

Down → Init → 2-Way → ExStart → Exchange → Loading → Full。2-Way 时在广播网上选 DR/BDR:优先级高者胜,并列比 Router-ID;优先级 0 永不参选;DR 不抢占。Hello / Dead 必须一致:广播与点到点默认 Hello 10 s / Dead 40 s;NBMA 与点到多点默认 Hello 30 s / Dead 120 s。网络类型一边 Broadcast、一边 P2P,会一个等 DR、一个不等,邻接建不稳。

卡在 ExStart / Exchange:优先查 MTU。DBD 带头声明接口 MTU,对不上就反复选主。Cisco 可用 ip ospf mtu-ignore 做权宜,正道是改接口 MTU。

LSA 1–7

Type名称起源范围
1Router每台路由器本区域
2NetworkDR本区域
3SummaryABR区域间
4ASBR SummaryABR告诉外区域怎么去 ASBR
5AS-ExternalASBR除 stub/NSSA 外全 AS
6MOSPF Group—已废弃,见到当噪声
7NSSA ExternalNSSA 内 ASBRNSSA 内;ABR 译成 Type 5 再送出

LSA 刷新 1800 s,MaxAge 3600 s。Type 1/2 变了才在本区域跑 SPF;Type 3/5 变了是距离向量式的区内计算,不重算整棵拓扑树。

区域类型

  • 普通:1–5 都进得来。
  • Stub:无 4/5,ABR 给默认(Type 3)。
  • Totally stubby(Cisco / 华为 stub no-summary):再挡 Type 3,只留一条默认。
  • NSSA:无 Type 5,允许 Type 7。
  • Totally NSSA:NSSA + no-summary。

虚链路:两个 ABR 之间经非 stub 传输区域搭一条逻辑点到点,用来缝 Area 0 分区或把「没贴到骨干」的区域救回来。传输区域不能是 stub/NSSA。能汇总、能改物理连接就不要用虚链路。

安全与扩展

明文口令几乎无用;至少 MD5,新平台用 HMAC-SHA。被动接口关掉用户 VLAN 上的 Hello,既减攻击面也减 CPU。BFD 把检测从 40 s 量级压到 50 ms × 3 这类数量级(具体收发间隔以平台为准)。Graceful Restart / NSF 让转发面在控制面重启时留住 FIB,帮手路由器继续当邻接。

OSPF 进程骨架 · 接口宣告方式不同
router ospf 1
 router-id 1.1.1.1
 passive-interface default
 no passive-interface GigabitEthernet0/0
 network 10.0.0.0 0.0.0.255 area 0
 area 10 stub no-summary
 area 20 nssa
! ip ospf authentication message-digest 是接口命令;也可在进程视图写 area 0 authentication message-digest
interface GigabitEthernet0/0
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 <local-secret>
 ip ospf network point-to-point
show ip ospf neighbor
show ip ospf database
控制面加深:BGP 11 步、iBGP、TTL security

BGP-4 跑在 TCP 179。Cisco AD:eBGP 20、iBGP 200。华为 / H3C 的 BGP preference 默认往往是 255(e/i 不分 20/200)——又一个跨厂商陷阱。Keepalive 默认 60 s,Hold 180 s,协商取双方 Hold 的较小值。

Cisco 经典决策 11 步(先保证 NEXT_HOP 可达)

  1. 最高 Weight(Cisco 本地,默认 0;本机 network/aggregate 常为 32768)。华为对应思路是 PrefVal。
  2. 最高 LOCAL_PREF(默认 100,AS 内传)。
  3. 本机起源(network / aggregate 优于 redistributed)。
  4. 最短 AS_PATH。
  5. 最低 Origin:IGP < EGP < Incomplete。
  6. 最低 MED(默认只在同一邻接 AS 之间比)。
  7. eBGP 优于 iBGP(联邦 eBGP 夹在中间)。
  8. 到 NEXT_HOP 的 IGP 度量更低。
  9. 两条都是 eBGP 则留更老的(稳定)。
  10. 更低 BGP Router-ID。
  11. 更低邻居地址。RR 场景还会比 cluster-list 长度。

iBGP 学来的前缀默认不再转给另一个 iBGP 邻居——防环。于是要全互联、或 Route Reflector、或联邦。RR 不是免费的:cluster-list、Originator-ID、反射哪些客户,配错会出现「会话 Established 但前缀到不了边叶」。

TTL security(GTSM,RFC 5082):neighbor x ttl-security hops 1 只收 TTL 接近 255 的包,直接邻居伪造从远端打进来的包(TTL 已经被减过)进不了 BGP。这比 ebgp-multihop 只放行、不检查接收 TTL 更严。TCP-AO / MD5 防篡改;前缀侧再用前缀列表、最大前缀数、RPKI(安全域另一门课)。

安全排障 / 审计速查

Evidence first

先证明护栏在不在、表里有没有绑定、AAA 活着没有,再猜策略。计数看增量。

要问的问题Cisco华为 / H3C
口为什么 err-disable?show interfaces status err-disabled
show errdisable recovery
display error-down / display interface brief(名称随版本)
端口安全学到谁?show port-security addressdisplay port-security
DHCP 绑定表在吗?show ip dhcp snooping bindingdisplay dhcp snooping user-bind all / display dhcp snooping binding
DAI 丢了多少?show ip arp inspection statisticsdisplay arp detection statistics / display arp anti-attack
802.1X 会话show authentication sessionsdisplay dot1x
AAA 服务器死活show aaa serversdisplay radius-server / display hwtacacs-server
ACL 命中show ip access-listsdisplay acl + 应用记录
STP 异常口show spanning-tree inconsistentportsdisplay stp abnormal-interface
OSPF 邻接show ip ospf neighbordisplay ospf peer
NAT 会话show ip nat translationsdisplay nat session(防火墙/出口箱)
IPsec SAshow crypto ikev2 sa
show crypto ipsec sa
display ike sa / display ipsec sa
# 主机侧旁证(不是替代设备命令) arp -an # 网关 MAC 是否被换 sudo tcpdump -ni eth0 ether proto 0x888e sudo tcpdump -ni eth0 port 1812 or port 49 sudo tcpdump -ni eth0 arp or port 67 or port 68 sudo tcpdump -ni eth0 esp or udp port 500 or udp port 4500

审计思路(四问)

  1. 这张口的角色是什么?access / trunk / 路由口 / 隧道口。角色错了,后面所有护栏都钉错。
  2. 护栏依赖的表在不在?DAI 要绑定,802.1X 要 RADIUS,状态墙要会话,IPsec 要 SA。
  3. 失败时走了哪条回退?local AAA、critical VLAN、errdisable recovery、OSPF 默认路由——回退比主路径更容易被忘。
  4. 日志去了哪里?TACACS+ accounting、syslog、设备本地 buffer。没有审计的加固,只是「当时好像配过」。

贯穿场景:一栋楼的园区怎么收口

假设三层园区:接入交换机、双汇聚、双核心、出口状态墙、DMZ 里一台 Web、分支走 IPsec。目标不是「命令最多」,是每张表只信任该信任的人。

接入

口显式 access,nonegotiate。VLAN 10 数据 / 20 语音 / 99 空 native。边缘口 BPDU Guard。DHCP Snooping 只信任上行走汇聚的聚合口。DAI 与 IPSG 吃同一张绑定表。能上 802.1X 的上 802.1X,哑巴设备 MAB + 静态绑定。端口安全 maximum 2 当托底,violation restrict 以免电话先说话把口打死。

汇聚

SVI 做网关。VRRP(跨厂商)或 HSRP(纯 Cisco),主网关 = 该 VLAN 的 STP 根。更干净的做法:routed access,用户 VLAN 终止在接入,汇聚只跑三层,STP 从用户网消失。OSPF 用户网段放 stub / totally stubby,汇聚当 ABR,核心只看汇总。

核心

Area 0,点到点,MD5/SHA,passive 掉所有非互联口。CoPP 保证 SSH 与 OSPF/BFD 不被扫描挤死。管理走独立 VRF / OOB,VTY 只收管理网段。

出口与分支

状态墙分 untrust / dmz / trust。Web 放 DMZ,只放 443 进来、只放去数据库的那一个端口进去。分支 IPsec(ESP + IKEv2),兴趣流不要 overlapping 到导致回流不对称。管理员 TACACS+,802.1X 用户 RADIUS——两套服务器,别省成一台兼所有。

若必须保留跨汇聚的二层:聚合用 LACP,哈希用 src-dst-ip 并在两跳换键避免极化;Loop Guard + UDLD 钉在光纤上。FHRP 与 STP 不对齐时,先改优先级,不要先加策略路由掩盖。

专家级易错点 / 设计陷阱

  1. 标准 ACL 靠目的、扩展 ACL 靠源。放反了:标准 ACL 在源附近会误杀去其他目的的合法流量;扩展 ACL 在目的才丢,带宽和暴露面都浪费了。
  2. 通配符是反掩码:0 必须匹配,1 忽略。连续前缀才等于子网掩码按位取反;0.0.0.254 这类非连续 wildcard 没有对应合法掩码。/20 是 0.0.15.255 不是 0.0.20.255。Cisco 标准 1–99 / 1300–1999,华为基本 2000–2999。
  3. 经典 UDP RADIUS(非 RadSec)只保护口令字段;TACACS+ 用共享密钥混淆/保护整个 body(不是现代 AEAD)。RADIUS = UDP 1812/1813(旧 1645/1646);TACACS+ = TCP 49。AAA 分离是 TACACS+ 的长项,别写反。
  4. 端口安全 violation:protect 静默丢、restrict 丢+记、shutdown 进 err-disable。Cisco 默认 shutdown、maximum 1。电话 + PC 先把 maximum 调到 2。
  5. DAI 的真源是 DHCP Snooping 绑定表(外加静态 ARP ACL)。先开 DAI、后开 snooping,或上行未 trust,等于全 VLAN ARP 黑死。
  6. DHCP Snooping 在 untrusted 口丢服务器报文。服务器口、中继上行必须 trust。Option-82 默认插入能让不认它的服务器不回 ACK。
  7. VLAN 跳跃两条路:DTP 自协商 trunk;双标签借 native。缓解是关协商、native 不用 1 且不承载用户、最好标记 native。华为 / H3C 无 DTP。
  8. 状态防火墙跟踪会话,ACL 不跟踪。非对称回程会让状态墙丢包,ACL 不会因为「走了另一台箱」就丢——两种失败模式不一样。
  9. NAT 隐藏内网不是安全边界。它改地址,不审载荷;从内打出的连接一样建映射。
  10. HSRP 是 Cisco 私有;华为 / H3C 用 VRRP。HSRP 默认不抢占、Hello 3/10;VRRP 默认抢占、通告 1 s。主网关必须和该 VLAN 的 STP 根对齐,否则次优。
  11. 华为默认 STP 是 MSTP,Cisco 园区常 Rapid-PVST。跨厂商互通先统一模式。BPDU Guard 只钉边缘口,Root Guard 钉「根不该出现」的下行。
  12. Cisco OSPF AD 统一 110;华为 / H3C OSPF 内部 preference 默认 10、ASE/NSSA 外部约 150。内部路由在华为箱上可能压过静态(60);外部路由通常静态 60 胜。不要把 AD 数字原样抄到 VRP。
  13. OSPF 卡在 ExStart:先查 MTU,再查网络类型。Hello/Dead 广播默认 10/40,NBMA 30/120,必须两端一致。DR 不抢占。
  14. BGP 11 步里 Weight 是 Cisco 本地属性,出不了箱子。改路径给全 AS 用 LOCAL_PREF。iBGP 不反射 iBGP 学来的前缀,所以才要全互联或 RR。
  15. 802.1X 的认证器是交换机,不是 RADIUS。EAP 在 EAPoL(0x888E)与 RADIUS EAP-Message 之间被翻译。方法不匹配或证书链断,交换机只看到失败。
  16. Cisco 出站 ACL 过滤不了本机产生的包。要限 SSH/路由协议源,用控制面 / 管理 ACL / CoPP,别以为接口 out ACL 已经罩住 CPU。