One document matched: draft-aboba-radius-02.txt
Differences from draft-aboba-radius-01.txt
Network Working Group Bernard Aboba
INTERNET-DRAFT Microsoft
<draft-aboba-radius-02.txt>
5 February 1998
Lightweight Directory Access Protocol (v3):
Schema for the Remote Access Dialin User Service (RADIUS)
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 mate-
rial 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 <draft-
aboba-radius-02.txt>, and expires August 1, 1998. Please send com-
ments to the authors.
2. Abstract
This document defines a schema for the Remote Access Dialin User Ser-
vice (RADIUS). This schema makes it possible to integrate a RADIUS
server with an LDAP-based directory service, making it possible for an
organization to maintain a single store of user information. This con-
solidation is desirable since it results in a reduction in the admin-
istrative workload, and eliminates the need to synchronize across mul-
tiple user information stores.
3. Introduction
Today enterprises are looking to simplify the process of user adminis-
tration. With the advent of HR and personnel management systems,
information on a user is typically entered at the time of hiring, and
is retained until termination. If an LDAP-based directory is also
deployed, this necessitates synchronization with the of the personnel
database in order to maintain consistency.
Should the enterprise then deploy NAS devices or layer 2 tunneling
solutions, there may be a need to add a RADIUS server or if extended
Aboba [Page 1]
INTERNET-DRAFT 5 February 1998
security is required, a backend security server. Each of these may
require their own user information store.
Operating multiple stores of user information is not appealing, since
this may require rekeying of information or sychronization between
multiple stores, resulting in increased administrative costs. Main-
taining multiple stores also raises concerns about inconsistency and
replication delays. In order to avoid these problems, it is desirable
to consolidate stores of user information. One way this can be
achieved is to make it possible for RADIUS servers and security add-
ons to store their user information in an LDAP-based directory.
This document is one of three related specifications which describe
how a RADIUS server may be integrated with an LDAP-based directory
service. Reference [12] describes a schema designed for tracking ses-
sions in progress. Such information can be useful for a variety of
purposes including security incident response; simultaneous usage con-
trol; or monitoring of connection quality, login time, packet size or
bandwidth usage. Since this data change frequently, dynamic attributes
must be employed as described in [9]. Reference [13] describes how
user credentials submitted during PPP authentication may be validated
by the RADIUS server.
This document defines an LDAP schema for the Remote Access Dialin User
Service (RADIUS). The RADIUS protocol, described in [6]-[8], supports
authentication, authorization and accounting for dialup users. To
date, RADIUS servers have stored user data in a variety of ways,
including databases and flat files. A goal of this schema is tomake it
possible to add support for LDAP-based directory services to existing
RADIUS server implementations. In order to permit this schema to be
used with a wide range of directory service implementations, we avoid
reliance on features that have not been widely implemented, such as
multiple inheritance.
3.1. Objects and attributes
The RADIUS schema defined in this document requires support for sev-
eral new classes: radiusProfileClass, radiusPolicyClass, radiusDic-
tionaryClass, and eapDictionaryClass. The radiusProfileClass is used
to store RADIUS attributes relevant to groups of users. The radiusPol-
icyClass is used to describe conditions under which a given profile
may be applied. The radiusDictionaryClass is used to store the RADIUS
Dictionary. This provides extensibility and allows RADIUS profile
objects to be self describing. The eapDictionaryClass is used to store
a list mapping EAP Types to names.
The attributes in radiusProfileClass fall into two categories:
attributes present in the Access-Reply, and attributes representing
access constraints. An access constraint is a set of conditions that
must be satisfied in order for access to be granted. These are
expressed in the form of matching rules involving attributes present
in the Access-Reply, as well as other attributes such as the time of
day. For example, a matching rule involving the calledStationId and
Aboba [Page 2]
INTERNET-DRAFT 5 February 1998
time of day can be created in order to limit access to those calling a
given phone number during specified hours.
Attributes present in the Access-Reply are stored in the directory so
that the RADIUS server can retrieve them and include them in the
Access-Reply. Access constraints are stored in the directory so that
the RADIUS server can test the incoming Access-Request to determine
whether to proceed with authentication, or immediately send an Access-
Reject. Note that only static attributes present in Access-Reply need
be stored in the directory; attributes which are computed on the fly
can be recreated as needed.
The attributes in radiusPolicyClass represent conditions which must
hold for the profile indicated in radiusProfilePointer to be applied.
As with access constraints, these conditions may involve matching
rules applied to attributes in the Access-Request, as well as condi-
tions involving time of day, Nas-Port-Type, or group memberships.
For example, it may be desirable to give users different Session-Time
or Port-Limit attributes depending on the time of day, or group mem-
berships. This can be accomplished by creating policy expressions and
profiles for each time of day/group membership combination. Simi-
larly, it may be desirable to require that analog and ISDN callers do
callback or call from a particular callingStationId, while this may
not make sense for users connecting over a VPN. This can be accom-
plished by creating a policy expression that returns different pro-
files, depending on nasPortType.
3.2. Administrative model
The schema defined in this document includes user object attributes,
as well as profile and policy objects.
User object attributes are used in situations where it may be desir-
able to override behavior supplied in a profile, or where it is
desired that individual users be given an unique value for an
attribute. For example, where static addresses are assigned, each user
will typically have a different IP address; similarly, where callback
is used, callbackNumber will typically differ between users.
In the early versions of this document, it was envisaged that all
attributes would be contained within the user object. This is wasteful
because it is likely that groups of users will tend to have the same
parameter values. Thus a schema based solely on user-object results in
unnecessary replication, and also makes it difficult to change
attributes for all members of a group.
To reduce the replication problem, enable more effective caching, and
ease the administrative burden, profiles were added to the schema.
Profiles support definition of parameter sets which apply to a group
of users in a particular situation. Since it is expected that profiles
Aboba [Page 3]
INTERNET-DRAFT 5 February 1998
will apply to large group of users, they can be effectively cached.
Reference [14] describes how object caching can be supported within
LDAP-based directory services.
In an earlier version of this document, profiles could be related to
users via the radiusProfilePointer attribute included in the user
object. While this method of mapping users to profiles is still sup-
ported in this revision, this approach does not scale well, since it
requires administrators to modify the directory entries for each user,
in order to add the required radiusProfilePointer. Network administra-
tors typically manage the authorization process via group assignments,
and therefore will typically desire to fit profiles within the exist-
ing administrative model. In particular, it is highly desirable to
allow an administrator to change the profile values applying to a
group without having to edit the user objects for each member of the
group.
Several methods for binding a profile to a group suggest themselves.
Within this schema, the mapping is achieved via a policy object which
may include group membership among the conditions evaluated in assign-
ment of a profile. It should be noted that policy objects are not the
only way to bind profiles to groups, nor are they necessarily the most
efficient. For example, it is also possible to handle profile/group
binding via a table, or even by encoding policy restrictions on a user
certificate. The later may prove popular in the long term, given that
today many firms already encode privileges relating to time of day and
organizational function on employee badges.
The profile/group binding method chosen in this document was selected
primarily since it proved to be a degenerate case of the general con-
ditional profile problem. In this schema, we support the conditional
application of profiles, with the policy object expressing the condi-
tions that must be satisfied for a profile to be executed. Thus, pro-
file/group binding can be expressed as a condition (group membership)
resulting in assignment of a profile (the profile for that group).
3.2.1. User object attributes
This schema proposes addition of attributes to the user object. As
noted earlier, to enhance scalability, it is recommended that user
object attributes only be used in cases where profile overide is nec-
essary, or assignment of per-user attributes is required. Overide can
in principle be required for any attribute that may be included in the
Access-Reply, and so these attributes are among those that are added
to the user object. Examples of attributes that may be assigned on a
per-user basis include radiusFramedIPAddress, radiusCallbackNumber and
radiusFramedRoute.
Since many RADIUS parameters are expected to be identical for a group
of users, typically the user object will contain a small set of Radius
attributes. No user object attributes may be present if profiles are
being applied conditionally and no per-user values are required.
Aboba [Page 4]
INTERNET-DRAFT 5 February 1998
If it desired that a profile be unconditionally executed, then this
can be achieved either by creating a policy object with a radiusPro-
filePointer attribute but no npConstraint attribute, or by adding
radiusPolicyPointer (a distinguished name pointing to a RADIUS Profile
Object) as a user object attribute.
3.2.2. Profiles
Profile attributes fall into two major categories. One category of
attributes are static attributes that may be returned in an Access-
Reply. These attributes use a prefix of 'radius' and are included
within the profile so that the RADIUS server may copy the values into
the Access-Reply.
Another category of attributes are those which represent conditions
that must be satisfied for an Access-Accept to be sent. These
attributes use a prefix of 'np', which stands for Network Policy.
These attributes include npIPPoolName, npSessionsAllowed, npEAPType,
npConstraint, and npAuthenticationType. npSessionsAllowed is used to
limit the number of simultaneous sessions; npAuthenticationType indi-
cates the acceptable authentication types (PAP, CHAP, MS-CHAP, EAP);
npEAPType indicates the EAP-Type to be used to authenticate the user
if EAP is negotiated as an authentication type; npIPPoolName indicates
the name of the IP address pool that should be used in assigning the
user's IP address. npConstraint is a string attribute used to express
constraints based on time of day, or attributes present in the Access-
Request, such as NAS-Port-Type or NAS-Identifier.
Within this document, we allow profiles to include pointers to other
profiles, so that profiles may form a linked list. This allows a hier-
archy of profiles to be provided. More specific attributes overide
more general ones.
3.2.3. Example
All BIGCO employees are required to use token card authentication, and
thus in the company profile the radiusAuthenticationType attribute is
set to only allow EAP, and the radiusEAPType attribute is set for
BIGCO's token card type. BIGCO also sets up a marketing profile pro-
viding a radiusSessionTimeout value of 30 minutes, a radiusPortLimit
of one, and radiusFramedIpAddress set to indicate dynamic address
allocation. However, Fred requires a static IP address, and thus his
user object will contain a radiusFramedIpAddress attribute.
Since BIGCO profiles are unconditionally applied, a policy object with
a condition of (group == marketing) is used to assign a profile to
marketing personnel. Another policy object of lower priority is used
with no npConstraint attribute in order to assign a default profile.
Aboba [Page 5]
INTERNET-DRAFT 5 February 1998
3.3. Policy support
The schema described in this document provides for the conditional
application of a profile to a user via policy objects. Policy objects
make it possible to have profile A apply to a user in one set of cir-
cumstances, and profile B apply in another set of circumstances. They
also enable binding of profiles to groups.
Each policy object corresponds to an IF/THEN statement; multiple pol-
icy objects may be required to express complex policies. Attributes
in the policy object include npConstraint, a string attribute which
expresses the conditions under which a profile will be applied; npSe-
quence, an integer attribute which describes the order in which the
policy object will be evaluated; and radiusProfilePointer, a Distin-
guished Name pointing to the RADIUS profile that will be applied if
the conditions hold. The matching rule stored in npConstraint is an
expression which may reference other attribute values and include pat-
tern matching and other operations, such as equality tests. Policy
objects without an npConstraint attribute can be used to indicate
unconditional execution of a profile.
Although a simple Policy Object is presented in this schema, more com-
plex versions are possible. For example, a wider variety of operators
and pattern matches might be supported within npConstraint.
3.3.1. Example
Let us assume that BIGCO wishes to offer dialin access to their domes-
tic sales force, as well as VPN access to contractors and to individu-
als from the finance group travelling overseas. In order to consis-
tently manage and account for the use of their NAS devices and Layer 2
tunnel servers (PPTP/L2F/L2TP), BIGCO has chosen to adopt the RADIUS
protocol. However, given the large number of employees and contrac-
tors that need to be managed, BIGCO desires a RADIUS solution inte-
grated with their existing LDAP-based directory service and group
structure. This will allow the network administrator to edit the
user's RADIUS attributes with the same user-interface as they use to
edit other user attributes, profiles, and policies, and will eliminate
the need to maintain multiple stores of user information.
As part of this service offering, BIGCO may wish to implement a number
of policies. For example, in order to make sure that high speed dialin
access is available to the sales force when they need it, BIGCO may
wish to restrict use of the ISDN ports to sales personnel only during
the hours of 9-5, and permit the use of multilink. Since contractors
are only to be given access to selected subnets, BIGCO may wish to
apply a filter to their traffic. Since individuals in the finance
group often access highly confidential information over the VPN, BIGCO
may wish to require that these users authenticate via a smartcard, and
use only 128-bit encryption so as to provide for extended security.
For security reasons, BIGCO may wish to restrict contractors and
finance users to a single login at a time.
Aboba [Page 6]
INTERNET-DRAFT 5 February 1998
In certain cases, BIGCO may also wish to implement policies that
depend on the type of port that the user is connecting to. For exam-
ple, if the user is connecting via dialup, then it may be appropriate
to include tunnel attributes within the Access-Accept, so as to set up
a tunnel for the user. However, if the user is already connected via
a tunnel, this would not be necessary. Similarly, if BIGCO only has a
limited number of ISDN ports available, it may be desirable to set a
shorter Session-Timeout or Idle-Timeout on these ports, or to set
Port-Limit to one so as to not allow multi-link. The schema defined in
this document permits enforcement of these and many other policies.
3.4. Caching
Reference [14] describes a simple caching scheme for LDAP-based direc-
tories. A new operational attribute, ttl, is defined which specifies
the maximum time an object may remain in the cache. Such a caching
scheme is particularly beneficial for the schema presented in this
document, since it is expected that profiles and policies will apply
to large numbers of users. The first time the RADIUS server encounters
a pointer to a given profile or policy, the profile or policy will be
retrieved from the directory and cached. Subsequently, the profile or
policy may be retrieved from the cache, speeding the retrieval pro-
cess. As a result, it is to be expected that caching should result in
a substantial performance gain. As noted in [14], the ttl attribute
denotes the number of seconds that an entry may remain in the cache
before becoming stale. A value of 0 implies that the object must
not be cached.
3.5. Extensibility
Today vendors distinguish their RADIUS servers by a variety of means,
including the range of supported attributes (standard and vendor-spe-
cific), and the breadth of policies that may be represented. As a
result, while it is desirable to provide a common base set of classes
and attributes which all RADIUS schemas will share, RADIUS server
capabilities differ substantially from implementation to implementa-
tion, and a successful RADIUS schema definition must support this dif-
ferentiation.
The schema described in this document provides support for most of the
attributes defined in [6]-[8], as well as including support for the
RADIUS Dictionary and vendor-specific attributes, as well as condi-
tional application of profiles. Within this framework, vendor differ-
entiation can be achieved via two methods: adding attributes to the
base RADIUS profile and policy classes, or creating subclasses inher-
iting from the base classes. Adding attributes to the base class is
recommended in cases where the new attributes to be added do not con-
flict with those described in this document or in [6]-[8].
Where conflicts do not arise, new attributes, including vendor-spe-
cific attributes, may be added to the RADIUS dictionary, which allows
RADIUS Profile objects to be self-describing. The goal is to allow
Aboba [Page 7]
INTERNET-DRAFT 5 February 1998
attributes to be added without having to require an update to the
RADIUS server code. Note however that a conventional RADIUS dictionary
is only designed to describe attributes that are sent on the wire,
while the RADIUS Dictionary object defined in this schema may also be
used to define additional non-wire attributes (such as radiusAuthenti-
cationType). This provides an additional element of flexibility,
allowing new attributes to be defined and used within
existing policy objects, without code changes.
Creating a sub-class is desirable in cases where conflicts are possi-
ble. Such conflicts can arise for example, when vendors have defined
attributes which conflict with the standard RADIUS attribute space
described in [6]-[8]. In this case, the radiusVendorId attribute
should included and set to the SMI Vendor Code, indicating that the
profile is specific to a given vendor, and contains potentially con-
flicting elements. Since a RADIUS server searching for a profile with
objectclass=radiusProfileClass will encounter both base class profiles
and subclasses, the radiusVendorId attribute is critical in allowing
an implementation to differentiate the profiles it can understand from
those that it cannot. Typically an implementation will only wish to
work with profiles whose radiusVendorId is either not present, zero
(IETF RADIUS) or set to their own SMI Vendor Code. As with addition of
attributes to the base class, when attributes are added to a subclass,
the RADIUS Dictionary class should modified to allow the subclass to
be self-describing.
Since it is conceivable that RADIU servers from two vendors may be
deployed simultaneously, both desiring to store objects in the same
LDAP-based directory service, and each implementing their own profile
subclass, a method must be provided to allow a user to have more than
one set of RADIUS profile and policy objects. This can be achieved by
allowing the radiusProfilePointer to point to a container object
rather than pointing to an object itself. The RADIUS server would then
search the container for a RADIUS profile or policy with an appropri-
ate radiusVendorId.
In order to prevent name conflicts, it is recommended that vendors
adding their own attributes prepend a suffix to all attribute names.
The IETF Schema Working Group has announced its intention to manage
suffix allocation in order to avoid name conflicts. Rather than
redefining existing attributes, vendor should create their own
attributes using suffixes in order to avoid conflict.
To illustrate how extensibility features may be used, the additional
attributes supported by a hypothetical BIGCO Profile Class are
included.
4. User object additions
The RADIUS schema proposes addition of the following attributes to the
user object:
Aboba [Page 8]
INTERNET-DRAFT 5 February 1998
MAY ( radiusServiceType $ radiusFramedProtocol $ radiusFramedIPAddress $
radiusFramedIPNetmask $ radiusFramedRoute $ radiusFramedRouting $
radiusFilterId $ radiusFramedMTU $ radiusFramedCompression $
radiusLoginIPHost $ radiusLoginService $ radiusLoginTCPPort $
radiusCallbackNumber $ radiusCallbackId $ radiusFramedRoute $
radiusFramedIPXNetwork $ radiusClass $ radiusVSA $
radiusSessionTimeout $ radiusIdleTimeout $
radiusTerminationAction $ radiusCalledStationId $
radiusCallingStationId $ radiusLoginLATService $
radiusLoginLATNode $ radiusLoginLATGroup $
radiusFramedAppleTalkLink $ radiusFramedAppleTalkNetwork $
radiusFramedAppleTalkZone $ radiusPortLimit $ radiusLoginLATPort $
radiusTunnelType $ radiusTunnelMediumType $
radiusTunnelServerEndpoint $ radiusTunnelPrivateGroupId $
radiusTunnelAssignmentId $ radiusTunnelClientEndpoint $
radiusTunnelPreference $ radiusTunnelPassword $
radiusArapFeatures $ radiusArapZoneAccess $
radiusArapSecurity $ radiusPasswordRetry $ radiusPrompt $
npSessionsAllowed $ npAuthenticationType $ npEAPType $
npConstraint $ npIPPoolName $ radiusProfilePointer $
radiusVendorId
)
5. Object definitions
The RADIUS schema includes definition of the following objects:
RADIUS Profile Class
RADIUS Policy Class
RADIUS Dictionary Class
EAP Dictionary Class
5.1. RADIUS Profile Class
( radiusProfileClass 1
NAME 'radiusProfile'
SUP profile
PARENT (country $ organization $ organizationalUnit $
locality $ container)
STRUCTURAL
MUST (
cn
)
MAY ( radiusServiceType $ radiusFramedProtocol $ radiusFramedIPAddress $
radiusFramedIPNetmask $ radiusFramedRoute $ radiusFramedRouting $
radiusFilterId $ radiusFramedMTU $ radiusFramedCompression $
radiusLoginIPHost $ radiusLoginService $ radiusLoginTCPPort $
radiusCallbackNumber $ radiusCallbackId $ radiusFramedRoute $
radiusFramedIPXNetwork $ radiusClass $ radiusVSA $
radiusSessionTimeout $ radiusIdleTimeout $
radiusTerminationAction $ radiusCalledStationId $
radiusCallingStationId $ radiusLoginLATService $
Aboba [Page 9]
INTERNET-DRAFT 5 February 1998
radiusLoginLATNode $ radiusLoginLATGroup $
radiusFramedAppleTalkLink $ radiusFramedAppleTalkNetwork $
radiusFramedAppleTalkZone $ radiusPortLimit $ radiusLoginLATPort $
radiusTunnelType $ radiusTunnelMediumType $
radiusTunnelServerEndpoint $ radiusTunnelPrivateGroupId $
radiusTunnelAssignmentId $ radiusTunnelClientEndpoint $
radiusTunnelPreference $ radiusTunnelPassword $
radiusArapFeatures $ radiusArapZoneAccess $
radiusArapSecurity $ radiusPasswordRetry $ radiusPrompt $
npSessionsAllowed $ npAuthenticationType $ npEAPType $
npConstraint $ npIPPoolName $ radiusProfilePointer $
radiusVendorId $ radiusDictionaryPointer
)
)
5.2. RADIUS Policy Class
( radiusPolicyClass 1
NAME 'radiusPolicy'
SUP policy
PARENT (country $ organization $ organizationalUnit $
locality $ container)
STRUCTURAL
MUST (
cn $ radiusProfilePointer
)
MAY ( npConstraint $ npSequence
)
)
5.3. RADIUS Dictionary Class
( radiusDictionaryClass 1
NAME 'radiusDictionaryClass'
SUP top
PARENT (country $ organization $ organizationalUnit $
locality $ container)
STRUCTURAL
MUST (
cn $ radiusDictionaryEntry
)
)
5.4. EAP Dictionary Class
( eapDictionaryClass 1
NAME 'eapDictionaryClass'
SUP top
PARENT (country $ organization $ organizationalUnit $
locality $ container)
Aboba [Page 10]
INTERNET-DRAFT 5 February 1998
STRUCTURAL
MUST (
cn $ eapDictionaryEntry
)
)
5.5. BIGCO Profile Class
As described earlier, the base classes may be extended by attribute
addition, subclassing, or both. An example of the subclassing approach
is illustrated below. Here the bigcoProfileClass is created as a sub-
class of the radiusProfileClass and adds several attributes, each of
which uses bigco as a suffix to avoid name collisions.
( bigcoProfileClass 1
NAME 'bigcoProfile'
SUP radiusProfileClass
PARENT (country $ organization $ organizationalUnit $
locality $ container)
STRUCTURAL
MUST (
)
MAY ( bigcoBapRequired $ bigcoBapLinednLimit $ bigcoBapLinednTime $
bigcoDynDirServer
)
)
6. Attribute definitions
6.1. New Attribute Types Used in the user object and RADIUS Profile
Class
( radius radiusProfileClass 6
NAME 'radiusServiceType'
DESC 'The service to be provided to the user.
Values include: Login(1), Framed(2),
Callback Login(3), Callback Framed(4),
Outbound(5), Administrative(6), NAS Prompt(7),
Authenticate Only(8), Callback NAS Prompt(9)'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 7
NAME 'radiusFramedProtocol'
DESC 'For Framed service, the protocol to be
provided to the user. Values include
PPP(1), SLIP(2), ARAP(3), Gandalf(4),
Xylogics(5)'
Aboba [Page 11]
INTERNET-DRAFT 5 February 1998
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 8
NAME 'radiusFramedIPAddress'
DESC 'IP address to be assigned to the user
in dotted decimal notation'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 9
NAME 'radiusFramedIPNetmask'
DESC 'Netmask to apply to the user
in dotted decimal notation'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 10
NAME 'radiusFramedRouting'
DESC 'Routing method for the user.
Values include None(1), Send(2),
Listen(3), Send & Listen(4)'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 11
NAME 'radiusFilterId'
DESC 'String representing the filter list for the user'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
)
( radius radiusProfileClass 12
NAME 'radiusFramedMTU'
DESC 'Maximum Transmission Unit for the user'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 13
NAME 'radiusFramedCompression'
DESC 'Compression protocol to be used on
the link. Values include: None(1),
VJ compression(2),
IPX header compression(3)'
Aboba [Page 12]
INTERNET-DRAFT 5 February 1998
EQUALITY integerMatch
SYNTAX 'INTEGER'
)
( radius radiusProfileClass 14
NAME 'radiusLoginIPHost'
DESC 'System with which to connect the user
in dotted decimal notation'
EQUALITY integerMatch
SYNTAX 'INTEGER'
)
( radius radiusProfileClass 15
NAME 'radiusLoginService'
DESC 'Service to be used to connect the user to
the login host. Values include Telnet(1), Rlogin(2),
TCP Clear(3), PortMaster(4), and LAT(5)'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 16
NAME 'radiusLoginTCPPort'
DESC 'The TCP port with which the user is
to be connected'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 19
NAME 'radiusCallbackNumber'
DESC 'Number to be called'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 20
NAME 'radiusCallbackId'
DESC 'Name of place to be called'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 22
NAME 'radiusFramedRoute'
DESC 'Routes to be plumbed for the user'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
)
Aboba [Page 13]
INTERNET-DRAFT 5 February 1998
( radius radiusProfileClass 23
NAME 'radiusFramedIPXNetwork'
DESC 'IPX Network number to be configured
for the user'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 24
NAME 'radiusClass'
DESC 'Class attribute for the user'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass 25
NAME 'radiusVSA'
DESC 'Vendor Specific Attribute
for the user'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass 27
NAME 'radiusSessionTimeout'
DESC 'Per-session time limit in seconds.
After this expires, the action specified
in Termination-Action is taken'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 28
NAME 'radiusIdleTimeout'
DESC 'The maximum number of consecutive
seconds of idle connection allowed
before session termination'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 29
NAME 'radiusTerminationAction'
DESC 'Action taken when specified service is
completed. Values include Default(1)
or RADIUS-Request(2)'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 34
NAME 'radiusLoginLATService'
Aboba [Page 14]
INTERNET-DRAFT 5 February 1998
DESC 'Identity of the LAT service to use'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 35
NAME 'radiusLoginLATNode'
DESC 'The node with which the user is to be
automatically connected by LAT'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 36
NAME 'radiusLoginLATGroup'
DESC 'The LAT group codes which this user
is authorized to use'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 37
NAME 'radiusFramedAppleTalkLink'
DESC 'The AppleTalk network number which
should be used for the user'
EQUALITY caseIgnoreIA5Match
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 38
NAME 'radiusFramedAppleTalkNetwork'
DESC 'The AppleTalk network number which
the NAS should probe to allocate an
AppleTalk node for the user'
EQUALITY caseIgnoreIA5Match
SYNTAX 'INTEGER'
)
( radius radiusProfileClass 39
NAME 'radiusFramedAppleTalkZone'
DESC 'The name of the Default AppleTalk Zone'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 62
NAME 'radiusPortLimit'
DESC 'Maximum number of ports to be provided'
EQUALITY integerMatch
Aboba [Page 15]
INTERNET-DRAFT 5 February 1998
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 39
NAME 'radiusLoginLATPort'
DESC 'The Port with which the user is to
connected by LAT'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 64
NAME 'radiusTunnelType'
DESC 'String representing the type of tunnel to
be set up, of the form Tag: Value. Values
include PPTP(1), L2F(2), L2TP(3), ATMP(4),
VTP(5), AH(6), IP-IP(7).'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass 65
NAME 'radiusTunnelMediumType'
DESC 'String representing the medium for the tunnel to
run over, of the form Tag: Value. Values
include IP(1), X.25(2), ATM(3), Frame Relay(4).'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass 67
NAME 'radiusTunnelServerEndpoint'
DESC 'String representing the address of the tunnel
server, of the form Tag: Value. The format
of the value field depends on the tunnelMediumType
attribute'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass ?
NAME 'radiusTunnelPrivateGroupId'
DESC 'String representing the Private Group Id for the
tunnel, of the form Tag: Value.'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass ?
NAME 'radiusTunnelPreference'
DESC 'String representing the tunnel preference for the
tunnel, of the form Tag: Value.'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass ?
Aboba [Page 16]
INTERNET-DRAFT 5 February 1998
NAME 'radiusTunnelAssignmentId'
DESC 'String representing the Tunnel Assignment Id for the
tunnel, of the form Tag: Value.'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass ?
NAME 'radiusTunnelClientEndpoint'
DESC 'String representing the Tunnel Client Endpoint for the
tunnel, of the form Tag: Value.'
SYNTAX 'OCTETSTRING'
)
( radius radiusProfileClass 71
NAME 'radiusArapFeatures'
DESC 'This is a compound string containing info that
the NAS should send to the user in the ARAP
feature flags packet'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 72
NAME 'radiusArapZoneAccess'
DESC 'This field controls access to ARAP zones.
Values include
Only allow access to default zone(1),
Use zone filter inclusively(2),
Use zone filter exclusively (4)'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 73
NAME 'radiusArapSecurity'
DESC 'This field contains an integer
specifying the security module signature,
which is a Macintosh OSType'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 75
NAME 'radiusPasswordRetry'
DESC 'This is an integer specifying the number
of password retry attempts to permit the user'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
Aboba [Page 17]
INTERNET-DRAFT 5 February 1998
( radius radiusProfileClass 76
NAME 'radiusPrompt'
DESC 'This attribute is used only in RADIUS
Access-Challenge packets and indicates
if the NAS should echo the user's response
as entered. Values include No Echo (0), or Echo(1).'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 257
NAME 'npEAPType'
DESC 'Allowable EAP types, in order of preference. If this
attribute has a value, EAP must be included in the
allowable authentication types.'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 258
NAME 'npConstraint'
DESC 'A string expressing conditions which must hold
in order for an Access-Accept to be sent. The
string is of the format MATCH ( <attribute> =
<pattern/value> OR <pattern/value>) <AND/OR>
TIMEOFDAY. Brackets () can be used to group.
When multiple msNPConstraints are present, all
of them must be satisfied in order for a profile
to be executed.'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String'
)
( radius radiusProfileClass 259
NAME 'npIPPoolName'
DESC 'The name of the IP Address Pool out of which
the user's IP address should be allocated.'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String'
)
( radius radiusProfileClass 260
NAME 'npSessionsAllowed'
DESC 'This attribute indicates the number of
simultaneous sessions allowed for this user.'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 261
NAME 'npAuthenticationType'
Aboba [Page 18]
INTERNET-DRAFT 5 February 1998
DESC 'Allowable authentication types (EAP, CHAP, PAP,
MS-CHAP, etc.) in order of preference. If an attribute
isn't included, it isn't allowed.'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
( radius radiusProfileClass 262
NAME 'radiusProfilePointer'
DESC 'Distinguished Name of a RADIUS Profile Object.'
EQUALITY distinguishedNameMatch
SYNTAX 'DN'
SINGLE-VALUE
)
( radius radiusProfileClass 263
NAME 'radiusVendorId'
DESC 'SMI Vendor Id. A non-zero value denotes a
profile non-compliant with RFC 2138 and 2139.'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( radius radiusProfileClass 264
NAME 'radiusDictionaryPointer'
DESC 'A Distinguished Name pointing to
the RADIUS dictionary for this profile. If
not present the default dictionary is used.'
EQUALITY distinguishedNameMatch
SYNTAX 'DN'
SINGLE-VALUE
)
6.2. New Attribute Types Used in the RADIUS Policy Class
( radius radiusPolicyClass 2
NAME 'npSequence'
DESC 'An integer indicating the order in which policy objects
are to be evaluated.'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
6.3. New Attribute Types Used in the RADIUS Dictionary Class
( radius radiusDictionaryClass 1
NAME 'dictionaryEntry'
Aboba [Page 19]
INTERNET-DRAFT 5 February 1998
DESC 'A dictionary entry in the RADIUS dictionary,
of the form Attribute-Number:[Vendor-Type:]ldapDisplayName:Type.
Vendor-Type may only be present with Attribute-Number=26
(Vendor Specific).'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
)
6.4. New Attribute Types Used in the BIGCO Profile Class
( bigco bigcoProfileClass 263
NAME 'bigcoBapRequired'
DESC 'This attribute indicates whether Bandwidth Allocation
Protocol (BAP) is required for this user. Values include
BAP Not Required (0) and BAP Required (1).'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( bigco bigcoProfileClass 264
NAME 'bigcoBapLinednLimit'
DESC 'Percent of capacity utilized at which to bring a
line down for this user. '
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( bigco bigcoProfileClass 265
NAME 'bigcoBapLinednTime'
DESC 'Time in seconds for the capacity utilization calculation.'
EQUALITY integerMatch
SYNTAX 'INTEGER'
SINGLE-VALUE
)
( bigco bigcoProfileClass 266
NAME 'bigcoDynDirServer'
DESC 'Fully qualified domain name or IP address of
the dynamic directory server for this user.'
EQUALITY caseIgnoreIA5Match
SYNTAX 'IA5String{128}'
SINGLE-VALUE
)
7. Security issues
Integration of a RADIUS server with an LDAP-based directory service
can result in a variety of security threats, including:
Aboba [Page 20]
INTERNET-DRAFT 5 February 1998
Rogue LDAP-servers
Theft of passwords
Inappropriate use
These threats are discussed in turn.
7.1. Rogue LDAP servers
Were a rogue LDAP server to respond to queries from the RADIUS server
and have its responses accepted, it is possible that users could gain
inappropriate access to the network. In order to protect against this,
the conversation between the RADIUS server and the LDAP-based direc-
tory service SHOULD be mutually authenticated via SSL/TLS or IPSEC.
7.2. Theft of passwords
RADIUS servers supporting PAP authentication or attributes such as
Tunnel-Password SHOULD provide for confidentiality of packets sent to
and from the LDAP server. This can be achieved using SSL/TLS or IPSEC
ESP.
7.3. Inappropriate use
This schema is intended for use by a RADIUS server integrating with an
LDAP-enabled directory. This schema SHOULD NOT be used by devices
looking to access the directory directly.
LDAP-enabling of devices would introduce several security problems. As
described in [13], LDAP-enabling a RADIUS server requires that the
RADIUS server be given permissions to access a user's RADIUS objects
and attributes. If the dynamic attributes described in [12] are sup-
ported, then the RADIUS service must also be able to write those
attributes to the DS. As a result, the administrator of the RADIUS
server should exercise care to ensure that the RADIUS account password
is not compromised. If at all possible, the RADIUS server should be
physically secured.
In contrast, LDAP-enabling of devices requires that devices be given
these access-rights. This can be achieved by making the devices mem-
bers of a group, and giving the group access rights to this portion of
the schema. However, such an expansion of access rights is undesir-
able, since while RADIUS servers can often be physically secured,
widely deployed devices typically cannot be.
Furthermore, direct use of LDAP across a WAN typically requires that
LDAP pass through a firewall. This is problematic since LDAP-based
directories can be used to store a wide variety of data, much of it
sensitive. Thus without implementing an LDAP proxy to limit access
only to appropriate portions of the schema, it is difficult to enforce
security. Since humans are notoriously lax in administration of access
rights, an attacker obtaining a device password would typically also
Aboba [Page 21]
INTERNET-DRAFT 5 February 1998
obtain access not only to RADIUS attributes for every user, but to
other information as well.
Beyond the security issues, LDAP-enabling of devices increases the
size of the device binaries, and may in some cases introduce dependen-
cies in the device boot sequence that can be problematic.
8. Acknowledgments
Thanks to Steven Judd, Ashwin Palekar, David Eitelbach, Narendra Gid-
wani and Donald Rule of Microsoft for useful discussions of this prob-
lem space.
9. References
[1] W. Yeong, T. Howes, S. Kille, "Lightweight Directory Access Pro-
tocol." RFC 1777, March 1995.
[2] "Information Processing Systems - Open Systems Interconnection -
The Directory: Overview of Concepts, Models and Service." ISO/IEC JTC
1/SC21, International Standard 9594-1, 1988.
[3] "Information Processing Systems - Open Systems Interconnection -
The Directory: Selected Object Classes." Recommendation X.521 ISO/IEC
JTC 1/SC21, International Standard 9594-7, 1993.
[4] M.Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory
Access Protocol (v3): Attribute Syntax Definitions." Internet Draft
(work in progress), draft-ietf-asid-ldapv3-attributes-08.txt, Critical
Angle, Isode, Netscape, October 1997.
[5] Y. Yaacovi, M. Wahl, T. Genovese, "Lightweight Directory Access
Protocol (v3): Extensions for Dynamic Directory Services." Internet
Draft (work in progress), draft-ietf-asid-ldapv3-dynamic-06.txt,
Microsoft, Critical Angle, September 1997.
[6] C. Rigney, A. Rubens, W. Simpson, S. Willens. "Remote Authenti-
cation Dial In User Service (RADIUS)." RFC 2138, Livingston, Merit,
Daydreamer, April 1997.
[7] C. Rigney. "RADIUS Accounting." RFC 2139, Livingston, April
1997.
[8] C. Rigney, W. Willats. "RADIUS Extensions." Work in progress,
draft-ietf-radius-ext-01.txt, Livingston, June 1997.
[9] Y. Yaacovi, M. Wahl, T. Genovese, "Lightweight Directory Access
Protocol: Dynamic Attributes." Internet Draft (work in progress),
draft-ietf-asid-dynatt-00.txt, Microsoft, Critical Angle, July 1997.
[10] J. Hodges, R.L. Morgan, M. Wahl, "Lightweight Directory Access
Protocol (v3): Extension for Transport Layer Security." Internet Draft
Aboba [Page 22]
INTERNET-DRAFT 5 February 1998
(work in progress), draft-ietf-asid-ldapv3-tls-01.txt, Stanford, Crit-
ical Angle, June 1997.
[11] M. Wahl, T. Hoews, S. Kille, "Lightweight Directory Access Proto-
col (v3)." Internet Draft (work in progress), draft-ietf-asid-proto-
col-08.txt, Critical Angle, Netscape, Isode, October 1997.
[12] B. Aboba, "Lightweight Directory Access Protocol (v3): Dynamic
Attributes for the Remote Access Dialin User Service (RADIUS)." Inter-
net Draft (work in progress), draft-aboba-dynradius-01.txt, Microsoft,
November 1997.
[13] B. Aboba, "Lightweight Directory Access Protocol (v3): Extension
for PPP Authentication" Internet Draft (work in progress), draft-
aboba-ppp-01.txt, Microsoft, November 1997.
[14] T. Howes, L. Howard, "A Simple Caching Scheme for LDAP and X.500
Directories." Internet Draft (work in progress), draft-ietf-asid-
ldap-cache-01.txt, Netscape, October 1997.
10. Authors' Addresses
Bernard Aboba
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
Phone: 425-936-6605
EMail: bernarda@microsoft.com
Aboba [Page 23]
| PAFTECH AB 2003-2026 | 2026-04-22 13:14:56 |