4、路由协议安全:OSPF认证配置、BGP安全机制、静态路由的防欺骗策略
路由协议安全,说白了就是防止别人往你的网络里“塞假消息”。
我见过太多网络事故,根源就是路由被篡改。你想想看,如果攻击者伪造了一条路由,把流量引到他的机器上,那后果不堪设想。所以,这一章咱们就聊聊怎么给路由协议上把锁。
4.1 OSPF认证配置:给邻居关系加个密码
OSPF 是内部网关协议,在企业网里用得最多。它有个特点:只要两台路由器配置了相同的 OSPF 参数,就能自动建立邻居关系。这其实挺危险的。
我记得有一次,一个客户的内网突然出现大量路由抖动。查了半天,发现是有人私自接了一台测试路由器,OSPF 配置跟生产网一样,结果把整个网络搞乱了。从那以后,我要求所有 OSPF 接口必须开启认证。
4.1.1 认证类型
OSPF 支持两种认证方式:
- 简单认证(Type 1):明文密码,不推荐。说白了就是裸奔,抓包就能看到密码。
- MD5 认证(Type 3):加密哈希,推荐使用。虽然 MD5 现在被认为不够安全,但在 OSPF 场景下,配合密钥链使用,基本够用。
4.1.2 配置示例
我个人习惯用接口模式配置,这样更灵活。下面是一个 MD5 认证的例子:
// 接口模式下配置 OSPF MD5 认证
interface GigabitEthernet0/0/0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 MySecretKey123
注意:邻居两端的 key-id 和密码必须一致。否则邻居关系起不来。
我曾经遇到过一个问题:配置了认证后,OSPF 邻居一直卡在 INIT 状态。后来发现是 key-id 不匹配。一端配了 key-id 1,另一端配了 key-id 2。记住,key-id 必须完全一致。
4.1.3 区域认证 vs 接口认证
OSPF 认证可以在两个层面配置:
| 认证层面 | 作用范围 | 我的建议 |
|---|---|---|
| 区域认证 | 整个 OSPF 区域 | 适合小型网络,配置简单 |
| 接口认证 | 单个接口 | 适合大型网络,粒度更细 |
我个人更倾向于接口认证。为什么呢?因为你可以针对不同的邻居使用不同的密码。万一某个密码泄露了,影响范围可控。
4.2 BGP安全机制:互联网的“护照检查”
BGP 是互联网的“粘合剂”。它负责在不同自治系统(AS)之间交换路由。但 BGP 本身有个致命弱点:它默认信任邻居发来的所有路由。
你想想看,如果某个 AS 故意宣告了一个不属于它的 IP 段,那整个互联网的流量都可能被劫持。这就是著名的 BGP 路由劫持。
4.2.1 BGP 的 TTL 安全机制(GTSM)
GTSM(Generalized TTL Security Mechanism)是个很实用的功能。它的原理很简单:BGP 邻居之间通常只有一跳,所以 TTL 值应该是 255。如果收到一个 TTL 值小于 255 的 BGP 报文,说明这个报文经过了中间设备,很可能是伪造的。
// 配置 BGP GTSM
bgp 65001
peer 10.0.0.2 ttl-security hops 1
嗯,这里要注意:配置了 GTSM 后,两端的 TTL 检查必须一致。否则邻居关系会中断。
4.2.2 BGP 的 MD5 认证
BGP 也支持 MD5 认证,原理跟 OSPF 类似。但 BGP 的认证是在 TCP 层面做的,所以更底层一些。
// 配置 BGP MD5 认证
bgp 65001
peer 10.0.0.2 password MyBgpPassword
我建议 BGP 密码至少 16 位,包含大小写字母和数字。虽然 MD5 有弱点,但在 BGP 场景下,攻击者很难在短时间内破解。配合 GTSM 一起使用,安全性会大幅提升。
4.2.3 路由过滤与前缀列表
这是最核心的 BGP 安全机制。说白了,就是只接受你信任的路由。
我在项目中遇到过一起事故:一个客户从上游 ISP 收到了大量不存在的路由,导致路由器内存耗尽。从那以后,我要求所有 BGP 邻居必须配置前缀列表过滤。
// 配置前缀列表,只允许接收特定的路由
ip prefix-list ALLOWED-ROUTES seq 5 permit 10.0.0.0/8 le 24
ip prefix-list ALLOWED-ROUTES seq 10 deny 0.0.0.0/0 le 32
bgp 65001
neighbor 10.0.0.2 prefix-list ALLOWED-ROUTES in
为什么用前缀列表?因为它比 ACL 更灵活。你可以控制前缀的长度范围,比如只允许 /24 以内的路由。
4.3 静态路由的防欺骗策略
很多人觉得静态路由很安全,因为它是手动配的。其实不然。静态路由同样可以被利用。
举个例子:你配了一条默认路由指向 192.168.1.1。如果攻击者伪造了 ARP 响应,让 192.168.1.1 的 MAC 地址指向他的机器,那所有流量都会经过他。这就是 ARP 欺骗 + 静态路由劫持。
4.3.1 静态路由的下一跳验证
我建议对静态路由的下一跳做可达性检查。很多设备支持这个功能:
// 配置静态路由,并启用下一跳跟踪
ip route 0.0.0.0 0.0.0.0 192.168.1.1 track 1
track 1 ip route 192.168.1.1 255.255.255.255 reachability
这样,如果下一跳不可达,静态路由会自动失效。避免了流量黑洞。
4.3.2 结合反向路径转发(uRPF)
uRPF 是个好东西。它会检查数据包的源地址是否与路由表中的出接口匹配。如果不匹配,就丢弃。
说白了,就是防止别人用伪造的源地址发送数据包。
// 接口下启用 uRPF
interface GigabitEthernet0/0/0
ip verify unicast source reachable-via any
静态路由本身没有认证机制,所以必须依赖其他手段来防欺骗。我常用的组合是:
- 静态路由 + 下一跳跟踪
- 接口启用 uRPF
- 配合 DHCP Snooping 防止 ARP 欺骗
4.4 本章知识体系
下面这张图总结了路由协议安全的核心逻辑。你可以把它当作一个检查清单:
这张图把三种路由协议的安全机制放在一起对比。你会发现,它们的核心思路是一样的:认证身份 + 过滤内容。只是实现方式不同。
做了这么多年网络,我最大的体会是:路由安全不是配完就完事的。你需要定期检查配置,更新密码,审计路由表。我曾经帮一个客户做安全审计,发现他们的 OSPF 密码还是五年前的。嗯,这种密码基本等于没有。
所以,我建议每半年更新一次路由协议的认证密码。虽然麻烦点,但比起被攻击后的损失,这点麻烦不算什么。
公众号:蓝海资料掘金营,微信deep3321