tacacs+Word格式文档下载.docx
《tacacs+Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《tacacs+Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
当组合授权模式使用直接授权的时候,直接授权必须在最后。
authorization-modetacacslocalnone
当新建一个授权方案时,缺省使用本地授权。
RADIUS的认证和授权是绑定在一起的,所以不存在RADIUS授权模式。
计费方案与计费模式
AAA支持六种计费模式:
本地计费、不计费、RADIUS计费、TACACS计费、同时RADIUS、本地计费以及同时TACACS、本地计费。
TACACS+简介
TACACS+(TerminalAccessControllerAccessControlSystem)终端访问控制器访问控制系统,与我们IDsentrie的Radius协议相近。
不过TACACS+用的是TCP协议,Radius用的是UDP;
TACACS+将认证和授权分开,Radius将认证和授权绑定;
另外两者的加密方式也不相同(具体参见《TACACS和RADIUS比较》)。
它们的重要作用就是3A。
典型的TACACS应用就是EXEC授权,即给用户执行某些命令的权利,在这里的命令就是我们的CLIcommand。
我们可以详细的配置一个用户可以执行某些CLIcommand,不能执行某些CLIcommand,确实可以管理得非常严格。
当每次执行command时都会到tacacs+server上去进行授权。
不过当我们允许用户配置某一项,而它的subconfig中如果还有很多command,我们要逐项添加,可以对命令和参数进行详细的管理,不用担心有的用户乱操作了。
这个功能只限于CLI,在webUI上是没有用的,它的作用又显得不太重要了。
CiscoSecureACS
思科安全访问控制服务器为思科智能信息网络提供基于身份的全面的访问控制解决方案。
它是用于管理企业网络用户、管理员和网络基础设施资源的集成和控制层。
SecureACS(ACS)是具高可扩展性的高性能访问控制服务器,可作为集中的RADIUS和TACACS+服务器运行。
CiscoSecureACS将验证、用户访问和管理员访问与策略控制结合在一个集中的身份识别网络解决方案中,因此提高了灵活性、移动性、安全性和用户生产率,从而进一步增强了访问安全性。
它针对所有用户执行统一安全策略,不受用户网络访问方式的影响。
它减轻了与扩展用户和网络管理员访问权限相关的管理负担。
通过对所有用户帐户使用一个集中数据库,CiscoSecureACS可集中控制所有的用户权限并将他们分配到网络中的几百甚至几千个接入点。
对于记帐服务,CiscoSecureACS针对网络用户的行为提供具体的报告和监控功能,并记录整个网络上每次的访问连接和设备配置变化。
这个特性对于企业遵守SarbanesOxley法规尤其重要。
CiscoSecureACS支持广泛的访问连接,包括有线和无线局域网、宽带、内容、存储、IP上的语音(VoIP)、防火墙和VPN等。
TACACS+协议报文结构
1.TACACS报文头格式
图1:
TACACS+报文
1)Major:
TACACS+主版本号
2)Minor:
TACACS+次版本号,用于向后兼容扩展。
3)PacketType:
定义包的类型,合法值为:
TAC_PLUS_AUTHEN=0x01(认证)
TAC_PLUS_AUTHOR=0x02(授权)
TAC_PLUS_ACCT=0x03(计费)
4)SequenceNo:
当前会话中的数据包序列号。
会话中的第一个TACACS+数据包序
列号必须为1,其后的每个数据包序列号逐次加1。
因此客户机只发送奇序列号数据包,而TACACS+Daemon只发送偶序列号数据包。
当序列号达到255时,会话会重启并置回序列号为1。
5)Flags:
该字段包括各种位图格式的标志,Flag值表明数据包是否进行加密以及是否可以在一个TCP连接上进行多个会话。
6)SeesionID:
会话ID,用来区分多会话中数据交换,在对负载数据加密过程中也会用到。
7)Length:
TACACS+数据包主体总长(不包括头部)。
2.认证过程及报文格式
TACACS+认证有三种类型数据包:
开始(START)、继续(CONTINUE)和回复(REPLY)。
客户端(client)发送START和CONTINUE数据包,服务端(daemon)发送REPLY数据包。
认证开始时,客户端发送一个START消息到服务端,该消息描述了要执行的身份验证类型,可能还包括用户名和一些认证数据。
起始数据包仅作为TACACS+会话开始或者会话重置后紧接着的第一个消息(会话重置可能是由服务端的回复包发起的)。
起始数据包的序列号总是等于1。
服务端发送一个REPLY包以响应START包。
回复包表明认证是否结束或者继续。
如果认证继续,则回复包将指明所需要的新的认证信息。
客户端取出相关信息并以CONTINUE包的形式进行返回。
服务端以REPLY包来回复START包或者CONTINUE包,直到客户端在CONTINUE包指示要中止,此时会话将立即中止。
认证START报文格式
图2:
认证START报文
1)Action:
认证操作,合法值为:
TAC_PLUS_AUTHEN_LOGIN=0x01(登录)
TAC_PLUS_AUTHEN_CHPASS=0x02(修改密码)
TAC_PLUS_AUTHEN_SENDPASS=0x03(发送密码,已作废)
TAC_PLUS_AUTHEN_SENDAUTH=0x04(发送认证)
2)Priv_lvl:
认证权限级别,值域为0-15,可以在NAS客户端中设置,预设值为:
TAC_PLUS_PRIV_LVL_MAX=0x0f(最高级别)
TAC_PLUS_PRIV_LVL_ROOT=0x0f(ROOT用户级别)
TAC_PLUS_PRIV_LVL_USER=0x01(普通用户级别)
TAC_PLUS_PRIV_LVL_MIN=0x00(最低级别)
3)Authen_type:
认证类型,合法值为:
TAC_PLUS_AUTHEN_TYPE_ASCII=0x01(ASCII值)
TAC_PLUS_AUTHEN_TYPE_PAP=0x02(PAP协议)
TAC_PLUS_AUTHEN_TYPE_CHAP=0x03(CHAP协议)
TAC_PLUS_AUTHEN_TYPE_ARAP=0x04(ARAP协议)
TAC_PLUS_AUTHEN_TYPE_MSCHAP=0x05(微软CHAP协议)
4)Service:
认证服务,合法值为:
TAC_PLUS_AUTHEN_SVC_NONE=0x00(无服务)
TAC_PLUS_AUTHEN_SVC_LOGIN=0x01(登录)
TAC_PLUS_AUTHEN_SVC_ENABLE=0x02(enable服务)
TAC_PLUS_AUTHEN_SVC_PPP=0x03(PPP协议)
TAC_PLUS_AUTHEN_SVC_ARAP=0x04(ARAP协议)
TAC_PLUS_AUTHEN_SVC_PT=0x05(负载类型)
TAC_PLUS_AUTHEN_SVC_RCMD=0x06(远程命令)
TAC_PLUS_AUTHEN_SVC_X25=0x07(x.25协议)
TAC_PLUS_AUTHEN_SVC_NASI=0x08(NASI服务)
TAC_PLUS_AUTHEN_SVC_FWPROXY=0x09(防火墙代理)
其中ENABLE服务是指获得管理特权,类似于Linux系统中的“su”命令。
NONE服务是在没有任何其它服务的情况下填写的。
5)User:
用户名,可选值。
6)Port:
客户端认证所使用的端口,由客户端指定。
7)Rem_addr:
远程地址,可选值,由客户端指定。
8)Data:
负载数据。
认证REPLY报文格式
图3:
认证REPLY报文
1)Status:
认证当前状态,合法值为:
TAC_PLUS_AUTHEN_STATUS_PASS=0x01(通过)
TAC_PLUS_AUTHEN_STATUS_FAIL=0x02(失败)
TAC_PLUS_AUTHEN_STATUS_GETDATA=0x03(获取数据)
TAC_PLUS_AUTHEN_STATUS_GETUSER=0x04(获取用户名)
TAC_PLUS_AUTHEN_STATUS_GETPASS=0x05(获取密码)
TAC_PLUS_AUTHEN_STATUS_RESTART=0x06(重启会话)
TAC_PLUS_AUTHEN_STATUS_ERROR=0x07(错误)
TAC_PLUS_AUTHEN_STATUS_FOLLOW=0x21(使用备用deamon)
2)Flags:
该字段包括各种位图格式的标志,定义值:
TAC_PLUS_REPLY_FLAG_NOECHO=0x01(不回应)
3)Server_msg:
服务器返回给用户的提示信息,可选的。
4)Data:
认证CONTINUE报文格式
图4:
认证CONTINUE报文
1)Flags:
TAC_PLUS_CONTINUE_FLAG_ABORT=0x01(中止)
2)User_msg:
用户输入信息,用于答复Server_msg。
3)Data:
3.授权过程及报文格式
授权REQUEST报文格式
图5:
授权REQUEST报文
1)Authen_method:
授权方式,合法值为:
TAC_PLUS_AUTHEN_METH_NOT_SET=0x00(未设置)
TAC_PLUS_AUTHEN_METH_NONE=0x01(不使用)
TAC_PLUS_AUTHEN_METH_KRB5=0x02(krb5模式)
TAC_PLUS_AUTHEN_METH_LINE=0x03(命令行)
TAC_PLUS_AUTHEN_METH_ENABLE=0x04(enable模式)
TAC_PLUS_AUTHEN_METH_LOCAL=0x05(本地)
TAC_PLUS_AUTHEN_METH_TACACSPLUS=0x06(tacacs+模式)
TAC_PLUS_AUTHEN_METH_GUEST=0x08(来宾模式)
TAC_PLUS_AUTHEN_METH_RADIUS=0x10(radius模式)
TAC_PLUS_AUTHEN_METH_KRB4=0x11(krb4模式)
TAC_PLUS_AUTHEN_METH_RCMD=0x20(远程命令)
授权权限级别,同认证部分。
授权方式,同认证部分。
4)Authen_service:
授权服务,同认证部分。
5)User;
用户名。
客户端认证所使用的端口,同认证部分。
远程地址,同认证部分。
8)Arg_cnt:
参数个数。
9)Arg:
要执行命令的属性值对。
REQUEST和RESPONSE中的授权参数为属性值对。
属性和值为一串以“=”(0x3D)或“*”(0x2A)分隔的ascii码。
等号分隔的为强制参数,星号的为可选参数。
可选参数可能被客户端和服务端忽略,强制参数要求接收方能够解析并执行。
如果客户端收到的强制参数不能解析,则认为授权失败。
允许发送值为NULL的属性值对,但不允许整个属性值对字符串为空。
属性值的最大长度为255。
授权部分中的属性值对列表:
●service
基础服务,通用值有“slip”,“ppp”,“arap”,“shell”,“tty-daemon”,“connection”,“system”和“firewall”。
此属性为必须值。
●protocol
协议为服务的子集。
通用值有“lcp”,“ip”,“ipx”,“atalk”,“vines”,“lat”,“xremote”,“tn3270”,“telnet”,“rlogin”,“pad”,“vpdn”,“ftp”,“http”,“deccp”,“osicp”和“unknown”。
●cmd
可执行shell命令。
如果服务为“shell”,则此项必须指定。
如果命令自身的名字已经给出,则此项为NULL。
●cmd-arg
shell命令的参数,允许指定多个,但是必须依耐命令存在。
●acl
ASCII码表示的访问列表。
当服务为shell,命令为空时使用。
分为进和出控制列表。
●zonelist
数值区域列表(只适用于AppleTalk)。
●addr
网络地址
●addr-pool
地址池,用于给NAS分配地址的地址池标识。
●routing
路由,布尔值,用于指示路由信息是否被传播并从接口接受。
●route
给接口指示路线。
值必须以“<
dst_address>
<
mask>
[<
routing_addr>
]”的形式给出,如果未指定<
,路线结果必须通过连接对端获得。
●timeout
连接的超时计时器(分钟计)。
值为零表示不超时。
●idltime
连接的空闲超时时间(分钟计)。
●auto
自动命令。
●nospace
无空格,格布尔值,当服务为shell,命令为空时使用。
●nohangup
无挂起,布尔值,当服务为shell,命令为空时使用。
●priv_lvl
指定的权限级别。
●remote_user
远程用户ID(authen_method值必须为TAC_PLUS_AUTHEN_METH_RCMD)。
●remote_host
远程主机(authen_method值必须为TAC_PLUS_AUTHEN_METH_RCMD)。
●callback-dialstring
回调刻度串。
值为空或者一串刻度串。
空值表示服务可以选择,刻度串表示通过其它方式。
●callback-line
回调线,用于回调的线号。
●callback-rotary
回调旋转,用于回调的旋转号。
●nocallbak-verify
无回调验证,回调后不作验证。
授权RESPONSE报文格式
图6:
授权RESPONSE报文
授权状态,可取值:
TAC_PLUS_AUTHOR_STATUS_PASS_ADD=0x01(添加密码)
TAC_PLUS_AUTHOR_STATUS_PASS_REPL=0x02(密码替换)
TAC_PLUS_AUTHOR_STATUS_FAIL=0x10(失败)
TAC_PLUS_AUTHOR_STATUS_ERROR=0x11(错误)
TAC_PLUS_AUTHOR_STATUS_FOLLOW=0x21(使用备用deamon)
2)Server_msg:
服务端发给客户端的一串ascii码字符串,客户端决定是否做响应。
3)Arg_cnt:
授权使用的参数个数。
4)Arg:
要执行的命令的属性值对。
5)Data:
4.计费流程及报文
Tacacs+的计费和授权类似,报文格式也类似。
有固定部分和扩展部分,扩展部分使用的属性对和授权部分的相同,并在此基础上增加几个。
计费REQUEST报文
图7:
TAC_PLUS_ACCT_FLAG_MORE=0x01(更多,已废除)
TAC_PLUS_ACCT_FLAG_START=0x02(开始)
TAC_PLUS_ACCT_FLAG_STOP=0x04(结束)
TAC_PLUS_ACCT_FLAG_WATCHDOG=0x08(看门狗)
2)Authen_method:
授权模式。
3)Priv_lvl:
4)Authen_type:
5)Authen_service:
6)User;
7)Port:
8)Rem_addr:
9)Arg_cnt:
10)Arg:
计费部分中的属性值对列表;
●task_id
任务号,启停同一任务记录必须有匹配的(唯一)任务号。
●start_time
开始时间(以秒计,使用UNIX时间戳始点1970-1-100:
00)。
●stop_time
结束时间(以秒计)。
●elapsed_time
耗费时间,操作所花费的时间,当设备不使用实时时有用。
●timezone
时区,包含所有时间戳的时区缩写。
●event
事件,只有当“服务=系统”,当前值为“net_acct”,“cmd_acct”,“conn_acct”,“shell_acct”,“sys_acct”和“clock_change”使用。
表示系统级别发生变化。
标志域必须被设置不管服务是否启动。
●reason
原因,和事件相对应,描述事件发生的原因。
●bytes
字节数,操作所产生的字节交换数,分为接收和发送。
●paks
数据包数,操作所产生的数据包交换数,分为接收和发送。
●status
和操作相关的数值状态。
网络字节序,占四个字节。
0表示成功,负数表示错误,正数表示无错误的失败。
确切的状态值由客户端定义。
●err_msg
错误信息。
用于描述操作的ascii码字符串。
字符串的所有数值均使用十进制。
计费REPLY报文
图8:
计费状态,可取值:
TAC_PLUS_ACCT_STATUS_SUCCESS=0x01(成功)
TAC_PLUS_ACCT_STATUS_ERROR=0x02(错误)
TAC_PLUS_ACCT_STATUS_FOLLOW=0x21(使用备用deamon)
服务器在送一个REPLY包后会终止会话。
TAC_PLUS_ACCT_FLAG_START标记表明计费开始,TAC_PLUS_ACCT_FLAG_STOP用一终止计费,并且结束任务。
TAC_PLUS_ACCT_FLAG_WATCHDOG标记表示是一个更新记录,是否发送记录由客户端决定。
开始和停止标记是互斥的,当看门狗标记被设置后表示更新记录是在原有的开始记录上继续的。
如果开始记录没有被置,任务运行时显示最小记录。
停止记录不能与看门狗标记一同设置
5.TACACS+完整数据流程
图9:
TACACS+完整数据流程
模拟实验
拓扑:
图10:
实验拓扑
1.启用aaa
aaanew-model
2.配置ACS服务器
tacacs-serverhostx.x.x.x
tacacs-serverkey*****
3.配置设备local后门用户
usernametestuserpassword*****
之所以配置后门用户,是考虑到在ACS异常的时候仍能telnet到设备。
4.认证并应用到线路
aaaauthenticationloginlogin-listgrouptacacs+local
linevty015
loginauthenticationlogin-list
这里的login-list定义了访问控制的列表,即首先使用tacacs+认证,如果认证失败则使用local后门用户认证。
后面的将认证应用到vty、配置accounting均调用这个login-list。
5.授权
aaaauthorizationexecdefaultlocalif-authenticated
6.记账
aaaaccountingexeclogin-liststart-stopgrouptacacs+
aaaaccountingcommands1login-liststart-stopgrouptacacs+
aaaaccountingcommands15login-liststart-stopgrouptacacs+
aaaaccountingnetworklogin-liststart-stopgrouptacacs+