什么是TACACS,如何配置TACACS?
简介
本文档介绍华为公司实现的TACACS协议-HWTACACS,内容包括TACACS、TACACS+与HWTACACS的关系,HWTACACS与TACACS+的兼容性、HWTACACS与RADIUS的对比、以及HWTACACS的优势功能(命令行授权和事件记录)。最后,以华为S系列交换机作为接入设备为例,介绍与TACACS服务器对接的基本配置。
了解TACACS、TACACS+和HWTACACS的关系
终端访问控制器控制系统TACACS(Terminal Access Controller Access-Control System),是一种起源于二十世纪八十年代的AAA(认证、授权、计费)协议,用于与UNIX网络中的身份验证服务器进行通信、决定用户是否有权限访问网络。在之后的发展中,各厂商在TACACS协议的基础上进行了扩展,例如思科公司开发的TACACS+和华为公司开发的HWTACACS。TACACS+和HWTACACS均为私有协议,在发展过程中逐步替代了原来的TACACS协议,并且不再兼容TACACS协议。
对比HWTACACS和TACACS+
HWTACACS协议可以兼容TACACS+协议,S系列交换机作为接入设备可以与TACACS+服务器对接实现AAA功能。
HWTACACS协议与TACACS+协议定义的报文结构和报文类型一致。两种协议的主要区别在于授权和计费报文中携带的属性含义或类型不完全一致。例如,华为S系列交换机对接TACACS+服务器对Telnet用户认证时,基本的认证功能、授权用户级别功能、命令行授权功能等都能正常实现,如有其它额外需求,可分别查询HWTACACS属性信息和TACACS+属性信息,两者都支持时,需求就能正常实现。HWTACACS属性信息如表1-1所示,TACACS+属性信息请参考思科网站的文档“TACACS Attribute-Value Pairs”。
属性名 |
属性说明 |
---|---|
acl |
授权的ACL ID。 |
addr |
用户的IP地址。 |
autocmd |
用户登录到设备后自动执行的命令。 |
bytes_in |
设备接收到的流量。其中,K、M、G分别表示流量单位KByte,MByte,GByte,如果没有,则单位是Byte。 |
bytes_out |
设备发送的流量。其中,K、M、G分别表示流量单位KByte,MByte,GByte,如果没有,则单位是Byte。 |
callback-line |
回呼号码,即服务器传递过来可以显示给用户的信息,例如移动电话号码等。 |
cmd |
在shell上执行的命令行,最大长度为251字符。命令行记录时封装的是完整的命令行,命令行授权时封装的是命令行的第一个关键字。 |
cmd-arg |
命令行授权请求时,请求授权的命令行参数。最后一个命令行参数后需要再封装一个cmd-arg=<cr>结尾。 |
disc_cause |
下线原因,仅结束计费请求报文支持该属性。包括:
|
disc_cause_ext |
扩展的下线原因,仅结束计费请求报文支持该属性。包括:
|
dnaverage |
下行平均速率,单位是bit/s。 |
dnpeak |
下行峰值速率,单位是bit/s。 |
dns-servers |
主DNS服务器的IP地址。 |
elapsed_time |
用户的在线时长,单位是秒。 |
ftpdir |
FTP用户的初始目录。 |
gw-password |
隧道密码,字符串类型,长度范围是1~248。如果所包含的属性值超出了允许的设置范围则仅取前248个字符。 |
idletime |
空闲切断时间,即服务器会自动切断空闲切断时间内没有进行任何操作的用户。 |
l2tp-hello-interval |
L2TP Hello报文的间隔时间,目前设备尚不支持该属性。 |
l2tp-hidden-avp |
L2TP的隐藏属性值对AVP(Attribute Value Pair),目前设备尚不支持该属性。 |
l2tp-nosession-timeout |
L2TP无会话时切断时间,即无会话时,L2TP隧道将会该时间间隔后被拆除。目前设备尚不支持该属性。 |
l2tp-group-num |
L2TP组号,只有下发了该属性,其他的L2TP属性才能生效,如果没有下发该属性,其他L2TP属性都会被忽略。 |
l2tp-tos-reflect |
L2TP的TOS的值,目前设备尚不支持该属性。 |
l2tp-tunnel-authen |
是否进行L2TP的隧道认证。0表示不进行隧道认证,1表示进行隧道认证。 |
l2tp-udp-checksum |
L2TP的UDP包的检验和。 |
nocallback-verify |
回呼之后不需要验证。 |
nohangup |
设备是否自动切断用户的连接,取值为true或者false。该属性依附于autocmd属性,在配置了autocmd参数后,用户执行完autocmd的命令后是否将用户切断。true表示不切断,false表示切断。 |
paks_in |
设备接收到的包数,单位是个。 |
paks_out |
设备发送的包数,单位是个。 |
priv-lvl |
用户的级别。 |
protocol |
协议类型,是业务类型的一个子集,针对ppp、connection业务类型生效。目前支持“pad”、“telnet”、“ip”和“vpdn”四种协议类型。
|
task_id |
任务ID,对于同一任务,其开始和结束记录的task_id必须相同。 |
timezone |
当地时区。 |
tunnel-id |
建立隧道时的隧道本端用户名,字符串形式,长度范围是1~29。如果所包含的属性值超出了允许的设置范围则仅取前29个字符。 |
tunnel-type |
将要建立的隧道类型。 |
service |
业务类型,标识当前计费或授权的业务。 |
source-ip |
隧道本端IP的地址。 |
upaverage |
上行平均速率,单位是bit/s。 |
uppeak |
上行峰值速率,单位是bit/s。 |
对比HWTACACS和RADIUS
RADIUS是最常用的AAA协议,HWTACACS与其相比有很多相似的地方,例如都采用Client/Server结构、都使用密钥机制对用户信息进行加密以及都具备扩展性等。HWTACACS与RADIUS的不同之处如下所示:
- 数据传输方式
RADIUS通过UDP传输,认证、计费端口号分别为1812、1813。HWTACACS通过TCP传输,认证、授权和计费端口号均为49。UDP是无连接的数据传输方式,因此,RADIUS通过报文重传超时机制等保证报文能够尽力的发往对端;HWTACACS使用面向连接的数据传输方式TCP,相比而言网络传输更可靠。
- 报文加密方式
HWTACACS除了报文头外,对报文主体全部进行加密。RADIUS只对认证请求报文(Access-Request)的密码信息进行加密,其他信息如用户名、授权和计费信息未被加密。在实际网络环境中,报文主体全部加密更有利于通信安全。
- 认证和授权
RADIUS的认证与授权过程融合、不能分离,服务器的认证接受报文中(Access-Accept)包含授权信息。HWTACACS的认证、授权和计费过程相互独立,认证和授权可以在不同的服务器上进行。这使得HWTACACS在服务器部署方面更加灵活。例如,可以用一台HWTACACS服务器A进行认证,另外一台HWTACACS服务器B进行授权。并且,授权时无需再重复进行认证的过程,仅需通知服务器B,用户已在服务器A上成功认证。
- 设备管理
RADIUS不支持命令行授权功能,用户可执行的命令仅受用户级别控制。HWTACACS支持命令行授权功能,用户可执行的命令行受AAA授权和用户级别的双重控制。因此,HWTACACS能够更灵活的控制的用户可执行的命令行,更方便进行设备管理。
- 协议通用性
RADIUS是标准协议,基本所有主流设备厂商都支持,可对接的服务器选择更多,实际网络中应用最多。HWTACACS属于私有协议,相比而言有局限性。
基于HWTACACS协议自身的特征,与RADIUS协议相比,它更加适用于登录用户的身份认证场景。并且,在登录用户身份认证场景中,HWTACACS还具备以下优势功能:
- 命令行授权:如图1-1所示,用户HWTACACS 认证成功登录到设备后,支持根据用户级别对执行的每一条命令行通过HWTACACS服务器进行授权,只有授权通过,命令行才允许执行。
- 事件记录:如图1-2所示,设备支持发送以下事件到HWTACACS 服务器存档:
- 命令行操作:用户在设备上成功执行的所有命令。
- 连接事件:例如设备作为Telnet 客户端成功登录或退出其他网络设备的连接。
- 系统级事件:因执行reboot 命令导致的设备重启。
配置HWTACACS
下面介绍配置HWTACACS的基本步骤。
- 配置AAA方案。
在认证方案、授权方案和计费方案中配置认证模式、授权模式和计费模式都为HWTACACS。HWTACACS认证、授权和计费相互独立,可以分别在不同的服务器上配置,但一般使用相同的服务器。
- 建议配置本地认证和本地授权为备份的认证模式和授权模式,以确保在服务器故障的情况下,用户可以认证上线。此时,需要在设备上配置本地用户。
- 交换机不支持本地计费功能,当认证方案中包含本地认证时,开始计费失败策略需要配置为“开始计费失败,允许用户上线”。
# aaa authentication-scheme tac1 authentication-mode hwtacacs local //认证模式为HWTACACS认证,备份认证模式为本地认证 authorization-scheme tac1 authorization-mode hwtacacs local //授权模式为HWTACACS授权,备份授权模式为本地授权 accounting-scheme tac1 accounting-mode hwtacacs accounting start-fail online //开始计费失败,允许用户上线 #
- 配置服务器模板。
在服务器模板下,指定与交换机对接的服务器的IP地址、端口号(默认为49)和共享密钥,交换机上的配置信息需要与服务器上的信息保持一致。
# hwtacacs-server template t1 hwtacacs-server authentication 10.1.1.2 hwtacacs-server authorization 10.1.1.2 hwtacacs-server accounting 10.1.1.2 hwtacacs-server shared-key cipher %^%#!~;V,L$O!#P7jD#k]wgL)ChiX74XR-)jn.:m={!<%^%# #
- 配置本地用户。当配置本地认证为备份认证模式时,需要配置此步骤。配置本地用户包括配置本地用户名、密码、用户级别和接入类型。本地用户密码在配置文件中显示为密文形式。本地用户级别默认为0级,可配置级别为0~15级。
# aaa local-user user1 password irreversible-cipher $1a$~p]oP2VS:9$[._-/`)oN$5*l\2~IqR=g}g0%kay+H~vlLF/g<^A$ local-user user1 privilege level 15 local-user user1 service-type telnet #
- (可选)配置命令行授权。
命令行授权功能被应用后,执行undo authorization-cmd命令,将导致该用户无法执行除quit外的任何命令。此时用户需要重新登录。
# aaa authorization-scheme tac1 authorization-mode hwtacacs local authorization-cmd 15 hwtacacs local //指定对15级用户进行命令行授权。并且,当服务器故障、转入本地授权后,仅根据用户级别控制可执行的命令行 #
- (可选)配置事件记录。
aaa recording-scheme sch0 recording-mode hwtacacs t1 cmd recording-scheme sch0 outbound recording-scheme sch0 system recording-scheme sch0
- 配置域。
配置用户所属的域并在域下绑定AAA方案和服务器模板。
# aaa domain huawei authentication-scheme tac1 authorization-scheme tac1 accounting-scheme tac1 hwtacacs-server t1 #
- 配置服务器,以思科ACS为例。
服务器的配置步骤包括:添加设备、添加用户、配置用户级别为15级、配置命令行授权。
在Reports and Activity -> TACACS+ Administration中可以查看所有用户命令执行成功或失败的日志记录。