目录1AAA配置1.1AAA简介1.2RADIUS协议简介1.2.1客户端/服务器模式1.2.2安全和认证机制1.2.3RADIUS的基本消息交互流程1.2.4RADIUS报文结构1.2.5RADIUS扩展属性1.3HWTACACS协议简介1.3.1HWTACACS协议与RADIUS协议的区别1.3.2HWTACACS的基本消息交互流程1.4协议规范1.5AAA配置任务简介1.6配置AAA1.6.1配置准备1.6.2创建ISP域1.6.3配置ISP域的属性1.6.4配置ISP域的AAA认证方案1.6.5配置ISP域的AAA授权方案1.6.6配置ISP域的AAA计费方案1.6.7配置本地用户的属性1.6.8配置用户组的属性1.6.9配置强制切断用户连接1.6.10AAA显示与维护1.7配置RADIUS1.7.1创建RADIUS方案1.7.2配置RADIUS认证/授权服务器1.7.3配置RADIUS计费服务器及相关参数1.7.4配置RADIUS报文的共享密钥1.7.5配置RADIUS报文的超时重传次数最大值1.7.6配置支持的RADIUS服务器的类型1.7.7配置RADIUS服务器的状态1.7.8配置发送给RADIUS服务器的数据相关属性1.7.9配置RADIUS服务器的定时器1.7.10配置RADIUS服务器的安全策略服务器1.7.11使能RADIUS客户端的监听端口1.7.12RADIUS显示和维护1.8配置HWTACACS1.8.1创建HWTACACS方案1.8.2配置HWTACACS认证服务器1.8.3配置HWTACACS授权服务器1.8.4配置HWTACACS计费服务器1.8.5配置HWTACACS报文的共享密钥1.8.6配置发送给HWTACACS服务器的数据相关属性1.8.7配置HWTACACS服务器的定时器1.8.8HWTACACS显示和维护1.9AAA典型配置举例1.9.1Telnet/SSH用户通过RADIUS服务器认证、授权、计费的应用配置1.9.2FTP/Telnet用户本地认证、授权、计费配置1.9.3PPP用户通过HWTACACS服务器认证、授权、计费的应用配置1.10AAA常见配置错误举例1.10.1RADIUS认证/授权失败1.10.2RADIUS报文传送失败1.10.3RADIUS计费功能异常1.10.4HWTACACS常见配置错误举例1AAA配置1.1AAA简介AAA是Authentication、Authorization、Accounting(认证、授权、计费)的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能。AAA一般采用客户机/服务器结构,客户端运行于NAS(NetworkAccessServer,网络接入服务器)上,服务器上则集中管理用户信息。NAS对于用户来讲是服务器端,对于服务器来说是客户端。AAA的基本组网结构如图1-1。图1-1AAA基本组网结构示意图当用户想要通过某网络与NAS建立连接,从而获得访问其它网络或取得某些网络资源的权利时,NAS起到了验证用户或对应连接的作用。NAS负责把用户的认证、授权、计费信息透传给服务器(RADIUS服务器或HWTACACS服务器),RADIUS协议或HWTACACS协议规定了NAS与服务器之间如何传递用户信息。图1-1的AAA基本组网结构中有两台服务器,用户可以根据实际组网需求来决定认证、授权、计费功能分别由使用哪种协议类型的服务器来承担。例如,可以选择HWTACACS服务器实现为认证和授权,RADIUS服务器实现计费。这三种安全服务功能的具体作用如下:认证:确认远端访问用户的身份,判断访问者是否为合法的网络用户;授权:对不同用户赋予不同的权限,限制用户可以使用的服务。例如用户成功登录服务器后,管理员可以授权用户对服务器中的文件进行访问和打印操作;计费:记录用户使用网络服务中的所有操作,包括使用的服务类型、起始时间、数据流量等,它不仅是一种计费手段,也对网络安全起到了监视作用。当然,用户可以只使用AAA提供一种或两种安全服务。例如,公司仅仅想让员工在访问某些特定资源的时候进行身份认证,那么网络管理员只要配置认证服务器就可以了。但是若希望对部分员工开放这些特定资源的可操作权限,那么就需要配置认证服务器和授权服务器。如上所述,AAA是一种管理框架,它提供了授权部分实体去访问特定资源,同时可以记录这些实体操作行为的一种安全机制,因其具有良好的可扩展性,并且容易实现用户信息的集中管理而被广泛使用。AAA可以通过多种协议来实现,目前设备支持基于RADIUS协议或HWTACACS协议来实现AAA,在实际应用中,最常使用的是RADIUS协议。1.2RADIUS协议简介RADIUS(RemoteAuthenticationDial-InUserService,远程认证拨号用户服务)是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常被应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了基于UDP的RADIUS帧格式及其消息传输机制,并规定UDP端口1812、1813分别作为认证、计费端口。RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入、ADSL接入。它通过认证、授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。1.2.1客户端/服务器模式客户端:RADIUS客户端一般位于NAS设备上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。服务器:RADIUS服务器运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS服务器通常要维护三个数据库,如图1-2所示:图1-2RADIUS服务器的组成“Users”:用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置信息)。“Clients”:用于存储RADIUS客户端的信息(如接入设备的共享密钥、IP地址等)。“Dictionary”:用于存储RADIUS协议中的属性和属性值含义的信息。1.2.2安全和认证机制RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的,并且共享密钥不能通过网络来传输,增强了信息交互的安全性。另外,为防止用户密码在不安全的网络上传递时被窃取,在传输过程中对密码进行了加密。RADIUS服务器支持多种方法来认证用户,如基于PPP的PAP、CHAP认证。另外,RADIUS服务器还可以为其它类型的认证服务器提供代理客户端的功能,向其提出认证请求。1.2.3RADIUS的基本消息交互流程用户、RADIUS客户端和RADIUS服务器之间的交互流程如图1-3所示。图1-3RADIUS的基本消息交互流程消息交互流程如下:(1)用户发起连接请求,向RADIUS客户端发送用户名和密码。(2)RADIUS客户端根据获取的用户名和密码,向RADIUS服务器发送认证请求包(Access-Request),其中的密码在共享密钥的参与下由MD5算法进行加密处理。(3)RADIUS服务器对用户名和密码进行认证。如果认证成功,RADIUS服务器向RADIUS客户端发送认证接受包(Access-Accept);如果认证失败,则返回认证拒绝包(Access-Reject)。由于RADIUS协议合并了认证和授权的过程,因此认证接受包中也包含了用户的授权信息。(4)RADIUS客户端根据接收到的认证结果接入/拒绝用户。如果允许用户接入,则RADIUS客户端向RADIUS服务器发送计费开始请求包(Accounting-Request)。(5)RADIUS服务器返回计费开始响应包(Accounting-Response),并开始计费。(6)用户开始访问网络资源。(7)用户请求断开连接,RADIUS客户端向RADIUS服务器发送计费停止请求包(Accounting-Request)。(8)RADIUS服务器返回计费结束响应包(Accounting-Response),并停止计费。(9)用户结束访问网络资源。1.2.4RADIUS报文结构RADIUS采用UDP报文来传输消息,通过定时器管理机制、重传机制、备用服务器机制,确保RADIUS服务器和客户端之间交互消息的正确收发。RADIUS报文结构如图1-4所示。图1-4RADIUS报文结构各字段的解释如下:(1)Code域长度为1个字节,用于说明RADIUS报文的类型,如表1-1所示。表1-1Code域的主要取值说明Code报文类型报文说明1Access-Request认证请求包方向Client-Server,Client将用户信息传输到Server,由Server判断是否接入该用户。该报文中必须包含User-Name属性,可选包含NAS-IP-Address、User-Password、NAS-Port等属性Code报文类型报文说明2Access-Accept认证接受包方向Server-Client,如果Access-Request报文中的所有Attribute值都可以接受(即认证通过),则传输该类型报文3Access-Reject认证拒绝包方向Server-Client,如果Access-Request报文中存在任何无法被接受的Attribute值(即认证失败),则传输该类型报文4Accounting-Request计费请求包方向Client-Server,Client将用户信息传输到Server,请求Server开始计费/停止计费,由该报文中的Acct-Status-Type属性区分计费开始请求和计费结束请求5Accounting-Response计费响应包方向Server-Client,Server通知Client已经收到Accounting-Request报文,并且已经正确记录计费信息(2)Identifier域长度为1字节,用于匹配请求包和响应包,以及检测在一段时间内重发的请求包。类型一致的请求包和响应包的Identifier值相同。(3)Length域长度为2个字节,表示RADIUS数据包(包括Code、Identifier、Length、Authenticator和Attribute)的长度,范围从20~4096。超过Length域的字节将被作为填充符被忽略。如果接收到的包的实际长度小于Length域的值时,该包将会被丢弃。(4)Authenticator域长度为16字节,用于验证RADIUS服务器的应答,另外还用于用户密码的加密。Authenticator包括两种类型:RequestAuthenticator和ResponseAuthenticator。(5)Attribute域不定长度,用于携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节,Attribute可包括多个属性,每一个属性都采用(Type、Length、Value)三元组的结构来表示。类型(Type),1个字节,取值为1~255,用于表示属性的类型,图1-2列出了RADIUS认证、授权、计费常用的属性。长度(Length),表示该属性(包括类型、长度和属性)的长度,单位为字节。属性值(Value),表示该属性的信息,其格式和内容由类型和长度决定,最大长度为253字节。表1-2RADIUS属性属性编号属性名称属性编号属性名称1User-Name45Acct-Authentic2User-Password46Acct-Session-Time3CHAP-Password47Acct-Input-Packets4NAS-IP-Address48Acct-Output-Packets5NAS-Port49Acct-Terminate-Cause6Service-Type50