TACACS(Terminal Access Controller Access Control System,终端访问控制器访问控制系统)是一种基于C/S结构的分布式AAA协议。TACACS+基于TACACS协议作了功能增强,用于为用户提供认证、授权和记账服务。下文内容针对TACACS+进行介绍。
TACACS+与RADIUS皆能提供AAA安全服务,相比RADIUS协议,TACACS+具有以下优点:
基于TCP协议实现,网络传输更可靠。
对报文主体进行加密,而非仅对密码进行加密,安全性更高。
认证和授权流程分离,远程部署时认证服务器和授权服务器可分离。
支持对配置命令进行授权和记账。
图1-1TACACS+报文结构中各个字段含义见表1-1。
字段 |
长度 |
含义 |
---|---|---|
Major Version |
4比特 |
主要TACACS+版本号 |
Minor Version |
4比特 |
次要TACACS+版本号 |
Packet Type |
1字节 |
报文类型,主要报文类型取值如下: 0x01:认证报文 0x02:授权报文 0x03:记账报文 |
Sequence Number |
1字节 |
当前会话中的数据包序列号(会话中的第一个TACACS+数据包序列号必须为1,后续每个数据包序列号逐次加一。客户机只发送奇序列号数据包,TACACS+ Daemon只发送偶序列号数据包) |
Flags |
1字节 |
表示数据包是否加密 |
Session ID |
4字节 |
TACACS+会话ID |
Length |
4字节 |
TACACS+数据包主体长度(不包括头部) |
如图1-2,TACACS+协议基本流程分为认证、授权、记账三个过程。其中NAS设备作为TACACS+客户端向TACACS+服务器申请安全服务。
(1)认证过程
a、用户向NAS设备发起登录请求。
b、NAS设备接收到用户请求,向TACACS+服务器发送认证开始报文,发起认证请求。
c、TACACS+服务器响应认证请求,并要求NAS设备提供用户名。
d、NAS设备要求用户终端提供用户名信息。
e、用户输入用户名,并由终端发送给NAS设备。
f、NAS设备将用户名通过认证持续报文发送给TACACS+服务器。
g、TACACS+服务器收到用户名信息,继续要求NAS设备提供用户密码。
h、NAS设备要求用户终端提供密码信息。
i、用户输入密码并通过终端发送给NAS设备。
j、NAS设备将密码通过认证持续报文发送给TACACS+服务器。
k、TACACS+服务器收到密码信息,验证通过后,向NAS设备回复认证通过的消息。
(2)授权过程
a、NAS设备向TACACS+服务器发起授权请求。
b、TACACS+服务器响应授权请求,向NAS回复授权通过的信息。
c、NAS设备收到授权通过信息,允许用户终端登录NAS设备作授权范围内的相关配置。
(3)记账过程
a、NAS设备向TACACS+服务器发送记账开始请求。
b、TACACS+服务器收到记账请求后开始记账,并回复NAS设备已收到记账请求的信息。
c、若用户退出时,NAS收到用户退出的信息后通知TACACS+服务器记账结束。
d、TACACS+收到记账结束报文后结束记账,并向NAS设备回复已结束记账的信息。
配置TACACS+基本功能
(可选)配置TACACS+可达性检测
(可选)配置TACACS+服务器组
配置设备与TACACS+服务器的通信参数,保证设备与服务器之间通信正常,设备能够正确向TACACS+服务器发起AAA认证、授权、记账等功能的申请和应答。
配置TACACS+基本功能只是保障设备与TACACS+服务器能够正确通信,若需要为用户提供AAA安全服务,仍需要在使用的AAA方法列表中引用该TACACS+服务器。
进入特权模式。
enable
进入全局配置模式。
configure terminal
启用AAA。
aaa new-model
配置TACACS+服务器。
tacacs-server host { ipv4-address | ipv6-address } [ port port-number ] [ test username username ] [ idle-time idle-time ] [ timeout timeout ] [ key [ 0 | 7 ] key ]
缺省情况下,未配置TACACS+服务器。
配置服务器时可同时指定该服务器的共享密钥,若未指定,则使用全局共享密钥。
(可选)配置设备与TACACS+服务器的全局共享密钥。
tacacs-server key [ 0 | 7 ] key
缺省情况下,未配置设备与TACACS+服务器的全局共享密钥。
(可选)配置TACACS+报文的源地址。
ip tacacs source-interface interface-type interface-number
缺省情况下,未配置TACACS+报文的源地址,该地址由网络层配置。
通过指定报文出口,选择出口上的第一个IP地址作为TACACS+报文的源地址。
(可选)配置TACACS+服务器的超时时间。
tacacs-server timeout timeout
缺省情况下,设备与TACACS+服务器通信时,等待服务器的超时时间为5秒。
TACACS+服务器的可达性状态只有可达或者不可达两种,设备不会向处于不可达状态的TACACS+服务器发送接入用户的认证、授权和记账请求,除非该TACACS+服务器所在TACACS+服务器组的所有服务器均为不可达状态。
设备上维护着各个TACACS+服务器的可达性状态。在业务处理时,设备优先选择状态为可达的服务器,以提高TACACS+业务的处理性能。
设备支持对指定的TACACS+服务器进行主动探测来判断服务器是否可达。若配置主动探测功能,设备将定期向该TACACS+服务器发送探测请求(认证请求或者记账请求),可达状态下主动探测间隔为60分钟,不可达状态下主动探测间隔为1分钟。
若要为指定的TACACS+服务器开启主动探测功能,在配置TACACS+服务器时需要做以下配置。
配置该TACACS+服务器的测试用户名。
至少配置一个该TACACS+服务器的被测端口(认证端口或者记账端口)。
判定TACACS服务器不可达的标准需要同时满足以下两个条件:
设备在不可达标准的超时时间内未收到来自TACACS+服务器的正确响应报文。
设备连续向同一个TACACS+服务器发送的请求报文次数达到不可达标准的超时次数。
对处于不可达状态的TACACS+服务器,满足以下任一条件,则认为该TACACS+服务器进入可达状态。
设备收到来自该TACACS+服务器的正确响应。
该TACACS+服务器处于不可达状态超过tacacs-server deadtime配置的时间,并且该TACACS+服务器没有启用主动探测功能。
在设备上更新该TACACS+服务器的认证端口或者记账端口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置设备判定TACACS+安全服务器不可达的标准。
tacacs-server dead-criteria { time timeout tries tries-number | time timeout | tries tries-number }
缺省情况下,设备判定安全服务器不可达的标准为:服务器不可达60秒,连续超时10次。
(可选)配置设备停止向不可达状态的TACACS+服务器发送请求报文的时长。
tacacs-server deadtime deadtime
缺省情况下,即使TACACS+安全服务器不可达,设备仍然往该TACACS+服务器发送请求。
如果设备对一台TACACS+安全服务器启用了主动探测功能,那么tacacs-server deadtime的时间参数对该TACACS+安全服务器不起作用。
每个TACACS+服务器组可添加一台或多台TACACS+服务器,整个服务器组作为一个整体为用户提供AAA服务。
TACACS+安全服务是AAA服务的一种,需要结合AAA功能使用,作为AAA方法列表中的一个方法为用户提供安全服务。
配置认证、授权和记账方法列表时,可以分别指定不同的服务器组。
在自定义服务器组中,只能指定并应用默认服务器组中的服务器。
TACACS+服务器组支持指定VRF,在使用指定VRF的服务器组时,设备与远程服务器通信使用的源地址要在对应VRF中查找获取。但若使用命令ip tacacs+ source-interface指定请求报文的源接口时,则从该源接口获取到的IP地址优先于在VRF中查找得到的IP地址。
服务组名不能使用预定义的关键字tacacs+。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置TACACS+服务器组。
aaa group server tacacs+ group-name
缺省情况下,未配置TACACS+服务器组。
通过对TACACS+服务器进行分组,认证、授权、计帐可以使用不同的服务器组来完成。
配置TACACS+服务器组引用服务器。
server { ipv4-address | ipv6-address }
缺省情况下,服务器组未配置服务器。
(可选)配置TACACS+服务器组的VRF。
ip vrf forwarding vrf-name
缺省情况下,未配置TACACS+服务器组的VRF。
TACACS+服务器组中配置的VRF,必须是在全局配置模式下通过vrf definition命令配置的合法VRF名字。
(可选)配置报文携带nas-ip属性。
nas-ip { ipv4-address | ipv6-address }
缺省情况下,报文不携带nas-ip属性。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过执行debug命令来查看各类信息。
注意
debug命令会输出调试信息,占用系统资源。使用完毕后,请立即关闭调试开关。
TACACS+监视与维护
作用 |
命令 |
---|---|
查看设备和各TACACS+服务器的交互运行情况 |
show tacacs |
打开TACACS+的调试开关 |
debug tacacs+ |
Login用户通过TACACS+服务器实现认证。
Login 认证使用TACACS+组网图
在TACACS+ server上配置设备信息、添加Login用户等。
在设备上开启AAA安全服务。
在设备上配置TACACS+服务器信息。
配置TACACS+的认证方法列表。
在特定线路上应用TACACS+认证方法。
在TACACS+服务器上配置设备信息、添加Login用户(配置略,具体参见对应TACACS+服务器的配置手册)。
开启AAA安全服务。
Device> enable
Device# configure terminal
Device(config)# aaa new-model
配置TACACS+服务器(此处TACACS+服务器地址为192.168.1.3,共享密钥为sharekey)。
Device(config)# tacacs-server host 192.168.1.3 key sharekey
配置认证方法列表。
Device(config)# aaa authentication login tacacs-method group tacacs+
在线路上应用认证方法。
Device(config)# line vty 0 4
Device(config-line)# login authentication tacacs-method
# 用户输入正确的用户名密码后,能够成功登录设备。
User Access Verification
Username:hostname1
Password:password1
Device#
!
aaa new-model
!
aaa authentication login tacacs-method group tacacs+
!
tacacs-server host 192.168.1.3 key 7 $10$275$g8oXDDIPVeA=$
!
line console 0
line vty 0 4
login authentication tacacs-method
!
设备配置的共享密钥与TACACS+服务器使用的共享密钥不一致。
用户的认证、授权和记账三种服务使用不同的TACACS+服务器组。
TACACS+的认证、授权和记账分离组网图
在TACACS+ server上配置设备信息、添加Login用户等。
在设备上开启AAA安全服务。
在设备上配置TACACS+服务器信息,并将其加入不同的TACACS+服务器组。
配置TACACS+的认证、授权和记账方法列表。
在特定线路上应用TACACS+认证、授权和记账方法。
在TACACS+服务器上配置设备信息、添加Login用户(配置略,具体参见对应TACACS+服务器的配置手册)。
开启AAA安全服务。
Device> enable
Device# configure terminal
Device(config)# aaa new-model
配置TACACS+服务器A,并将其加入TACACS+服务器组tacacs1。(此处TACACS+服务器A的地址为192.168.1.3,共享密钥为sharekey)。
Device(config)# tacacs-server host 192.168.1.3 key sharekey
Device(config)# aaa group server tacacs+ tacacs1
Device(config-gs-tacacs+)# server 192.168.1.3
Device(config-gs-tacacs+)# exit
参照配置服务器组tacacs1的步骤,依次配置服务器组tacacs2和tacacs3。
Device(config)# tacacs-server host 192.168.1.4 key sharekey
Device(config)# aaa group server tacacs+ tacacs2
Device(config-gs-tacacs+)# server 192.168.1.4
Device(config-gs-tacacs+)# exit
Device(config)# tacacs-server host 192.168.1.5 key sharekey
Device(config)# aaa group server tacacs+ tacacs3
Device(config-gs-tacacs+)# server 192.168.1.5
Device(config-gs-tacacs+)# exit
配置认证方法列表使用服务器组tacacs1、授权方法列表使用服务器组tacacs2、记账方法列表使用服务器组tacacs3。
Device(config)# aaa authentication login tacacs-method group tacacs1
Device(config)# aaa authorization exec radius-method group tacacs2
Device(config)# aaa accounting exec radius-method start-stop group tacacs3
在线路上应用认证方法。
Device(config)# line vty 0 4
Device(config-line)# login authentication tacacs1
Device(config-line)# authorization exec tacacs2
Device(config-line)# accounting exec tacacs3
# 用户输入在TACACS+服务器A上配置的合法用户名密码后,能够成功登录设备。
User Access Verification
Username:hostname1
Password:password1
Device#
# 登录设备后,用户只拥有TACACS+服务器B授予的权限级别,仅能运行该权限级别下的命令。
# 用户退出登录后,在TACACS+服务器C上能够查看到该用户的记账信息。如何查看记账信息请参见对应TACACS服务器的配置手册。
!
aaa new-model
!
aaa accounting exec radius-method start-stop group tacacs3
aaa authorization exec radius-method group tacacs2
aaa authentication login radius-method group tacacs1
!
tacacs-server host 192.168.1.3 key 7 $10$275$g8oXDDIPVeA=$
tacacs-server host 192.168.1.4 key 7 $10$275$g8oXDDIPVeA=$
tacacs-server host 192.168.1.5 key 7 $10$275$g8oXDDIPVeA=$
!
!
aaa group server tacacs+ tacacs1
server 192.168.1.3
!
aaa group server tacacs+ tacacs2
server 192.168.1.4
!
aaa group server tacacs+ tacacs3
server 192.168.1.5
!
line console 0
line vty 0 4
accounting exec tacacs3
authorization exec tacacs2
login authentication tacacs1
!
设备配置的共享密钥与RADIUS服务器使用的共享密钥不一致。
向服务器组加入未定义的服务器。
配置TACACS+可达性检测,用于发现处于不可达状态的TACACS+服务器。
TACACS+可达性检测组网图
配置全局TACACS+服务器不可达的判定标准。
配置TACACS+服务器的IP地址,指定主动探测的相关参数。
# 配置全局TACACS+服务器不可达的判定标准为连续5次探测超时,超时时间为120秒。
Device> enable
Device# configure terminal
Device(config)# radius-server dead-criteria time 120 tries 5
# 配置TACACS+服务器的IP地址为192.168.1.3,探测用户名为test,探测间隔为90分钟。
Device(config)# tacacs-server host 192.168.1.3 test username test idle-time 90
使设备与192.168.1.22服务器网络通讯断开。通过设备进行TACACS+认证。120秒后,使用命令show tacacs命令查看服务器状态为Dead。
Hostname# show tacacs server
Tacacs+ Server : 192.168.1.3/49
state: Dead
Socket Opens: 0
Socket Closes: 0
Total Packets Sent: 0
Total Packets Recv: 0
Reference Count: 1
Tacacs capability:
mgmt enable: true
vrf enable: true
!
tacacs-server host 192.168.1.3 test username test idle-time 90
tacacs-server dead-criteria time 120 tries 5
!