RFC 4849 PROPOSED STANDARD RADIUS · FILTERING · AAA

NAS-Filter-Rule: RADIUS Filter Rule Attribute

A RADIUS attribute that carries actual packet filter rules to an access server instead of just naming a preconfigured filter.

On rfc-editor.org ↗
PUBLISHED
April 2007
AUTHORS
P. Congdon, M. Sanchez, B. Aboba
STREAM
IETF
RADIUS ATTRIBUTE TYPE
92
MINIMUM LENGTH
3 (Length >= 3)
RULE SEPARATOR
NUL (0x00)
SPLIT SIZE
253-octet boundaries
DIAMETER AVP CODE
400
UNTRANSLATABLE RESULT CODE
5018
DOI
10.17487/RFC4849

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                         P. Congdon
Request for Comments: 4849                                    M. Sanchez
Category: Standards Track                      ProCurve Networking by HP
                                                                B. Aboba
                                                   Microsoft Corporation
                                                              April 2007


                      RADIUS Filter Rule Attribute

Status of This Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   While RFC 2865 defines the Filter-Id attribute, it requires that the
   Network Access Server (NAS) be pre-populated with the desired
   filters.  However, in situations where the server operator does not
   know which filters have been pre-populated, it is useful to specify
   filter rules explicitly.  This document defines the NAS-Filter-Rule
   attribute within the Remote Authentication Dial In User Service
   (RADIUS).  This attribute is based on the Diameter NAS-Filter-Rule
   Attribute Value Pair (AVP) described in RFC 4005, and the
   IPFilterRule syntax defined in RFC 3588.

Table of Contents

   1. Introduction ....................................................2
      1.1. Terminology ................................................2
      1.2. Requirements Language ......................................3
      1.3. Attribute Interpretation ...................................3
   2. NAS-Filter-Rule Attribute .......................................3
   3. Table of Attributes .............................................5
   4. Diameter Considerations .........................................5
   5. IANA Considerations .............................................6
   6. Security Considerations .........................................6
   7. References ......................................................7
      7.1. Normative References .......................................7
      7.2. Informative References .....................................7
   8. Acknowledgments .................................................7

1.  Introduction

   This document defines the NAS-Filter-Rule attribute within the Remote
   Authentication Dial In User Service (RADIUS).  This attribute has the
   same functionality as the Diameter NAS-Filter-Rule AVP (400) defined
   in [RFC4005], Section 6.6, and the same syntax as an IPFilterRule
   defined in [RFC3588], Section 4.3.  This attribute may prove useful
   for provisioning of filter rules.

   While [RFC2865], Section 5.11, defines the Filter-Id attribute (11),
   it requires that the Network Access Server (NAS) be pre-populated
   with the desired filters.  However, in situations where the server
   operator does not know which filters have been pre-populated, it is
   useful to specify filter rules explicitly.

1.1.  Terminology

   This document uses the following terms:

   Network Access Server (NAS)
      A device that provides an access service for a user to a network.

   RADIUS server
      A RADIUS authentication server is an entity that provides an
      authentication service to a NAS.

   RADIUS proxy
      A RADIUS proxy acts as an authentication server to the NAS, and a
      RADIUS client to the RADIUS server.

1.2.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

1.3.  Attribute Interpretation

   If a NAS conforming to this specification receives an Access-Accept
   packet containing a NAS-Filter-Rule attribute that it cannot apply,
   it MUST act as though it had received an Access-Reject.  [RFC3576]
   requires that a NAS receiving a Change of Authorization Request
   (CoA-Request) reply with a CoA-NAK if the Request contains an
   unsupported attribute.  It is RECOMMENDED that an Error-Cause
   attribute with value set to "Unsupported Attribute" (401) be included
   in the CoA-NAK.  As noted in [RFC3576], authorization changes are
   atomic so that this situation does not result in session termination,
   and the pre-existing configuration remains unchanged.  As a result,
   no accounting packets should be generated because of the CoA-Request.

2.  NAS-Filter-Rule Attribute

   Description

   This attribute indicates filter rules to be applied for this user.
   Zero or more NAS-Filter-Rule attributes MAY be sent in Access-Accept,
   CoA-Request, or Accounting-Request packets.

   The NAS-Filter-Rule attribute is not intended to be used concurrently
   with any other filter rule attribute, including Filter-Id (11) and
   NAS-Traffic-Rule [Traffic] attributes.  NAS-Filter-Rule and NAS-
   Traffic-Rule attributes MUST NOT appear in the same RADIUS packet.
   If a NAS-Traffic-Rule attribute is present, a NAS implementing this
   specification MUST silently discard any NAS-Filter-Rule attributes
   that are present.  Filter-Id and NAS-Filter-Rule attributes SHOULD
   NOT appear in the same RADIUS packet.  Given the absence in [RFC4005]
   of well-defined precedence rules for combining Filter-Id and NAS-
   Filter-Rule attributes into a single rule set, the behavior of NASes
   receiving both attributes is undefined, and therefore a RADIUS server
   implementation cannot assume a consistent behavior.

   Where multiple NAS-Filter-Rule attributes are included in a RADIUS
   packet, the String field of the attributes are to be concatenated to
   form a set of filter rules.  As noted in [RFC2865], Section 2.3, "the
   forwarding server MUST NOT change the order of any attributes of the
   same type", so that RADIUS proxies will not reorder NAS-Filter-Rule
   attributes.

   A summary of the NAS-Filter-Rule Attribute format is shown below.
   The fields are transmitted from left to right.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |      String...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type

      92

   Length

      >=3

   String

      The String field is one or more octets.  It contains filter rules
      in the IPFilterRule syntax defined in [RFC3588], Section 4.3, with
      individual filter rules separated by a NUL (0x00).  A NAS-Filter-
      Rule attribute may contain a partial rule, one rule, or more than
      one rule.  Filter rules may be continued across attribute
      boundaries, so implementations cannot assume that individual
      filter rules begin or end on attribute boundaries.

      The set of NAS-Filter-Rule attributes SHOULD be created by
      concatenating the individual filter rules, separated by a NUL
      (0x00) octet.  The resulting data should be split on 253-octet
      boundaries to obtain a set of NAS-Filter-Rule attributes.  On
      reception, the individual filter rules are determined by
      concatenating the contents of all NAS-Filter-Rule attributes, and
      then splitting individual filter rules with the NUL octet (0x00)
      as a delimiter.

3.  Table of Attributes

   The following table provides a guide to which attributes may be found
   in which kinds of packets, and in what quantity.

   Access- Access- Access- Access-   CoA-  Acct-
   Request Accept  Reject  Challenge Req   Req   #   Attribute
    0       0+      0       0        0+    0+    92  NAS-Filter-Rule

   The following table defines the meaning of the above table entries.

     0     This attribute MUST NOT be present in the packet.
     0+    Zero or more instances of this attribute MAY be
           present in the packet.
     0-1   Zero or one instance of this attribute MAY be
           present in the packet.

4.  Diameter Considerations

   [RFC4005], Section 6.6, defines the NAS-Filter-Rule AVP (400) with
   the same functionality as the RADIUS NAS-Filter-Rule attribute.  In
   order to support interoperability, Diameter/RADIUS gateways will need
   to be configured to translate RADIUS attribute 92 to Diameter NAS-
   Filter-Rule AVP (400) and vice versa.

   When translating Diameter NAS-Filter-Rule AVPs to RADIUS NAS-Filter-
   Rule attributes, the set of NAS-Filter-Rule attributes is created by
   concatenating the individual filter rules, separated by a NUL octet.
   The resulting data SHOULD then be split on 253-octet boundaries.

   When translating RADIUS NAS-Filter-Rule attributes to Diameter NAS-
   Filter-Rule AVPs, the individual rules are determined by
   concatenating the contents of all NAS-Filter-Rule attributes, and
   then splitting individual filter rules with the NUL octet as a
   delimiter.  Each rule is then encoded as a single Diameter NAS-
   Filter-Rule AVP.

   Note that a translated Diameter message can be larger than the
   maximum RADIUS packet size (4096 bytes).  Where a Diameter/RADIUS
   gateway receives a Diameter message containing a NAS-Filter-Rule AVP
   that is too large to fit into a RADIUS packet, the Diameter/RADIUS
   gateway will respond to the originating Diameter peer with a Result-
   Code AVP with the value DIAMETER_RADIUS_AVP_UNTRANSLATABLE (5018),
   and with a Failed-AVP AVP containing the NAS-Filter-Rule AVP.  Since
   repairing the error will probably require re-working the filter
   rules, the originating peer should treat the combination of a
   Result-Code AVP with value DIAMETER_RADIUS_AVP_UNTRANSLATABLE and a
   Failed-AVP AVP containing a NAS-Filter-Rule AVP as a terminal error.

5.  IANA Considerations

   This specification does not create any new registries.

   This document uses the RADIUS [RFC2865] namespace, see
   <http://www.iana.org/assignments/radius-types>.  One value has been
   allocated in the section "RADIUS Attribute Types".  The RADIUS
   attribute for which a value has been assigned is:

      92 - NAS-Filter-Rule

   This document also utilizes the Diameter [RFC3588] namespace.  A
   Diameter Result-Code AVP value for the
   DIAMETER_RADIUS_AVP_UNTRANSLATABLE error has been allocated.  Since
   this is a permanent failure, the allocation (5018) is in the 5xxx
   range.

6.  Security Considerations

   This specification describes the use of RADIUS for purposes of
   authentication, authorization and accounting.  Threats and security
   issues for this application are described in [RFC3579] and [RFC3580];
   security issues encountered in roaming are described in [RFC2607].

   This document specifies a new attribute that can be included in
   existing RADIUS packets, which are protected as described in
   [RFC3579] and [RFC3576].  See those documents for a more detailed
   description.

   The security mechanisms supported in RADIUS and Diameter are focused
   on preventing an attacker from spoofing packets or modifying packets
   in transit.  They do not prevent an authorized RADIUS/Diameter server
   or proxy from modifying, inserting, or removing attributes with
   malicious intent.  Filter attributes modified or removed by a
   RADIUS/Diameter proxy may enable a user to obtain network access
   without the appropriate filters; if the proxy were also to modify
   accounting packets, then the modification would not be reflected in
   the accounting server logs.

   Since the RADIUS protocol currently does not support capability
   negotiation, a RADIUS server cannot automatically discover whether a
   NAS supports the NAS-Filter-Rule attribute.  A legacy NAS not
   compliant with this specification may silently discard the NAS-
   Filter-Rule attribute while permitting the user to access the
   network.  This can cause users to improperly receive unfiltered
   access to the network.  As a result, the NAS-Filter-Rule attribute
   SHOULD only be sent to a NAS that is known to support it.

7.  References

7.1.  Normative References

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March, 1997.

   [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
             "Remote Authentication Dial In User Service (RADIUS)", RFC
             2865, June 2000.

   [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J.
             Arkko, "Diameter Base Protocol", RFC 3588, September 2003.

   [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, "Diameter
             Network Access Server Application", RFC 4005, August 2005.

7.2.  Informative References

   [RFC2607] Aboba, B. and J. Vollbrecht, "Proxy Chaining and Policy
             Implementation in Roaming", RFC 2607, June 1999.

   [RFC3576] Chiba, M., Dommety, G., Eklund, M., Mitton, D., and B.
             Aboba, "Dynamic Authorization Extensions to Remote
             Authentication Dial In User Service (RADIUS)", RFC 3576,
             July 2003.

   [RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication
             Dial In User Service) Support For Extensible Authentication
             Protocol (EAP)", RFC 3579, September 2003.

   [RFC3580] Congdon, P., Aboba, B., Smith, A., Zorn, G., and J. Roese,
             "IEEE 802.1X Remote Authentication Dial In User Service
             (RADIUS) Usage Guidelines", RFC 3580, September 2003.

   [Traffic] Congdon, P., Sanchez, M., Lior, A., Adrangi, F., and B.
             Aboba, "RADIUS Attributes for Filtering and Redirection",
             Work in Progress, March 2007.

8.  Acknowledgments

   The authors would like to acknowledge Emile Bergen, Alan DeKok, Greg
   Weber, Glen Zorn, Pasi Eronen, David Mitton, and David Nelson for
   contributions to this document.

Authors' Addresses

   Paul Congdon
   Hewlett Packard Company
   ProCurve Networking by HP
   8000 Foothills Blvd, M/S 5662
   Roseville, CA  95747

   EMail: paul.congdon@hp.com
   Phone: +1 916 785 5753
   Fax:   +1 916 785 8478


   Mauricio Sanchez
   Hewlett Packard Company
   ProCurve Networking by HP
   8000 Foothills Blvd, M/S 5559
   Roseville, CA  95747

   EMail: mauricio.sanchez@hp.com
   Phone: +1 916 785 1910
   Fax:   +1 916 785 1815


   Bernard Aboba
   Microsoft Corporation
   One Microsoft Way
   Redmond, WA 98052

   EMail: bernarda@microsoft.com
   Phone: +1 425 706 6605
   Fax:   +1 425 936 7329

Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMThe RADIUS Filter-Id attribute only names a filter that the Network Access Server must already have, which fails when the server operator does not know what was preloaded.
MECHANISMRFC 4849 defines attribute 92, NAS-Filter-Rule, whose string holds filter rules in the Diameter IPFilterRule syntax, with rules separated by a NUL octet and split across attributes at 253 octets.
WHY IT MATTERSA RADIUS server can send explicit filter rules in Access-Accept, CoA-Request or Accounting-Request packets, and Diameter gateways can translate them to and from the Diameter AVP.

§1Introduction and Terms

RFC 4849 defines the NAS-Filter-Rule attribute for RADIUS. It has the same functionality as the Diameter NAS-Filter-Rule AVP (400) from RFC 4005 and the same syntax as an IPFilterRule from RFC 3588, Section 4.3.

The motivation is a limit in RFC 2865. Its Filter-Id attribute (11) requires the Network Access Server (NAS) to be pre-populated with the desired filters. When the server operator does not know which filters are preloaded, it is more useful to specify the filter rules explicitly.

The document uses three terms. A NAS is a device that provides an access service for a user to a network. A RADIUS server provides an authentication service to a NAS. A RADIUS proxy acts as an authentication server to the NAS and as a RADIUS client to the RADIUS server.

Before, the boss could only say "use rule list number 5", which works only if the guard has a list number 5. Now the boss can write the rules out.

§2The Attribute Format

The attribute has three fields: Type is 92, Length is at least 3, and String is one or more octets.

The String holds filter rules in IPFilterRule syntax, with individual rules separated by a NUL octet (0x00). One attribute may hold a partial rule, one rule or several rules. Rules can continue across attribute boundaries, so an implementation cannot assume that a rule begins or ends where an attribute does.

A sender SHOULD concatenate all the rules, separated by NUL octets, and split the result on 253-octet boundaries to get the set of attributes. A receiver concatenates the contents of all NAS-Filter-Rule attributes and then splits on NUL to recover the rules.

If the list of rules is too long for one envelope, you cut it into pieces and use several envelopes. The reader tapes the pieces back together and reads the rules in order.

§3Where and How It Is Used

Zero or more NAS-Filter-Rule attributes MAY be sent in Access-Accept, CoA-Request or Accounting-Request packets. The attribute table marks them as 0+ in those three packet types and 0 (MUST NOT be present) in Access-Request, Access-Reject and Access-Challenge.

Where several attributes appear, their String fields are concatenated to form one set of rules. RFC 2865 forbids a forwarding server from changing the order of attributes of the same type, so proxies will not reorder them.

The attribute is not meant to be used with other filter attributes. NAS-Filter-Rule and NAS-Traffic-Rule MUST NOT appear in the same packet, and if a NAS-Traffic-Rule is present, a NAS implementing this RFC MUST silently discard the NAS-Filter-Rule attributes. Filter-Id and NAS-Filter-Rule SHOULD NOT appear together, because without defined precedence rules the NAS behavior is undefined.

If a conforming NAS gets an Access-Accept with a NAS-Filter-Rule it cannot apply, it MUST act as though it had received an Access-Reject. For a CoA-Request with an unsupported attribute, the NAS replies with a CoA-NAK, and an Error-Cause attribute of 401 (Unsupported Attribute) is RECOMMENDED. Authorization changes are atomic, so the session continues with its existing configuration.

The rules slip can ride along with the "you may come in" message. If the guard cannot understand a rule, the guard acts as if the answer was no, rather than letting someone in with the wrong rules.

WHERE ATTRIBUTE 92 MAY APPEAR (RFC 4849 TABLE)
PacketNAS-Filter-Rule (92)
Access-Request0 (MUST NOT be present)
Access-Accept THIS RFC0+ (zero or more)
Access-Reject0 (MUST NOT be present)
Access-Challenge0 (MUST NOT be present)
CoA-Request THIS RFC0+ (zero or more)
Accounting-Request THIS RFC0+ (zero or more)

§4Diameter Considerations

RFC 4005 defines the Diameter NAS-Filter-Rule AVP (400). Diameter/RADIUS gateways need to be configured to translate RADIUS attribute 92 to that AVP and back.

Going from Diameter to RADIUS, the gateway concatenates the individual rules with NUL separators and SHOULD split the data at 253-octet boundaries. Going from RADIUS to Diameter, it joins all attributes, splits on NUL, and encodes each rule as its own Diameter AVP.

A translated Diameter message can exceed the maximum RADIUS packet size of 4096 bytes. In that case the gateway answers the Diameter peer with a Result-Code of DIAMETER_RADIUS_AVP_UNTRANSLATABLE (5018) and a Failed-AVP containing the NAS-Filter-Rule AVP. Repairing this probably needs the filter rules reworked, so the originating peer should treat it as a terminal error.

Two offices speak slightly different languages. A translator at the border turns one long rule list into pieces, or pieces into a list. If the list is too big for the other side's envelopes, the translator sends it back saying it cannot be done.

§5Security Considerations

The attribute rides in existing RADIUS packets, which are protected as described in RFC 3579 and RFC 3576. RADIUS and Diameter security aims to stop spoofing and modification in transit. It does not stop an authorized server or proxy from changing, inserting or removing attributes with bad intent. If a proxy strips filters, a user could get network access without the right filters, and if it also alters accounting packets, the accounting logs would not show it.

RADIUS has no capability negotiation, so a server cannot discover on its own whether a NAS supports this attribute. A legacy NAS may silently discard it and still let the user in, giving unfiltered access. Therefore NAS-Filter-Rule SHOULD only be sent to a NAS that is known to support it.

If a middleman tears up the rules slip, the guard lets people in without the rules. And an old guard who does not know about slips may just ignore them, so only hand slips to guards you know can read them.

§6IANA Considerations

The RFC creates no new registries. It uses the RADIUS namespace, where one value was allocated in the RADIUS Attribute Types registry: 92 for NAS-Filter-Rule.

It also uses the Diameter namespace, where a Result-Code value for DIAMETER_RADIUS_AVP_UNTRANSLATABLE was allocated. Because this is a permanent failure, the value 5018 is in the 5xxx range.

The number 92 was reserved for this new kind of slip, and 5018 for the "cannot translate this" answer, so nobody else uses them.

§7References