👨🏻‍💻

RPKI-Client Validatorのインストール

2024/01/08に公開

RPKI-Clientは、OpenBSDプロジェクトによるルーティング・セキュリティの取り組みです。RPKI-Clientを使って、Validator/Cacheを構築する方法です。

1. Debian 12のインストール

プラットフォームは、VMware Fusion上のDebian 12を使うことにします。デフォルトのインストールから変更した点は次の通りです。

  • キャッシュは小さなファイルがたくさん作られるため、inodeをかなり消費します。/usr/localを別ファイルシステムとし、ファイルシステムタイプを'news'にして、inodeを増やしました。

2. 開発環境の構築

# apt install curl wget openssl rsync build-essential git autoconf libtool automake libssl-dev libbsd-dev gawk libexpat1-dev libtlsh-dev net-tools

3. Zlibのインストール

# cd /usr/local/src
# curl -O https://www.zlib.net/zlib-1.3.1.tar.gz
# tar xvfz zlib-1.3.1.tar.gz
# cd zlib-1.3.1
# ./configure
# make
# make install

4. libretlsのインストール

# cd /usr/local/src
# curl -O https://causal.agency/libretls/libretls-3.8.1.tar.gz
# tar xvfz libretls-3.8.1.tar.gz
# cd libretls-3.8.1
# ./configure
# make check
# make install

5. RPKI Client用のグループとユーザの作成

# groupadd _rpki-client
# useradd -g _rpki-client -s /sbin/nologin -d /nonexistent -c 'rpki-client user' _rpki-client

6. RPKI-Clientのインストール

# cd /usr/local/src
# curl -O https://www.ftp.ne.jp/pub/OpenBSD/rpki-client/rpki-client-8.9.tar.gz
# tar xvfz rpki-client-8.9.tar.gz
# cd rpki-client-8.9
# ./configure
# make check
# make install

7. ARINのTAL(Trust Anchor Locator)ファイルをダウンロードする

cd /usr/local/etc/rpki
curl -O https://www.arin.net/resources/manage/rpki/arin.tal

注: 進める前に、必ずARIN Relying Party Agreement (https://www.arin.net/resources/manage/rpki/rpa.pdf)を読むこと。

8. RPKIキャッシュを同期

環境にもよるが、数分から十数分かかります。

# rpki-client -c -v
rpki-client: ta/lacnic: pulling from https://rrdp.lacnic.net/ta/rta-lacnic-rpki.cer
rpki-client: ta/apnic: pulling from https://rpki.apnic.net/repository/apnic-rpki-root-iana-origin.cer
rpki-client: ta/ripe: pulling from https://rpki.ripe.net/ta/ripe-ncc-ta.cer
rpki-client: ta/arin: pulling from https://rrdp.arin.net/arin-rpki-ta.cer
rpki-client: ta/afrinic: pulling from https://rpki.afrinic.net/repository/AfriNIC.cer
:
Cleanup: removed 0 files, 69786 directories
Repository cleanup: kept 25989 and removed 32 superfluous files
VRP Entries: 510620 (498333 unique)
VAP Entries: 49 (49 unique)

注: バリデーションに失敗したとか、その他のエラーメッセージが表示されることがあります。これらは無視してかまいません。

キャッシュは次の通り。

# cd /usr/local/var/cache/rpki-client
# ls
0.sb                               rpki.luys.cloud
ca.nat.moe                         rpki.multacom.com
ca.rg.net                          rpki.nap.re
chloe.sobornost.net                rpki.netiface.net
cloudie-repo.rpki.app              rpki.owl.net
dev.tw                             rpki.pedjoeang.group
krill.accuristechnologies.ca       rpki.qs.nu
krill.rayhaan.net                  rpki.rand.apnic.net
krill.stonham.info                 rpki-repo.registro.br
pub.krill.ausra.cloud              rpki-repository.haruue.net
pub.rpki.win                       rpki-repository.nic.ad.jp
repo.kagl.me                       rpki.ripe.net
repo-rpki.idnic.net                rpki.roa.net
repository.lacnic.net              rpki-rps.arin.net
r.magellan.ipxo.com                rpki-rsync.mnihyc.com
rov-measurements.nlnetlabs.net     rpki-rsync.us-east-2.amazonaws.com
rpki-01.pdxnet.uk                  rpki.sailx.co
rpki1.rpki-test.sit.fraunhofer.de  rpki.services.vm.n1.i.bm-x0.w420.net
rpki.admin.freerangecloud.com      rpki.sub.apnic.net
rpki.afrinic.net                   rpki.tools.westconnect.ca
rpki.akrn.net                      rpki.xindi.eu
rpki.apernet.io                    rpki.zappiehost.com
rpki.apnic.net                     rsync.krill.cloud
rpki.arin.net                      rsync.paas.rpki.ripe.net
rpki.caramelfox.net                rsync.roa.tohunet.com:3873
rpkica.twnic.tw                    rsync.rp.ki
rpki.cc                            rsync.rpki.tianhai.link
rpki.cnnic.cn                      sakuya.nat.moe
rpki.folf.systems                  ta
rpki.komorebi.network

同時に、検証済みのROAペイロードがCSV形式に保存されます。

# cd /usr/local/var/db/rpki-client/
# ls
csv
# grep AS2515, csv
AS2515,103.131.194.0/23,24,apnic,1705206585
AS2515,192.41.192.0/24,24,apnic,1704936620
AS2515,202.12.30.0/24,32,apnic,1704936620
AS2515,202.12.30.0/24,24,apnic,1704936620
AS2515,211.120.240.0/21,24,apnic,1705206585
AS2515,2001:c40::/32,48,apnic,1705206585
AS2515,2001:dc2::/32,48,apnic,1705206585
AS2515,2001:fa0::/32,48,apnic,1705206585

AS番号(ASN)、IPプレフィックス、Maxlen、トラスト・アンカー、有効期限のリストCSVが表示されます。

RTR(RPKI-to-Router)プロトコル[RFC8210]を介して、検証済みのキャッシュをBGPルータに送信するには、GoRTRなどのRTRサーバ・ソフトウェアや、BIRDまたはOpenBGPを使用します。

その他

  1. Manifest
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft 
File:                     is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
Hash identifier:          0EBiA4yH8ZpgWAzYo+kJabJ6Av/5rEyJ9yXZSn25fg4=
Subject key identifier:   40:A4:5A:97:3E:2E:07:1A:BE:34:97:6B:57:2C:37:B6:A4:43:09:BE
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Certificate issuer:       /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
Certificate serial:       3C
Authority info access:    rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Subject info access:      rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
Manifest number:          0106
Signing time:             Mon 01 Jan 2024 01:30:20 +0000
Manifest this update:     Mon 01 Jan 2024 01:30:20 +0000
Manifest next update:     Thu 11 Jan 2024 01:30:20 +0000
Files and hashes:         1: LqM5S1L3MvQEksB1Eh-fRZuvjh4.roa (hash: uBnDyJDBDF8I3MpaF+55rjXm7yWds5qh5LP7K5JusoA=)
                          2: dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa (hash: lA0wLC0jTcTcH6nMT/ijVvKTWt4LHiYTaB35dXj1Fdg=)
                          3: is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl (hash: 5zopkBa+qq5S023a87BeeGTFLfWuFS9U5j89gaslR1w=)
Validation:               OK
  1. CRL
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl
File:                     is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl
Hash identifier:          5zopkBa+qq5S023a87BeeGTFLfWuFS9U5j89gaslR1w=
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
CRL issuer:               /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
CRL serial number:        0106
CRL last update:          Mon 01 Jan 2024 01:30:20 +0000
CRL next update:          Thu 11 Jan 2024 01:30:20 +0000
Revoked Certificates:
                          Serial:       30   Revocation Date: Mon 01 Jan 2024 01:30:20 +0000
Validation:               N/A
  1. ROA
$ rpki-client -f dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
File:                     dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
Hash identifier:          lA0wLC0jTcTcH6nMT/ijVvKTWt4LHiYTaB35dXj1Fdg=
Subject key identifier:   74:11:1B:B4:BB:3D:71:89:AC:31:CE:88:CC:FC:BC:3C:94:79:9C:F8
Certificate issuer:       /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
Certificate serial:       39
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Authority info access:    rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Subject info access:      rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
Signing time:             Sun 01 Oct 2023 01:29:00 +0000
ROA not before:           Sun 01 Oct 2023 01:29:00 +0000
ROA not after:            Sat 14 Sep 2024 01:30:03 +0000
asID:                     2515
IP address blocks:        202.12.30.0/24 maxlen: 32
Validation:               OK
  1. BGPsec Router Key
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer 
File:                     is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Hash identifier:          d5KUen0iUHg7iBlSwKcB5fxXVsJW774sJFLOvitNSMY=
Subject key identifier:   8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Authority key identifier: BA:44:12:B3:5F:5A:8A:71:47:BF:C6:67:B5:9B:52:0D:AA:C7:DA:8F
Certificate issuer:       /CN=A91A73810000/serialNumber=BA4412B35F5A8A7147BFC667B59B520DAAC7DA8F
Certificate serial:       28B2
Authority info access:    rsync://rpki.apnic.net/repository/B527EF581D6611E2BB468F7C72FD1FF2/ukQSs19ainFHv8ZntZtSDarH2o8.cer
Manifest:                 rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
caRepository:             rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/
Notify URL:               https://rpki-repository.nic.ad.jp/rrdp/ap/notification.xml
Certificate not before:   Fri 15 Dec 2023 01:34:39 +0000
Certificate not after:    Sat 14 Dec 2024 01:30:03 +0000
Subordinate resources:    IP: 202.12.30.0/24
Validation:               OK

変更履歴

  • 2024.1.8
  • 2024.1.18
  • 2024.2.23
GitHubで編集を提案

Discussion