AR100, AR120, AR150, AR160, AR200, AR300, AR1200, AR2200, AR3200, AR3600 V200R010 配置指南-安全(命令行)

HWTACACS认证、授权、计费

HWTACACS认证、授权、计费

HWTACACS概述

华为终端访问控制器控制系统协议HWTACACS是在TACACS(RFC 1492)基础上进行了功能增强的安全协议。HWTACACS是一种集中式的、客户端/服务器结构的信息交互协议,使用TCP协议传输,TCP端口号为49。HWTACACS提供的认证、授权和计费服务相互独立,能够在不同的服务器上实现。

HWTACACS协议主要用于采用点对点协议PPP(Point-to-Point Protocol)或虚拟私有拨号网络VPDN(Virtual Private Dial-up Network)方式接入Internet的接入用户以及对设备进行操作的管理用户的认证、授权和计费。

HWTACACS协议与RADIUS协议的相似点包括:
  • 结构上都采用客户端/服务器模式。
    • HWTACACS客户端:一般位于网络接入服务器NAS(Network Access Server)上,可以遍布整个网络,负责传输用户信息到指定的HWTACACS服务器,然后根据从服务器返回的信息进行相应处理。
    • HWTACACS服务器:一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息。
  • 都使用共享密钥对传输的用户信息进行加密。
  • 都有较好的灵活性和可扩展性。

与RADIUS相比,HWTACACS具有更加可靠的传输和加密特性,更加适合于安全控制。HWTACACS协议与RADIUS协议的主要区别如表1-17所示。

表1-17  HWTACACS协议与RADIUS协议的比较
项目

HWTACACS

RADIUS

数据传输

通过TCP传输,网络传输更可靠。

通过UDP传输,网络传输效率更高。

加密方式

除了标准的HWTACACS报文头,对报文主体全部进行加密。

只是对认证报文中的密码字段进行加密。

认证和授权

认证与授权分离,使得认证、授权服务可以在不同的安全服务器上实现。例如,可以用一台HWTACACS服务器进行认证,另外一台HWTACACS服务器进行授权。

认证与授权结合,不能分离。

命令行授权

支持对设备上的配置命令进行授权使用。即用户可使用的命令行受到命令级别和AAA授权的双重限制,某一级别的用户输入的每一条命令都需要通过HWTACACS服务器授权,如果授权通过,命令才可以被执行。

不支持对设备上的配置命令进行授权使用。用户登录设备后可以使用的命令行由用户级别决定,用户只能使用级别等于或低于用户级别的命令行。

应用场景

适于进行安全控制。

适于进行计费。

HWTACACS报文介绍

HWTACACS报文与RADIUS报文的格式不同。所有RADIUS报文均采用相同的报文格式,而HWTACACS报文除了具有相同的报文头之外,认证授权计费报文的格式均不同。

HWTACACS报文头

HWTACACS报文头长度为12字节,如图1-15所示。

图1-15  HWTACACS报文头部
表1-18  HWTACACS报文头部中各个字段的含义
字段 含义
major version HWTACACS协议主版本号,当前版本号为0xc。
minor version HWTACACS协议次版本号,当前版本号为0x0。
type HWTACACS协议报文类型,包括认证(0x01)、授权(0x02)和计费(0x03)。
seq_no 对于同一个会话,当前报文的序列号,取值范围为1~254。
flags 报文主体加密标记,目前只支持8位中的第1位,0表示对报文主体加密,1表示不对报文主体加密。
session_id 会话ID,当前会话的唯一标识。
length HWTACACS报文主体的长度,不包括报文头。

HWTACACS认证报文格式

HWTACACS认证报文包括三种类型:
  • 认证开始报文Authentication Start:认证开始时,客户端向服务器发送认证开始报文,该报文中包括认证类型、用户名和一些认证数据。
  • 认证持续报文Authentication Continue:客户端接收到服务器回应的认证回应报文后,如果确认认证过程没有结束,则使用认证持续报文响应。
  • 认证回应报文Authentication Reply:服务器接收到客户端发送的认证开始报文或认证持续报文后,向客户端发送的唯一一种认证报文,用于向客户端反馈当前认证的状态。
HWTACACS认证报文的具体格式如下:
  • HWTACACS认证开始报文

    图1-16  HWTACACS认证开始报文格式
    表1-19  HWTACACS认证开始报文中各个字段的含义
    字段 含义
    action 具体的认证操作,目前只支持“认证登录(0x01)”。
    priv_lvl 用户级别,取值范围是0~15。
    authen_type 认证的类型,目前设备仅支持:
    • CHAP(0x03)
    • PAP(0x02)
    • ASCII(0x01)
    service 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)、NONE(0x00)三种服务类型,分别对应PPP用户、管理员用户和其他用户。
    user len 登录用户输入的用户名长度。
    port len port字段的长度。
    rem_addr len rem_addr字段的长度。
    data len 认证数据区的长度。
    user 请求认证的用户名,最大长度为129。
    port

    请求认证的用户接口名,最大长度为47。

    • 对于管理员用户,该字段是指用户终端接口(例如“console0”、“vty1”等)。例如,Telnet用户的authen_type为ASCII,service为LOGIN,port为vtyx。
    • 对于其他用户,该字段是指用户接入的接口名称。
    rem_addr 登录用户的IP地址。
    data 认证数据区,根据action和authen_type的不同封装不同的数据。例如PAP认证时,该字段内容为PAP显式密码。
  • HWTACACS认证持续报文

    图1-17  HWTACACS认证持续报文格式
    表1-20  HWTACACS认证持续报文中各个字段的含义
    字段 含义
    user_msg len 登录用户输入的字符串长度。
    data len 认证数据区的长度。
    flags 认证持续标记,0表示认证过程持续,1表示认证过程终止。
    user_msg 登录用户输入的字符串,用于回应认证回应报文中的server_msg字段,向服务器提供用户登录时输入的密码。
    data 认证数据区,根据action和authen_type的不同封装不同的数据。例如PAP认证时,该字段内容为PAP显式密码。
  • HWTACACS认证回应报文

    图1-18  HWTACACS认证回应报文格式
    表1-21  HWTACACS认证回应报文中各个字段的含义
    字段 含义
    status

    认证的状态,包括:

    • 认证成功PASS(0x01)
    • 认证失败FAIL(0x02)
    • 请求用户信息GETDATA(0x03)
    • 请求用户名GETUSER(0x04)
    • 请求密码GETPASS(0x05)
    • 请求重新发起认证开始RESTART(0x06)
    • 服务器收到认证报文有误ERROR(0x07)
    • 服务器要求重新进行认证过程FOLLOW(0x21)
    flags 控制客户端是否将用户输入的密码回显。如果该标志位置1,则用户输入的密码不会回显。
    server_msg len server_msg字段的长度。
    data len 认证数据区的长度。
    server_msg 可选字段,用于服务器将一些附加信息带给用户。
    data 认证数据区,用于向客户端提供一些信息。

HWTACACS授权报文格式

HWTACACS授权报文包括两种类型:
  • 授权请求报文Authorization Request:HWTACACS的认证和授权是分离的,用户可以使用HWTACACS认证而使用其他协议进行授权。如果需要通过HWTACACS进行授权,则客户端向服务器发送授权请求报文,该报文中包括了授权所需的一切信息。
  • 授权回应报文Authorization Response:服务器接收到授权请求报文后,向客户端发送授权回应报文,该报文中包括了授权的结果。
HWTACACS授权报文的具体格式如下:
  • HWTACACS授权请求报文

    图1-19  HWTACACS授权请求报文格式

    priv_lvl字段、authen_type字段、authen_service字段、user len字段、port len字段、rem_addr len字段、port字段、rem_addr字段的含义和HWTACACS认证开始报文一致,此处不再赘述。

    表1-22  HWTACACS授权请求报文中各个字段的含义
    字段 含义
    authen_method

    指定用户的认证方式,包括:

    • 没有设置认证方式(0x00)
    • 不认证(0x01)
    • 本地认证(0x05)
    • HWTACACS认证(0x06)
    • RADIUS认证(0x10)
    authen_service 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)和NONE(0x00)三种服务类型,分别对应PPP用户、管理员用户和其他用户。
    arg_cnt 授权请求报文中携带的属性数。
    argN

    指定授权请求报文的属性。包括:

    • cmd:请求授权的命令行的第一个参数。
    • cmd-arg:请求授权的命令行参数。固定格式为“cmd-arg=命令行参数”,最后一个命令行参数后需要再封装一个“cmd-arg=<cr>”结尾。“cmd-arg=命令行参数”的总长度不能超过255个字节,每个命令行参数不能超过247个字节。
  • HWTACACS授权回应报文

    server_msg len字段、data len字段和server_msg字段的含义和HWTACACS认证回应报文一致,此处不再赘述。

    图1-20  HWTACACS授权回应报文格式
    表1-23  HWTACACS授权回应报文中各个字段的含义
    字段 含义
    status

    指定用户的授权状态,包括:

    • 授权通过(0x01)
    • 授权请求报文中的属性被TACACS服务器修改(0x02)
    • 授权失败(0x10)
    • 授权服务器上出现了错误(0x11)
    • 重新指定授权服务器(0x21)
    arg_cnt

    授权回应报文中携带的授权属性数。

    argN 指定HWTACACS授权服务器下发的授权属性。

HWTACACS计费报文格式

HWTACACS计费报文包括两种类型:
  • 计费请求报文Accounting Request:该报文中包括了计费所需的信息。
  • 计费回应报文Accounting Response:服务器接收并成功记录计费请求报文后,需要回应一个计费响应报文。
HWTACACS计费报文的具体格式如下:
  • HWTACACS计费请求报文

    图1-21  HWTACACS计费请求报文格式

    authen_method字段、priv_lvl字段、authen_type字段、user len字段、port len字段、rem_addr len字段、port字段、rem_addr字段的含义和HWTACACS授权请求报文一致,此处不再赘述。

    表1-24  HWTACACS计费请求报文中各个字段的含义
    字段 含义
    flags 计费类型:
    • 开始计费(0x02)
    • 结束计费(0x04)
    • 实时计费(0x08)
    authen_service 请求认证的服务类型,当前版本支持PPP(0x03)、LOGIN(0x01)和NONE(0x00)三种服务类型,分别对应PPP用户、管理员用户和其他用户。
    arg_cnt 计费请求报文中携带的属性数。
    argN 指定计费请求报文的属性。
  • HWTACACS计费回应报文

    图1-22  HWTACACS计费回应报文格式
    表1-25  HWTACACS计费回应报文中各个字段的含义
    字段 含义
    server_msg len server_msg字段的长度。
    data len data字段的长度。
    status 指定计费状态:
    • 计费成功(0x01)
    • 计费失败(0x02)
    • 计费无回应(0x03)
    • 服务器要求重新进行计费过程(0x21)
    server_msg 指定计费服务器带给客户端的信息。
    data 服务器提供给管理员的信息。

HWTACACS认证、授权、计费流程

下面以Telnet用户为例,说明使用HWTACACS对用户进行认证、授权和计费的过程。基本消息交互流程图如图1-23所示。
图1-23  HWTACACS的基本消息交互流程图

在整个过程中的基本消息交互流程如下:
  1. Telnet用户请求登录设备。
  2. HWTACACS客户端收到请求之后,向HWTACACS服务器发送认证开始报文。
  3. HWTACACS服务器发送认证回应报文,请求用户名。
  4. HWTACACS客户端收到回应报文后,向用户询问用户名。
  5. 用户输入用户名。
  6. HWTACACS客户端收到用户名后,向HWTACACS服务器发送认证持续报文,其中包括了用户名。
  7. HWTACACS服务器发送认证回应报文,请求密码。
  8. HWTACACS客户端收到认证回应报文,向用户询问密码。
  9. 用户输入密码。
  10. HWTACACS客户端收到密码后,向HWTACACS服务器发送认证持续报文,其中包括了密码信息。
  11. HWTACACS服务器发送认证回应报文,指示用户通过认证。
  12. HWTACACS客户端向HWTACACS服务器发送授权请求报文。
  13. HWTACACS服务器发送授权回应报文,指示用户通过授权。
  14. HWTACACS客户端收到授权回应报文,向用户输出设备的配置界面。
  15. HWTACACS客户端向HWTACACS服务器发送计费开始请求报文。
  16. HWTACACS服务器发送计费开始回应报文,指示计费开始请求报文已经收到。
  17. 用户请求断开连接。
  18. HWTACACS客户端向HWTACACS服务器发送计费结束请求报文。
  19. HWTACACS服务器发送计费结束回应报文,指示计费结束请求报文已经收到。

HWTACACS协议与其他厂商支持的TACACS+协议都实现了认证、授权、计费的功能。HWTACACS和TACACS+的认证流程与实现方式是一致的,HWTACACS协议能够完全兼容TACACS+协议。

HWTACACS属性

在HWTACACS授权或计费报文中,argN字段携带了服务器下发给用户或用户传输给服务器的信息。

HWTACACS属性

表1-26描述了设备支持的HWTACACS属性,对于不在该表内的属性,设备不对属性进行解析,直接忽略具体的属性内容。

表1-26  常用HWTACACS属性

属性名

属性说明

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

下线原因,仅结束计费请求报文支持该属性。包括:
  • 用户主动下线(1)
  • 数据中断(2)
  • 业务中断(3)
  • 闲置切断(4)
  • 会话超时(5)
  • 管理员要求下线(7)
  • NAS故障(9)
  • NAS要求下线(10)
  • 端口停用(12)
  • 用户信息有误(17)
  • 主机主动下线(18)

disc_cause_ext

扩展的下线原因,仅结束计费请求报文支持该属性。包括:
  • 未知原因(1022)
  • EXEC终端终止连接(1020)
  • 已经在线的其他telnet用户强制此用户下线(1022)
  • 远端没有IP地址,导致用户不能切换到SLIP/PPP客户端(1023)
  • PPP PAP认证失败(1042)
  • PPP收到远端的Terminate报文(1045)
  • 上层要求关闭用户的PPP连接(1046)
  • PPP握手失败(1063)
  • 会话超时(1100)

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”四种协议类型。
  • 当业务类型为connection时,协议类型可以是“pad”或者“telnet”;
  • 当业务类型是ppp时,协议类型可以是“ip”或者“vpdn”;
  • 如果为其它业务类型,则不会封装该属性。

task_id

任务ID,对于同一任务,其开始和结束记录的task_id必须相同。

timezone

当地时区。

tunnel-id

建立隧道时的隧道本端用户名,字符串形式,长度范围是1~29。如果所包含的属性值超出了允许的设置范围则仅取前29个字符。

tunnel-type

将要建立的隧道类型。目前只支持L2TP类型的隧道,对应的tunnel-type是3。

service

业务类型,标识当前计费或授权的业务。

source-ip

隧道本端IP的地址。

upaverage

上行平均速率,单位是bit/s。

uppeak

上行峰值速率,单位是bit/s。

HWTACACS属性在报文中的支持情况

按照报文类型划分,HWTACACS授权报文可以分为授权请求报文和授权回应报文。但在实际使用过程中,HWTACACS授权可以划分为EXEC用户授权、命令行授权和接入用户授权三种,不同类型的授权报文中使用的属性不完全相同,具体请参见表1-27
  • EXEC授权:通过HWTACACS服务器对telnet、terminal、SSH和FTP登录的管理用户进行权限控制。
  • 命令行授权:用户执行每条命令行时均进行权限控制,只有授权通过后才可以执行该命令,否则不能执行。
  • 接入用户授权:通过HWTACACS服务器对802.1X、Portal等NAC接入用户进行权限控制。
按照报文类型划分,HWTACACS计费报文可以分为计费请求报文和计费回应报文。但在实际使用过程中,根据连接类型的不同,HWTACACS计费可以划分为网络计费、连接计费、EXEC计费、系统计费和命令计费五种类型。不同类型的计费报文中使用的属性不完全相同,具体请参见表1-28
  • 网络计费:适用于PPP等普通用户接入网络的场景。例如,PPP用户初始接入时发送开始计费报文,用户在线过程中定时发送实时计费报文,用户下线时发送结束计费报文。
  • 连接计费:适用于当用户将设备作为Telnet或者FTP的客户端登录到服务器端的场景。用户与设备建立连接后,可以输入命令建立与远程服务器的连接并访问远程主机上的文件。当登录到远程服务器时发送开始计费报文,退出时发送结束计费报文。
  • EXEC计费:适用于用户通过Telnet或者FTP等方式登录到设备的场景。用户初始登录时发送开始计费报文,用户在线过程中发送实时计费报文,用户退出时发送结束计费报文。
  • 系统计费:适用于用户对网络进行故障诊断时的场景。通过在服务器上记录系统级事件,可以帮助管理员用户根据服务器上的记录信息进行故障定位。
  • 命令计费:当管理员用户在设备上执行任意命令时,可以通过命令结束计费报文把该用户输入的命令上报给HWTACACS服务器,以便服务器对用户的操作进行记录。
  • Y:表示该类型报文支持该属性。
  • N:表示该类型报文不支持该属性。
表1-27  HWTACACS授权报文中属性的支持情况

属性

命令行授权请求报文

EXEC授权回应报文

接入用户授权回应报文

acl

N

Y

N

addr

N

N

Y

addr-pool

N

N

Y

autocmd

N

Y

N

callback-line

N

Y

Y

cmd

Y

N

N

cmd-arg

Y

N

N

dnaverage

N

N

Y

dnpeak

N

N

Y

dns-servers

N

N

Y

ftpdir

N

Y

N

gw-password

N

N

Y

idletime

N

Y

N

ip-addresses

N

N

Y

l2tp-group-num

N

N

Y

l2tp-tunnel-authen

N

N

Y

nocallback-verify

N

Y

N

nohangup

N

Y

N

priv-lvl

N

Y

N

source-ip

N

N

Y

tunnel-type

N

N

Y

tunnel-id

N

N

Y

upaverage

N

N

Y

表1-28  HWTACACS计费报文中属性的支持情况

属性

网络计费开始请求报文

网络计费结束请求报文

网络计费实时请求报文

连接计费开始请求报文

连接计费结束请求报文

EXEC计费开始请求报文

EXEC计费结束请求报文

EXEC计费实时请求报文

系统计费结束请求报文

命令计费停止计费报文

addr

Y

Y

Y

Y

Y

N

N

N

N

N

bytes_in

N

Y

Y

N

Y

N

Y

Y

N

N

bytes_out

N

Y

Y

N

Y

N

Y

Y

N

N

cmd

N

N

N

Y

Y

N

N

N

N

Y

disc_cause

N

Y

N

N

N

N

Y

Y

N

N

disc_cause_ext

N

Y

N

N

N

N

Y

Y

N

N

elapsed_time

N

Y

Y

N

Y

N

Y

Y

Y

N

paks_in

N

Y

Y

N

Y

N

Y

Y

N

N

paks_out

N

Y

Y

N

Y

N

Y

Y

N

N

priv-lvl

N

N

N

N

N

N

N

N

N

Y

protocol

Y

Y

Y

Y

Y

N

N

N

N

N

service

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

task_id

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

timezone

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

tunnel-id

N

N

N

N

N

N

N

N

N

N

tunnel-type

Y

N

N

N

N

N

N

N

N

N