Tacacs+认证详细调研

1 、TACACS+概述

1.1 
 什么是TACACS+

TACACS+(Terminal
Access Controller Access Control System,终端访问控制器控制系统协议)是在TACACS协议的基础上进行了功能增强的安全协议。该协议与RADIUS协议的功能类似,采用客户端/服务器模式实现NAS与TACACS+服务器之间的通信。

1.2  TACACS+的用途

TACACS+协议主要用于PPP和VPDN(Virtual Private Dial-up Network,虚拟私有拨号网络)接入用户及终端用户的AAA。AAA是Authentication、Authorization、Accounting(认证、授权、计费)的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能。

认证:确认访问网络的远程用户的身份,判断访问者是否为合法的网络用户。

授权:对不同用户赋予不同的权限,限制用户可以使用的服务。例如用户成功登录服务器后,管理员可以授权用户对服务器中的文件进行访问和打印操作。

计费:记录用户使用网络服务中的所有操作,包括使用的服务类型、起始时间、数据流量等,它不仅是一种计费手段,也对网络安全起到了监视作用。

2、
TACACS+协议介绍

2.1 TACACS+基本消息交互流程

下图是TACACS+协议的基本信息交互流程:

以Telnet用户认证过程为例,基本消息交互流程如下:

(1) Telnet用户请求登录设备。

(2) TACACS+客户端收到请求之后,向TACACS+服务器发送认证开始报文。

(3) TACACS+服务器发送认证回应报文,请求用户名。

(4) TACACS+客户端收到回应报文后,向用户询问用户名。

(5) 用户输入用户名。

(6) TACACS+客户端收到用户名后,向TACACS+服务器发送认证持续报文,其中包括了用户名。

(7) TACACS+服务器发送认证回应报文,请求登录密码。

(8) TACACS+客户端收到回应报文,向用户询问登录密码。

(9) 用户输入密码。

(10) TACACS+客户端收到登录密码后,向TACACS+服务器发送认证持续报文,其中包括了登录密码。

(11) TACACS+服务器发送认证回应报文,指示用户通过认证。

(12) TACACS+客户端向TACACS+服务器发送授权请求报文。

(13) TACACS+服务器发送授权回应报文,指示用户通过授权。

(14) TACACS+客户端收到授权回应成功报文,向用户输出设备的配置界面。

(15) TACACS+客户端向TACACS+服务器发送计费开始报文。

(16) TACACS+服务器发送计费回应报文,指示计费开始报文已经收到。

(17) 用户请求断开连接。

(18) TACACS+客户端向TACACS+服务器发送计费结束报文。

(19) TACACS+服务器发送计费结束报文,指示计费结束报文已经收到。

2.2
TACACS+消息类型

由2.1可知TACACS+共有7种类型的消息:

1、Authentication_START

2、Authentication_CONTIUNE

3、Authentication_REPLY

4、Authorization_REQUEST

5、Authorization_RESPONSE

6、Accounting_REQUEST

7、Accounting_REPLY

由于我们只关心认证流程所以只涉及到以上的1、2、3类型报文及TACACS+报文头,共计四中类型的报文,以下分别对其报文结构加以说明。

2.3  TACACS+报文结构

2.3.1  TACACS+报文头

所有的TACACS+数据包都使用12字节长的包头,结构如下:

下面对各个字段分别进行说明:

1) 
Major:TACACS+主版本号,取值为0x0C

2) 
Minor:TACACS+次版本号,用于向后兼容扩展,一般为0。

3) 
Packet Type:定义包的类型,取值:

#define TAC_PLUS_AUTHEN         1    
// authentication表示认证

#define TAC_PLUS_AUTHOR         2    
// authorization表示授权

#define TAC_PLUS_ACCT           3    
// accounting表示计费

4) 
Sequence No:当前会话中的数据包序列号。会话中的第一个TACACS+数据包序列号必须为1,其后的每个数据包序列号逐次加1。因此客户机只发送奇序列号数据包,而TACACS+ Daemon只发送偶序列号数据包。当序列号达到255时, 会话会重启并置回序列号为1。

5) 
Flags:用来示一些特殊条件,比如不加密(0x01),支持单连接多会话(0x04)等

6) 
Session_id:为TACACS+会话的ID,是个随机数。

7) Length:为TACACS+报文除头部之外的长度

2.3.2  Authentication 消息

TACACS+认证有三种类型数据包:开始(START)、继续(CONTINUE)和回复(REPLY)。客户端(client)发送START和CONTINUE数据包,服务端(daemon)发送REPLY数据包。

认证开始时,客户端发送一个START消息到服务端,该消息描述了要执行的身份验证类型,可能还包括用户名和一些认证数据。起始数据包仅作为TACACS+舍话开始或者会话重置后紧接着的第一个消息(会话重置可能是由服务端的回复包发起的)。起始数据包的序列号总是等于1。服务端发送一个REPLY包以响应START包。回复包表明认证是否结束或者继续。如果认证继续,则回复包将指明所需要的新的认证信息。客户端取出相关信息并以CONTINUE包的形式进行返回。服务端以REPLY包来回复START包或者CONTINUE包,直到客户端在CONTINUE包指示要中止,此时会话将立即中止。

2.3.2.1 认证START报文格式:

1) Action:认证操作,合法值为:

TAC_PLUS_AUTHEN_LOGIN  =  Ox01
(甏录)

TAC PLUS ALTTHEN CHPASS=Ox02(修改密码)

TAC PLUS AUTHEN SENDPASS=Ox03(发送密码,已作废)

TAC PLUS AUTHEN SENDAUTH=Ox04(发送认证)

2) Priv lVl:认证权限级别,值域为0-15,可以在NAS客户端中设置,预设值为:

TAC PLUS PRIV LVL MAX=OxOf(最高级别)

TAC_PLUS_PRIV_LVL_ROOT=OxOf
(ROOT用户级别)

TAC PLUS PRIV LVL USER=Ox01(普通用户级别)

TAC PLUS PRIV LVL MIN=Ox00(最低级别)

3) Authen_type:认证类型,合法值为:

TAC_PLUS_AUTHEN_TYPE_ASCII  =  Ox01
(ASCII值)

TAC_PLUS_AUTHEN_TYPE_PAP  =  Ox02
(PAP伤iX)

TAC_PLUS_AUTHEN_TYPE_CHAP  =  Ox03
(CHAP协iX)

TAC_PLUS_AUTHEN_TYPE_ARAP  =  
Ox04 (ARAP协议)

TAC PLUS AUTHEN TYPE
MSCHAP=Ox05(微软CHAP协议)

4) Service:认证服务,合法值为:

TAC_PLUS_AUTHEN_SVC_NONE  =  Ox00
c无服务 )

TAC_PLUS_AUTHEN_SVC_LOGIN  = 
Ox01(登录)

TAC_PLUS_AUTHEN_SVC_ENABLE =
Ox02 (enable服务)

TAC_PLUS_AUTHEN_SVC_PPP  =  Ox03
(PPP协议)

TAC_PLUS_AUTHEN_SVC_ARAP  =  Ox04
(ARAP协 iX)

TAC PLUS AUTHEN SVC PT=Ox05(负载类型)

TAC PLUS AUTHEN SVC RCMD=Ox06(远程命令)

TAC_PLUS_AUTHEN_SVC_X25 = Ox07
(x. 25协iX)

TAC_PLUS_AUTHEN_SVC_NASI  =  Ox08
(NASI服务)

TAC_PLUS_AUTHEN
_SVC_FWPROXY=Ox09(防火墙代理)

其中ENABLE服务是指获得管理特权,类似于Linux系统中的“su”命令。NONE服务是在没有任何其它服务的情况下填写的。

5) User:用户名,可选值。

6) Port:客户端认证所使用的端口,由客户端指定。

7) Rem addr:远程地址,可选值,由客户端指定。

8) Data:负载数据。

2.3.2.2 认证REPLY报文格式:

1) Status:认证当前状态,合法值为:

TAC_PLUS_AUTHEN_STATUS_PASS  = 
Ox01(通过)

TAC_PLUS_AUTHEN_STATUS_FAIL  =  Ox02
(失败)

TAC PLUS AUTHEN STATUS
GETDATA=Ox03(获取数据)

TAC PLUS AUTHEN STATUS
GETUSER=Ox04(获取用户名)

TAC PLUS AUTHEN STATUS
GETPASS=Ox05(获取密码)

TAC PLUS AUTHEN STATUS
RESTART=Ox06(重启会话)

TAC_PLUS_AUTHEN_STATUS_ERROR =
Ox07(错误)

TAC_PLUS_AUTHEN_STATUS_FOLLOW   =  
Ox21 (使用备用  deamon)

2) Flags:该字段包括各种位图格式的标志,定义值:

TAC PLUS REPLY FLAG NOECHO =
Ox01应)

3) Server_msg:服务器返回给用户的提示信息,可选的。

4) Data:负载数据。

2.3.2.3 认证CONTINUE报文格式

1) Flags:该字段包括各种位图格式的标志,定义值:

TAC PLUS CONTINUE FLAG ABORT =
Ox01c中止)

2) User_msg:用户输入信息,用于答复Server_msg。

3) Data:负载数据。

2.4各类认证类型详解

Tacacs+认证协议支持ASCII值、PAP、CHAP、 ARAP协议、MS-CHAP等五种认证类型,现分别对其进行分析。

2.4.1 ASII值认证类型

ASII认证类型在认证流程中共包含START报文、REPLY报文和CONTINUE报文,其中START报文中可以携带用户名信息也可以不携带(在continue中携带),具体流程如下:

图2-4-1-1 start报文不含用户信息认证流程

图2-4-1-2 start报文包含用户信息认证流程

2.4.2 PAP协议认证类型

PAP认证类型只包含一个START报文和一个REPLY报文,START报文必须包含用户名信息和密码信息,其中用户名信息存储在START报文的user字段,密码存储在START报文的data字段,数据信息不需加密,认证流程如下:

图2-4-2-1 PAP协议类型认证流程

2.4.3 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加密生成。具体认证流程如下:

图2-4-3-1 CHAP协议类型认证流程


session_id


challenge


authentication


1 byte

 
16 bytes,auth=MD5(se_id,usr_pwd,challenge)

图2-4-3-2 START报文data字段数据结构

2.4.4 MS-CHAP协议认证类型

MS-CHAP认证类型只包含一个START报文和一个REPLY报文,START报文必须包含用户名信息和数据信息,其中用户名信息存储在START报文的user字段,数据存储在START报文的data字段,数据信息必须包含session_id、MS-challenge和MS-authentication。

session_id必须占用1个字节,authentication必须用49个字节,challenge长度等与data总长度减去session_id长度和authentication长度,认证信息是由用户密码、challenge等通过MD4和DES加密生成。具体认证流程如下:

图2-4-4-1 MS-CHAP协议类型认证流程


session_id


challenge


authentication


1 byte

 
49bytes

图2-4-4-2 START报文data字段数据结构


MS-CHAPv1协议authentication组成


NTHASH=MD4(user_pwd)


ChallengeResponse=DES(NTHASH[0-7]、challenge)||DES(NTHASH[7-14]、challenge)||DES(NTHASH[14-21]、challenge);challenge一般为8字节


ChallengeResponse封装在authentication的[24-47]字节中,并且authentication最后一个字节(49字节)值为1

图2-4-4-3 MS-CHAPv1authentication组成

2.4.5  ARAP协议认证类型

ARAP认证类型只包含一个START报文和一个REPLY报文,START报文必须包含用户名信息和数据信息,其中用户名信息存储在START报文的user字段,数据存储在START报文的data字段,数据信息必须包含ServerChallenge、ClientChallenge和authentication。

ServerChallenge、ClientChallenge和authentication都只占用8个字节,authentication是由用户密码作为DES_KEY对ServerChallenge和ClientChallenge进行DES加密生成。具体认证流程如下:

图2-4-5-1 ARAP协议认证流程


ServerChallenge


ClientChallenge


authentication


8byte


8字节


8bytes

图2-4-5-2 START报文data字段数据结构

该类型暂未通过代码实现验证。

2.5  TACACS+数据包的加密

TACACS+支持除包头之外所有信息的加密,加密方法如下:

1) 将session_id、secret key, 版本号和sequence number一起进行MD5运算(其中secret key 为TACACS客户端和服务器之间的共享秘密),计算结果为MD5_1。

2) 后续的MD5运算将上次MD5运算的结果也纳入运算范围,如下:

MD5_1 = MD5{session_id, key,
version, seq_no}

MD5_2 = MD5{session_id, key,
version, seq_no, MD5_1}

....

MD5_n = MD5{session_id, key,
version, seq_no, MD5_n-1}

3) 将所有的运算结果连接起来,直到总长度大于需要加密的数据的长度,然后截断到实际数据的长度,得到pseudo_pad:

pseudo_pad = {MD5_1 [,MD5_2 [
... ,MD5_n]]} truncated to len(data)

4) 随后将需要加密的数据和上面的pseudo_pad进行XOR运算,得到密文:

ENCRYPTED {data} == data ^
pseudo_pad

由于TACACS+对整个数据包进行加密,私密性要好于RADIUS,窃听者无法根据报文的内容来猜测网络的配置和用户的身份。

3、TACACS+服务器环境配置

1.  硬软件要求

硬件:Pentium IV 处理器, 1.8 GHz 或者更高 
操作系统:Windows 2000 Server 、Windows Server 2003, Enterprise Edition or Standard 
Edition (Service Pack 1) 
内存:最小1GB 
虚拟内存:最小1GB 
硬盘空间:最小1GB可用空间,实际大小根据日志文件的增长,复制和备份的需求而定。

2. 软件要求

浏览器:Microsoft
Internet Explorer 6 或者更高版本
 JAVA运行环境:Sun JRE 1.4.2_04 或更高版本
TACACS+服务器:安装cisco ACS

时间: 2024-10-22 13:12:59

Tacacs+认证详细调研的相关文章

某银行系统ACS认证之TACACS+认证方案

中国XX银行河北省分行 ACS项目实施方案 TACACS+认证 目录 项目背景........................................................................ 3 资源配置........................................................................ 3 实验网络架构...................................................

使用ISE为IOS和ASA做tacacs+认证

首先TACACS+是基于TCP 49的协议.所以这也能解释tacacs+和radius的基本区别:radius是一个UDP大包被所有的授权结果一股脑的推给终端,而tacacs+的TCP就可以基于每行一个命令一个个授权.路由器的aaa命令 aaa group server tacacs+ ISEserver-private 192.168.133.11 key cisco123 aaa new-model aaa authentication login default group ISE loc

httpd密钥认证详细配置

#CA生成一对密钥 [[email protected] ~]# cd /etc/pki/CA [[email protected] CA]# ls certs crl newcerts private [[email protected] CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus .....+++ ..........

哈希表 之 接入与身份认证技术概述

1 概述 随着信息化的高速发展,对国家.组织.公司或个人来说至关重要的信息越来越多的通过网络来进行存储.传输和处理,为获取这些关键信息的各种网络犯罪也对应急剧上升. 当前,网络安全在某种意义上已经成为一个事关国家安全.社会经济稳定的重大问题.得到越来越多的重视. 在网络安全中.身份认证技术作为第一道,甚至是最重要的一道防线.有着重要地位,可靠的身份认证技术能够确保信息仅仅被正确的"人"所訪问.身份认证技术提供了关于某个人或某个事物身份的保证.这意味着当某人(或某事)声称具有一个特别的身

Kerberos认证原理简介

1.1 What is Kerberos 1.1.1 简单介绍 Kerberos是一个用于鉴定身份(authentication)的协议, 它采取对称密钥加密(symmetric-key cryptography),这意味着密钥不会在网络上传输.在Kerberos中,未加密的密码(unencrypted password)不会在网络上传输,因此攻击者无法通过嗅探网络来偷取用户的密码. Kerberos利用对称加密和受信任的第三方(即KDC, key distribution center)来鉴别

Django自定义用户认证

自定义一个用户认证 详细参考官方文档: https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin.has_perms 一.创建用户的表 UserProfile():存放用户信息的表 UserProfileManager(): 用户创建用户的类方法 1.生成一个单独的Moel文件专门用来存放用户表 #!/usr/bin/env python #

Spring Security 之身份认证

Spring Security可以运行在不同的身份认证环境中,当我们推荐用户使用Spring Security进行身份认证但并不推荐集成到容器管理的身份认证中时,但当你集成到自己的身份认证系统时,它依然是支持的. 1. Spring Security中的身份认证是什么? 现在让我们考虑一下每个人都熟悉的标准身份认证场景: (1)用户打算使用用户名和密码登陆系统 (2)系统验证用户名和密码合法 (3)得到用户信息的上下文(角色等信息) (4)为用户建立一个安全上下文 (5)用户接下来可能执行一些权

加拿大留学未毕业怎么办理留服认证?

<ignore_js_op> 20 秒前 上传 下载附件 (37.68 KB) 最近遇到不少从加拿大留学归国的学子向我咨询学历认证的事,其中不少留学生对学历认证都存在一定的误区,所以特开一文普及普及,希望各位学子看了本文有所收获.本文较长,如果不想阅读,想直接找到学历认证难题的解决办法,请直接看第(三)第9条. 加拿大是世界上高等教育最为发达和普及的国家之一,其教学和科研质量在国际上久负盛名.多数公立大学主要依靠政府提供经费,同时也吸纳私人及民间资助,但无论学校规模如何,无论在大都市或是偏远小

说道说道SpringSecurity身份认证

Spring Security可以运行在不同的身份认证环境中,当我们推荐用户使用Spring Security进行身份认证但并不推荐集成到容器管理的身份认证中时,但当你集成到自己的身份认证系统时,它依然是支持的. 1. Spring Security中的身份认证是什么? 现在让我们考虑一下每个人都熟悉的标准身份认证场景: (1)用户打算使用用户名和密码登陆系统 (2)系统验证用户名和密码合法 (3)得到用户信息的上下文(角色等信息) (4)为用户建立一个安全上下文 (5)用户接下来可能执行一些权