Radius协议_RADIUS协议的消息类型为

Radius协议_RADIUS协议的消息类型为Radius协议是什么: Radius是Remote Authentication Dial In User Service的简称,即远程验证拨入用户服务。当用户想要通过某个网络(如电话网)与网络接入服务器NAS(Network Access Server)建立连接从而获得访问其它网络的权力时,NA

Radius协议是什么:
   Radius是Remote Authentication Dial In User Service的简称,即远程验证拨入用户服务。当用户想要通过某个网络(如电话网)与网络接入服务器NAS(Network Access Server)建立连接从而获得访问其它网络的权力时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给Radius服务器,由Radius进行认证计费。Radius协议规定了NAS与Radius服务器之间如何传递用户信息和记账信息,Radius服务器负责接收用户的连接请求,完成验证,并把传递服务给用户所需的配置信息返回给NAS。例如:用户要求得到某些服务(如SLIP, PPP, telnet),必须通过NAS,由NAS依据某种顺序与所连服务器通信从而进行验证。用户通过拨号进入NAS,然后NAS按配置好的验证方式(如PPP PAP, CHAP等)要求输入用户名,密码等信息,用户按提示输入。通过与NAS的连接,NAS得到这些信息。而后,NAS把这些信息传递给Radius服务器,并根据服务器的响应来决定用户是否可以获得他所要求的服务。

什么是AAA协议
Radius是AAA协议的一个实现,那么什么是AAA协议?

AAA是鉴别,授权和记账(Authentication, Authorization, Accounting)的简称,它是运行于NAS上的客户端程序,提供了一个用来对鉴别,授权和记账这三种安全功能进行配置的一致的框架。一个网络允许外部用户通过公用网对其进行访问,从而用户在地理上可以极为分散。大量分散用户通过Modem等设备从不同的地方可以对这个网络进行随机访问。用户可以把自己的信息传递给这个网络,也可以从这个网络得到自己想要的信息。由于存在内外的双向数据流动,网络安全就成为很重要的问题了。大量的modem形成了Modem pools。对modem pool的管理就成为网络接入服务器或路由器的任务。管理的内容有:哪些用户可以获得访问权,获得访问权的用户可以允许使用哪些服务,如何对使用网络资源的用户进行记费。AAA很好地完成了这三项任务。AAA的配置实际上是对网络安全的一种管理,这里的网络安全主要指访问控制,包括哪些用户可以访问网络服务器,具有访问权的用户可以得到哪些服务,如何对正在使用网络资源的用户进行记账。下面简单介绍一下鉴别,授权,记账的作用。

   鉴别(Authentication):鉴别用户是否可以获得访问权,可以选择使用RADIUS协议。

   授权(Authorization) :授权用户可以使用哪些服务。

   记账(Accounting) :记录用户使用网络资源的情况。

Radius作用
Radius服务器能用来管理使用串口和调制解调器的大量分散用户。当用户想要通过某个网络(如电话网)与NAS建立连接从而获得访问其他网络的权利(或取得使用某些网络资源的权利)时,NAS起到了过问用户(或这个连接)的作用。NAS负责把用户的鉴别,授权,记账信息传递给Radius服务器。Radius协议规定了NAS与Radius服务器之间如何传递用户信息和记账信息,即两者之间的通信规则。Radius服务器负责接收用户的连接请求,完成鉴别,并把传递服务给用户所需的配置信息返回给NAS。用户获得授权后,在其正常上线、在线和下线过程中,Radius服务器完成对用户账号计费的功能。

RADIUS协议的认证端口号为1812(1645端口由于冲突已经不再使用),计费端口号为1813或(1646端口由于冲突已经不再使用)。RADIUS通过建立一个唯一的用户数据库,存储用户名,用户的密码来进行鉴别、存储传递给用户的服务类型以及相应的配置信息来完成授权。RADIUS协议具有很好的扩展性。RADIUS包是由包头和一定数目的属性(Attribute)构成的。新属性的增加不会影响到现有协议的实现。通常的NAS厂家在生产NAS时,还同时开发与之配套的Radius服务器。为了提供一些功能,常常要定义一些非标准的(RFC上没有定义过的)属性。

  

Radius的主要特点:
1.客户端/服务器模型

网络访问服务器(NAS)作为RADIUS的客户端运行。该客户负责将用户信息传递给指定RADIUS服务器,然后对返回的响应进行操作。RADIUS服务器负责接收用户连接请求,认证用户,然后返回所有客户端交付所需的配置信息服务给用户。

RADIUS服务器可以作为其他RADIUS服务器的代理客户端或其他种类的认证服务器。

2.网络安全

客户端和RADIUS服务器之间的事务是通过使用共享密钥进行身份验证。另外,发送任何用户密码在客户端和RADIUS服务器之间加密,消除有人窥探不安全网络确定用户密码的可能性。

3.灵活的认证机制

RADIUS服务器可以支持多种认证方式认证一个用户。它可以支持PAP或CHAP,UNIX登录等认证机制。

4.可扩展协议

所有交易均由可变长度Attribute-长度值3元组。可以添加新属性值从而影响协议的现有实现。

Radius操作流程:

发送流程:
  当客户端配置为使用RADIUS时,客户端的任何用户向客户端提供认证信息。例如用户希望输入他们的用户名和密码。或者,用户可以使用a链路成帧协议,如点对点协议(PPP),其具有承载该信息的认证分组。一旦客户端获得了这样的信息,它可以选择使用RADIUS进行身份验证。为此,客户端创建一个“Access-Request”包含用户名称,密码等一系列的属性,客户端的ID和用户所在的端口ID访问。当存在密码时,则需要对密码进行加密,采用的是基于RSA消息摘要算法MD5来加密的。Access-Request通过网络提交给RADIUS服务器。如果在一段时间内没有返回响应,请求会进行多次重发。客户端也可以转发请求在主服务器的无响应的情况下,将请求转发到备用服务器备用处理请求

接收流程:
一旦Radius服务器收到请求,它会验证发送客户。如果该请求包没有公共密钥是会被默认丢弃的。如果客户是有效,RADIUS服务器咨询用户的数据库查找名称与请求相匹配的用户。数据库中的用户条目包含必须满足的要求列表以允许访问用户。这总是包括验证密码,还可以指定用户允许的客户端或端口访问,通过校验返回一个Access-Accept反之发送Access-Reject。

 

认证方式:
远端(Radius)验证——PAP方式:
采用 PAP 验证过程如下:

1.用户以明文的形式把用户名和他的密码传递给 NAS。

2.NAS把用户名和加密过的密码放到认证请求包的相应属性中传递给 RADIUS 服务器。

3.根据RADIUS服务器的返回结果来决定是不允许用户上网。

PS:此处的加密是采用密码明文与共享秘钥异或作为加密方式。用户端得到了加密信息根据相同的共享秘钥异或取得密码明文

远端(Radius)验证——CHAP方式:
CHAP 验证过程如下:

1、 当用户请求上网时,NAS 产生一个 16 字节的随机码给用户(同时还有一个 ID 号, 本地路由器的 host name)。

2、 用户端得到这个包后使用自己独有的设备或软件对传来的各域进行加密,生成一个 response 传给 NAS。

3、 NAS 把传来的 CHAP ID 和 response 分别作为用户我和密码,并把原来的 16 字节随 机码(challenge)传给 RADIUS 服务器。

4、 RADIUS 根据用户名在服务器端查找数据库,得到和用户端进行加密所有的一样的 密码,然后根据传来的 16 的字节的随机码进行加密,将其结果与传来的 password 作比较,如果相同表明验证通过,如果不相同表明验证失败。另外,如果验证成功, RADIUS 服务器同样也要以生成一个 16 字节的随机码对用户进行询问(challenge,暂 不支持)

 

Radius数据包结构:
Radius协议_RADIUS协议的消息类型为

 

 

 

1.Code
  代指数据包的编号,标识了该数据包是什么类型的,如果是未知类型的数据包就会被默认丢弃,目前大致有一下几种编号:

编号 类型 描述

—————————————————————————————————

1 Access-Request —访问请求包

2 Access-Accept —访问接受包

3 Access-Reject —访问拒绝包

4 Accounting-Request —计费请求包

5 Accounting-Response —计费反馈包

11 Access-Challenge —转发(二次验证)包

255 Reserved —保留,在生成一个新的数据包时使用

2.Identifier
  指的是一个八位的字节编码,有助于匹配请求,例如能标识出短时间内同一个IP端口发出的重复请求,防止重放攻击,将重复的数据包直接丢弃,不做任何处理。

3.Length
  该字段为长度字段是两个八位字节。它表示的数据包的长度包括代码,标识符,长度,认证器和属性字段。最小长度为20和最大长度是4096。超过长度字段范围外的字节在接收时会被忽略而如果数据包比长度字段表示短则会被认为是数据丢失而被默认丢弃。

4.Authenticator
a)请求认证器

在Access-Request数据包中,Authenticator值为16八位字节随机数,称为请求认证器。这个值应该要是一个唯一的不可预测的特殊并且值客户端和RADIUS服务器之间共享的防被他人攻击获取。这个值通过客户端和服务器共享一个共享秘钥以及其他信息进行MD5加密(具体的加密操作是否类似响应认证器以及是否能换成Sha-256没有测试过)。

b)响应认证器

    在Access-Accept,Access-Reject和Access-Challenge数据包中的Authenticator被称为响应认证器。

ResponseAuth =MD5(Code+ID+Length+RequestAuth+Attributes+Secret)。

其中“+”为连接符号,Secret为共享密钥。

5.Attributes

   存储用户的信息,如用户名,IP地址等。

6.共享密钥(Secret):共享密钥在密码加密以及数据包的鉴别码部分都参与了运算,即使RADIUS数据包被截获,但不知道共享密钥,很难激活成功教程用户的密码伪造数据。共享密钥应采用合适的长度,不应过短,宽大密码范围能有效提供对穷举搜寻攻击的防卫,随着密钥长度的增加,其激活成功教程花费的时间将大大增加。

 

Radius属性字段:
RADIUS属性携带特定的认证,授权,请求和回复的信息和配置详细信息。。

Radius协议_RADIUS协议的消息类型为

 

 

Type:
类型字段是一个八位字节。是用于区分数据包中的数据类型,例如常用的User-Name字段就是表面这个属性所附带的信息就是用户名字段,在默认的数据字典中,Radius服务器定义了大约有60种左右的数据类型,如果你想要使用默认的数据类型的话,你需要对新增的数据类型进行定义,否则RADIUS服务器/客户端会忽略具有未知类型的属性。目前我所接触到的常用类型共有以下种类:

1、User-Name

该字段表示用户名,它必须在Access-Request数据包中发送

2、User-Password

该字段表示用户密码,该属性指示用户的密码进行身份验证,或者用户在访问访问后的输入。只用在访问请求包中。

3、NAS-IP-Address

该字段表示请求访问的地址

4、NAS-Port

该字段表示请求访问的端口号

5、Service-Type

该字段用于确定请求包所请求的是什么服务,通常服务有一下几种:

1 Login

2 Framed

3 Callback Login

4 Callback Framed

5 Outbound

6 Administrative

7 NAS Prompt

8 Authenticate Only

9 Callback NAS Prompt

10 Call Check

11 Callback Administrative

关于加密:

RADIUS 协议的加密是使用 MD5 加密算法进行的,在 RADIUS 的客户端(NAS)和服务器端 (Radius Server)保存了一个密钥(key),RADIUS 协议利用这个密钥使用 MD5 算法对 RADIUS 中的数据进行加密处理。密钥不会在网络上传送(两端使用一个都知晓的密钥,从而不需要 再从网络上传输告之)。RADIUS 的加密主要体现在两方面:

包加密:
在 RADIUS 包中,有 16 字节的验证字(authenticator)用于对包进行签名,收到 RADIUS 包的一方要查看该签名的正确性。如果包的签名不正确,那么该包将被丢弃,对包进行签名 时使用的也是 MD5 算法(利用密钥),没有密钥的人是不能构造出该签名的。

口令加密:
在认证用户时,用户的口令不会在网上明文传送,而是使用了 MD5 算法对口令进行加密。 没有密钥的人是无法正确加密口令的,也无法正确地对加密过的口令进行解密。

包的签名与加密:
包的签名指的是 RADIUS 包中 16 字节的 Authenticator,我们称其为“验证字”。

·认证请求包:RequestAuth=Authenticator,认证请求包的验证字是一个不可预测的 16 字节随机数。这个随机数将用于口令的加密。

·认证响应包:ResponseAuth = MD5(Code+ID+Length+Authenticator+Attributes+Key)

·计费请求包:RequestAcct= MD5(Code+ID+Length+16ZeroOctets+Attributes+Key)

·计费响应包:ResponseAcct = MD5(Code+ID+Length+RequestAcct+Attributes+Key) 口令的加密:

称共享密钥(key)为 Key;16 字节的认证请求验证字(Authenticator)为 Auth;将口令 (Password)分割成 16 字节一段(最后一段不足 16 字节时用 0 补齐),为p1、p2 等;加密后 的口令块为 c(1)、c(2)等。下面运算中 b1、b2 为中间值:

 

那么加密后的口令为 c(1)+c(2)+…+c(i)。

上面是协议规定的算法,也有的 RADIUS 服务器为了实现起来简单,修改了上述的 算法,具体的讲,b1 的算法同上,但 bi=b2=b1(i>=1),其他运算不变。当用户的口令长度不 超过 16 字节时,两种算法的结果是一样的

 

   以上内容参考:RFC:https://tools.ietf.org/html/rfc2865;

TinyRadius使用手册:http://download.csdn.net/detail/songtzu/8388809 ;
————————————————
版权声明:本文为CSDN博主「RYCookie」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a6877321/article/details/72825544

今天的文章Radius协议_RADIUS协议的消息类型为分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48219.html

(0)
编程小号编程小号
上一篇 2023-09-04
下一篇 2023-09-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注