Radius - 快速指南

什么是 AAA 和 NAS?

在开始了解 Radius 之前,了解以下内容非常重要:

  • 什么是 AAA?
  • 什么是 NAS?

那么,让我们先对这两个主题有一个基本的了解。

什么是 AAA?

AAA 代表身份验证、授权和记帐。

身份验证

  • 指确认请求服务的用户是有效用户。

  • 通过提供身份和凭证来完成。

  • 凭证的示例包括密码、一次性令牌、数字证书和电话号码(呼叫/被叫)。

授权

  • 指根据用户的身份验证向用户授予特定类型的服务(包括"无服务")。

  • 可能基于限制,例如,一天中的时间限制、物理位置限制或对同一用户多次登录的限制。

  • 服务示例包括 IP 地址过滤、地址分配、路由分配、加密、QoS/差异服务、带宽控制/流量管理等。

计费

  • 指跟踪用户对网络资源的消耗。

  • 计费中收集的典型信息包括用户的身份、所提供服务的性质、服务何时开始和结束的时间。

  • 可用于管理、规划、计费等。

AAA 服务器为其客户端提供上述所有服务。

AAA 协议

Radius 是用于网络访问或 IP 移动性等应用程序的 AAA 协议。除了 Radius,AAA 中还有以下协议:

终端访问控制器访问控制系统 (TACACS)

TACACS 是一种远程身份验证协议,用于与 Unix 网络中常用的身份验证服务器进行通信。TACACS 允许远程访问服务器与身份验证服务器进行通信,以确定用户是否有权访问网络。

TACACS+

TACACS+ 通过一个或多个集中式服务器为路由器、网络访问服务器和其他联网计算设备提供访问控制。它使用 TCP 并提供单独的身份验证、授权和记账服务。它在端口 49 上工作。

DIAMETER

Diameter 是 Radius 的计划替代品。

什么是网络接入服务器?

网络接入服务器 (NAS) 是客户端拨号以访问网络的服务元素。NAS 是一种具有与主干网和 POTS 或 ISDN 接口的设备,并接收希望通过拨号服务访问主干网的主机的呼叫。 NAS 位于互联网提供商的存在点,为其客户提供互联网访问。

网络访问服务器是:

  • 对远程资源的单一访问点。

  • 远程访问服务器,因为它允许远程访问网络。

  • 网络的初始入口点。

  • 保护受保护资源的网关。

示例包括:

  • 使用用户 ID 和密码进行互联网访问验证。

  • VoIP、FoIP 和 VMoIP 需要有效的电话号码或 IP 地址。

  • 电话预付卡使用预付卡号。

下图显示了Radius架构。

NAS 架构

RADIUS - 概述

RADIUS 是一种协议,用于在需要验证其链接的网络访问服务器和共享身份验证服务器之间传输身份验证、授权和配置信息。

  • RADIUS 代表远程身份验证拨入用户服务。

  • RADIUS 是用于网络访问或 IP 移动等应用程序的 AAA 协议

  • 适用于两种情况 (a) 本地 (b) 移动。

  • 使用 PAP、CHAP 或 EAP 协议对用户进行身份验证。

  • 在文本文件、LDAP 服务器、数据库中查找身份验证。

  • 身份验证服务参数传回NAS。

  • 会话开始和结束时收到通知。此数据将用于计费或统计目的。

  • SNMP 用于远程监控

  • 可用作代理。

简单 RADIUS 网络图

Radius 网络图

RADIUS - 功能

以下是 Radius 所有主要功能的列表:

客户端/服务器模型

  • NAS 作为 Radius 服务器的客户端。

  • Radius 服务器负责获取用户连接请求、对用户进行身份验证,然后返回客户端向用户提供服务所需的所有配置信息。

  • Radius 服务器可以充当其他 Radius 服务器的代理客户端。

网络安全

  • 客户端和服务器之间的事务通过使用共享密钥。此密钥永远不会通过网络发送。

  • 密码在通过网络发送之前已加密。

灵活的身份验证机制

Radius 支持以下用于身份验证的协议:

  • 点对点协议 - PPP

  • 密码身份验证协议 - PAP

  • 质询握手身份验证协议 - CHAP

  • 简单 UNIX 登录

可扩展协议

Radius 是可扩展的;大多数 Radius 硬件和软件供应商都实现了自己的方言。

无状态协议使用 UDP,在端口 1812 上运行。

RADIUS - 操作

以下是 RADIUS 操作的详细信息。在客户端开始与 RADIUS 服务器通信之前,必须在客户端和服务器之间共享共享密钥,并且必须将客户端配置为使用 RADIUS 服务器来获取服务。

客户端配置正确后:

  • 客户端以访问请求开始。

  • 服务器发送访问接受、访问拒绝或访问质询。

  • 访问接受保留所有必需的属性以向用户提供服务。

RADIUS 代码(十进制)分配如下:

  • 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

  • No Keep Alive concept - Good or Bad ??

代码 4 和 5 与 RADIUS 计费功能相关。代码 12 和 13 保留以备可能使用,但此处不再提及。

RADIUS - 数据包格式

Radius 的数据包格式如下所示:

Radius 数据包格式

代码: 长度为 1 个八位字节(1 个字节),用于标识各种类型的数据包。通常 1 个八位字节表示 1 个字节。

标识符: 长度同样为 1 个八位字节,用于将响应与请求进行匹配。

长度: 长度为 2 个八位字节,用于指定数据包的长度,包括代码、标识符、长度和身份验证器。 (最小数据包为 20 个八位字节,最大为 4096 个八位字节)。

身份验证器:长度为 16 个八位字节,在某些请求和响应的情况下会填满。

属性列表:有 63 多个属性的列表,Radius 属性也将具有定义的格式,将在下一章中描述。

RADIUS - 属性

Radius 属性由以下三个部分组成:

  • 类型:长度为 1 个八位字节,标识各种类型的属性。它是下面列出的属性代码。

  • 长度: 1 个八位字节长,包括类型的属性长度。

  • 值: 0 个或更多八位字节长,包含特定于属性的信息。

RADIUS 属性列表

代码 属性
1 User-Name
2 User-Password
3 CHAP-Password
4 NAS-IP-Address
5 NAS-Port
6 Service-Type
7 Framed-Protocol
8 Framed-IP-Address
9 Framed-IP-Netmask
10 Framed-Routing
11 Filter-Id
12 Framed-MTU
13 Framed-Compression
14 Login-IP-Host
15 Login-Service
16 Login-TCP-Port
17 (unassigned)
18 Reply-Message
19 Callback-Number
20 Callback-Id
21 (unassigned)
22 Framed-Route
23 Framed-IPX-Network
24 State
25 Class
26 Vendor-Specific
27 Session-Timeout
28 Idle-Timeout
29 Termination-Action
30 Called-Station-Id
31 Calling-Station-Id
32 NAS-Identifier
33 Proxy-State
34 Login-LAT-Service
35 Login-LAT-Node 3
36 Login-LAT-Group
37 Framed-AppleTalk-Link
38 Framed-AppleTalk-Network
39 Framed-AppleTalk-Zone
40-59 (reserved for accounting)
60 CHAP-Challenge
61 NAS-Port-Type
62 Port-Limit
63 Login-LAT-Port

RADIUS - 示例

Radius 请求示例

让我们看一个 Radius 请求示例:

  • 192.168.1.16 处的 NAS 向 RADIUS 服务器发送访问请求 UDP 数据包,用于名为 Nemo 的用户在端口 3 上使用密码"arctangent"登录。

  • 请求身份验证器是由 NAS 生成的 16 个八位字节随机数。

  • 用户密码是 16 个八位字节,末尾填充了空值,并与 D5(共享密钥|请求身份验证器)进行异或。

  • 01 00 00 38 0f 40 3f 94 73 97 80 57 bd 83 d5 cb 98 f4 22 7a 01 06 6e 65 6d 6f 02 12 0d be 70 8d 93 d4 13 ce 31 96 e4 3f 78 2a 0a ee 04 06 c0 a8 01 10 05 06 00 00 00 03

  • 1 Code = Access-Request (1)

    1 Identifier = 0

    2 Length = 56

    16 Request Authenticator

  • Attribute List

    6 User-Name = "Nemo"

    18 User-Password

    6 NAS-IP-Address = 192.168.1.16

    6 NAS-Port = 3

Radius 响应示例

以下是响应数据包的示例:

  • Radius 服务器对 Nemo 进行身份验证,并向 NAS 发送访问接受 UDP 数据包,告知其将 Nemo 远程登录到主机 192.168.1.3

  • 响应身份验证器是代码 (2)、id (0)、长度 (38)、上面的请求身份验证器、此回复中的属性和共享密钥的 16 八位字节 MD5 校验和。

  • 02 00 00 26 86 fe 22 0e 76 24 ba 2a 10 05 f6 bf 9b 55 e0 b2 06 06 00 00 00 01 0f 06 00 00 00 00 0e 06 c0 a8 01 03

  • 1 Code = Access-Accept (2)

    1 Identifier = 0 (same as in Access-Request)

    2 Length = 38

    16 Response Authenticator

  • Attribute List:

    6 Service-Type (6) = Login (1)

    6 Login-Service (15) = Telnet (0)

    6 Login-IP-Host (14) = 192.168.1.3

什么是 DIAMETER

Diameter 是 RADIUS 的计划替代品。它是一种适用于网络访问和 IP 移动性等应用的 AAA 协议。下面列出了您需要了解的有关 Diameter 的几点:

  • 它旨在在本地和漫游 AAA 情况下工作。

  • Diameter 只是前身协议 Radius 的两倍。

  • 它使用 TCP 或 SCTP,而不是 UDP。

  • 它使用传输级安全性(IPSEC 或 TLS)。

  • 它有 32 位标识符,而不是 8 位。

  • 它支持无状态和有状态模式。

  • 它支持应用层确认,定义故障转移。

  • 它提供更好的漫游支持。

  • 它使用 AVP。

  • Diameter 允许定义新的命令和属性。它很容易扩展。

下一步是什么?

现在您对 Radius 和 Diameter 有了基本的了解。要了解有关这些协议的更多知识,您需要阅读资源部分中提到的各种 RFC 和其他资源。