·客户端:RADIUS客户端一般位于NAS上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。
图1-2RADIUS服务器的组成
·“Users”:用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置信息)。
·“Clients”:用于存储RADIUS客户端的信息(如NAS的共享密钥、IP地址等)。
·“Dictionary”:用于存储RADIUS协议中的属性和属性值含义的信息。
RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的,并且共享密钥不能通过网络来传输,增强了信息交互的安全性。另外,为防止用户密码在不安全的网络上传递时被窃取,在传输过程中对密码进行了加密。
RADIUS服务器支持多种方法来认证用户,如基于PPP的PAP、CHAP认证。另外,RADIUS服务器还可以作为一个代理,以RADIUS客户端的身份与其它的RADIUS认证服务器进行通信,负责转发RADIUS认证和计费报文。
图1-3RADIUS的基本消息交互流程
消息交互流程如下:
(1)用户发起连接请求,向RADIUS客户端发送用户名和密码。
(2)RADIUS客户端根据获取的用户名和密码,向RADIUS服务器发送认证请求包(Access-Request),其中的密码在共享密钥的参与下由MD5算法进行加密处理。
(4)RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求包(Accounting-Request)。
(5)RADIUS服务器返回计费开始响应包(Accounting-Response),并开始计费。
(6)用户开始访问网络资源。
(7)用户请求断开连接,RADIUS客户端向RADIUS服务器发送计费停止请求包(Accounting-Request)。
(8)RADIUS服务器返回计费结束响应包(Accounting-Response),并停止计费。
(9)用户结束访问网络资源。
图1-4RADIUS报文结构
各字段的解释如下:
(1)Code域
表1-1Code域的主要取值说明
Code
报文类型
报文说明
1
Access-Request认证请求包
方向Client->Server,Client将用户信息传输到Server,由Server判断是否接入该用户。该报文中必须包含User-Name属性,可选包含NAS-IP-Address、User-Password、NAS-Port等属性
2
Access-Accept认证接受包
方向Server->Client,如果Access-Request报文中的所有Attribute值都可以接受(即认证通过),则传输该类型报文
3
Access-Reject认证拒绝包
方向Server->Client,如果Access-Request报文中存在任何无法被接受的Attribute值(即认证失败),则传输该类型报文
4
Accounting-Request计费请求包
方向Client->Server,Client将用户信息传输到Server,请求Server开始/停止计费,由该报文中的Acct-Status-Type属性区分计费开始请求和计费结束请求
5
Accounting-Response计费响应包
方向Server->Client,Server通知Client已经收到Accounting-Request报文,并且已经正确记录计费信息
(2)Identifier域
(3)Length域
长度为2个字节,表示RADIUS数据包(包括Code、Identifier、Length、Authenticator和Attribute)的长度,范围从20~4096。超过Length域的字节将作为填充字符被忽略。如果接收到的包的实际长度小于Length域的值时,则包会被丢弃。
(4)Authenticator域
长度为16个字节,用于验证RADIUS服务器的应答报文,另外还用于用户密码的加密。Authenticator包括两种类型:RequestAuthenticator和ResponseAuthenticator。
(5)Attribute域
·长度(Length),表示该属性(包括类型、长度和属性)的长度,单位为字节。
·属性值(Value),表示该属性的信息,其格式和内容由类型和长度决定,最大长度为253字节。
表1-2RADIUS属性
属性编号
属性名称
User-Name
45
Acct-Authentic
User-Password
46
Acct-Session-Time
CHAP-Password
47
Acct-Input-Packets
NAS-IP-Address
48
Acct-Output-Packets
NAS-Port
49
Acct-Terminate-Cause
6
Service-Type
50
Acct-Multi-Session-Id
7
Framed-Protocol
51
Acct-Link-Count
8
Framed-IP-Address
52
Acct-Input-Gigawords
9
Framed-IP-Netmask
53
Acct-Output-Gigawords
10
Framed-Routing
54
(unassigned)
11
Filter-ID
55
Event-Timestamp
12
Framed-MTU
56-59
13
Framed-Compression
60
CHAP-Challenge
14
Login-IP-Host
61
NAS-Port-Type
15
Login-Service
62
Port-Limit
16
Login-TCP-Port
63
Login-LAT-Port
17
64
Tunnel-Type
18
Reply-Message
65
Tunnel-Medium-Type
19
Callback-Number
66
Tunnel-Client-Endpoint
20
Callback-ID
67
Tunnel-Server-Endpoint
21
68
Acct-Tunnel-Connection
22
Framed-Route
69
Tunnel-Password
23
Framed-IPX-Network
70
ARAP-Password
24
State
71
ARAP-Features
25
Class
72
ARAP-Zone-Access
26
Vendor-Specific
73
ARAP-Security
27
Session-Timeout
74
ARAP-Security-Data
28
Idle-Timeout
75
Password-Retry
29
Termination-Action
76
Prompt
30
Called-Station-Id
77
Connect-Info
31
Calling-Station-Id
78
Configuration-Token
32
NAS-Identifier
79
EAP-Message
33
Proxy-State
80
Message-Authenticator
34
Login-LAT-Service
81
Tunnel-Private-Group-id
35
Login-LAT-Node
82
Tunnel-Assignment-id
36
Login-LAT-Group
83
Tunnel-Preference
37
Framed-AppleTalk-Link
84
ARAP-Challenge-Response
38
Framed-AppleTalk-Network
85
Acct-Interim-Interval
39
Framed-AppleTalk-Zone
86
Acct-Tunnel-Packets-Lost
40
Acct-Status-Type
87
NAS-Port-Id
41
Acct-Delay-Time
88
Framed-Pool
42
Acct-Input-Octets
89
43
Acct-Output-Octets
90
Tunnel-Client-Auth-id
44
Acct-Session-Id
91
Tunnel-Server-Auth-id
·Vendor-Type,表示子属性类型。
·Vendor-Length,表示子属性长度。
·Vendor-Data,表示子属性的内容。
图1-5包括扩展属性的RADIUS报文片断
HWTACACS(HWTerminalAccessControllerAccessControlSystem,HW终端访问控制器控制系统协议)是在TACACS(RFC1492)基础上进行了功能增强的安全协议。该协议与RADIUS协议类似,采用客户端/服务器模式实现NAS与HWTACACS服务器之间的通信。
表1-3HWTACACS协议和RADIUS协议区别
HWTACACS协议
RADIUS协议
使用TCP,网络传输更可靠
使用UDP,网络传输效率更高
除了HWTACACS报文头,对报文主体全部进行加密
只对验证报文中的密码字段进行加密
在整个过程中的基本消息交互流程如下:
(2)HWTACACS客户端收到请求之后,向HWTACACS服务器发送认证开始报文。
(3)HWTACACS服务器发送认证回应报文,请求用户名。
(4)HWTACACS客户端收到回应报文后,向用户询问用户名。
(5)用户输入用户名。
(6)HWTACACS客户端收到用户名后,向HWTACACS服务器发送认证持续报文,其中包括了用户名。
(9)用户输入密码。
(11)HWTACACS服务器发送认证回应报文,指示用户通过认证。
(15)HWTACACS客户端向HWTACACS服务器发送计费开始报文。
(16)HWTACACS服务器发送计费回应报文,指示计费开始报文已经收到。
(17)用户请求断开连接。
(18)HWTACACS客户端向HWTACACS服务器发送计费结束报文。
(19)HWTACACS服务器发送计费结束报文,指示计费结束报文已经收到。
LDAP(LightweightDirectoryAccessProtocol,轻量级目录访问协议)是一种基于TCP/IP的目录访问协议,用于提供跨平台的、基于标准的目录服务。它是在继承了X.500协议优点的基础上发展起来的,并对X.500在读取、浏览和查询操作方面进行了改进,适合于存储那些不经常改变的数据。
LDAP中使用目录记录并管理系统中的组织信息、人员信息以及资源信息,目录是按照树型结构组织,由多个条目(Entry)组成的。条目是具有DN(DistinguishedName,识别名)的属性(Attribute)集合。
LDAP的目录服务功能建立在Client/Server的基础之上,所有的目录信息数据存储在LDAP服务器上。目前,Microsoft的ActiveDirectoryServer、IBM的TivoliDirectoryServer和Sun的SunONEDirectoryServer都是常用的LDAP服务器软件。
·绑定操作的作用有两个:一是与LDAP服务器建立连接并获取LDAP服务器的访问权限。二是用于检查用户信息的合法性。
·查询操作就是构造查询条件,并获取LDAP服务器的目录资源信息的过程。
使用LDAP协议进行认证时,其基本的工作流程如下:
(1)LDAP客户端使用LDAP服务器管理员DN与LDAP服务器进行绑定,与LDAP服务器建立连接并获得查询权限。
(2)LDAP客户端使用认证信息中的用户名构造查询条件,在LDAP服务器指定根目录下查询此用户,得到用户的DN。
(3)LDAP客户端使用用户DN和用户密码与LDAP服务器进行绑定,检查用户密码是否正确。
图1-7LDAP认证的基本消息交互流程
(1)用户发起连接请求,向LDAP客户端发送用户名和密码。
(2)LDAP客户端收到请求之后,与LDAP服务器建立TCP连接。
(3)LDAP客户端以管理员DN和管理员DN密码为参数向LDAP服务器发送管理员绑定请求报文(AdministratorBindRequest)获得查询权限。
(4)LDAP服务器进行绑定请求报文的处理。如果绑定成功,则向LDAP客户端发送绑定成功的回应报文。
(5)LDAP客户端以输入的用户名为参数,向LDAP服务器发送用户DN查询请求报文(UserDNSearchRequest)。
(6)LDAP服务器收到查询请求报文后,根据报文中的查询起始地址、查询范围、以及过滤条件,对用户DN进行查找。如果查询成功,则向LDAP客户端发送查询成功的回应报文。查询得到的用户DN可以是一或多个。
(7)LDAP客户端以查询得到的用户DN和用户输入的密码为参数,向LDAP服务器发送用户DN绑定请求报文(UserDNBindRequest),检查用户密码是否正确。
(8)LDAP服务器进行绑定请求报文的处理。
·如果绑定成功,则向LDAP客户端发送绑定成功的回应报文。
一个ISP(InternetServiceProvider,互联网服务提供商)域是由属于同一个ISP的用户构成的群体。
图1-8用户名决定域名
为便于对不同接入方式的用户进行区分管理,AAA将用户划分为以下几个类型:
·lan-access用户:LAN接入用户,如802.1X认证、MAC地址认证用户。
·Portal接入用户。
·PPP接入用户。
·WAPI接入用户。
PPP接入用户、WAPI接入用户的支持情况与设备的型号有关,请参见“配置指导导读”中的“特性差异情况”部分的介绍。
·RFC2865:RemoteAuthenticationDialInUserService(RADIUS)
·RFC2866:RADIUSAccounting
·RFC2867:RADIUSAccountingModificationsforTunnelProtocolSupport
·RFC2868:RADIUSAttributesforTunnelProtocolSupport
·RFC2869:RADIUSExtensions
·RFC1492:AnAccessControlProtocol,SometimesCalledTACACS
·RFC1777:LightweightDirectoryAccessProtocol
·RFC2251:LightweightDirectoryAccessProtocol(v3)
表1-4常用RADIUS标准属性
描述
需要进行认证的用户名称
需要进行PAP方式认证的用户密码,在采用PAP认证方式时,该属性仅出现在Access-Request报文中
需要进行CHAP方式认证的用户密码的消息摘要。在采用CHAP认证方式时,该属性出现在Access-Request报文中
Server通过不同的IP地址来标识不同的Client,通常Client采用本地一个接口的IP地址来唯一的标识自己,这就是NAS-IP-Address。该属性指示当前发起请求的Client的NAS-IP-Address。该字段仅出现在Access-Request报文中
用户接入NAS的物理端口号
用户申请认证的业务类型
用户Frame类型业务的封装协议
为用户所配置的IP地址
访问控制列表的名称
用户与NAS之间数据链路的MTU(MaximumTransmissionUnit,最大传输单元)值。例如在802.1X的EAP方式认证中,NAS通过Framed-MTU值指示Server发送EAP报文的最大长度,防止EAP报文大于数据链路MTU导致的报文丢失
服务器反馈给用户的纯文本描述,可用于向用户显示认证失败的原因
厂商自定义的私有属性。一个报文中可以有一个或者多个私有属性,每个私有属性中可以有一个或者多个子属性
NAS用于向Server告知标识用户的号码,在我司设备提供的lan-access业务中,该字段填充的是用户的MAC地址,采用的“HH-HH-HH-HH-HH-HH”格式封装
NAS用来向Server标识自己的名称
计费请求报文的类型
·1:Start
·2:Stop
·3:Interim-Update
·4:Reset-Charge
·7:Accounting-On(3GPP中有定义)
·8:Accounting-Off(3GPP中有定义)
·9-14:ReservedforTunnelAccounting
·15:ReservedforFailed
用户采用的认证方式,包括RADIUS,Local以及Remote
在CHAP认证中,由NAS生成的用于MD5计算的随机序列
NAS认证用户的端口的物理类型
·15:以太网
·16:所有种类的ADSL
·17:Cable(有线电视电缆)
·19:WLAN-IEEE802.11
·201:VLAN
·202:ATM
如果在ATM或以太网端口上还划分VLAN,则该属性值为201
用于封装EAP报文,实现RADIUS协议对EAP认证方式的支持
用于对认证报文进行认证和校验,防止非法报文欺骗。该属性在RADIUS协议支持EAP认证方式被使用