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上工作。
直径
直径是半径的计划替代。
什么是网络访问服务器?
网络访问服务器(NAS)是客户端拨号以访问网络的服务元素。 NAS是一种既具有到骨干网又具有到POTS或ISDN的接口的设备,并且从希望通过拨号服务访问骨干网的主机接收呼叫。 NAS位于Internet提供商的服务点,以为其客户提供Internet访问。
网络访问服务器是:
-
对远程资源的单点访问。
-
远程访问服务器,因为它允许远程访问网络。
-
网络的初始入口点。
-
防护受保护资源的网关。
示例包括:
-
使用用户ID和密码的Internet访问验证。
-
VoIP,FoIP和VMoIP需要有效的电话号码或IP地址。
-
电话预付卡使用预付卡号。
下图显示了Radius的基本体系结构。
RADIUS-概述
RADIUS是一种协议,用于在希望对其链接进行身份验证的网络访问服务器与共享身份验证服务器之间承载与身份验证,授权和配置有关的信息。
-
RADIUS代表“远程身份验证拨入用户服务”。
-
RADIUS是用于网络访问或IP移动性等应用程序的AAA协议
-
它适用于本地和移动两种情况。
-
它使用密码验证协议(PAP),质询握手验证协议(CHAP)或可扩展验证协议(EAP)协议来验证用户。
-
它在文本文件,LDAP服务器,数据库中进行身份验证。
-
身份验证服务参数传递回NAS后。
-
它通知会话何时开始和停止。此数据用于计费或统计目的。
-
SNMP用于远程监视。
-
可以用作代理。
这是半径的简单网络图:
RADIUS-功能
以下是Radius的所有主要功能的列表:
客户端/服务器模型
-
NAS作为Radius服务器的客户端。
-
Radius服务器负责获取用户连接请求,对用户进行身份验证,然后返回客户端向用户交付服务所需的所有配置信息。
-
Radius服务器可以充当其他Radius服务器的代理客户端。
网络安全
-
客户端和服务器之间的事务通过使用共享密钥进行身份验证。该密钥永远不会通过网络发送。
-
通过网络发送密码之前,密码已加密。
灵活的身份验证机制
Radius支持以下用于身份验证的协议:
-
点对点协议-PPP
-
密码验证协议-PAP
-
质询握手身份验证协议-CHAP
-
简单的UNIX登录
可扩展协议
半径是可扩展的; Radius的大多数硬件和软件供应商都实现自己的方言。
使用UDP的无状态协议在端口1812上运行。
RADIUS-操作
在客户端开始与Radius服务器通信之前,要求在客户端和服务器之间共享密钥,并且必须将客户端配置为使用Radius服务器获取服务。
正确配置客户端后:
-
客户端从访问请求开始。
-
服务器发送访问接受,访问拒绝或访问挑战。
-
Access-Accept保留所有必需的属性以向用户提供服务。
半径代码(十进制)分配如下:
- 1个访问请求
- 2访问接受
- 3拒绝访问
- 4会计要求
- 5会计响应
- 11进入挑战
- 12状态服务器(实验性)
- 13 Status-Client(实验性)
- 255保留
- 没有保持活力的概念-好还是坏?
代码4和5与Radius会计功能有关。保留代码12和13以便可能使用。
RADIUS-数据包格式
Radius的报文格式如下:
代码:这是1个八位位组(1字节)长,用于标识各种类型的数据包。通常1个八位位组表示1个字节。
标识符:这又是1个八位位组长,有助于将响应与请求进行匹配。
长度:这是2个八位位组,它指定数据包的长度,包括代码,标识符,长度和认证符。 (最小数据包为20个八位位组,最大为4096个八位位组)。
身份验证器:这是16个八位字节长,在某些请求和响应的情况下已填满。
属性列表:共有63个以上的属性列表,Radius属性也将具有定义的格式,这将在下一章中介绍。
RADIUS-属性格式
Radius属性包含以下三个部分:
-
类型: 1个八位位组长,标识各种类型的属性。这是下面列出的属性代码。
-
长度: 1个八位位组长,包括类型在内的属性长度。
-
值: 0个或多个八位位组长,包含特定于属性的信息。
RADIUS属性列表
Code | Attributes |
---|---|
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 Request示例:
-
位于192.168.1.16的NAS向名为Nemo的用户发送访问请求UDP数据包到RADIUS服务器,该用户使用密码“ arctangent”登录端口3。
-
请求验证器是NAS生成的16个八位位组的随机数。
-
用户密码是16个八位位组,末尾填充有空值,并与D5(共享密钥|请求验证器)进行XOR运算。
-
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个代码=访问请求(1)
1个标识符= 0
2长度= 56
16请求身份验证器
-
属性清单
6用户名=“ Nemo”
18个用户密码
6 NAS-IP地址= 192.168.1.16
6 NAS端口= 3
半径响应示例
这是响应数据包的示例:
-
Radius服务器对Nemo进行身份验证,然后向NAS发送一个Access-Accept UDP数据包,通知它到telnet 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 00 01 0f 06 00 00 00 00 0e 06 c0 a8 01 03
-
1个代码=访问接受(2)
1个标识符= 0(与访问请求中的相同)
2长度= 38
16个响应验证器
-
属性列表:
6服务类型(6)=登录(1)
6登录服务(15)= Telnet(0)
6登录IP主机(14)= 192.168.1.3
什么是直径
直径是RADIUS的计划替代。它是用于网络访问和IP移动性等应用程序的AAA协议。下面列出了您需要了解的有关直径的几点信息:
-
它旨在在本地和漫游AAA情况下工作。
-
直径只是前一个协议半径的两倍。
-
它使用TCP或SCTP,而不使用UDP。
-
它使用传输级安全性(IPSEC或TLS)。
-
它具有32位标识符,而不是8位。
-
它支持无状态以及有状态模式。
-
它支持应用程序层确认,定义故障转移。
-
它提供了更好的漫游支持。
-
它使用AVP。
-
直径允许定义新的命令和属性。很容易扩展。
接下来是什么?
现在,您对半径和直径有了基本的了解。为了获得有关这些协议的更多知识,您需要阅读参考资料部分中提到的各种RFC和其他资源。