首页 > 其他分享 >当前国际主流bgp路由劫持解决方案RPKI

当前国际主流bgp路由劫持解决方案RPKI

时间:2022-10-26 15:14:24浏览次数:76  
标签:RPKI rpki 证书 server bgp 签名 路由

 摘抄自APNIC一段定义  

RPKI

资源认证是一种安全框架,用于证明特定 IP 地址块或 AS 号码与这些互联网号码资源 (INR) 的保管人之间的关联。它通过生成称为 PKI(用于公钥基础设施)的公私加密证书来实现这一点。

这些证书提供了使用给定 IPv4、IPv6 和 ASN 资源的证明和授权,并且可以通过密码进行验证。

什么是 RPKI?

资源认证使用称为资源公钥基础设施 (RPKI) 的框架,该框架基于 X.509 PKI 证书标准。使用称为 RPKI 的验证结构,资源持有者可以自信地声明正在传输的信息是正确的并且符合他们的意图。

RPKI 允许网络运营商通过使用私钥和公钥系统对边界网关协议 (BGP) 中的路由广告进行数字加密和签名。信息可以使用私钥加密和签名,并且只能使用匹配的公钥解密或验证其签名。数字签名信息保证了在路由系统中看到的路由通告可以被验证并且是真实的。

RPKI 通过将 INR 信息添加到颁发给资源持有者的 X.509 PKI 证书来工作。这表示有关特定 INR 的保管和其他状态信息。当使用 RPKI 证书时,INR 与数字签名相关联。因此,证明签名可以证明 INR 与已签名的内容相关。您无法根据证书中未包含的 INR 正确签名。

RPKI 通过形成相互签名的证书层次结构来工作。“根”证书在子证书上签名,子证书在其子证书上签名,依此类推。签署证书的行为使您成为证书颁发机构或 CA。RPKI 将 CA 状态分配给委托 INR 的机构,因此委托角色与 CA 角色一致。区域互联网注册管理机构 (RIR) 为直接成员和国家互联网注册管理机构 (NIR) 签署证书,他们都可以就其证书中的资源签署证书和其他 RPKI 产品。

除了签署其他证书(CA 角色)的证书外,证书还可用于签署其他数字对象。这称为终端实体或 EE 证书:它不签署其他 CA 证书,它只签署非证书对象。在 RPKI 中,EE 证书用于对清单(已签名对象的目录)进行签名,并对路由和其他数字对象进行签名。路由中的主要签名对象是路由源授权或 ROA。

RPKI 应用

以下是 RPKI 的两个当前应用:

RPKI 的好处

  • 比手动检查 APNIC Whois 数据库或 IRR 数据库安全得多。
  • 保护前缀或 origin-as 的来源是防止对 BGP 完整性的许多攻击的第一步。
  • 来自资源保管人的指令/信息可以加密验证(例如,授权书签名)

......

具体技术细节参考链接https://www.apnic.net/community/security/resource-certification/

 

接下来我们了解下国际上一些电信运营商所部属的bgp策略

Arelion

Arelion先根据IRR注册信息来构建前缀过滤器,优先级顺序为RADB、AFRINIC、RIPE、RIPE-NONAUTH、BELL、APNIC、NTTCOM、ALTDB、PANIX、NESTEGG、LEVEL3、LACNIC、REACH、AOLTW、OPENFACE、ARIN、 ARIN-NONAUTH、JPIRR、HOST、RGNET、BBOI、TC 和 CANARIE

Arelion 于 2018 年加入 MANRS ( https://www.manrs.org/ ),并在所有对等链路上实施了 RPKI

Arelion 对于RPKI不同状态所建议的操作

RPKI StateDescriptionRecommended Action 

Valid

Correct IP/masklength from the correct origin AS according to the ROA.

All good. No need to do anything.

Unknown

No ROA registered.

We recommend customers to register ROAs to protect their address space but it's not required.

Invalid

Incorrect masklength and/or origin AS according to the registered ROA.

The address space owner should correct the ROA.

 

 

 

 

 

 

除了过滤掉 Invalids 之外,Arelion不会做任何deny操作,据我所知这也是大多运营商所选择的策略

也就是如果你的前缀没有做RPKI也不会影响正常发布,一旦ROAs所关联的orginas不一致就会被拒绝接收

 

 

 

PCCW

 PCCW和Arelion类似,区别在于RADB的优先级放到了最低

 

 

 

RPKI服务器的搭建和使用

有以下维护良好的开源软件可以使用

我们用rpki-validator来实现,官网查看支持docker方式部署

https://hub.docker.com/r/ripencc/rpki-validator-3
docker pull ripencc/rpki-validator-3
docker run -p 8080:8080 --rm ripencc/rpki-validator-3

需要等待5-15分钟,进行数据库同步

 完成后访问http://ServerAddress:8080

可以看到这个镜像只有4大区域,少了arin.tal,需要自行下载放入tals文件夹,否则条目会有缺失

下载链接

  wget https://www.arin.net/resources/manage/rpki/arin.tal

直接复制粘贴也行,如下

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3lZPjbHvMRV5sDDqfLc/685th5FnreHMJjg8pEZUbG8Y8TQxSBsDebbsDpl3Ov3Cj1WtdrJ3CIfQODCPrrJdOBSrMATeUbPC+JlNf2SRP3UB+VJFgtTj0RN8cEYIuhBW5t6AxQbHhdNQH+A1F/OJdw0q9da2U29Lx85nfFxvnC1EpK9CbLJS4m37+RlpNbT1cba+b+loXpx0Qcb1C4UpJCGDy7uNf5w6/+l7RpATAHqqsX4qCtwwDYlbHzp2xk9owF3mkCxzl0HwncO+sEHHeaL3OjtwdIGrRGeHi2Mpt+mvWHhtQqVG+51MHTyg+nIjWFKKGx1Q9+KDx4wJStwveQIDAQAB

 

ROAs信息访问http://ServerAddress:8080/roas

配置RTR服务器供路由器使用

$wget https://ftp.ripe.net/tools/rpki/validator3/prod/generic/rpki-rtr-server-latest-dist.tar.gz

$mkdir rpki-rtr-server

$tar xf rpki-rtr-server-latest-dist.tar.gz -C rpki-rtr-server --strip-components 1

$cd rpki-rtr-server

$vim conf/application.properties
#修改rtr.server.address字段,对外提供RPKI-RTR服务的地址
#rtr.server.port=8323 侦听端口
#server.port=8081 RPKI服务器端口,上步所搭建
#server.address=localhost RPKI服务器地址,上步所搭建

$nohup ./rpki-rtr-server.sh > out 2> err &
#启动服务器
 

 

 路由器配置使用RTR接口,以juniper为例

 

dark@Test-Route> show configuration routing-options
validation {
    group RPKI {
        session 10.0.3.108 {
            port 8323;
        }
    }
}



dark@Test-Route# show policy-options policy-statement bgp-import 
term RPKI-VAL {
    from {
        protocol bgp;
        validation-database valid;
    }
    then {
        validation-state valid;
        next term;
    }
}
term RPKI-INV {
    from {
        protocol bgp;
        validation-database invalid;
    }
    then {
        validation-state invalid;
        reject;
    }
}

 

 

 

 配置完成后可以看到validation数据库数据

 来模拟下使用peer AS13335通告路由条目

可以对比上图ROAs信息可知只有1.0.0.0/24 AS13335对应关系可以在数据库中匹配到,我们缺失arin库所以,8.8.8.0/24没有对应的记录

  1.0.0.0/24  

  8.8.8.0/24

  1.0.4.0/24

通过策略过滤,只有1.0.0.0/24被标记为valid,1.0.4.0/24被标记为invalid,8.8.8.0/24未被标记,根据我们的策略valid是被拒绝掉的,查看路由表印证下

 

 

tips

  根据页面提示信息,该工具已经停止更新,生产环境中使用可以选择其他工具,如cfrpi 参考 https://github.com/cloudflare/cfrpki 

 

标签:RPKI,rpki,证书,server,bgp,签名,路由
From: https://www.cnblogs.com/darkchen/p/16827998.html

相关文章

  • 亚马逊 vpc 子网 路由表 互联网网关 弹性ip
    创建vpc,子网,路由表,互联网网关,弹性ip等网络资源vpc和子网创建互联网网关附加到vpc创建路由表路由表编辑路由此路由通过这个网关出去编辑子网关联保存关联......
  • webFlux 路由post请求时依赖注入字段报null
    有下列代码:@AutowiredAuthHandlerauthHandler;RouterFunction<ServerResponse>doctorRouter=RouterFunctions.route().path("/doctors"......
  • 路由策略和策略路由
    一、路由策略(Router-Plight)路由策略是通过修改路由表来控制数据流量的可达性。即对接受和发布的路由进行过滤。这种方式称为路由策略。 二、策略路由。(Traffic-Policy)......
  • vue路由导航守卫
    简单来说路由导航守卫就是.可以让我们对用户要跳转的路由做一次检查,符合条件的就放行,不符合条件则强制用户跳转至登录页面,说白了就时路由导航守卫是为了路由跳转之前做的......
  • Flutter(八):Flutter路由管理(Router)
    目录一、术语路由(route):导航(Navigator):二、路由管理1、Navigator示例代码2、路由定义(命名路由)在App中定义router:3、Navigator方法介绍1.Navigator.push2.Navigor.pop......
  • Asp.Net MVC路由
    一、普通路由1、修改Controller路由[RoutePrefix("news")]//修改Controller路由publicclassProductController:Controller2、修改act......
  • python之第三方库netifaces库:netifaces 模块用于提供有关网络接口及其状态的信息(①获
    前言1、 在系统运维等过程中,网络永远是离不开的话题。网络中比较基础的是网络接口,每个网络接口都有一个名字,并且有它的ip地址,还有关于从这个接口出去的包的路由。我们可......
  • vue 笔记12 vue-router路由2 导航守卫
              Vue被创建,挂载,更新时调用函数。      网页标题                    登录......
  • SpringCloud系列之网关gateway-3.创建默认路由规则
    我们建立一个项目,依赖如下:我们引入了actuator监控组件,eureka组件,可以看到我们没有引入spring-boot-starter-web这个依赖,是因为gateway这个项目较为特殊。图中我们引入了gat......
  • ensp静态路由配置实验
    一、绘制网络拓扑图:二、配置pc配置IP地址、掩码、网关一定要填好,填好后点击应用。路由器配置:R1<Huawei>undottInfo:Currentterminaltrappingisoff.<Huawe......