AAA认证及RADIUS配置

AAA简介

AAA是Authentication,Authorization and Accounting(认证、授权和计费)的简称,它提供了一个对认证、授权和计费这三种安全功能进行配置的一致性框架,实际上是对网络安全的一种管理。

这里的网络安全主要是指访问控制,包括:

. 哪些用户可以访问网络服务器。

. 具有访问权的用户可以得到哪些服务。

. 如何对正在使用网络资源的用户进行计费。

针对以上问题,AAA必须提供认证功能、授权功能和计费功能。

1. 认证功能

AAA支持以下认证方式:

不认证:对用户非常信任,不对其进行合法检查。一般情况下不采用这种方式。

本地认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在设备上。本地认证的优点是速度快,可以降低运营成本;缺点是存储信息量受设备硬件条件限制。

远端认证:支持通过RADIUS协议或HWTACACS协议进行远端认证,设备(如Quidway系列交换机)作为客户端,与RADIUS服务器或TACACS服务器通信。对于RADIUS协议,可以采用标准或扩展的RADIUS协议。

2. 授权功能

AAA支持以下授权方式:

.. 直接授权:对用户非常信任,直接授权通过。

.. 本地授权:根据设备上为本地用户帐号配置的相关属性进行授权。

.. RADIUS认证成功后授权:RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权。

.. HWTACACS授权:由TACACS服务器对用户进行授权。

3. 计费功能

AAA支持以下计费方式:

. 不计费:不对用户计费。

. 远端计费:支持通过RADIUS服务器或TACACS服务器进行远端计费。

AAA一般采用客户端/服务器结构:客户端运行于被管理的资源侧,服务器上集中存放用户信息。因此,AAA框架具有良好的可扩展性,并且容易实现用户信息的集中管理。

RADIUS协议简介

AAA是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用RADIUS协议来实现AAA。

1. 什么是RADIUS

RADIUS(Remote Authentication Dial-In User Service,远程认证拨号用户服务)是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常被应用在既要求较高安全性,又要求维持远程用户访问的各种网络环境中。

RADIUS服务包括三个组成部分:

.. 协议:RFC 2865和RFC 2866基于UDP/IP层定义了RADIUS帧格式及其消息传输机制,并定义了1812作为认证端口,1813作为计费端口。

.. 服务器:RADIUS服务器运行在中心计算机或工作站上,包含了相关的用户认证和网络服务访问信息。

.. 客户端:位于拨号访问服务器设备侧,可以遍布整个网络。

RADIUS基于客户端/服务器模型。交换机作为RADIUS客户端,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息对用户进行相应处理(如接入/挂断用户)。RADIUS服务器负责接收用户连接请求,认证用户,然后给交换机返回所有需要的信息。

RADIUS服务器通常要维护三个数据库,如图1-1所示。

.. 第一个数据库“Users”用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置)。

.. 第二个数据库“Clients”用于存储RADIUS客户端的信息(如共享密钥)。

.. 第三个数据库“Dictionary”存储的信息用于解释RADIUS协议中的属性和属性值的含义。

AAA认证及RADIUS配置_认证

另外,RADIUS服务器还能够作为其他AAA服务器的客户端进行代理认证或计费。

2. RADIUS的基本消息交互流程

RADIUS客户端(交换机)和RADIUS服务器之间通过共享密钥来认证交互的消息,增强了安全性。RADIUS协议合并了认证和授权过程,即响应报文中携带了授权信息。用户、交换机、RADIUS服务器之间的交互流程如图1-2所示。

AAA认证及RADIUS配置_网络安全_02

基本交互步骤如下:

(1) 用户输入用户名和口令。

(2) RADIUS客户端根据获取的用户名和口令,向RADIUS服务器发送认证请求包(Access-Request)。

(3) RADIUS服务器将该用户信息与Users数据库信息进行对比分析,如果认证成功,则将用户的权限信息以认证响应包(Access-Accept)发送给RADIUS客户端;如果认证失败,则返回Access-Reject响应包。

(4) RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果可以接入用户,则RADIUS客户端向RADIUS服务器发送计费开始请求包(Accounting-Request),Status-Type取值为start。

(5) RADIUS服务器返回计费开始响应包(Accounting-Response)。

(6) 用户开始访问资源。

(7) RADIUS客户端向RADIUS服务器发送计费停止请求包(Accounting-Request),Status-Type取值为stop。

(8) RADIUS服务器返回计费结束响应包(Accounting-Response)。

(9) 用户访问资源结束。

3. RADIUS协议的报文结构

RADIUS协议采用UDP报文来承载数据,通过定时器管理机制、重传机制、备用服务器机制,确保RADIUS服务器和客户端之间交互消息正确收发。RADIUS报文结构如图1-3所示。

AAA认证及RADIUS配置_用户_03

Code域(1字节)决定RADIUS报文的类型,如表1-1所示。

AAA认证及RADIUS配置_网络安全_04

(2) Identifier域(1字节)用于匹配请求包和响应包,随着Attribute域改变、接收到有效响应包而不断变化,而在重传时保持不变化。

(3) Length域(2字节)指明整个包的长度,内容包括Code,Identifier,Length,Authenticator和Attribute。超过长度域的字节被视为填充,在接收时应被忽略;如果包比长度域所指示的短时,则应被丢弃。

(4) Authenticator域(16字节)用于验证RADIUS服务器传输回来的报文,并且还用于密码隐藏算法中,分为Request Authenticator和Response Authenticator。

(5) Attribute域携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节,该域采用(Type、Length、Value)三元组的形式提供。

.. 类型(Type)域1个字节,取值为1~255,用于指明属性的类型。表1-2列出了RADIUS授权、认证常用的属性。

.. 长度(Length)域1个字节,指明此属性的长度,单位为字节,包括类型字段、长度字段和属性值字段。

.. 属性值(Value)域包括该属性的信息,其格式和内容由类型域和长度域决定,最大长度为253字节。

AAA认证及RADIUS配置_资源_05

AAA认证及RADIUS配置_如何_06

RADIUS协议具有良好的可扩展性,协议中定义的26号属性(Vendor-Specific)用于设备厂商对RADIUS进行扩展,以实现标准RADIUS没有定义的功能。

如图1-4所示的报文结构,Vendor-ID域占4字节,表示厂商代号,最高字节为0,其余3字节的编码见RFC1700。厂商可以封装多个自己定义的“(Type、Length、Value)”子属性,从而在应用中得以扩展。

AAA认证及RADIUS配置_网络安全_07

配置RADIUS协议

RADIUS协议配置是以RADIUS方案为单位进行的,一个RADIUS方案在实际组网环境中既可以运用于一台独立的RADIUS服务器,也可以运用于两台配置相同、但IP地址不同的主、从RADIUS服务器。当创建一个新的RADIUS方案之后,需要对属于此方案的RADIUS服务器的IP地址和UDP端口号进行设置,这些服务器包括认证/授权和计费服务器,而每种服务器又有主服务器和从服务器的区别。每个RADIUS方案的属性包括:主服务器的IP地址、从服务器的IP地址、共享密钥以及RADIUS服务器类型等。

在实际组网环境中,上述参数的设置需要根据具体需求来决定。但是必须至少设置一个认证/授权服务器和一个计费服务器(如果不配置计费服务器,则必须配置accounting optional命令)。同时,保证交换机上的RADIUS服务端口设置与RADIUS服务器上的端口设置保持一致。

创建RADIUS方案RADIUS协议的配置是以RADIUS方案为单位进行的。在进行其它RADIUS协议配置之前,必须先创建RADIUS方案并进入其视图。

AAA认证及RADIUS配置_用户_08

注意: 一个RADIUS方案可以同时被多个ISP域引用

配置RADIUS认证/授权服务器

AAA认证及RADIUS配置_资源_09

注意:

RADIUS服务器的授权信息是随认证应答报文发给RADIUS客户端的,故不需要指定单独的授权服务器。

在实际组网环境中,可以指定2台RADIUS服务器分别作为主、从认证/授权服务器;也可以指定一台服务器既作为主认证/授权服务器,又作为从认证/授权服务器。

系统缺省创建的system方案使用的主认证服务器的IP为127.0.0.1,端口号为1645。

配置RADIUS计费服务器

AAA认证及RADIUS配置_认证_10

AAA认证及RADIUS配置_如何_11

注意:

.. 在实际组网环境中,可以指定2台RADIUS服务器分别作为主、从计费服务器;也可以指定一台服务器既作为主计费服务器,又作为从计费服务器。此外,由于RADIUS协议采用不同的UDP端口来收发认证/授权和计费报文,因此必须将认证/授权端口号和计费端口号设置得不同。

.. 如果RADIUS计费服务器对交换机发出的停止计费请求报文没有响应,且交换机使能了停止计费报文重传功能,交换机应将其缓存在本机上,然后重新发送直到RADIUS计费服务器产生响应,或者在重新发送的次数达到指定的次数限制后将其丢弃。

.. 交换机提供对连续实时计费失败次数限制的设置——在交换机向RADIUS服务器发出的实时计费失败的次数超过所设定的限度时,交换机将切断用户连接。

.. 系统缺省创建的system方案使用的主计费服务器的IP为127.0.0.1,端口号为1646。

.. 目前RADIUS协议不支持对FTP用户进行计费。

配置RADIUS报文的共享密钥

RADIUS客户端与RADIUS服务器使用MD5算法来加密RADIUS报文,双方通过设置共享密钥来验证报文的合法性。只有在密钥一致的情况下,双方才能彼此接收对方发来的报文并作出响应。

AAA认证及RADIUS配置_网络安全_12

注意:

?? 在认证/授权服务器与计费服务器不相同且这两台服务器中的共享密钥也不同时,必须分别设置认证/授权报文和计费报文的共享密钥。

配置RADIUS请求报文的最大传送次数

由于RADIUS协议采用UDP报文来承载数据,因此其通信过程是不可靠的。如果RADIUS服务器在应答超时定时器规定的时长内没有响应交换机,则交换机有必要向RADIUS服务器重传RADIUS请求报文。如果累计的传送次数超过最大传送次数而RADIUS服务器仍旧没有响应,则交换机将认为本次认证失败。

AAA认证及RADIUS配置_如何_13

配置支持的RADIUS服务器的类型

AAA认证及RADIUS配置_用户_14

配置RADIUS服务器的状态

对于某个RADIUS方案中的主、从服务器(无论是认证/授权服务器还是计费服务器),当主服务器因故障而导致其与交换机的通信中断时,交换机会主动地与从服务器交互报文。

当主服务器变为block的状态超过timer quiet命令设定的时间后,若有RADIUS请求,交换机会尝试与主服务器通信。如果主服务器恢复正常,交换机会立即恢复与其通信,而不与从服务器通信,同时,主服务器的状态恢复为active,从服务器的状态不变。

当主服务器与从服务器的状态都为active或block时,交换机将只把报文发送到主服务器上。

AAA认证及RADIUS配置_如何_15

AAA认证及RADIUS配置_如何_16

配置发送给RADIUS服务器的数据相关属性

AAA认证及RADIUS配置_网络安全_17

注意:

. 接入用户通常以“userid@isp-name”的格式命名,“@”后面的部分为ISP域名,设备就是通过该域名来决定将用户归于哪个ISP域的。但是,有些较早期的RADIUS服务器不能接受携带有ISP域名的用户名,在这种情况下,有必要将用户名中携带的域名去除后再传送给RADIUS服务器。因此,设备通过user-name-format命令以指定发送给RADIUS服务器的用户名是否携带有ISP域名。

. 如果指定某个RADIUS方案不允许用户名中携带有ISP域名,那么请不要在两个乃至两个以上的ISP域中同时设置使用该RADIUS方案,否则,会出现虽然实际用户不同(在不同的ISP域中)、但RADIUS服务器认为用户相同(因为传送到它的用户名相同)的错误。

. 对于802.1x用户,如果采用EAP认证方式,则交换机会把客户端输入的内容直接封装后发给服务器,这种情况下user-name-format的设置对其无效。

. 系统缺省创建的system方案的用户名不带域名。

配置本地RADIUS认证服务器

AAA认证及RADIUS配置_用户_18

注意:

. 采用本地RADIUS认证服务器功能时,其认证/授权服务的UDP端口号必须为1645,计费服务的UDP端口号为1646;服务器的IP地址都设置为本地服务器的地址。

. local-server命令配置的报文加密密钥(key password参数)必须与在RADIUS方案视图下用key authentication命令配置的认证/授权报文加密密钥一致。

. 包括系统缺省创建的本地RADIUS认证服务器在内,设备最多支持16个本地RADIUS认证服务器。

配置RADIUS服务器的定时器

如果在RADIUS请求报文(认证/授权请求或计费请求)传送出去一段时间后,设备还没有得到RADIUS服务器的响应,则有必要重传RADIUS请求报文,以保证用户确实能够得到RADIUS服务,这段时间被称为RADIUS服务器响应超时时长。交换机系统中用于控制这个时长的定时器就被称为RADIUS服务器响应超时定时器。

对于某个RADIUS方案中的主、从服务器(无论是认证/授权服务器还是计费服务器),当主服务器因故障而导致其与设备的通信中断时,设备会主动地与从服务器交互报文。

当主服务器变为block的状态超过timer quiet命令设定的时间后,当有RADIUS请求时,设备会尝试与主服务器通信,如果主服务器恢复正常,设备会立即恢复与其通信,而不继续与从服务器通信。同时,主服务器的状态恢复为active,从服务器的状态不变。

为了对用户实施实时计费,有必要设置实时计费的时间间隔。在设置了该属性以后,每隔设定的时间,交换机会向RADIUS服务器发送一次在线用户的计费信息。

AAA认证及RADIUS配置_如何_19

配置系统发送RADIUS 服务器状态变为Down的Trap

AAA认证及RADIUS配置_认证_20

说明:

. 该配置对所有的RADIUS方案都生效。

. 在设备向RADIUS服务器发送报文而未收到响应的次数超过配置的重试次数后,设备就认为相应的服务器状态变为Down

配置设备重启用户再认证功能

说明: 本功能适用于RADIUS认证/计费服务器为CAMS的情况。

在交换机与CAMS配合实现认证/授权/计费的AAA方案中,限制唯一性用户(指在CAMS上设置了“在线数量限制”为1的用户)通过认证/授权、开始计费时,如果交换机发生重启,在CAMS进行用户在线检查前,当用户再次登录交换机时,交换机会提示该用户已经在线,导致该用户无法正常访问网络资源。只有在网络管理员手工删除该用户的在线信息后,该用户才可以再次登录。

解决上述问题的方法是在交换机上启动设备重启用户再认证功能。启动设备重启用户再认证功能后,交换机每次发生重启时:

.. 交换机生成Accounting-On报文,该报文主要包括NAS-ID、NAS-IP(源IP)和会话ID信息。

.. 交换机每隔设定的时间间隔向CAMS发送Accouting-On报文。

.. CAMS收到Accounting-On报文后,立即向交换机发送一个响应报文,并根据Accouting-On报文中的NAS-ID、NAS-IP和会话ID,找到并删除通过交换机接入的原用户在线信息,并按照最后一次计费更新报文结束计费。

.. 当交换机收到CAMS的响应报文后,即停止发送Accounting-On报文。

.. 如果交换机发送Accounting-On报文的次数已达到设定的最大发送次数,但是仍没有收到CAMS的响应报文,则交换机停止发送Accounting-On报文。

说明:

Accounting-On报文中的主要属性:NAS-ID、NAS-IP和会话ID由交换机自动生成,其中NAS-IP还可以通过命令(nas-ip)手工配置,如果手工配置,请注意配置正确、合法的IP地址;如果不配置,交换机会自动选择VLAN虚接口的IP地址作为NAS-IP地址。

AAA认证及RADIUS配置_网络安全_21