RADIUS安全问题:
RADIUS不提供基于重放攻击的保护。旧数据包可以被恶意的重放。如果服务器对用户的并发会话数量作了限制这将导致拒绝服务;重复的计费消息也将带来灾难。RADIUS协议只提供基于逐跳的安全,没有端到端的安全机制。这给中间的代理服务器提供了可乘之机:收集有关机密性的信息或更改消息(如更改计费消息)。这些都是RADIUS安全方面的重大的缺陷。
RADIUS的认证方案是基于共享密钥的,直接通信的双方必须有一个共享密钥。RADIUS所使用的共享密钥方案引出了许多问题。当密钥被储存在RADIUS服务器中时,必须防止窃取它们的攻击。当密钥分配时也需要防止向未授权方泄露密钥。困难就在于有数量庞大的密钥需要保护,因为在每一个代理链上每一跳都必须有自己的密钥。这给密钥的管理带来很大的负担。(摘自DIAMETER协议和RADIUS协议的比较)
RADIUS协议存在的安全问题分析:
在加密方面,RADIUS协议对用户密码进行加密,但是其他的报文内容都没有进行加密,不能很好地满足机密性的要求。对用户密码是采用流密码保护,如果服务器端对同一用户的认证失败次数没有限制,那么攻击者很可能通过穷举搜索来获得正确的用户口令。RADIUS协议通过认证码进行安全检查,但是其接入请求包中的请求认证码只是一个随机数,所以RADIUS服务器并不能对接入请求包的报文进行鉴别。虽然要求接入请求包的请求鉴别码在一段时间内不能重复,但是RADIUS服务器并没有对它的重复使用进行检查。例如采用了较差的伪随机数发生器,就很容易产生重复的值,协议的安全级别很难得到有效的保证。
在传输方面,RADIUS采用的UDP传输协议,可以保证对用户鉴别在很短的时间内完成,但是由于UDP没有出错重发机制,鉴别的可靠性就在一定程度上受到影响。同时,RADIUS协议也没有采用任何措施对重播(replay)的避免提供支持。RADIUS协议支持代理功能,允许RADIUS服务器把一个请求转发给另一个RADIUS服务器。但每一个代理RADIUS服务器都有权对用户的认证计费信息进行修改,端到端的安全无法得到有效保障。
还可能存在的问题:用户密码及共享密钥过短、多个RADIUS客户端和服务器端使用同一个共享密钥、一个用户可以以多种方式登录。
Radius协议需要改进的地方:基于UDP的传送、简单的丢包机制、没有关于重传的规定和集中式记账服务,这些问题使得它不太适应当前网络的发展,需要进一步改进。(摘自RADIUS服务器安全性分析及其改进)
2 RADIUS存在的安全漏洞
2.1基于User-Password的口令攻击
User-Password属性是使用流密码保护的,这可能导致用户口令被攻破。攻击者首先用一个合法的用户名和已知的(可能不正确)用户口令让客户端认证,然后捕获产生的Access-Request包,并将User-Password属性和口令进行异或运算而推算出MD5(Shared Secret + Request Authenticator)的值。攻击者就可以用原包中的Request Authenticator和MD5(Shared Secret + Request Authenticator)的值,而仅变换User-Password 属性去生成新的Access-Request来进行重放攻击,如果服务器对同一用户的认证失败次数没有限制,攻击者就能通过穷举搜索来获得正确的用户口令。
2.2基于Request Authenticator的攻击
Request Authenticator必须是唯一的且不可预知的,这样才能保证RA DIUS实现的安全性,如果客户端使用了较差的PRNG(伪随机数发生器)来生成Request Authenticator,即容易产生重复值,协议就很难提供预计的保护级别。攻击者可以建立一个Request Authenticator、Identifier和相关服务器响应的攻击字典,在实施攻击时检查请求包的Request Authenticator(和相关的Identifier)是否在字典中,如果字典中有匹配的值,攻击者就可以装扮成服务器而重放所窃取的服务器以前发的响应。
当攻击者要试图通过认证时,就可以引发客户端生成一个与先前成功通过认证的请求包中Request Authenticator和Identifier相同的Access-Request,攻击者可以伪装成服务器重放曾捕获到的Access-Accept包给客户端,从而通过认证,而不需要有效的口令。(摘自RADIUS协议安全分析)
3 RADIUS协议安全隐患:
(1)协议自身的缺陷
1)对报文的机密性没有提供支持,RADIUS的所有报文没有经过加密。
2)Access-Request报文的Request Authenticator只是一个随机数,而不能算作鉴别码。因此,RADIUS Server并不能对Access-Request报文进行鉴别。
3)没有对重播(replay)的避免提供支持。
4)协议虽然要求Access-Reques报文的请求鉴别码字段是随机的和不可预测的,并且在一段时间内不能重复。但RADIUS Server并不对它的重复使用进行检查。
(2)糟糕的实现
1)用户密码少于l6位。
2)限制共享密钥只能为ASCII码字符串,并且长度少于l6位。
3)在多个RADIUS Client Server对之间共用一个密钥。
4)128位的请求鉴别码在短期内出现重复。
5)允许一个用户以多种方式进行认证。(摘自RADIUS协议安全性分析)