RADIUS

简介

RADIUS的全称是Remote Authentication Dial in User Service,翻译过来是“远程用户拨号认证系统”。

常见Radius结构

常见Radius结构

RADIUS和AAA

RADIUS是由RFC2865RFC2866来定义的,是目前应用最广泛的AAA协议。

RADIUS是一种C/S结构的协议,他的客户端最初就是NAS(Net Access Server)服务器,现在任何运行RADIUS客户端的软件的计算机都可以成为RADIUS的客户端。

如果 NAS 收到用户连接请求,它会将它们传递到指定的 RADIUS 服务器,后者对用户进行验证,并将用户的配置信息返回给 NAS。然后,NAS 接受或拒绝连接请求。 RADIUS协议认证机制灵活,功能完整的 RADIUS 服务器可以支持很多不同的用户验证机制,除了 LDAP 以外,还包括:

  • PAPPassword Authentication Protocol,密码验证协议,与 PPP 一起使用,在此机制下,密码以明文形式被发送到客户机进行比较);
  • CHAPChallenge Handshake Authentication Protocol,挑战握手验证协议,比 PAP 更安全,它同时使用用户名和密码);
  • 本地 UNIX/Linux 系统密码数据库(/etc/passwd);
  • 其他本地数据库。

通过Radius和LDAP组合进行认证 通过 RADIUS 和 LDAP 进行验证

RADIUS 中,验证和授权是组合在一起的。如果发现了用户名,并且密码正确,那么 RADIUS 服务器将返回一个 Access-Accept 响应,其中包括一些参数(属性-值对),以保证对该用户的访问。这些参数是在 RADIUS 中配置的,包括访问类型、协议类型、用户指定该用户的 IP 地址以及一个访问控制列表(ACL)或要在 NAS 上应用的静态路由,另外还有其他一些值。

RADIUS 记帐特性(在 RFC 2866 中定义)允许在连接会话的开始和结束发送数据,表明在会话期间使用的可能用于安全或开单(billing)需要的大量资源 —— 例如时间、包和字节。

RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attrbiute-Length-Value的向量进行的。RADIUS也支持厂家专有属性。

IEEE提出了802.1x标准,这是基于端口的标准,用于对无线网络的接入认证,在认证时,也是采用了RADIUS协议。

基本工作原理

RADIUS sequence

认证过程

  1. 用户接入NASNASRADIUS服务器使用Access-Request数据包提交用户信息 ,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播
  2. RADIUS服务器对用户名和密码进行校验,必要时可以提出一个Challenge,要求进一步对用户认知,也可以对NAS进行类似认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;
  3. 如果允许访问,NASRADIUS服务器提出计费请求Account-RequestRADIUS服务器响应Account-Accept,对用户的积分开始,同事用户可以进行资金的相关操作。

代理和漫游

RADIUS还支持代理和漫游功能。

简单来说,代理就是一台服务器,可以作为其他Raduis服务器的代理,负责转发RADIUS认证和计费数据包。

所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来与其无关的RADIUS服务器进行认证,用户到非归属运营商所在地也可以得到抚慰,也可以实现虚拟运营。

通信协议

Raduis服务器和NAS服务器通过UDP协议进行通信,Raduis服务器的1812端口负责认证,1813端口负责计费工作。

采用UDP的基本考虑是因为NASRADIUS服务器大多数在同一个局域网中,使用UDP更加快捷方便。

Raduis协议还规定了重传机制。

如果NAS向某个RADIUS服务器发起请求没有收到返回信息,那么可以要求备份Raduis服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。

如果备份RADIUS服务器的密钥和以前的RADIUS服务器的密钥不同,则需要重新进行认证。

协议结构

-------------------------------------------------
  1byte | 1byte | 2bytes
-------------------------------------------------
  Code | Identifier | Length
-------------------------------------------------
  Authenticator (16 bytes)
------------------------------------------------
  Attributes ...
-------------------------------------------------
  • Code - 信息类型如下:

    • 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)
  • Identifier - 匹配请求和响应的标识符。

  • Length - 信息大小,包括头部
  • Authenticator - 该字段用来识别RADIUS服务器和隐藏口令算法中的答复。

基本消息交互流程

RADIUS服务器对用户的认证过程通常需要利用NAS等设备的代理认证工,RADIUS客户端和RADIUS服务器之间通过共享密钥认证相互的消息,用户密码采用密文方式在网络中传输,增强安全性。

RADIUS协议合并了认证和授权的过程,即响应报文中携带了授权信息。

基本交互步骤如下:

  1. 用户输入用户名和口令
  2. RADIUS客户端根据获取的用户名和口令,向RADIUS服务器发送认证请求包(access-request).
  3. RADIUS服务器将该用户信息与users数据库信息进行对比分析,如果认证成功,则将用户权限信息以认证响应包(access-accept)发送给RADIUS客户端,如果认证失败,则返回access-reject响应包。
  4. RADIUS客户端根据接受到的认证结果接入/拒绝用户。如查询可以接入用户,则RADIUS客户端向RADIUS服务器发送计费开始请求包(accounting-request),status-type取值为start
  5. RADIUS服务器返回计费开始响应包(accouting-reponse)
  6. RADIUS客户端向RADIUS服务器发送计费停止请求包(accounting-request),status-type取值为stop
  7. RADIUS服务器返回计费结束响应包(accouting-response)

扩展阅读

results matching ""

    No results matching ""