RPKI ASPAの簡単なテスト
現在、ルーティングのセキュリティ強化として、ROAによる経路広告元の検証が行われていますが、オリジンASの詐称や経路迂回によるMITMには効果がありません。そこで、必要となるのがASパス検証です。現在、IETFのsidrops WGで検討が進んでいるのが、ASPA (Autonomous System Provider Authorization)です。ASパスの検証を厳密に行うのは非常に難しいため、ASPAはASパスを検証するのではなく、隣り合うAS間の隣接関係を記述し(ROAと同じように作成できる)、すべての隣接関係が有効であれば、正しいパスと考えていいだろうとします(完全な解決策ではない)。このやり方(ASPA)は、部分導入が可能という利点もあります。
- draft-ietf-sidrops-aspa-profile
- draft-ietf-grow-route-leak-detection-mitigation
- draft-ietf-sidrops-aspa-verification
現時点で、商用ルータでASPAはサポートされていません。ルーティング・ソフトウェアとしては、NIST BGP-SRx (研究プラットフォーム)、OpenBGPDが、Validatorとしては、RPKI-client、StayRTR、Routinator、RPSTIR2がASPAをサポートしています。
今回、OpenBGPDを使って簡単な検証を行いました。
- 経路の注入には、GoBGPを使う
- ASPAのValidated ASPA Payloads(VAPs)をOpenBGPDに直接設定する(aspa-set)
ネットワーク
GoBGP(Debian)とOpenBGPD(OpenBSD)を直結し、GoBGP側から経路を注入し、OpenBGPDでASPA検証の確認を行います。
GoBGP
設定は次のとおり。
[global.config]
as = 100000
router-id = "192.0.1.1"
[[neighbors]]
[neighbors.config]
peer-as = 200000
neighbor-address = "192.168.243.130"
経路の注入は次のとおり。
gobgp global rib -a ipv4 add 100.100.100.0/24 aspath 300,200,100 origin igp
gobgp global rib -a ipv4 add 100.100.130.0/24 aspath 300 origin igp
OpenBGPD
設定は次のとおり。BGP neighborにrole
の設定をしないと(RFC 9234)、ASPAの検証が行われません。今回、リモートASから見て、Peer(4)としました。
ASN="200000"
AS $ASN
router-id 192.0.2.1
prefix-set mynetworks {
192.0.2.0/24
2001:db8:abcd::/48
}
network prefix-set mynetworks set large-community $ASN:1:1
group "peers" {
neighbor 192.168.243.120 {
remote-as 100000
role peer
}
}
roa-set {
100.100.100.0/24 maxlen 24 source-as 100
100.100.130.0/24 maxlen 24 source-as 300
}
aspa-set {
# vaid
customer-as 300 provider-as { 100000 }
# invalid
customer-as 100 provider-as { 100000 }
}
allow to ebgp
allow from ebgp
テスト結果
ピアリングの確認
bgp2# bgpctl show
Neighbor AS MsgRcvd MsgSent OutQ Up/Down State/PrfRcvd
192.168.243.120 100000 42 41 0 00:19:12 2
RIBの確認(ASPA検証)
bgp2# bgpctl show rib
flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
S = Stale, E = Error
origin validation state: N = not-found, V = valid, ! = invalid
aspa validation state: ? = unknown, V = valid, ! = invalid
origin: i = IGP, e = EGP, ? = Incomplete
flags vs destination gateway lpref med aspath origin
*> V-! 100.100.100.0/24 192.168.243.120 100 0 100000 300 200 100 i
*> V-V 100.100.130.0/24 192.168.243.120 100 0 100000 300 i
AI*> N-? 192.0.2.0/24 0.0.0.0 100 0 i
AI*> N-? 2001:db8:abcd::/48 :: 100 0 i
想定通り、100.100.100.0/24はinvalid(!)、100.100.130.0/24は valid(V) となりました。
bgp2# bgpctl show rib detail 100.100.130.0/24
BGP routing table entry for 100.100.130.0/24
100000 300
Nexthop 192.168.243.120 (via 192.168.243.120) Neighbor 192.168.243.120 (192.0.2.2)
Origin IGP, metric 0, localpref 100, weight 0, ovs valid, avs valid, external, valid, best
Last update: 00:20:08 ago
OTC: 100000
bgp2# bgpctl show rib detail 100.100.100.0/24
BGP routing table entry for 100.100.100.0/24
100000 300 200 100
Nexthop 192.168.243.120 (via 192.168.243.120) Neighbor 192.168.243.120 (192.0.2.2)
Origin IGP, metric 0, localpref 100, weight 0, ovs valid, avs invalid, external, valid, best
Last update: 00:01:11 ago
OTC: 100000
ASAPオブジェクト
おそらく実験的にだと思いますが、ASPAオブジェクトをRPKIで配布している事業者があります。RPKIキャッシュの中から、*.asa
のファイルを見つけると、88件見つかります(2024.1.10時点)。
$ rpki-client -f 5m80fwYws_3FiFD7JiQjAqZ1RYQ.asa
File: 5m80fwYws_3FiFD7JiQjAqZ1RYQ.asa
Hash identifier: s25yLaks3OXBzJcW3ZgvlLDiPUpyZbQk2jDHaPDgn1w=
Subject key identifier: E6:6F:34:7F:06:30:B3:FD:C5:88:50:FB:26:24:23:02:A6:75:45:84
Certificate issuer: /CN=caa805dbac364749b9b115590ab6ef0f970cdbd8
Certificate serial: A1C7752FF8B1D2E01F
Authority key identifier: CA:A8:05:DB:AC:36:47:49:B9:B1:15:59:0A:B6:EF:0F:97:0C:DB:D8
Authority info access: rsync://rpki.ripe.net/repository/DEFAULT/yqgF26w2R0m5sRVZCrbvD5cM29g.cer
Subject info access: rsync://chloe.sobornost.net/rpki/RIPE-nljobsnijders/5m80fwYws_3FiFD7JiQjAqZ1RYQ.asa
Signing time: Wed 07 Jun 2023 09:08:41 +0000
ASPA not before: Wed 07 Jun 2023 09:08:14 +0000
ASPA not after: Thu 06 Jun 2024 09:08:14 +0000
Customer ASID: 15562
Providers: AS: 2914
AS: 8283
AS: 51088
AS: 206238
Validation: OK
現時点の実用性について
RIR/NIRがASPAオブジェクトをサポートしていなくても、ASPAは部分導入が可能な点と、ローカルにValidatorやVAPsを持たせることできる点から、セキュリティを強化したい経路にはASPAによる検証を行うことは可能でしょう(もちろん、経路のドロップではなくアラートくらいに留めておきます)。
参考
- https://www.manrs.org/2023/02/unpacking-the-first-route-leak-prevented-by-aspa/
- https://www.manrs.org/2023/05/estimating-the-timeline-for-aspa-deployment/
変更履歴
- 2024.1.10
- 2024.1.12
- 2024.1.18
Discussion