文章目录
认证、 授权、 计费
Authentication、Authorization、Accounting
前言
方法列表是一组应用于 AAA 每个组件的方法。如果某种方法没有收到响应或返回了一条出错状态,将尝试列表中的下一种方法。
可以定义多个 AAA 服务器。如果列出的第一台服务器未响应或产生了错误信息,那么将尝试下一台服务器。
AAA 服务器可以成组,可以使用服务器组来处理某项特定任务。
认证( authentication)可以使用多种方法,包括 RADIUS、 TACACS+、Kerbero 5 以及在路由器本地配置的用户名。
授权( authorization)可以使用RADIUS或TACACS+来授权用户访问可用的服务。
计费( accounting)可以使用 RADIUS或TACACS+来跟踪和记录用户正在使用的服务和网络资源。
一、配置命令
1.启用 AAA 功能
(global) aaa new-mode 1
2、指定一台或多台 AAA 服务器
2.1 使用 RADIUS 服务器
(可选)设置所有RADIUS服务器的全局参数。
设置共享的路由器/服务器密钥。
(global) radius-server key {0 string |7 string | string}
共享密钥通过参数 string(明文字符串)来设置。如果字符串前有 0,或仅是字符串本身,密钥将在路由器配置中以明文形式显示出来。如果密钥前面有 7,密钥将被“隐藏”并在配置中以加密字符串的形式显示。
设置请求超时间隔。
(global) radius-server timeout seconds
在发出请求后,路由器将在 seconds 秒(1~1000;默认为 5 秒)之内等待RADIUS 服务器的响应。
设置请求重传次数。
(global) radius-server retransmit retries
如果未收到RADIUS服务器的响应, 路由器将会尝试请求 retries 次(1~100;默认为 3 次)。
设置服务器 dead 时间。
(global) radius-server deadtime minutes
如果在重传次数过后 RADIUS 服务器仍没有响应,路由器会在 minutes(0~1440;默认为 0 分钟)内将其标记为“dead(死亡)”状态,一旦某台服务器被标记为 dead 状态,路由器将跳过这台服务器并发送请求信息至下一台可用服务器。
定义一台或多台使用的服务器。
(global) radius-server host {hostname | ip-address} [auth-port port] [acct-port port] [timeout seconds] [retransmit retries] [alias {hostname | ip-address}] [key string]
RADIUS服务器通过主机名称或IP地址来标识。用户可以指定认证(auth-port;默认为 1645)和授权(acct-port;默认为 1646)使用的 UDP 端口。可以使用关键字 timeout(1~1000 秒)和retransmit(1~100)来设置路由器等待 RADIUS 响应的时间和重传次数,此操作将自动覆盖先前设置的全局参数。关键字alias可用来为单台 RADIUS服务器定义至多8个主机名称或IP地址。共享密钥key可以设置为 string(明文字符串)。一定要在最后设置密钥参数,否则路由器会将空格键后面的其他参数当做密钥来处理。
(可选)启用特定厂商的 RADIUS 属性(VSA)支持。
(global) radius-server vsa send [accounting | authorization]
使用此命令后,可以在NAS路由器和RADIUS服务器之间使用 VSA(属性26)来实现IETF草案中特定厂商的信息通信(授权属性**[authorization]**或计费属性[accounting])。
(可选)启用厂商私有的 RADIUS 属性支持。
(global)radius-server host {hostname | ip-address} non-stardard
此命令可使 Cisco IOS 软件支持非标准化的 RADIUS 属性。
2.2 使用 TACACS+服务器
(可选)为 TACACS+服务器设置全局共享路由器/服务器密钥。
(global) tacacs-server key key
此命令将共享密钥设置成了 string(明文字符串)。支持插入空格键。
定义一台或多台使用的服务器。
(global)tacacs-server host hostname [port port] [timeout seconds] [key string]
TACACS+服务器通过主机名称来标识。用户可以使用关键字port(默认为49)指定TACACS+使用的TCP端口。还可以使用关键字timeout来设置路由器等待TACACS+服务器响应的时间。共享密钥key可以设置为string(明文字符串)。一定要在最后设置密钥参数,否则路由器会将空格键后面的其他参数当做密钥来处理。
2.3 使用Kerberos服务器
在KDC(密钥分发中心)上创建用户和SRVTAB条目。
用户和SRVTAB条目是在Kerberos服务器上进行管理的。请参考 Kerberos文档来获取进一步的用法说明。SRVTAB文件与相关的密钥将在后续步骤中导入到路由器中。
定义Kerberos 域(realm)。
定义默认域。
(global)kerberos local-realm realm
此命令将使路由器处于名为 realm(大写文本字符串)的 Kerberos域中,域内的所有资源都注册到服务器上。此信息应通过服务器上的default_realm参数获得。
指定域内的Kerveros服务器。
(global)kerberos server realm {hostname | ip-address} [port]
Kerberos域realm(大写文本字符串)内的服务器通过主机名称和IP地址以及KDC使用的端口号port(默认为88)来标识。主机名称或 IP 地址应通过服务器上的 admin_server参数获得。
(可选)将 DNS 域或主机名称映射给 Kerberos 域。
(global) kerberos realm {domain | hostname} realm
此命令可将某个域名 domain(以点开头的完整域名)或主机名 hostname(不以点开头)映射到某个特定的域 realm(大写文本字符串)。
导入一个 SRVTAB 文件。
创建一个 DES 密钥。
(global) key config-key 1 string
此命令创建了一个密钥号为1的私有DES密钥 string(至多8个字母数字字符)。string用于为导入SRVTAB 条目生成 DES 密钥。
使用TFTP传输 SRVTAB 文件并创建SRVTAB 条目。
(global) kerveros srvtab remote tftp://hostname/filename
SRVTAB文件通过 URL 来标识,URL由服务器主机名称(或IP地址)后跟文件名构成。文件通过TFTP获得。
2.4 (仅用于 RADIUS 或 TACACS+)定义服务器组
定义一个组名称。
(global) aaa group server {radius | tacacs+} group-name
此命令创建了一个名为 group-name 的服务器组。组可以在已配置的 RADIUS或 TACACS+服务器中选择一个子集去处理特定的 AAA 服务。
向组中添加服务器。
(server-group)server ip-address [auth-port port] [acct-port port]
这条命令会将IP地址为ip-address的服务器添加到组中。用户还可以指定认证(auth-port;默认为1645)和授权( acct-port;默认为 1646)使用的UDP端口。
(可选)设置组的 dead 时间。
(server-group) deadtime minutes
配置服务器组的dead时间可使路由器跳过未响应的服务器组,宣告其“dead”状态并发送请求至下一个可用的服务器组。dead时间通过参数 minutes 指定( 0~1440;默认为 0 分钟)。
3、使用 AAA 认证( authentication)
3.1 创建某种认证类型的方法列表
(global) aaa authentication (login l ppp I nasi I arap l enable]
[defaultl list-name] method1 [me thod2…]
这条命令创建了一个名为list-name的认证方法列表。其中包含了一个按序进行尝试的登录认证方法列表。关键字default定义了一个在线路和接口上默认使用的认证方法列表。方法列表可应用到的认证类型包括 login(路由器的登录提示)、 enable(访问特权 EXEC 命令级别)、 ppp(通过 PPP 拨号访问)、 nasi ( Netware 异步服务接口)或 arap( AppleTalk 远程访问协议)。
login: enable(使用 enable 密码)、 krb5( Kerberos 5)、 krb5-telnet(用于 Telnet 认证的 Kerberos 5)、 line(使用线路密码)、 local(使用路由器本地的用户名及密码列表)、 local-case(使用路由器的用户名大小写敏感的用户列表)、 none(不使用认证;所有用户都可以成功认证)、 group radius(使用所有列出的 RADIUS 服务器)、group tacacs+(使用所有列出的 TACACS+服务器), 以及 group group-name (仅使用名为 group-name的服务器组中列出的服务器)。
enable:enable(使用 enable 密码)、 line(使用线路密码)、 none(不使用认证;所有用户都可以成功认证)、 group radius(使用所有列出的RADIUS 服务器)、 group tacacs+(使用所有列出的 TACACS+服务器),
以及 group group-name(仅使用名为 group-name 的服务器组中列出的服务器)。
ppp: if-needed(如果用户已经登录到了 TTY 线路上,则无需认证)、krb5( Kerberos 5)、 local(使用路由器本地的用户名及密码列表)、local-case(使用路由器的用户名大小写敏感的用户列表)、 none(不使用认证;所有用户都可以成功认证)、 group radius(使用所有列出的RADIUS 服务器)、 group tacacs+(使用所有列出的 TACACS+服务器),以及 group group-name(仅使用名为 group-name 的服务器组中列出的服务器)。
nasi: enable(使用 enable 密码)、 line(使用线路密码)、 local(使用路由器本地的用户名及密码列表)、 local-case(使用路由器的用户名大小写敏感的用户列表)、 none(不使用认证;所有用户都可以成功认证)、
group radius(使用所有列出的 RADIUS 服务器)、 group tacacs+(使用所有列出的 TACACS+服务器),以及 group group-name(仅使用名为group-name 的服务器组中列出的服务器)。
arap: auth-guest(如果用户具有 EXEC 访问权限,则允许 guest 登录)、guest(允许 guest 登录)、 line(使用线路密码)、 local(使用路由器本地的用户名及密码列表)、 local-case(使用路由器的用户名大小写敏感的用户列表)、 group radius(使用所有列出的 RADIUS 服务器)、 group tacacs+(使用所有列出的 TACACS+服务器),以及 group group-name
(仅使用名为 group-name 的服务器组中列出的服务器)。
3.2 将认证方法列表应用到路由器线路或接口上
(仅用于 PPP)在接口上执行认证。
选择一个接口。
(global) interface type slot/number
在接口上启用 PPP 认证。
(interface)ppp authentication {protocol1 [protocol2 …]} [if-needed] [list-name | default] [callin] [one-time]
PPP 认证可以通过一种或多种协议来实现(protocol1, protocol2, …):chap (CHAP)、 ms-chap(Microsoft CHAP) 或 pap(PAP)。如果 TACACS 或 TACACS+已经成功认证了某个用户,关键字 if-needed 可用来避免多余的PAP或CHAP认证。方法列表通过参数 list-name 指定,其中包含了 PPP 按序尝试的一系列认证方
法。如果不需要方法列表,可使用关键字 default让PPP使用默认的方法。使用关键字 callin 将只入站用户(呼叫)进行认证,关键字 one-time 允许用户名和密码同时出现在用户名字段。
(仅用于 Login、 NASI 或 ARAP)在线路上执行认证。
选择一条线路。
(global) line {aux | console | tty | vty} line-number [end-line-number]
具体的某条 Aux、 Console、异步或虚拟 TTY 线路可以通过参数 line-number来选定。加入参数 end-line-number 可以选定一组线路号。
在线路上应用认证。
(line) {login | nasi | arap} authetication {default | list-name}
认证类型可以是 login、 nasi 或 arap。名为 list-name 的方法列表用来认证线路上的用户。关键字 default 用于在未指定方法列表时使用默认的 AAA 认证方法。
3.3 (可选)使用 AAA 标语及提示符
创建一则登录标语。
(global) aaa authentication banner dstringd
此命令会将定制的标语 string(至多 2996 个字符)显示于用户名登录提示符之前。字符d代表定界符(任何未出现在 string 中的字符),需写在标语字符串的前后两端。
修改密码提示符。
(global) aaa authentication password-prompt string
默认的密码提示符为 Password:。用户可以使用此命令将其修改成 string(文本字符串;如果包含空格,则需使用双引号将其括起来)。
创建一则登录失败标语。
(global) aaa authentication fail-message dstringd
如果用户登录认证失败,将会显示这条定制的标语 string(至多 2996 个字符)。
字符d代表定界符(任何未出现在string中的字符),需写在标语字符串的前后两端。
4、使用 AAA 授权( authorization)
4.1 创建某种授权类型的方法列表
这条命令创建了一个名为 list-name 的授权方法列表。其中包含了一个按序进行尝试的授权认证方法列表。关键字 default 定义了一个在线路和接口上默认使用的授权方法列表。方法列表可应用到的认证类型包括 auth-proxy(使用基于用户的具体策略)、 network(与网络相关的服务请求)、 exec(运行路由器 EXEC shell的权限)、 commands(使用所有特权级别 level (0~15) 命令的权限)、 reverse-access(使用反向 Telnet 连接的权限)、 configuration(进入路由器全局配置模式的权限 1)或 ipmobile(使用移动 IP 服务的权限)。
列表中指定的方法( method1, method2, …)包括 group group-name(发送授权请求至名为 group-name 的服务器组)、 group radius(发送授权请求至所有
RADIUS 服务器)、 group tacacs+(发送授权请求至所有 TACACS+服务器)、if-authenticated(对已经通过认证的用户授予权限)、 none(不使用授权;所有用
户都可以成功授权)、 local(使用路由器本地的用户名及密码列表)。
4.2 将授权方法列表应用到线路或接口上
在线路上执行授权。
选择一条线路。
(global) line line-number [end-line-number]
Aux、 Console、异步或虚拟 TTY 线路可以通过参数 line-number 来选定。加入参数 end-line-number 可以选定一组线路号。
在线路上应用授权。
(line)authorization {arap | command level | exec | reverse-access} [default | list-name]
授权类型可以指定成 arap(AppleTalk 远程访问协议)、 commands level(执行特权级别 level 命令的权限)、 exec(使用路由器 EXEC shell 的权限)或reverse-access(使用反向 Telnet 的权限)。名为 list-name 的方法列表用来授权线路上的用户。关键字 default 用于在未指定方法列表时使用默认的 AAA 授权方法。
(仅用于 PPP)在接口上执行授权。
选择一个接口。
(global) interface type slot/number
在接口上应用授权。
(interface) ppp authorization [default | list-name]
名为 list-name 的方法列表用来授权接口上的 PPP 用户。关键字 default 用于在未指定方法列表时使用默认的 AAA 授权方法。
5、使用 AAA 计费(accounting)
5.1 创建某种计费类型的方法列表
这条命令创建了一个名为 list-name 的计费方法列表。其中包含了将要使用的计费方法。关键字 default 定义了一个在线路和接口上默认使用的计费方法。计费可记录的信息类型包括 auth-proxy(每个用户事件)、 system(系统级别事件)、network(与网络相关的服务请求)、 exec(路由器 EXEC 会话)、 connection(网络接入服务器发起的出站连接;h323 可为 VoIP 流量执行 H.323 网关计费)以及
commands(特权级别 level( 0~15)命令的使用)。
计费使用的方法可以是 group group-name(将计费记录发送至服务器组group-name)、 group radius(将计费记录发送至 RADIUS 服务器组)或 group tacacs+(将计费记录发送至 TACACS+服务器组)。
关键字broadcast可让路由器将计费记录发送到多台计费服务器上。计费记录类型可以选择成:start-stop(当进程启用时发送“开始”信号;在进程结束时发送“停止”信号)、 strop-only(不发送“开始”信号;当进程结束时发送“停止”信号)、wait-start(当进程启用时发送“开始”信号;进程实际要等到服务器接收到“开始”信号后才启用;在进程结束时发送“停止”信号)或none(不执行计费)。
5.2 (可选)对认证失败的执行计费记录
配置此命令后,当用户认证失败或 PPP 协商失败时,路由器将发送“停止”信号。
5.3 将计费方法列表应用到线路或接口上
在线路上执行计费。
选择一条线路。
(global) line line-number [end-line-number]
Aux、 Console、异步或虚拟 TTY 线路可以通过参数 line-number 来选定。加入参数 end-line-number 可以选定一组线路号。
在线路上应用授权。
(line) accounting {arap | command level | connection | exec} [default | list-name]
计费类型可以指定成 arap( AppleTalk 远程访问协议)、 commands level(特权级别 level EXEC 命令)、 connection( PAP 和 CHAP 认证) 或 exec(路由器 EXEC shell)。名为 list-name 的方法列表用来对线路上的用户执行计费。关键字 default用于在未指定方法列表时使用默认的 AAA 计费方法。
(仅用于 PPP)在接口上执行计费。
选择一个接口。
(global) interface type slot / number
在接口上应用计费。
( interface) ppp accounting default
此命令在接口上使用默认的 PPP 计费方法。
总结:配置实例
此例中,在路由器上配置了认证、 授权、计费的所有AAA功能。两台RADIUS服务器分别指定为192.168.161.45和 192.168.150.91,两台具有相同的密钥。一台TACACS+服务器位于192.168.44.10。最后定义了一个本地的用户名,用作在所有AAA 服务器都不能访问时最后的应对方法(“后门”)。
使用RADIUS服务器对异步接口的PPP访问进行认证,其次是本地认证。还对使用Telnet登录访问路由器的用户进行认证,首选 TACACS+服务器,其次是RADIUS 服务器,最后是本地认证。
使用RADIUS服务器和本地的方式对network和exec功能进行授权。用户通过PPP或Telnet访问网络必须先通过授权。还对 network和exec资源配置了计费通告功能,使用的是 RADIUS服务器。配置了路由器发送PPP和路由器 EXEC终端会话的计费记录。