要約
- 認証済みの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-NameやChargeable-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と呼ばない。
出典
- RFC 5176 — RADIUS Dynamic Authorization
- RFC 8559 — Dynamic Authorization Proxying
- RFC 9765 — RADIUS/1.1とALPN
- RFC 2865 — RADIUS
- RFC 2869 — RADIUS Extensions
- RFC 5080 — RADIUS実装上の問題
- RFC 6614 — RADIUS over TLS
- RFC 7360 — RADIUS over DTLS
- RFC 7585 — Dynamic Peer Discovery
- IANA — RADIUS Types
- FreeRADIUS — CoAの利用
- FreeRADIUS — CoAの生成
- Heng Lu — Running-Code Primacy
- Heng Lu — Minimum Initial Specification、Localized Future Decision、Voluntary Adoption
会員向け解説
トレンドの深掘り
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
ストラテジックサークル
あなたの言語で毎日届く、私たちが確認した変化に基づくブリーフィング。
USD 20/月で参加いつでも解約できます。
公開記事は無料のままです。会員向けリサーチ、毎日のブリーフィング、フォーラムには会員資格が必要です。






