要約
- 認証済みの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
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加