×

德德 发表于 2024-8-12 13:54
  
感谢楼主的精彩分享,有助工作!!!
飞飞侠 发表于 2024-8-12 13:56
  
感谢楼主的精彩分享,有助工作!!!
朱墩2 发表于 2024-8-12 13:58
  
感谢楼主的精彩分享,有助工作!!!
焱燚 发表于 2024-8-12 14:02
  
感谢楼主的精彩分享,有助工作!!!
日出 发表于 2024-8-12 14:04
  
感谢楼主的精彩分享,有助工作!!!
小霞米 发表于 2024-8-12 14:07
  
感谢楼主的精彩分享,有助工作!!!
小西北 发表于 2024-8-12 14:09
  
感谢楼主的精彩分享,有助工作!!!
【AC/AF】被忽略的Tacacs认证
  

贺智文 6636

{{ttag.title}}
本帖最后由 贺智文 于 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服务器情况下,直接去服务器上校验用户名密码

打赏鼓励作者,期待更多好文!

打赏
14人已打赏

发表新帖
热门标签
全部标签>
技术盲盒
西北区每日一问
安全效果
干货满满
每日一问
技术笔记
【 社区to talk】
新版本体验
功能体验
技术咨询
产品连连看
标准化排查
GIF动图学习
2023技术争霸赛专题
每周精选
信服课堂视频
通用技术
自助服务平台操作指引
秒懂零信任
技术晨报
安装部署配置
答题自测
原创分享
升级&主动服务
社区新周刊
POC测试案例
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高手请过招
高频问题集锦
全能先锋系列
云化安全能力

本版版主

124
74
30

发帖

粉丝

关注

26
8
0

发帖

粉丝

关注

70
36
1

发帖

粉丝

关注

6
14
0

发帖

粉丝

关注

18
10
5

发帖

粉丝

关注

本版达人