Radius认证原理

Radius简介

RADIUS(Remote Authentication Dial In User Service,远程用户拨号认证)是一种广泛支持的客户机-服务器协议,提供集中的身份验证、授权和计费功能。RADIUS服务器使用UDP报文与网络中的RADIUS客户端通信,在允许用户访问网络之前对用户进行认证,授权适当的用户访问资源,并对所使用的资源进行说明。

Radius报文格式及交互过程

  1. Radius报文格式

    image-20230208200801538

    Code:表示Radius报文的类型:

    • Code = 1: Access-Request,认证请求报文;
    • Code = 2: Access-Accept,认证成功报文;
    • Code = 3: Access-Reject,认证拒绝报文;
    • Code = 4: Accounting-Request,计费请求报文;
    • Code = 5: Accounting-Response,计费响应报文;
    • Code = 11: Access-Challenge,认证挑战报文;
    • Code = 255: Reserved,保留;

    Packet Identifier:用于匹配请求和回应报文。

    Packet Length:Radius报文长度;

    Authenticator:用于认证来自服务端的响应,也用于用户密码的加密处理;

    AVPs:属性字段,用于RADIUS服务器和RADIUS客户端之间的信息交换,Fortinet RADIUS属性的供应商ID是12356。

  2. Radius报文交互过程

    image-20230208192214571

    • FortiGate向RADIUS服务器发送包含用户名和密码信息的认证请求报文。

    • RADIUS服务器对用户身份的合法性进行检验:

      如果用户身份合法,RADIUS服务器向FortiGate返回认证接受报文。

      如果用户身份不合法,RADIUS服务器向RADIUS客户端返回认证拒绝报文。

PAP和CHAP认证

  1. PAP认证

    在认证请求报文Access-Request报文中,PAP将用户和加密后的密码传递给Radius服务器。

    image-20230208194157187

    Radius服务器将解密后的密码,与用户的密码进行比较,如果一致, 则认为密码正确。

    image-20230208194220435

  2. CHAP认证

    CHAP认证传递的是一个HASH值,不是密码,因此这要求用户的密码保存在Radius服务器本地。如果Radius服务器用户的密码不在本地,如FortiGate----Radius服务器----LDAP服务器,像这样的部署方式,用户的密码保存在LDAP服务器中,Radius服务器无法获取LDAP服务器中用户的密码,因此认证将失败。

    在认证请求报文Access-Request报文中,CHAP认证并不会直接在认证过程传递用户密码, 而是传递 chapID + 密码 + challenge的MD5值。

    image-20230208192610363

    Radius服务器通过用户名找到对应的密码,计算chapID + 密码 + challenge的MD5值, 并判断是否与 chap-password一致(从第2个字节开始比较),如果一致, 则认为密码正确。

    image-20230208192639798

Copyright © 2024 Fortinet Inc. All rights reserved. Powered by Fortinet TAC Team.
📲扫描下方二维码分享此页面👇
该页面修订于: 2024-03-07 17:57:58

results matching ""

    No results matching ""