要約

  • 認証済みのCoA-RequestまたはDisconnect-Requestが示すのは、受け入れたRADIUS hopからmessageが来たことまでである。Senderのtenant権限、現在のsessionが一意であること、NASがactionを実装できることは別に確かめる必要がある。
  • Accessとaccountingの原記録を、proxy path、realm、NAS、session key、要求属性、replay identity、ACK/NAK、installed state、trafficへ結ぶ。RADIUS/1.1はtransportを改善するが、この連鎖を一つのgreen signalにはしない。

同じaccount名は同じ接続ではない

冒頭は実事故ではなく運用試験である。一人のsubscriberがoffice Wi-Fi上のlaptopとvisited network上のphoneを同時に使う。二つの記録には同じUser-Nameがあるが、Acct-Session-Id、NAS、attachment、適用中のpolicyは異なる。

Risk engineはlaptopだけを制限しようとして、user名とfilterを含む正しいCoA-Requestを送る。Receiverが両方へ適用すれば、曖昧な検索条件がsession横断の権限になる。最新sessionを選べば、requestにない規則をNASが発明する。複数一致を拒否すれば、正しいmessageと正しいtargetの境界が残る。

RFC 5176は、requestを発するDynamic Authorization Client、受けるDynamic Authorization Server、serviceを提供するNAS、serviceの一単位であるsessionを分ける。一人のuserは同時または連続して複数sessionを持てる。RADIUS client addressは人ではなく、NASはsessionではなく、usernameは現在の接続を一意にしない。

CoAはauthorizationを変える。Disconnectはsession contextを捨ててserviceを終わらせる。狭いfilter変更が失敗したときDisconnectへ落とす設計はrollbackではない。可逆な判断を停止へ拡大し、診断stateまで消す。

Cardinalityはauthorizationの一部である

Session識別にはAcct-Session-Id、NAS port、assigned address、Called/Calling-Station情報などを組み合わせられる。User-NameChargeable-User-Identityはcross-user actionを防ぐ助けになるが、単独で世界的に一意ではない。

完全なselectorがlive inventoryで何件に解決されるかを計算する。Zero、one、multipleは別のdecision stateである。Session Context Not FoundとMultiple Session Selection Unsupportedは、欠けた証拠を推測で埋めないための明示的な拒否である。

Identifierのprovenanceも保存する。発行NAS、tenantまたはrealm、開始epoch、assignment属性が必要だ。Restartや再利用後、同じ値が別contextを指すことがある。Accountingとlive stateのjoinは事務処理ではなく、誰が変更を受けるかを決める権限検査である。

Hopのauthenticityはtenantのmandateではない

Historic RADIUSではUDP source addressからshared secretを選ぶ。Authenticatorが正しいことは、そのhopの設定関係と整合することを示す。人のapproval、tenant scope、proxyを越える不変のprovenanceは示さない。

RFC 5176はshared NASで一つのproviderが他者のsessionへ作用し得る問題を認める。Per-client secret、network filter、reverse-path checkで範囲を狭めても、local policyはsender、realm、NAS、tenant、session、actionを個別に許可しなければならない。

RFC 8559はroamingの逆方向をOperator-Nameとvisited networkが作るopaqueなOperator-NAS-Identifierで表す。CoAはuser名のhome realmではなく、sessionが存在するoperator realmへ向かう。Visited networkがtokenを内部NASへ解決し、proxy用signalを除いて最終requestを作る。

Proxyは処理する内容を見て変更でき、次のhopを改めて保護する。したがってauditには全proxyとdelegation scopeを残す。最終packetを遠隔administratorからのend-to-end署名と扱ってはならない。

一意なsessionでもactionは拒否できる

Filter、VLAN、rate、vendor-specific actionがNASに未実装、access方式に不適合、tenantに不許可という場合がある。Final receiverは要求された変更全体を実行できなければNAKにする。黙ったpartial successはatomicityと説明責任を壊す。

同じvendor属性をselectorとactionの両方にしてはいけない。「誰に」が確定してから「何を」を評価する。一部の変更はlower-layer renegotiationを要する。Controllerが値をencodeできても、running NASに能力は生まれない。

Retryと新しい意思を分離する

同じserverへの不変UDP retransmissionはsource port、Identifier、Request Authenticatorを維持する。属性が変われば新しいrequest identityになる。Receiverは必要期間duplicateを記憶し、response lossを二回目のexecutionにしない。

IPsec replay protectionがなければEvent-Timestampでfreshnessを限定する。Retransmission時も元の値を使う。Timestamp windowよりduplicate memoryが短いと、まだfreshな古いrequestを再実行できてしまう。

Timestampはticket approval時刻でも、session continuityの証明でもない。Response cacheにより、一度の実行へ二つのACKが見えることもある。Original、retry、suppressed duplicate、cached reply、新しいdecisionを別々に数える。

RADIUS/1.1が変える範囲

RFC 9765はALPN radius/1.1とTLS 1.3以上を要求する。双方が選択すると、connection authentication、integrity、confidentialityをTLSが担う。Historic Request/Response Authenticator計算は使わず、Message-Authenticatorもこのmodeでpacket認証をしない。

四octetのTokenがrequestとreplyを対応させる。同一connectionのnew packetはnew Token、同じDTLS retransmissionは同値を保つ。Deduplicationはconnection単位である。

これは重要なtransport修正だが、CoA/Disconnect codeや大半のattribute semanticsは残る。Subscriber selection、tenant authorization、hardware effectは決めない。Certificate、ALPN、TLS、connection、Tokenのledgerと、realm、NAS、session、action、local decision、effectのledgerを分離する。

ACKの先にrunning stateがある

CoA-ACKはNASが成功を報告した証言であり、NAKとError-Causeは拒否を分類する。次にfilter、VLAN、rate policy、accounting continuity、代表trafficを前後比較する。

ACKでstate不変ならenforcement defect、state変更でreply lossならtransport observation defect、NAK後に一部変更ならatomicity defectである。一つの「CoA failure」へまとめると修復箇所を失う。

最低限、access event、accounting、live inventory、sender、proxy、request fingerprint、Identifier/Token、timestamp、cardinality、local capability/policy、response、installed state、packet、scoped reversalを結ぶ。

似た二つのsessionで境界を試す

同じ魅力的なidentifierを持ち、異なるAcct-Session-IdとNAS contextを持つ二sessionを隔離環境で同時に作る。狭いCoAが一つだけを変え、もう一つのtrafficを保つことを確認する。

識別fieldを外したrequestは、最新順やDB順で選ばず拒否する。同packetの再送、stale timestamp、wrong realm、wrong NAS、unsupported actionも試す。Rollbackは保存した旧stateへ同じscopeで戻す。終了が元の承認内容でない限りDisconnectをrollbackと呼ばない。

出典