HTTP/1.1 200 OK Date: Tue, 09 Apr 2002 07:12:42 GMT Server: Apache/1.3.20 (Unix) Last-Modified: Mon, 12 Oct 1998 12:31:00 GMT ETag: "304f78-4ad2-3621f684" Accept-Ranges: bytes Content-Length: 19154 Connection: close Content-Type: text/plain ROAMOPS Working Group Bernard Aboba INTERNET-DRAFT Microsoft Corporation Category: Standards Track John R. Vollbrecht Merit Network, Inc. October 8, 1998 Proxy Chaining and Policy Implementation in Roaming 1. Status of this Memo This document is an Internet-Draft. Internet-Drafts are working docu- ments of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute work- ing documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." To learn the current status of any Internet-Draft, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). The distribution of this memo is unlimited. It is filed as , and expires April 15, 1999. Please send comments to the authors. 2. Abstract This document describes the use of proxy chaining in roaming and how policy may be implemented concurrently with end-to-end security. 3. Terminology This document frequently uses the following terms: Network Access Server The Network Access Server (NAS) is the device that clients contact in order to get access to the network. RADIUS server This is a server which provides for authentication/authorization via the protocol described in [3], and for accounting as described in [4]. RADIUS proxy In order to provide for the routing of RADIUS authentication Aboba & Vollbrecht [Page 1] INTERNET-DRAFT October 8, 1998 and accounting requests, a RADIUS proxy can be employed. To the NAS, the RADIUS proxy appears to act as a RADIUS server, and to the RADIUS server, the proxy appears to act as a RADIUS client. Network Access Identifier In order to provide for the routing of RADIUS authentication and accounting requests, the userID field used in PPP (known as the Network Access Identifier or NAI) and in the subse- quent RADIUS authentication and accounting requests, can contain structure. This structure provides a means by which the RADIUS proxy will locate the RADIUS server that is to receive the request. Roaming relationships Roaming relationships include relationships between com- panies and ISPs, relationships among peer ISPs within a roaming association, and relationships between an ISP and a roaming consortia. Together, the set of relationships form- ing a path between a local ISP's authentication proxy and the home authentication server is known as the roaming rela- tionship path. 4. Requirements language In this document, the key words "MAY", "MUST, "MUST NOT", "optional", "recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as described in [8]. 5. Introduction Today, as described in [1], proxy chaining is widely deployed for the purposes of providing roaming services. In such systems, authentica- tion and accounting packets are routed between a NAS device and a home server through a series of proxies. Proxies serve a number of functions in roaming, including: Scalability improvement Authentication forwarding Network parameter adjustment Policy implementation Accounting reliability improvement Proxy chaining enables implementation of hierarchical forwarding within roaming systems, which significantly improves scalability. Since RADIUS requires a shared secret for each communicating pair of systems, a consortium of 100 roaming partners would require 4950 shared secrets if each partner were to contact each other directly, one for each partner pair. However, were the partners to route authen- tication requests through a central proxy, only 100 shared secrets Aboba & Vollbrecht [Page 2] INTERNET-DRAFT October 8, 1998 would be needed, one for each partner. Since roaming partners typically do not communicate directly due to scalability concerns, in order for a NAS and home server to communi- cate, authentication and accounting packets are forwarded by one or more proxies. The path travelled by these packets, known as the roam- ing relationship path, is determined from the Network Access Identif- ier (NAI), described in [9]. Since most NAS devices do not implement forwarding logic, a proxy is needed to enable proper routing of authentication and accounting packets. Note: The way a proxy learns the mapping between NAI and end servers is beyond the scope of this document. This mapping can be done by static configuration in the proxy, or by some currently undefined pro- tocol that get the mapping information dynamically. The assumption is that such a mapping exists in the proxy. Since RADIUS does not support capabilities negotiation, it is possible that network parameters sent back from the home server will not match those required by the NAS. Proxies can edit attributes within the Access-Accept in order to ensure compatibility. In addition, in some cases it may be desirable for a proxy to edit attributes within an Access-Request. RADIUS proxies can also be used to implement policy. For example, a given partner may only be entitled to use a given NAS during certain times of the day. The RADIUS accounting protocol, described in [4] is not designed for use on an Internet scale. This is a significant issue in roaming, which is inherently an interdomain application. Given that in roaming accounting packets travel between administrative domains, packets will often pass through network access points (NAPs) where packet loss may be substantial. This can result in unacceptable rates of accounting data loss. For example, in a proxy chaining system involving four systems, a one percent failure rate on each hop can result in loss of 3.9 percent of all accounting transactions. Placement of an accounting proxy near the NAS may improve reliability by enabling enabling per- sistent storage of accounting records and long duration retry. In addition, proxies may serve to implement a "poor man's transaction" capability, ensuring that all entities along the roaming relationship path receive accounting information. 6. Proxy chaining An example of a proxy chaining system is shown below. (request) (request) (request) NAS ----------> Proxy1 ----------> Proxy2 ----------> Home (reply) (reply) (reply) Server <--------- <--------- <--------- In the above diagram, the NAS generates a request and sends it to Aboba & Vollbrecht [Page 3] INTERNET-DRAFT October 8, 1998 Proxy1. Proxy1 forwards the request to Proxy2 and Proxy2 forwards the request to the Home Server. The Home Server generates a reply and sends it to Proxy2. Proxy2 receives the reply, matches it with the request it had sent, and forwards a reply to Proxy1. Proxy1 matches the reply with the request it sent earlier and forwards a reply to the NAS. This model applies to all requests, including Access Requests and Accounting Requests. Except for the two cases described below, a proxy server such as Proxy2 in the diagram above should not send a Reply packet to Proxy1 without first having received a Reply packet initiated by the Home Server. The two exceptions are when the proxy is enforcing policy as described in the Policy implementation section below and when the proxy is acting as an accounting Store (as in store and forward) point, as described in the Accounting Behavior section below. While the RADIUS protocol described in [3] does not provide for end- to-end security services, this is made possible using the attributes described in [10]. The Security-Parameter-Index and End-to-End- Signature attributes SHOULD be included in packets sent between admin- istrative domains, including Access-Request, Access-Challenge, Access-Accept, and Access-Reject packets. The Hidden attribute MAY be included, as necessary, in order to prevent disclosure of passwords or keys to untrusted proxies. 6.1. Policy implementation Proxies are frequently used to implement policy in roaming situations. Proxies implementing policy MAY reply directly to Access-Requests without forwarding the request. When replying directly to an Access- Request, the proxy MUST reply either with an Access-Reject or an Access-Challenge packet. A proxy MUST NOT reply directly with an Access-Accept. An example of this would be when the proxy refuses all connections from a particular realm during prime time. In this case the home server will never receive the Access-Request. This situation is shown below: (request) (request) NAS ----------> Proxy1 ----------> Proxy2 Home (reply) (reply) Server <--------- <--------- A proxy MAY also decide to Reject a Request that has been accepted by the home server. This could be based on the set of attributes returned by the home server. In this case the Proxy SHOULD send an Access- Reject to the NAS and an Accounting-Request with Acct-Status- Type=Proxy-Stop (6) to the home server. This lets the home server know that the session it approved has been denied downstream by the proxy. However, a proxy MUST NOT send an Access-Accept after receiving an Access-Reject from a proxy or from the home server. Aboba & Vollbrecht [Page 4] INTERNET-DRAFT October 8, 1998 (Access-Req) (Access-Req) (Access-Req) NAS ----------> Proxy1 ----------> Proxy2 ----------> Home (Access-Reject) (Access-Accept) (Access-Accept) Server <--------- <--------- <--------- (AcctPxStop) (AcctPxStop) ----------> ----------> 6.2. Accounting behavior As described above, a proxy MUST NOT reply directly with an Access- Accept, and MUST NOT reply with an Access-Accept when it has received an Access-Reject from another proxy or Home Server. As a result, in all cases where an accounting record is to be generated (accepted ses- sions), no direct replies have occurred, and the Access-Request and Access-Accept have passed through the same set of systems. In order to allow proxies to match incoming Accounting-Requests with previously handled Access-Requests and Access-Accepts, a proxy SHOULD route the Accounting-Request along the same realm path travelled in authentication/authorization. Note that this does not imply that accounting packets will necessarily travel the identical path, machine by machine, as did authentication/authorization packets. This is because it is conceivable that a proxy may have gone down, and as a result the Accounting-request may need to be forwarded to an alternate server. It is also conceivable that authentication/authorization and accounting may be handled by different servers within a realm. The Class attribute can be used to match accounting requests with prior Access Requests. It can also be used to match session log records between the home Server, proxies, and NAS. This matching can be accomplished either in real-time (in the case that authentication and accounting packets follow the same path, machine by machine), or after the fact. Home servers SHOULD insert a unique session identifier in the Class attribute in an Access-Accept and Access-Challenge. Proxies and NASes MUST forward the unmodified Class attribute. The NAS MUST include the Class attribute in subsequent requests, in particular for Accounting- Requests. The sequence of events is shown below: Aboba & Vollbrecht [Page 5] INTERNET-DRAFT October 8, 1998 Authentication/Authorization --------> --------> ---------> NAS Proxy1 Proxy2 Home (add class) <-class-- <-class- <-class-- Accounting (Accounting-req) (Accounting-req) (Accounting-req) w/class w/class w/class NAS ----------> Proxy1 ----------> Proxy2 ----------> Home (Accounting-reply) (Accounting-reply)(Accounting-reply) Server <--------- <--------- <--------- Since there is no need to implement policy in accounting, a proxy MUST forward all Accounting Requests to the next server on the path. The proxy MUST guarantee that the Accounting Request is received by the End Server and all intermediate servers. The proxy may do this either by: 1) forarding the Accounting Request and not sending a Reply until iet receives the matching Reply from the upstream server, or 2) acting as a Store point which takes responsibility for reforwarding the Accounting Request until it receives a Reply. This ensures that Accounting Start and Stop messages are received, and can be logged by all servers along the authentication/authorization path. Forwarding of Accounting Requests SHOULD be done as they are received so the downstream servers will receive them in a timely way. Note that there are cases where a proxy may need to forward an Accounting packet to more than one system. For example, in order to allow for proper accounting in the case of a NAS that is shutting down, the proxy may need to send an Accounting-Request with Acct- Status-Type=Accounting-Off (8) to all realms that it forwards to. In turn, these proxies will also flood the packet to their connected realms. 7. Attribute editing One of the biggest obstacles to interoperation of proxies today results from editing behavior. Today several proxy implementations remove attributes that they do not understand, or can be set up to replace attribute sets sent in the Access-Accept from the home server with sets of attributes appropriate for a particular NAS. In practice, it is not possible to define a set of guidelines for attribute editing, since the requirements are very often implementation-specific. However, using the end-to-end security attri- butes defined in [10], it is possible to provide for both "protected" and "unprotected" attributes. Protected attributes preceed an End-to- End-Signature attribute within the packet, and as a result, these attributes are integrity-protected end-to-end. Protected attributes Aboba & Vollbrecht [Page 6] INTERNET-DRAFT October 8, 1998 MUST NOT be added, deleted, or modified by a proxy. Unprotected attributes follow the End-to-End-Signature attribute, and are not covered by the message integrity check. As a result, these attributes MAY be added, deleted, or modified by a proxy. The choice of which attributes are protected or unprotected is left up to the sender of the packet. For example, if the home server wishes to guarantee that the client will be tunneled to a given destination, then it will integrity protect tunnel attributes by placing them prior to the End-to-End-Signature attribute. In general, home servers SHOULD protect attributes whose modification would compromise security, including tunnel attributes, and EAP-Message attributes. If a proxy is unable to accept a protected attribute within an Access-Request, then it MUST reply to the NAS with an Access-Reject packet. If a proxy is unable to accept a protected attribute within an Access-Accept or Access-Challenge packet, then it SHOULD send an Access-Reject to the NAS, as well as well as an Accounting-Request with Acct-Status-Type=Proxy-Stop (6) to the home server. 8. Acknowledgments Thanks to Pat Calhoun of Sun Microsystems, Mark Beadles of CompuServe, Aydin Edguer of Morningstar, Bill Bulley of Merit, and Steven P. Crain of Shore.Net for useful discussions of this problem space. 9. References [1] B. Aboba, J. Lu, J. Alsop, J. Ding, W. Wang. "Review of Roaming Implementations." RFC 2194, Microsoft, Aimnet, i-Pass Alliance, Asiainfo, Merit, September 1997. [2] B. Aboba, G. Zorn. "Roaming Requirements." Internet draft (work in progress), draft-ietf-roamops-roamreq-10.txt, Microsoft, May 1998. [3] C. Rigney, A. Rubens, W. Simpson, S. Willens. "Remote Authenti- cation Dial In User Service (RADIUS)." RFC 2138, Livingston, Merit, Daydreamer, April 1997. [4] C. Rigney. "RADIUS Accounting." RFC 2139, Livingston, April 1997. [5] C. Rigney, W. Willats. "RADIUS Extensions." Internet draft (work in progress), draft-ietf-radius-ext-01.txt, Livingston, December 1997. [6] R. Fielding, et al. "Hypertext Transfer Protocol - HTTP/1.1." RFC 2068, UC Irvine, January 1997. [7] R. Rivest, S. Dusse. "The MD5 Message-Digest Algorithm", RFC 1321, MIT Laboratory for Computer Science, RSA Data Security Inc., April 1992. Aboba & Vollbrecht [Page 7] INTERNET-DRAFT October 8, 1998 [8] S. Bradner. "Key words for use in RFCs to Indicate Requirement Levels." RFC 2119, Harvard University, March 1997. [9] B. Aboba, M. Beadles. "The Network Access Identifier." Internet draft (work in progress), draft-ietf-roamops-nai-10.txt, Microsoft, CompuServe, May 1998. [10] P. Calhoun and B. Aboba. "End-to-End Security in Roaming." Internet draft (work in progress), draft-ietf-roamops-roamsec-01.txt, Sun Microsystems, Microsoft, July 1998. 10. Authors' Addresses Bernard Aboba Microsoft Corporation One Microsoft Way Redmond, WA 98052 Phone: 425-936-6605 EMail: bernarda@microsoft.com John R. Vollbrecht Merit Network, Inc. 4251 Plymouth Rd. Ann Arbor, MI 48105-2785 Phone: 734-763-1206 EMail: jrv@merit.edu Aboba & Vollbrecht [Page 8]