4、防御策略一:BGP TTL Security (GTSM) 原理与配置

聊到BGP路由欺骗,很多人第一反应就是搞加密、搞认证。但说实话,MD5认证虽然有用,可它防不住一种很刁钻的攻击——伪造源IP的BGP报文

你想想看,攻击者只要伪造一个合法的源IP,再配上正确的AS号,就能冒充你的邻居发路由过来。这时候怎么办?

嗯,GTSM就是专门干这个的。它的思路很简单:检查报文的TTL值

4.1 核心原理:TTL为什么能防攻击?

BGP邻居之间,正常情况下只有一跳(直连)或者几跳(通过Loopback建邻)。TTL值在报文经过每一跳时都会减1。

攻击者如果伪造源IP,报文必须经过网络才能到达你。TTL值一定会被减掉。而真正的邻居,报文几乎不经过中间设备,TTL值接近255。

GTSM的做法就是:只接受TTL值大于等于某个阈值的BGP报文

举个例子:

  • 直连EBGP邻居:期望TTL = 255
  • 多跳EBGP邻居:期望TTL = 255 - 跳数
  • IBGP邻居(Loopback):期望TTL = 255 - 跳数

攻击者伪造的报文,TTL值通常只有几十甚至十几。GTSM直接丢弃,连处理都不处理。

核心逻辑一句话:GTSM不是防伪造IP,而是防伪造IP的报文能到达BGP进程。

4.2 我在项目中遇到的坑

有一次帮客户排查BGP邻居频繁震荡的问题。配置看着都对,MD5也配了,但邻居就是隔几分钟断一次。

查了半天,发现是客户在中间加了一台防火墙。防火墙做了NAT,导致BGP报文的TTL被减了1。GTSM一检查,TTL不对,直接丢包。

所以啊,GTSM虽然好用,但部署前一定要确认路径上的设备不会修改TTL

4.3 GTSM的配置方法

不同厂商的命令略有差异,但核心参数都一样:

4.3.1 Cisco IOS / IOS-XE

router bgp 65001
 neighbor 10.0.0.1 ttl-security hops 1

这里的 hops 1 表示允许TTL值 ≥ 254(255 - 1)。如果是直连邻居,用 hops 1 就行。

4.3.2 Huawei VRP

bgp 65001
 peer 10.0.0.1 gtsm hops 1

华为的写法更直白,直接叫 gtsm。参数含义一样。

4.3.3 Juniper JunOS

protocols bgp {
    group EBGP {
        neighbor 10.0.0.1 {
            ttl 1;
        }
    }
}

Juniper的配置里,ttl 1 表示期望TTL值为255。注意,它和Cisco/Huawei的“允许跳数”概念不同,这里是直接指定期望TTL值。

个人习惯:我一般会在所有EBGP邻居上都启用GTSM,哪怕只是直连。成本极低,收益极高。

4.4 GTSM的适用场景

场景 是否推荐GTSM 说明
直连EBGP 强烈推荐 TTL固定为255,攻击者无法伪造
多跳EBGP 推荐 需要精确计算跳数,配置稍复杂
IBGP(Loopback) 可选 IBGP通常有IGP保护,但加上也无妨
跨AS的MPLS VPN 推荐 防止伪造的VPNv4路由注入

4.5 避坑指南

我曾经遇到过一个问题:在IBGP场景下,两台路由器通过Loopback建邻,中间经过3台设备。我配置了 hops 3,结果邻居起不来。

查了半天才发现,中间有一台设备做了策略路由,把BGP报文引到了另一个路径上,多绕了一跳。TTL被多减了1。

所以,配置GTSM之前,一定要先确认实际路径的跳数。可以用 traceroute 验证一下。

重要提醒:GTSM不能替代MD5认证。两者是互补关系:

  • GTSM防伪造源IP
  • MD5防报文篡改

我建议在生产环境中同时启用

4.6 GTSM的核心逻辑图

下面这张图展示了GTSM的工作流程。你可以看到,攻击者的报文因为TTL值过低,在BGP进程之前就被丢弃了。

GTSM 工作流程 攻击者 TTL=64 合法邻居 TTL=255 路由器 BGP进程 TTL检查 阈值 ≥ 254 丢弃 接受 TTL < 254 TTL ≥ 254 攻击者报文TTL=64 → 被GTSM丢弃 合法邻居TTL=255 → 通过检查

4.7 总结

GTSM是我个人非常喜欢的一个防御手段。它简单、高效、几乎零开销。说白了,就是利用网络层的一个小字段,干掉了应用层的一个大漏洞。

你想想看,攻击者要伪造BGP报文,首先得伪造源IP,然后还得让TTL值恰好落在允许范围内。这难度一下子就上去了。

嗯,下一节我们聊聊另一种防御手段——BGP路径验证。不过那是后话了。

一句话记住GTSM:不是所有到达你端口的报文,都值得交给BGP进程处理。TTL就是第一道安检。


公众号:蓝海资料掘金营,微信deep3321