RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
端口号,它是与数据矩阵服务(datametrics)冲突。标准RADIUS端口号是1812。
以下是RADIUS数据格式的总结。域是从左向右传输的。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 编码 | 标识符 | 长度 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 鉴别码 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
编码域是一位字节,确定RADIUS数据包的类型。在接收到一个无效编码域的地数据包后,该数据包只是会被简单的丢弃。
RADIUS指定了如下编码:
1 接入请求(Access-Request) 2 接入允许(Access-Accept) 3 接入拒绝(Access-Reject)
4 记账请求(Accounting-Request) 5 记账回应(Accounting-Response) 11 接入询问(Access-Challenge)
12 服务器状态(Status-Server (experimental)) 13 客户机状态(Status-Client (experimental)) 255 保留(Reserved)
编码4和编码5在RADIUS记账文档[5]中描述。编码12和编码13为有可能出现的应用保留,在本文中不做过多的说明。
标识符
标识符域是一个字节,用于比较请求与回复。如果在一个很短的时间片段里,一个请求
11
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
有相同的客户源IP地址、源UDP端口号和标识符,RADIUS服务器会认为这是上一个重复的请求。
长度
长度域是两个字节。它指明了包括编码、标识符、长度、鉴别码和属性域在内的数据包的长度。在数据包长度以外的字节位必须以填充数对待,在接收时忽略它。如果包的长度比指定的短,则此包会被直接丢弃。最小的长度是20,最大的长度是4096。
鉴别码
鉴别码域是十六个字节。最重要的字节是被第一个传输的。这个值是被用于验证来自
RADIUS服务器的回复,和密码隐藏算法。 请求鉴别码
在接入请求数据包中,鉴别码值是一个十六个字节的随机二进制数,被称为请求鉴别码。在机密的整个生存周期中(如RADIUAS服务器和客户端共享的机密),这个值应该是不可预测的,并且是唯一的,因为具有相同密码的重复请求值,使黑客有机会用已截取的响应回复用户。因为同一机密可以被用在不同地理区域中的服务器的验证中,所以请求认证域应该具有全球和临时唯一性。
接入是请求数据包中的请求鉴别码值应该也是不可预测的,以免黑客蒙骗服务器,对一个可预测的将来的请求进行响应,然后以此响应为基础,对未来的接入请求伪装成那台服务器。
虽然如像RADIUS这样的协议是没有能力防卫通过实时活动监听攻击和窃取认证过的对话内容,但是唯一的不可预测的请求的存在很大范围内预防了对认证系统的攻击。
NAS和RADIUS共享机密。请求认证执行的共享机密是用单向MD5哈氏算法产生一个十六位的摘要值,此值同用户输入的密码进行异或,异或值放置在接入请求数据包中的用户密码属性域中。在属性单元中可以了解到更为详细关于用户密码的信息。 响应鉴别码
接入请求、接入拒绝和接入盘问数据包中鉴别码值叫做响应鉴别码,它包含了在一串字节流上的计算出的单向MD5散列,这些二进制数是由RADIUS数据包组成,以编码域开始,包括标识符,长度,来自接入请求数据包的请求鉴别码,和执行共享机密的响应属性。即 ResponseAuth =MD5 (Code+ID+Length+RequestAuth+Attributes+Secret) 其中 “+”表示连接。
管理标记
机密(在客户端和RADIUS服务器端共享的密码)应该至少和一个精选的密码一样宽
12
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
大和不可预测。密码长度至少应该在十六字节以上。宽大密码范围能有效提供对穷举搜寻攻击的防卫。机密禁止为空(长度为零),因为这会简化数据包的伪造。
RADIUS服务器必须使用RADIUS用户UDP数据包中的源IP地址来决定应该使用那一个共享机密,因此RADIUS请求是可以被代理的。
在使用转发代理时,当代理转发一个请求时,代理必须根据要转发的方向来更改每个数据包,代理可以添加一个代理状态属性(Proxy-State Attribute),而当代理转发一个响应时,如果它已经添加了一个代理状态属性,则必须把这个属性去除掉。代理状态属性总是在其他代理状态属性之后添加或去除,除此之外不存在任何关于属性在属性列表中位置设定。因为接入允许和接入拒绝数据包是对完整数据包的内容进行认证,所以代理状态属性的拆除会使包上的签字无效,所以代理不得不对数据包重新签发。
更多关于RADIUS代理应用的信息是在这篇文档讨论的范围之外的。
4.数据包的类型
RADIUS数据包的类型是由数据包编码域中的第一个字节中的编码域决定的。
4.1 接入请求 描述
接入请求是被用来传送给RADIUS服务器的,传送的信息被用来决定一个用户是否被允许接入一个特定的NAS和是否提供用户要求的特定服务器。一个希望对一个用户进行认证的操作必须传送一个编码域值为1的数据包。
一旦收到来自有效客户端的请求,服务器端就必须回复一个适当的数据包。
接入请求应当包含用户名属性,必须包含或者是一个NAS的IP地址属性,或者是一个NAS标识符属性(或者是两者)。
接入请求必须包含或者是用户密码,或者是CHAP密码,或者是一个状态值。接入请求禁止同时包含用户密码和CHAP密码。如果将来的扩展要求传送其他种类的验证信息,可用这些扩展的属性替代接入请求中的用户密码或CHAP密码。
接入请求应该包含一个NAS端口号属性或者是NAS端口类型属性或者是两者同时包含,除非被要求的接入类型不涉及端口,或者是NAS不在它的端口中不区分。
接入请求可以包含附加属性作为服务器的提示信息,但服务器不一定采纳提示信息。 在一个用户密码出现时,使用一种基于RSA实验室的(Message Digest Algorithm MD5 [3]的方法对它进行隐藏。
以下是对接入请求数据包格式的总结。域的传输是从左向右。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 编码 | 标识符 | 长度 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 请求鉴别码 |
13
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 属性...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
1 用于接入请求。
标识符
无论什么时候属性域的内容发生变化,或者收到一个先前请求的有效回复,标识符域也必须随着变化。对中继来说,标识符域一定要保持不变。
请求鉴别码
请求鉴别码值必须在每次使用新标识符时随之改变。
属性值
属性域的长度是可变的,包含一个服务种类所必须的属性列表,和其他任何希望的可选属性。
4.2 接入允许 描述
接入允许数据包是由RADIUS服务器发送的,给开始交付服务的用户提供必需的详细的配置信息。如果一个收到的接入请求数据包中所有属性值都被接受,那么RADIUS操作必须发送一个编码域为2的数据包(接入允许)。
在收到一个接入允许数据包后,标识符域会被拿来与一个尚在审理中的接入请求数据包中的对应域进行比较。响应鉴别码域必须包含对审理中的接入请求的正确响应。不正确的数据包只会被直接丢弃。
以下是接入允许数据包格式的总结。域的传输是从左向右。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 编码 | 标识符 | 长度 |
14
RFC2865 NetWare/IP Domain Name and Information 远程拨入用户认证服务
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | 响应鉴别码 | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
2 用于接入允许。
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性值
属性域的长度是可变的,可以包含从零到任意多的属性。
4.3 接入拒绝 描述
如果接收到的任何属性值是不可接受的,那么RADIUS服务器发送一个编码域为3的数据包(接入拒绝)。它可能包含一条和多于一条返回消息属性,此消息是文本信息,NAS可以把这些信息显示给用户。
以下是接入拒绝数据包格式的总结。域是从左到右传输的。
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 编码 | 标识符 | 长度 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
15