本帖最后由 贺智文 于 2023-11-15 10:39 编辑
最近客户安全设备都要做tacacs认证,这个基本没啥客户用到过的配置,也算是接触了一次。
什么是TACACS 终端访问控制器控制系统TACACS(Terminal Access Controller Access-Control System),用于与UNIX网络中的身份验证服务器进行通信、决定用户是否有权限访问网络。各厂商在TACACS协议的基础上进行了扩展,例如思科公司开发的TACACS+和华为公司开发的HWTACACS。TACACS+和HWTACACS均为私有协议,在发展过程中逐步替代了原来的TACACS协议,并且不再兼容TACACS协议。 TACACS的产生背景TACACS是一种起源于二十世纪八十年代的AAA(认证、授权、计费)协议,用于与UNIX网络中的身份验证服务器进行通信、决定用户是否有权限访问网络。 1984年,美国**研究机构为了在MILNET中实现身份验证自动化,设计了最早的TACACS协议(RFC 927),使已经在一台主机登录的用户无需在同一网络的其他主机上重新验证身份。后来,思科公司在其网络产品中支持TACACS,最终对TACACS进行扩展(RFC 1492),扩展后的TACACS协议被称为Extended TACACS(XTACACS)。与最初的TACACS相比,XTACACS还实现了认证、授权和计费流程的相互独立,并且认证和授权可以在不同的服务器上进行,这无疑有助于管理员对用户进行精细管理和控制。 随着网络的发展,管理员对TACACS在服务器上部署的灵活性,和控制用户命令权限的灵活性都提出了更高的要求。因此,在TACACS和XTACACS的基础上,各厂商再次进行扩展,例如,华为公司开发了HWTACACS,思科公司开发了TACACS+。 TACACS、TACACS+和HWTACACS的关系 与早期的TACACS相比,HWTACACS和TACACS+主要有如下两点改进:认证、授权和计费过程都相互独立,认证和授权可以在不同的服务器上进行。这使得HWTACACS在服务器部署方面更加灵活。例如,可以用一台HWTACACS服务器A进行认证,另外一台HWTACACS服务器B进行授权。并且,授权时无需再重复进行认证的过程,仅需通知服务器B,用户已在服务器A上成功认证。 支持根据用户级别对执行的每一条命令行通过服务器进行授权,只有授权通过,命令行才允许执行。因此,更便于管理员进行设备管理。
由于TACACS和XTACACS使用UDP协议传输,而HWTACACS和TACACS+使用TCP协议传输,因此HWTACACS和TACACS+都无法与TACACS或XTACACS兼容。
而HWTACACS和TACACS+的认证流程与实现方式是一致的,因此设备使用HWTACACS协议时支持与TACACS+服务器对接。但HWTACACS属性和TACACS+属性在字段定义和解释上存在区别,因此属性之间不一定能够兼容。例如HWTACACS和TACACS+都支持属性tunnel-id,且都解释为建立隧道时的隧道本端用户名,HWTACACS设备就可以与TACACS+服务器对接。HWTACACS支持属性uppeak,但TACACS+不支持,那么TACACS+设备就不会解析该属性,无法对接属性信息。
协议简介 tacacs+协议全称 Terminal Access Controller Access Control System,终端访问控制器控制系统协议。
是在TACACS(RFC 1492)基础上进行了功能增强的安全协议。采用客户端/服务器模式实现,文章末尾会给出RFC文档链接。
tacacs+协议实现了3A功能(Authentication,Authorization and Accounting),基于TCP传输,服务器端默认监听端口49。认证、授权和计费流程可以看作是客户端和服务器之间的一次会话(session)。会话有一个唯一的会话ID,认证会话由多个报文交互组成,授权和计费只包含两个报文(request 和 reply),从这可以看出,会话流程还是相对简单的。
传输的时候需要建立tcp连接,tacacs+报文首部含有一个single connection mode标志位,用于表示是否支持单个连接上存在多个会话,如果不支持的话则每个会话则需要一个独立的连接。 tacacs+报文的消息体需要进行加密,加密的算法是从共享密钥、会话ID、版本和序列号反复计算MD5直到长度和tacacs+消息体相等,这时候再将该密钥和报文内容进行按位异或运算得到加密报文,服务器端收到报文后在进行相应的解密运算。加密流程如下:
完整介绍资料可以参考:https://blog.csdn.net/niguodehaoma_/article/details/131793322
我们设备用的都是TACACS+协议,常用的认证类型就两种: PAP协议认证类型 PAP认证类型只包含一个START报文和一个REPLY报文,START报文必须包含用户名信息和密码信息,其中用户名信息存储在START报文的user字段,密码存储在START报文的data字段,数据信息不需加密
CHAP协议认证类型CHAP认证类型只包含一个START报文和一个REPLY报文,START报文必须包含用户名信息和数据信息,其中用户名信息存储在START报文的user字段,数据存储在START报文的data字段,数据信息必须包含session_id、challenge和authentication。 session_id必须占用1个字节,authentication必须用16个字节,challenge长度等与data总长度减去session_id长度和认证信息长度,authentication是由session_id、用户密码和challenge通过MD5加密生成。 对应设备配置: AC:
AF:
对应认证逻辑: AC:新建管理员账号,填写本地密码,勾选外部认证,用户登录先校验本地密码,本地密码校验不通过情况下再去tacacs服务器校验。所以本地密码可以随便填写。
AF:新建管理员远程认证账号,无需本地密码,对接了tacacs服务器情况下,直接去服务器上校验用户名密码
|