TRY AND ERROR

自宅NOCオペレータの運用備忘録。

RPKIを導入した話 -はじめに-

1.はじめに

 2015年3月にJPNICがRPKIシステム、RPKIパブリックキャッシュサーバの試験提供をスタートさせたことにより、国内でも比較的簡単にRPKIを利用する環境が整いつつあります。JPNICの方が積極的に検証を行い対外発表していることをご存知の方は多いかと思います。しかし、何れも実験環境での導入であり実網環境に導入した例は国内ではほとんど聞かれていないことや、定期的に発生しているMisOrigin(経路ハイジャック)の影響も大きいことなど鑑み、HOMENOCで実網での運用をチャレンジしてみることにしました。

 今回のチャレンジの範囲はJPNICが提供するRPKIシステムを利用して、自ASのPrefixに対するリソース証明書とROAを発行し他のASがHOMENOCのPrefixの広報の正当性を検証できるようにする共に、ROAキャッシュサーバを構築しHOMENOCのBGPルータでOriginValidationを行い、MisOriginが疑われる経路により自ASが受ける影響を軽減することです。

 RPKIのテクノロジーの本質はあるPrefixのOriginASの正当性の証明をNIR/RIRに行ってもらいそのデータベースを作ることにあり、そのデータベースをとルータをrpki-rtrプロトコルで連携させ経路を制御することは若干本質を外れると思いますが、まずは比較的ハードルの低い経路制御よりチャレンジしてみることとします。

※ RPKIって何?という方はJPNICのサイトや関連RFCを一読されることをオススメします。(RFC6480,6481,6491,6493,6487,6810 特に6480と6810)

2.守れるもの、守れないもの

・他のASのPrefixがMisOriginされた場合
そのASのPrefixのROA発行がされていれば、rpki-rtrプロトコルで連携しているルータで、ROAキャッシュサーバの情報と実際の経路を比較し、不正な経路の優先度を下げたり破棄することにより、正しい広報元への到達性を守ることができます。

・自ASのPrefixがMisOriginされた場合
HOMENOCとしてRPKIを使って何かをすることはできません。ただし、基本的には相手頼みになってしまいますが、自ASのPrefixを正しくROA発行しておけば、RPKIでOriginValidationを行っているASでは自ASへの正しい到達性を守ってくれるかもしれません。また、方向性は異なりますが経路奉行などを用いてMisOriginが発生した可能性があることは検知することができます。

・AS番号+PrefixがMisOriginされた場合
RPKIでは自組織に割り当てられたIPアドレスを含む経路を特定のASから広告すること(IPアドレスとAS番号の組み合わせ)をIPアドレスの割り当てを証明するリソース証明書を元に生成したROAを使って意思表示します。RPKIで検証できるものは「IPアドレスとAS番号の組み合わせ」であるため、AS番号ごとMisOriginされた場合はRPKIでは対応できません。

3.ROAの発行

HOMENOCではJPNICのROAWeb(リソースPKI (RPKI; Resource Public Key Infrastructure) - JPNIC)を利用し、リソース証明書とそれに基づくROAの発行を行っています。JPNICのROAWebはJPNICより直接AS番号やIPアドレスの割り当てを受けている組織が利用することができます。

HOMENOCのROA登録は以下の内容で行っています。

2403:bd80::/32-48 (AS59105)
103.48.31.0/24 (AS59105)
103.202.216.0./23-24 (AS59105)
103.247.181.0/24 (AS59105)

/23-24といった書き方をしているのは、ROAの一つの特徴でもある、Max-lenの概念です。これは、「運用上このIPアドレスをどこまで分割して経路広告することがあるのか」を指定するものです。例えば、IPv6の場合、割り当て空間の/32~/48までを広報する可能性があるため、/32-/48という記載をしています。

※ 細かい経路をMisOriginされることを想定し、IPv4は/32まで、IPv6は/128までで書くべきという意見もあるようですが、日本のインターネットではIPv4は/24より、IPv6は/48より細かい経路はフィルタし他のASに伝搬させない慣例が比較的多くのトランジットプロバイダにあるため、この値でMax-lenを登録しています。

IRRが広報する経路長単位で登録を行うのに対し、ROA発行の大きく異なる部分です。Max-lenの概念を理解していないASも多いようで、例えば、/24で経路広報を行っているのに、/22(exact)でROA発行しているASもあり、Max-len不一致によりInvalid判定となっている経路も多いので注意したいところです。

余談にはなりますが、経路を広報しない(広報しないという意思を表示する場合)は、ROAのOriginASを「0」と登録します。また、自組織で二つのASを持っている場合や、クラウド型のDDoS対策を利用する場合など、他のASからも経路広報を行う場合は、「192.0.2.0/24-32(AS64500) , 192.0.2.0/24-32(AS64501)」のように複数のROA発行を行います。

4.ROA発行されているWebサイトを確認できます

Webサイト(アクセスしているWebサーバ)が、ROA発行されているIPアドレスであるかと、Validation状態をあるかを簡単に確認できる、FireFoxのアドオンがあります。使い方は簡単で以下の3ステップでアクセス先のWebサーバのROA登録情報を確認することができます。

  • 以下のURLにアクセスし「RPKI Validator」をFireFoxへ追加します。

    RPKI Validator :: Add-ons for Firefox

  • アドオンの設定メニューを開き「Validation Server URL」と「Cache server hostname」を以下の画像のように設定変更します。標準で設定されているValidation Serverがありますが、RIRのトラストアンカーのみしか参照しておらず、JPNICで発行されたROAについては検証できません。そのため、JPNICが提供しているValidation Serverに変更します。(通常はAPNICとJPNICでROA情報の連携がなされるべきと思いますが、2017年2月現在、諸事情により連携されていません。)

    f:id:kt-yamaguchi:20170305010223p:plain

  • FireFoxでWebサイトを開きます
    ROA登録がされており、Valid状態であればウインドウ右上のアイコンが緑色に、Invalid(ROA登録とOriginASが不一致=MissOriginが疑われる)状態であれば赤色に、ROA登録が無い場合はオレンジ色で表示されます。
    ICTSC7のコンテストサイト(会期中にWeb公開されている方)もHOMENOCのROA登録されたIPアドレスで動作していますので「Valid」と表示されます。f:id:kt-yamaguchi:20170305011828p:plain
  • その他
    副次的な機能としてアイコンをクリックすると、そのWebサイトのIPアドレスとAS番号とAS名も表示されますので、このサイトはどこの会社のクラウドを使っているんだ…という情報を一目で確認することもできます。

次回はHOMENOCでのRPKIの設計について書いてみようと思います。