1.1什么AAAAAA(AuthenticationAuthorizationAccounting)是一种提供认证、授权和计费的技术。认证(Authentication):验证用户是否可以获得访问权,确定哪些用户可以访问网络。授权(Authorization):授权用户可以使用哪些服务。计费(Accounting):记录用户使用网络资源的情况。1.2AAA的基本架构AAA通常采用“客户端—服务器”结构。这种结构既具有良好的可扩展性,又便于集中管理用户信息。如下图所示认证AAA支持以下认证方式:不认证:对用户非常信任,不对其进行合法检查,一般情况下不采用这种方式。本地认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在网络接入服务器上。本地认证的优点是速度快,可以为运营降低成本;缺点是存储信息量受设备硬件条件限制。远端认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在认证服务器上。AAA支持通过RADIUS(RemoteAuthenticationDialInUserService)协议或HWTACACS(HuaWeiTerminalAccessControllerAccessControlSystem)协议进行远端认证。网络接入服务器NAS(NetworkAccessServer)作为客户端,与RADIUS服务器或HWTACACS服务器通信。如果在一个认证方案中采用多种认证模式,将按照配置的顺序进行认证。当配置的认证方式是先远端认证后本地认证时如果登录的帐号在远端服务器上没有创建,但是在本地是存在的,经过远端认证时,将被认为认证失败,不再转入本地认证。只有在远端认证服务器无响应时,才会转入本地认证。如果选用了不认证(none)或本地认证(local),它必须作为最后一种认证模式。授权AAA支持以下授权方式:不授权:不对用户进行授权处理。本地授权:根据网络接入服务器为本地用户账号配置的相关属性进行授权。HWTACACS授权:由TACACS服务器对用户进行授权。if-authenticated授权:如果用户通过了认证,而且使用的认证模式不是不认证,则用户授权通过。RADIUS认证成功后授权:RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权。如果在一个授权方案中使用多次授权,授权模式的执行顺序按照配置的先后,只有在当前授权模式没有响应时,才会尝试下一个授权模式,如果授权失败则将不会再进行授权。计费AAA支持以下计费方式:不计费:不对用户计费。远端计费:通过RADIUS服务器或HWTACACS服务器进行远端计费。1.3RADIUS协议AAA可以用多种协议来实现,最常用的是RADIUS协议。RADIUS最初用来管理使用串口和调制解调器的大量分散用户,后来广泛应用于网络接入服务器NAS(NetworkAccessServer)系统。RADIUS服务器通过建立一个唯一的用户数据库,存储用户名、密码来对用户进行验证。用户登录路由器或接入服务器等网络设备时,会将用户名和密码发送给该网络接入服务器;该网络设备中的RADIUS客户端(网络接入服务器)接收用户名和密码,并向RADIUS服务器发送认证请求;RADIUS服务器接收到合法的请求后,完成认证,并把所需的用户授权信息返回给客户端;对于非法的请求,RADIUS服务器返回认证失败的信息给客户端。客户端和RADIUS服务器之间发送的用户密码信息经过加密以后才在网络上传递,以避免用户密码在不安全的网络上被窃取。RADIUS客户端与服务器间的消息流程如下图所示。计费的消息流程和认证/授权的消息流程类似。1.4HWTACACS协议HWTACACS是在TACACS(RFC1492)基础上进行了功能增强的一种安全协议。该协议与RADIUS协议类似,主要是通过“客户端—服务器”模式与HWTACACS服务器通信来实现多种用户的AAA功能,可用于PPP、VPDN(VirtualPrivateDialNetwork)接入用户的认证、授权和计费。认证方式与RADIUS协议类似1.5基于域的用户管理在目前AAA的实现中,所有用户都属于某个域。用户属于哪个域是由用户名中带的“@”后的字符串来决定的,比如“user@hua”,就属于“hua”域;如果用户名中没有带“@”,对于普通用户,属于系统缺省的default域,对于管理用户,属于系统缺省的default_admin域。2华为AAA配置方式实例命令行介绍祥见配置手册组网拓扑图2.1采用RADIUS方式进行认证、授权和计费-命令行解析#user-interfacecon0//串口0user-interfacevty0//telnet/ssh登录方式线程0authentication-modeaaa//设置认证方式为aaauserprivilegelevel15//设置通过该线程登录用户等级为15idle-timeout00//设置用户不离线protocolinboundall//设置登录方式支持telnet和ssh#radius-servertemplateshiva//创建radius服务器模板radius-servershared-keycipher3MQ*TZ,O3KCQ=^Q`MAF41!!//配置RADIUS共享密钥-用来通过radius服务器的验证radius-serverauthentication129.7.66.661812//配置radius认证服务器地址以及端口号radius-serverauthentication129.7.66.671812secondary//配置radius备用认证服务器地址以及端口号radius-serveraccounting129.7.66.661813//配置radius计费服务器地址以及端口号radius-serveraccounting129.7.66.671813secondary//配置radius备用计费服务器地址以及端口号radius-serverretransmit5timeout10//配置radius请求报文超时重传次数已经超时时间aaa//进入aaa视图authentication-schemedefault//缺省的认证方案authentication-schemeradius//创建一个名称为radius认证方案authentication-moderadiushwtacacslocal//认证方式为radius、hwtacacs以及本地认证authorization-schemedefault//缺省的授权方案accounting-schemedefault//缺省的计费方案accounting-schemeradius//创建一个名称为radius的计费方案accounting-moderadius//配置当前的计费方案模式为radiusaccountingstart-failonline//配置计费方案hwtacacs的开始计费失败策略为:当开始计费失败时,允许用户上线。domaindefault//缺省的用户域domaindefault_admin//缺省的管理用户域domainhuawei//创建一个huawei的域authentication-schemeradius//配置该域的认证模式为radiusaccounting-schemeradius//配置该域的计费模式为radiusradius-serverradius//配置该域的radius服务器模板#2.2采用HWTACACS协议进行认证、计费和授权示例-命令行解析#user-interfacecon0//串口0user-interfacevty0//telnet/ssh登录方式线程0authentication-modeaaa//设置认证方式为aaauserprivilegelevel15//设置通过该线程登录用户等级为15idle-timeout00//设置用户不离线protocolinboundall//设置登录方式支持telnet和ssh#hwtacacs-servertemplateht//创建hwtacacs服务器模板hwtacacs-serverauthentication129.7.66.66//配置hwtacacs认证服务器地址hwtacacs-serverauthentication129.7.66.67secondary//配置hwtacacs备用认证服务器地址hwtacacs-serverauthorization129.7.66.66//配置hwtacacs授权服务器地址hwtacacs-serverauthorization129.7.66.67secondary//配置hwtacacs备用授权服务器地址hwtacacs-serveraccounting129.7.66.66//配置hwtacacs计费服务器地址hwtacacs-serveraccounting129.7.66.67secondary//配置hwtacacs备用计费服务器地址hwtacacs-servershared-keycipher3MQ*TZ,O3KCQ=^Q`MAF41!!//配置HWTACACS共享密钥-用来通过hwtacacs服务器的验证hwtacacs-servertimerquiet3//设置主用服务器恢复激活状态的时间为3分钟undohwtacacs-serveruser-namedomain-included//配置设备向HWTACACS服务器发送的报文中用户名不包含域名。#aaa//进入aaa视图domainname-parse-directionleft-to-right//配置域名解析方向是从左向右(缺省)authentication-schemedefaultauthentication-schemel-h//创建一个名称为1-h认证方案authentication-modehwtacacslocal//认证方式为hwtacacs以及本地认证authentication-superhwtacacssuper//来配置当前认证模板对用户提升级别进行认证时采用hwtacacs以及本地认证模式authorization-schemedefaultauthorization-schemehwtacacs//创建一个名称为hwtacacs授权方案authorization-modehwtacacs//授权方式为hwtacacsauthorization-cmd15hwtacacs//配置级别为15的用户按命令行授权accounting-schemedefaultaccounting-schemehwtacacs//创建一个名称为hwtacacs计费方案accounting-modehwtacacs//计费方式为hwtacacsaccountingrealtime3//配置hwtacacs计费方案为实时计费,计费间隔为3分钟accountingstart-failonline//配置计费方案hwtacacs的开始计费失败策略为:当开始计费失败时,允许用户上线。domaindefaultdomaindefault_admindomainhuawei//创建一个huawei的域authentication-schemel-h//配置该域的认证方式为1-h模板accounting-schemehwtacacs//配置该域的计费方式为hwtacacs模板authorization-schemehwtacacs//配置该域的授权方式为hwtacacs模板hwtacacs-serverht//配置该域的认证服务器为hwtacacs服务模板ht#domainhuaweiadmin//将huawei域设置为缺省的管理域2.3华为设备与思科设备通过radius登录验证配