Radius认证协议(二)

报文格式

RADIUS数据包封装在UDP数据字段中, UDP的Destination Port字段为1812(十进制)。应答时,源端口和目标端口会互换。

RADIUS早期使用UDP端口1645,但与“sa-msg-port”服务冲突。RADIUS的官方端口号是1812。

RADIUS报文格式如下。字段从左到右传输。

1.Code

一个字节,标识RADIUS数据包的类型。接收到Code字段无效的数据包时,静默丢弃。

Radius Code(十进制)分配如下:

Code

报文类型

1

Access-Request

2

Access-Accept

3

Access-Reject

4

Accounting-Request

5

Accounting-Response

11

Access-Challenge

12

Status-Server (试验)

13

Status-Client (试验)

255

保留

 

2.Identifier

一个字节,有助于匹配请求和应答。在短时间内,如果RADIUS服务器收到具有相同源IP地址,源UDP端口和Identifier,则认为是重复请求。

3.Length

两个字节,表示报文长度,包括Code, Identifier, Length, Authenticator和Attribute字段。Length范围之外的字节必须被视为填充,并在接收时忽略。如果数据包短于Length字段指示的长度,则必须静默丢弃。Length最小为20,最大为4096。

4.Authenticator

16字节。先传输最重要的八位字节,用于验证RADIUS服务器的回复以及密码隐藏算法。

4.1 请求 Authenticator

在Access-Request数据包中,Authenticator是一个16字节的随机数,称为Request Authenticator。该值在密钥(客户机和RADIUS服务器的共享密钥)的生命周期内应该是不可预测和唯一的,因为如果请求与密钥的重复,则攻击者可以使用先前截获的响应进行回复。由于相同的密钥可用于对不同地理区域中的服务器的身份验证,因此Request Authenticator字段应该是全局和时间唯一性。

Access-Request数据包中的Request Authenticator值应该是不可预测的,以免攻击者诱使服务器响应可以预期的请求,然后使用该响应伪装成该服务器来响应预期的Access-Request。

尽管诸如RADIUS之类的协议无法通过实时搭线窃听攻击来防止身份验证会话被盗,但是生成唯一的不可预测的请求可以防止针对身份验证的大范围攻击。

NAS和RADIUS服务器共享一个密钥。共享密钥与紧随其后的Request Authenticator进行MD5计算,创建一个16字节的值,该值与用户输入的密码进行异或运算,异或运算的结果放在Access-Request的User-Password属性中。

4.2响应 Authenticator

Response Authenticator是Access-Accept,Access-Reject和Access-Challenge数据包中的Authenticator字段,其计算方式如下:

ResponseAuth =MD5(Code+ID+Length+RequestAuth+Attributes+共享密钥)

4.3管理提示

客户端和RADIUS服务器之间的共享密钥尽可能长而且不可预测,最好不少于16字节。这是为了防止穷举攻击。密钥不能为空(长度为0),以防止数据包伪造。

RADIUS服务器必须使用RADIUS UDP数据包的源IP地址来决定要使用哪个共享密钥,以便可以代理RADIUS请求。

用作转发代理时,必须可以在数据包的每个方向上更改数据包:

  • 转发请求时,可以添加Proxy-State属性。
  • 转发响应时,如果添加了Proxy-State属性,则必须删除其Proxy-State属性。

总是在其他Proxy-State之后添加或删除Proxy-State。 由于Access-Accept和Access-Reject是在整个数据包内容上进行身份验证的,因此添加或剥除Proxy-State属性会使数据包中的签名无效必须重新对其进行签名。

报文类型

RADIUS报文类型由数据包第一个字节的Code字段确定。

1.Access-Request

Access-Request被发送到RADIUS服务器,并携带用于确定是否允许用户访问特定的NAS以及用户请求的特定服务的信息。希望验证用户身份的应用必须发送Code字段为1(Access-Request)的RADIUS数据包。

收到有效客户端发送的Access-Request后,必须发送适当的答复。

一个Access-Request应该包含一个User-Name属性,必须包含NAS-IP-Address属性或NAS-Identifier属性(或两者都包含)。

Access-Request必须包含User-Password或CHAP-Password或State。Access-Request不得同时包含User-Password和CHAP-Password。 如果将来的扩展允许传输其他种类的身份验证信息,则可以在Access-Request中使用该属性代替User-Password或CHAP-Password。

除非请求的访问类型不涉及端口,或NAS不区分端口,否则Access-Request应该包含NAS-Port或NAS-Port-Type属性(或两者都包含)。

Access-Request可以包含其他属性作为对服务器的提示,但服务器不一定接受该提示。

当用户密码存在时,使用RSA Message Digest Algorithm MD5的方法进行加密。

Access-Request报文格式如下, 字段从左到右传输。

Code:1;

Identifier:每当对Attributes字段的内容进行了更改和收到上一个请求的有效回复时,都必须修改Identifier字段。重传,则Identifier必须保持不变。

Request Authenticator:每次使用新的Identifier时,都必须更改Request Authenticator。

Attributes:长度是可变的,包含服务类型所需的属性。

2.Access-Accept

Access-Accept由RADIUS服务器发送,携带开始向用户提供服务所需的特定配置信息。 如果Access-Request中的所有属性值都是可接受的,则RADIUS服务器必须发送一个将Code字段为2(Access-Accept)的数据包。

接收到Access-Accept时,Identifier字段必须与某一待处理的Access-Request匹配。Response Authenticator字段必须是对某一待处理的Access-Accept的正确响应。无效的数据包被静默丢弃。

Access-Accept报文格式如下, 字段从左到右传输。

Code:2;

Identifier:与Access-Accept相对应的Access-Request的Identifier字段一样。

Response Authenticator:如前所述,Response Authenticator的计算来自Access- Request值。

Attributes:长度可变,包含0或多个属性。

4.Access-Reject

如果RADIUS服务器不接受接收到的任一属性值,那么必须发送一个Code字段为3(Access-Reject)的数据包,包括一个或多个NAS可以向用户显示的Reply-Message属性(文本消息)。

Access- Reject报文格式如下, 字段从左到右传输。

Code:3;

Identifier:与Access-Reject相对应的Access-Request的Identifier字段一样。

Response Authenticator:如前所述的Response Authenticator的计算来自Access-Request值。

Attributes:长度可变,包含0或多个属性。

4.Access-Challenge

如果RADIUS服务器希望向用户发送要求响应的质询,则RADIUS服务器必须通过发送Code字段为11(Access-Challenge)的数据包来响应访问请求。

Attributes字段可以有一个或多个Reply-Message属性,一个State属性(可以没有)。也可以有Vendor-Specific、Idle-Timeout、Session-Timeout和Proxy-State。Access-Challenge中不允许包含的其他的属性。

接收到Access-Challenge时,Identifier字段必须与某一待处理的Access-Accept匹配。Response Authenticator字段必须是对某一待处理的Access-Challenge的正确响应。无效的数据包被静默丢弃。

如果NAS不支持质询/响应,则必须将Access-Challenge视为收到Access-Reject。

如果NAS支持质询/响应,则收到有效的Access-Challenge表示应该发送新的Access-Request。NAS可以向用户显示文本消息(如果有的话),然后提示用户进行响应。然后,NAS用一个新的请求ID和Request Authenticator,用用户的响应(加密)替换User-Password属性,并包括来自Access-Challenge的State属性(如果有的话),发送原来的Access-Request。一个Access-Request中只能存在0或1个State属性。

支持PAP的NAS将Reply-Message转发给拨号客户端,并接受PAP应答,该应答可以像用户输入了应答一样使用。如果NAS不能这样做,则必须将Access-Challenge视为收到Access-Reject。

Access-Accept报文格式如下, 字段从左到右传输。

Code:11;

Identifier:与Access-Reject相对应的Access-Request的Identifier字段一样。

Response Authenticator:如前所述,Response Authenticator的计算来自Access- Request值。

Attributes:长度可变,包含0或多个属性。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Radius认证服务器是一种用于用户认证和授权的网络协议。搭建Radius认证服务器可以提供更高的网络安全性和用户管理便利性。 首先,搭建Radius认证服务器需要选择合适的服务器操作系统,如Linux或Windows Server。然后,在服务器上安装并配置Radius服务器软件,如FreeRADIUS或Microsoft Network Policy Server。 在配置Radius服务器时,需要设置服务器的IP地址、端口号、认证方式和密钥等基本参数。比如,可以选择使用PEAP或EAP-TTLS等加密认证协议,以保证用户的身份安全。 接下来,需要创建Radius服务器上的用户数据库。可以使用本地数据库或连接外部数据库,如MySQL或Active Directory。在数据库中,可以添加和管理用户的账号和密码,并给予不同的权限和认证方式。 在Radius服务器上,还需要配置客户端设备的接入控制策略。可以根据需要,设置不同的认证方式、访问限制和审计日志等。 最后,测试和验证Radius服务器的运行状态。可以使用Radius客户端工具,如NTRadPing或RadTest,进行用户认证和授权测试。确保Radius服务器能够正常对接入的设备和用户进行认证和授权。 总之,搭建Radius认证服务器可以为网络提供更高的安全性和用户管理便利性。正确配置和管理Radius服务器,可以有效地保护网络资源和用户信息的安全。 ### 回答2: Radius(Remote Authentication Dial In User Service)是一种广泛应用于网络认证与授权的协议。搭建Radius认证服务器可以提供强大的身份验证和访问控制功能。以下是Radius认证服务器搭建的简要步骤: 1.选择合适的操作系统:可以选择类Unix操作系统,如Linux或FreeBSD。 2.安装Radius服务器软件:根据所选的操作系统,安装合适的Radius服务器软件,如FreeRADIUS或OpenRADIUS。 3.配置Radius服务器:打开服务器配置文件,通常是radiusd.conf或radius.conf,根据需要进行一些基本配置,如指定监听IP地址、端口号和共享密码等。 4.配置用户数据库:一般会使用数据库管理用户信息,如MySQL或PostgreSQL。在Radius服务器配置文件中,指定数据库服务器的地址、用户名、密码和数据库名称。 5.创建用户账号:在数据库中创建用户账号,包括用户名、密码和所属的组或角色等信息。 6.配置客户端设备:在Radius服务器配置文件中,定义客户端设备的IP地址和共享密码。 7.启动Radius服务器:在命令行界面输入启动命令,启动Radius服务器。 8.测试认证功能:使用客户端设备连接到网络,输入用户名和密码进行认证,验证Radius服务器是否正常工作。 9.进一步配置:根据需求,可以进一步配置Radius服务器,如增加额外的认证方式、配置访问控制策略等。 10.监控和维护:定期监控Radius服务器的运行状态,处理日志和错误报告,及时进行维护和升级操作。 通过以上步骤,可以成功搭建Radius认证服务器,提供可靠的网络认证和授权服务。 ### 回答3: Radius(Remote Authentication Dial-In User Service)是一种用于网络访问身份验证和授权的协议。搭建一个Radius认证服务器需要进行以下步骤: 首先,选择一个适合的操作系统来搭建服务器,常用的有Windows Server和Linux系统。根据选择的操作系统,安装相应的服务器软件,例如Windows Server系统可以安装Internet Authentication Service(IAS)或Network Policy Server(NPS),Linux系统可以安装Freeradius软件。 安装完服务器软件后,配置服务器的基本参数。包括IP地址、端口号等。此外,还需要为服务器生成证书,以确保通信的安全性。 接下来,配置服务器的用户和组。这些用户和组用于认证和授权用户访问网络。可以通过本地数据库、LDAP服务器或其他外部身份验证源来配置用户和组。 在配置用户和组之后,进行身份验证和授权设置。定义认证方法,如用户名/密码、数字证书或其他认证方式。同时,定义授权策略,指定每个用户或用户组可访问的资源和权限。 最后,进行网络设备的配置。将网络设备连接到Radius服务器,并在设备上配置Radius客户端设置。这样,当用户尝试访问网络设备时,设备将向Radius服务器发送身份验证请求,并根据服务器的响应来授权用户访问。 整个过程需要仔细配置服务器和网络设备,确保服务器和设备之间的通信正常。此外,还需要保护服务器的安全,定期更新系统和软件补丁,设置访问控制和日志记录,以避免安全威胁。 以上是Radius认证服务器搭建的基本步骤,但实际操作时可能会有一些差异,具体的步骤和设置取决于所使用的服务器软件和操作系统版本。在搭建过程中,可以参考相关的官方文档或网络教程来进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值