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 Architecture

RADIUS - 概述

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

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

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

  • 在两种情况下都有效:(a) 本地 (b) 移动。

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

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

  • 身份验证服务完成后,将参数传回 NAS。

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

  • SNMP 用于远程监控

  • 可用作代理。

简单的 RADIUS 网络图

Radius Network Diagram

RADIUS - 特性

以下是 Radius 所有关键特性的列表

客户端/服务器模型

  • NAS 充当 Radius 服务器的客户端。

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

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

网络安全

  • 客户端和服务器之间的交易通过使用共享密钥进行身份验证。此密钥永远不会通过网络发送。

  • 密码在通过网络发送之前会进行加密。

灵活的身份验证机制

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

  • 点对点协议 - PPP

  • 密码身份验证协议 - PAP

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

  • 简单的 UNIX 登录

可扩展协议

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

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

RADIUS - 操作

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

一旦客户端正确配置后,则

  • 客户端以 Access-Request 开始。

  • 服务器发送 Access-Accept、Access-Reject 或 Access-Challenge。

  • Access-Accept 保留所有向用户提供服务的必需属性。

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

  • 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 保留

  • 没有保持活动的概念 - 好还是坏?

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

RADIUS - 数据包格式

Radius 的数据包格式如下所示

Radius Packet Format

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

标识符:此字段长度也为 1 个八位字节,有助于将响应与请求匹配。

长度:此字段长度为 2 个八位字节,指定数据包的长度,包括代码、标识符、长度和鉴别器。(最小数据包为 20 个八位字节,最大为 4096 个八位字节)。

鉴别器:此字段长度为 16 个八位字节,在某些请求和响应中填充。

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

RADIUS - 属性

Radius 属性包含以下三个部分

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

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

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

RADIUS 属性列表

代码 属性
1 用户名
2 用户密码
3 CHAP 密码
4 NAS IP 地址
5 NAS 端口
6 服务类型
7 帧协议
8 帧 IP 地址
9 帧 IP 子网掩码
10 帧路由
11 过滤器 ID
12 帧 MTU
13 帧压缩
14 登录 IP 主机
15 登录服务
16 登录 TCP 端口
17 (未分配)
18 回复消息
19 回调号码
20 回调 ID
21 (未分配)
22 帧路由
23 帧 IPX 网络
24 状态
25
26 供应商特定
27 会话超时
28 空闲超时
29 终止操作
30 被叫站 ID
31 主叫站 ID
32 NAS 标识符
33 代理状态
34 登录 LAT 服务
35 登录 LAT 节点 3
36 登录 LAT 组
37 帧 AppleTalk 链路
38 帧 AppleTalk 网络
39 帧 AppleTalk 区域
40-59 (保留用于计费)
60 CHAP 质询
61 NAS 端口类型
62 端口限制
63 登录 LAT 端口

RADIUS - 示例

Radius 请求示例

让我们看一下 Radius 请求示例

  • 位于 192.168.1.16 的 NAS 向 RADIUS 服务器发送一个 Access-Request 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 代码 = Access-Request (1)

    1 标识符 = 0

    2 长度 = 56

    16 请求鉴别器

  • 属性列表

    6 用户名 = “Nemo”

    18 用户密码

    6 NAS IP 地址 = 192.168.1.16

    6 NAS 端口 = 3

Radius 响应示例

这是一个响应数据包的示例

  • Radius 服务器对 Nemo 进行身份验证,并向 NAS 发送一个 Access-Accept UDP 数据包,指示它将 Nemo 的 telnet 连接到主机 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 代码 = Access-Accept (2)

    1 标识符 = 0(与 Access-Request 中相同)

    2 长度 = 38

    16 响应鉴别器

  • 属性列表

    6 服务类型 (6) = 登录 (1)

    6 登录服务 (15) = Telnet (0)

    6 登录 IP 主机 (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 和资源部分中提到的其他资源。

广告