RADIUS报文
RADIUS报文
RADIUS报文简介
RADIUS报文是由包头和0个或多个属性(Attribute)组成,属性由Type-Length-Value这样的三元组构成。RADIUS报文结构如图2-2所示:
图2-2 RADIUS报文结构
各字段含义如下:
(1)Code:长度为1个字节,表示RADIUS报文类型。不同RADIUS报文的Code值不同。
(2)Identifier:长度为1个字节,表示RADIUS报文标识。用来匹配请求报文和回应报文,以及检测在一段时间内重发的请求报文。同一组请求报文和回应报文的Identifier值应该相同。如果在短时间内,RADIUS服务器收到相同源IP地址、源端口和Identifier值的请求报文,则RADIUS服务器会认为是重复的请求报文。
(3)Length:长度为2个字节,表示RADIUS报文长度,包含了报文中所有字段(Code、Identifier、Length、Authenticator和Attributes)的总长度。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length取值,则该报文会被丢弃。
(4)Authenticator:长度为16字节,表示RADIUS报文验证字。用于验证RADIUS客户端和RADIUS服务器之间消息的有效性,以及用户密码的加密。
(5)Attribute:长度不定,表示RADIUS报文的属性。用于携带详细的认证、授权和计费信息和配置细节。每个属性都采用TLV(Type-Length-Value)的三元组结构。
Type:长度为1个字节,表示该属性的类型,取值为1~255。
Length:长度为1个字节,表示该属性所有字段(Type、Length和Value)的长度。
Value:长度不定,最大为253个字节,表示该属性的信息,其格式和内容由类型和长度决定。
RADIUS报文类型
目前RADIUS定义了16种报文类型,认证报文类型如表2-1所示,计费报文类型如表2-2所示,授权报文类型如表2-3所示。
表2-1 认证报文类型
报文类型 | 说明 |
---|---|
Access-Request | 认证请求报文,是RADIUS报文交互过程中的第一个报文,用来携带用户的认证信息(例如:用户名、密码等)。认证请求报文由RADIUS客户端发送给RADIUS服务器,RADIUS服务器根据该报文中携带的用户信息判断是否允许接入。 |
Access-Accept | 认证接受报文,是服务器对客户端发送的Access-Request报文的接受响应报文。如果Access-Request报文中的所有属性都可以接受(即认证通过),则发送该类型报文。客户端收到此报文后,用户才能认证通过并被赋予相应的权限。 |
Access-Reject | 认证拒绝报文,是服务器对客户端的Access-Request报文的拒绝响应报文。如果Access-Request报文中的任何一个属性不可接受(即认证失败),则RADIUS服务器返回Access-Reject报文,用户认证失败。 |
Access-Challenge | 认证挑战报文。EAP认证时,RADIUS服务器接收到Access-Request报文中携带的用户名信息后,会随机生成一个MD5挑战字,同时将此挑战字通过Access-Challenge报文发送给客户端。客户端使用该挑战字对用户密码进行加密处理后,将新的用户密码信息通过Access-Request报文发送给RADIUS服务器。RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则该用户为合法用户。 |
报文类型 | 说明 |
---|---|
Accounting-Request(Start) | 计费开始请求报文。如果客户端使用RADIUS模式进行计费,客户端会在用户开始访问网络资源时,向服务器发送计费开始请求报文。 |
Accounting-Response(Start) | 计费开始响应报文。服务器接收并成功记录计费开始请求报文后,需要回应一个计费开始响应报文。 |
Accounting-Request(Interim-update) | 实时计费请求报文。为避免计费服务器无法收到计费停止请求报文而继续对该用户计费,可以在客户端上配置实时计费功能。客户端定时向服务器发送实时计费报文,减少计费误差。 |
Accounting-Response(Interim-update) | 实时计费响应报文。服务器接收并成功记录实时计费请求报文后,需要回应一个实时计费响应报文。 |
Accounting-Request(Stop) | 计费结束请求报文。当用户断开连接时(连接也可以由接入服务器断开),客户端向服务器发送计费结束请求报文,其中包括用户上网所使用的网络资源的统计信息(上网时长、进/出的字节数等),请求服务器停止计费。 |
Accounting-Response(Stop) | 计费结束响应报文。服务器接收计费停止请求报文后,需要回应一个计费停止响应报文。 |
表2-3 授权报文类型
报文类型 | 说明 |
---|---|
CoA-Request | 动态授权请求报文。当管理员需要更改某个在线用户的权限时(例如,管理员不希望用户访问某个网站),可以通过服务器发送一个动态授权请求报文给客户端,使客户端修改在线用户的权限。 |
CoA-ACK | 动态授权请求接受报文。如果客户端成功更改了用户的权限,则客户端回应动态授权请求接受报文给服务器。 |
CoA-NAK | 动态授权请求拒绝报文。如果客户端未成功更改用户的权限,则客户端回应动态授权请求拒绝报文给服务器。 |
DM-Request | 用户离线请求报文。当管理员需要让某个在线的用户下线时,可以通过服务器发送一个用户离线请求报文给客户端,使客户端终结用户的连接。 |
DM-ACK | 用户离线请求接受报文。如果客户端已经切断了用户的连接,则客户端回应用户离线请求接受报文给服务器。 |
DM-NAK | 用户离线请求拒绝报文。如果客户端无法切断用户的连接,则客户端回应用户离线请求拒绝报文给服务器。 |
RADIUS报文示例
下面我们一起来解析一个Access-Request报文,以便更好的理解RADIUS报文各字段的含义。
如图2-3所示为一个Access-Request报文示例,当前报文数据以十六进制显示。
图2-3 RADIUS报文示例
包头部分(包括Code、Identifier、Length和Authenticator字段):
Code=01,表示该RADIUS报文为Access-Request(认证请求报文)。
Identifier=34,表示该请求报文的标识,对应的回应报文的标识应该和请求报文一致。
Length=00 89,表示该报文的长度为137字节。
Authenticator报文验证字,即为Length字段后的16个字节。
属性部分(包括Type、Length和Value字段):
第一个属性表示User-name(用户名)为MSI-000009291626104。
Type=01,表示该属性为User-name。
Length=16,表示该属性长度为22字节。
Value=MSI-000009291626104,即为Length字段后的20个字节。
依此类推,第二个属性表示加密后的User-Password(用户密码)。该报文总共携带了8组属性。
RADIUS属性
属性是RADIUS报文的主体,用于携带详细的认证、授权、计费信息和配置细节。
RADIUS属性可以划分为RADIUS标准属性和华为RADIUS扩展属性两类。不同的RADIUS报文对于RADIUS属性的支持情况不相同。具体请参考产品文档。
防火墙对RADIUS属性的支持情况推荐使用AAA属性查询工具查询。
备注:以前华为官方是有提供“AAA属性查询工具”查询。
NAC网络准入控制、radius、802.1X(列表、list、全)radiuslist
http://www.zh-cjh.com/wenzhangguilei/1008.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » RADIUS报文
作者: cjh
手机扫一扫,手机上查看此文章: |
一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm