3

Tacacs+配置single-connection单连接模式证测试与总结

 2 years ago
source link: https://cshihong.github.io/2020/12/27/Tacacs-%E9%85%8D%E7%BD%AEsingle-connection%E5%8D%95%E8%BF%9E%E6%8E%A5%E6%A8%A1%E5%BC%8F%E8%AF%81%E6%B5%8B%E8%AF%95%E4%B8%8E%E6%80%BB%E7%BB%93/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

其他文章:


Tacacs+ single-connection单连接模式测试

经测试单连接模式真正实现的效果就是:不论有多少用户同时登陆一台网络设备,不论同时执行多少条命令,设计到的认证,授权,计费报文都在同一个TCP连接中传输。

单连接模式相关概念:

单连接模式:https://tools.ietf.org/id/draft-ietf-opsawg-tacacs-18.html#rfc.section.4.3

单连接模式( Single Connection Mode)是为了提高性能,有很多客户端和服务器之间的流量通过允许复用多个会话在一个TCP连接。

数据包头包含客户端和服务器用来协商使用单连接模式的TAC_PLUS_SINGLE_CONNECT_FLAG。客户端设置此标志,以表明它支持在单个TCP连接上多路传输TACACS+会话。在单连接状态建立之前,客户端不能在连接上发送第二个数据包。

为了表示它将支持单一连接模式,服务器将在响应客户端的第一个请求的第一个应答包中设置此标志(Flag)。即使客户端没有设置该标志,服务器也可以设置该标志,但是客户端可以忽略该标志并在会话完成后关闭连接。

该标志只与连接上的前两个包相关,以允许客户端和服务器建立单一连接模式。在前两个包之后没有更改单个连接模式的规定:客户端和服务器必须忽略连接上第二个包之后的标志。

如果在TCP连接的前两个包中没有建立单连接模式,那么客户端和服务器都会在第一次会话结束时关闭连接。

客户端采用单连接模式,提高了效率。服务器可能拒绝允许客户端使用单连接模式。例如,在某些部署中,可能不适合将持久的TCP连接分配给特定的客户端。即使服务器被配置为允许特定客户端使用单一连接模式,服务器也可以关闭连接。例如:服务器必须配置为在一段特定的不活动时期后超时单个连接模式TCP连接,以保留其资源。即使建立了单个连接模式,客户端也必须在TCP会话上适应这种终止。

由于服务器或中间连接的超时,单连接模式下的TCP连接最终将关闭。如果一个会话正在进行,当客户端检测到断开连接,那么客户端应该处理它。如果会话没有进行,那么客户端将需要检测它,并在它启动下一个会话时重新启动单连接模式。

Tacacs+服务器端配置:

single-connection ( may-close ) = ( yes | no )

该指令可用于允许或拒绝特定主机对象的单连接功能。 may-close关键字告诉守护程序如果未使用则关闭连接。

Caveat Emptor(需留心):

单连接不按预期工作的可能性很小。路由器中的单连接实现,甚至在这个守护进程中实现的连接(或者可能两者都有)可能有问题。如果你注意到奇怪的AAA行为无法解释,那么尝试禁用路由器上的单连接。

Tacacs+ single-connection参数的测试结果:

  • Tacacs+配置文件默认不需要写single-connection = yes 就支持单连接。

  • 通过实际测试:即使配置了single-connection = no, 只要客户端支持单连接模式,还是可以建立单连接模式。

  • 如果配置single-connection may-close = yes, 如果客户端不是单连接模式,则每次建立TCP连接,认证或者计费完成后,Tacacs+服务器端会主动先发送FIN报文关闭TCP连接。若不配置may-close,客户端是单连接的话,每次是客户端主先发起FIN报文,关闭TCP连接。

各交换机厂商对单连接模式的支持情况:

H3C single-connection测试与总结:

H3C设备上解释:single-connection Transmit HWTACACS packets on an open TCP connection。

不开启单连接模式情况下:

交换机单连接配置:

主要在配置Tacacs+服务器时不携带single-connection参数:

hwtacacs scheme tacacs
primary authentication 192.168.147.135 49 key simple tacacs@123
primary authorization 192.168.147.135 49 key simple tacacs@123
primary accounting 192.168.147.135 49 key simple tacacs@123
user-name-format without-domain

在设备上执行命令,通过display tcp | in 49, 过滤Tacacs+服务器的端口号,查看网络设备于Tacacs+服务器建立的TCP连接情况。

可以总结出,每执行一条命令,会创建两条TCP链接,分别为授权和计费连接。且计费连接每次看到的状态都是 ESTABLISHED状态。

认证产生的TCP连接只会在登陆的时候产生,后续TCP连接超时后就会断掉,不会在触发认证。

通过抓包分析,从Tacacs+的报文交互过程来看,在登陆的时候交换机会向Tacacs+服务器发送1个认证请求报文,一个收认证回复报文。华三的设备用户命和密码会在第一个认证请求包中。在认证成功之后,后续在交换机输入的每条命令都会进行4个报文的交互,分别是授权请求报文,授权回应报文,计费请求报文,计费回应报文。

刚开始登陆时,会产生一条用于发送认证的TCP连接。

开启Tacacs+ 单连接模式的情况下:

主要在配置Tacacs+服务器时携带single-connection参数:

hwtacacs scheme tacacs
primary authentication 192.168.147.135 49 single-connection key simple tacacs@123
primary authorization 192.168.147.135 49 single-connection key simple tacacs@123
primary accounting 192.168.147.135 49 single-connection key single-connectionsimple tacacs@123
user-name-format without-domain

single-connection ( may-close) = yes ,加上may-close参数后,如果交换机未配置单连接模式,那么每次建立完TCP连接后,Tacacs+会主动断开TCP连接,但是不影响AAA功能。

通过观察总结,交换机开启single-connection模式后,不论Tacacs+服务器的single-connection ( may-close) = yes 该配置项如何调整,每新加一个用户,就会创建5条TCP连接,并且一直存活。

在这里为了区分这5条TCP连接分别用于传输什么数据,特意搭建了3个Tacacs+服务器:

  • 认证服务器:192.168.147.135
  • 授权服务器:192.168.147.136
  • 计费服务器:192.168.147.137

通过抓包分析总结:

<H3C>dis tcp | in 49
192.168.1.1:48386 192.168.147.135:49 ESTABLISHED 1 0x000000000003bdf9
# 这一条TCP连接是用户登陆时创建的认证连接,只在登陆时会传输数据,后续不会再传输数据。
192.168.1.1:48387 192.168.147.136:49 ESTABLISHED 1 0x000000000003bdfa
# 第一条授权TCP连接,是授权 service=shell, cmd*, cvp-roles=network-admin,后续这条连接不会传输数据。
# 第一条授权TCP连接会回复cvp-roles=network-admin,priv-lvl=15信息,后续这条连接不会传输数据。
192.168.1.1:48388 192.168.147.137:49 ESTABLISHED 1 0x000000000003bdfb
# 第一条计费TCP连接,是对用户的默认权限,sevice=shell的计费。
192.168.1.1:48389 192.168.147.136:49 ESTABLISHED 1 0x000000000003bdfc
# 第二条授权TCP连接,是除了第一次登录时用户授权,后面每次执行的命令的授权都会在这个TCP连接中进行。
192.168.1.1:48390 192.168.147.137:49 ESTABLISHED 1 0x000000000003bdfd
# 第二条计费TCP连接,是除了第一次登陆的默认计费,后面每次执行的命令的计费都会在这个TCP连接中进行。

H3C Tacacs+配置单连接模式总结:

H3C的单连接实现方式是个假的单连接,交换机在与Tacacs+服务器发送的报文中,Single Connection字段没有置位,所有也没有实现真正的单连接模式。

配置单连接模式后,每次用户登陆会新建5条TCP连接,并保持一直连接。但是通过配置单链接也能减少H3C交换机和Tacacs+的TCP连接数。

华为单连接模式测试与总结:

首先通过测试华为支持配置单连接模式。

不配置单连接模式的情况:

hwtacacs server template tacacs
hwtacacs server authentication 192.168.147.135 49 shared-key tacacs@123
hwtacacs server authorization 192.168.147.135 49 shared-key tacacs@123
hwtacacs server accounting 192.168.147.135 49 shared-key tacacs@123
hwtacacs server source-ip 192.168.1.1
hwtacacs server timer response-timeout 3
hwtacacs server user-name domain-excluded
  • 华为设备每次登陆认证会话只会建立一个TCP连接,认证完成后关闭TCP连接。

  • 通过抓包分析,每次执行命令,会分别创建一条授权和计费TCP连接,且会发送RST报文断开TCP连接。后续发起的TCP连接使用随机端口号。

配置单连接模式后:

主要是配置mux-mode 参数。

hwtacacs server template tacacs
hwtacacs server authentication 192.168.147.135 49 shared-key tacacs@123 mux-mode
hwtacacs server authorization 192.168.147.135 49 shared-key tacacs@123 mux-mode
hwtacacs server accounting 192.168.147.135 49 shared-key tacacs@123 mux-mode
hwtacacs server source-ip 192.168.1.1
hwtacacs server timer response-timeout 3
hwtacacs server user-name domain-excluded
  • 配置单连接模式后,不论有多少用户,不论执行多少条命令,认证,授权,计费报文只在一条TCP连接中传输。

  • 华为设备配置单连接模式的参数是: mux-mode Configure the multiplex mode for a server

锐捷 Tacacs+配置单连接模式测试与总结:

锐捷不支持配置单连接模式。

Ruijie#show tacacs  
Tacacs+ Server : 192.168.147.135/49
Socket Opens: 37 #通过show tacacs开看到打开和关闭的连接。
Socket Closes: 37
Total Packets Sent: 40
Total Packets Recv: 40
Reference Count: 1
Ruijie#show tacacs
Tacacs+ Server : 192.168.147.135/49
Socket Opens: 39 #通过show tacacs开看到打开和关闭的连接。
Socket Closes: 39
Total Packets Sent: 42
Total Packets Recv: 42
Reference Count: 1

通过在网络设备上查看建立的TCP连接数和抓包分析,在锐捷设备上,每次执行命令,都会新打开两条TCP连接。

通过抓包分析:

  • 锐捷Tacacs+报文交互过程,锐捷的认证交互总数是4个包,且在一个TCP连接传输。在第一个认证请求报文中,只会携带用户名,第一个认证回应报文中携带server消息(\nPassword: ),请求密码:用户输入密码后,会发起第二个认证请求报文,第二个认证回复报文会是认证结果。认证报文交互只会创建一个TCP连接,传输完数据就关闭了。

  • 锐捷的所有Tacacs+交互数据都在同一个TCP源端口中传输,使用的不是FIN,而是RST报文,每次交互完认证/授权/计费就发起一个RST,提前重置TCP连接,后续的收取,计费报文再使用同样的源端口发起SYN建立TCP连接交互数据。

  • 锐捷设备不支持Tacacs+的认证,授权,计费分离。

思科设备Tacacs+配置单连接模式测试与总结:

Cisco设备支持Tacacs+配置单连接模式。

不配置单连接模式的情况:

tacacs-server host 192.168.147.135 key tacacs@123 port 49
  • 不配置单连接模式情况下,每次登陆,或者执行命令,认证,授权,计费,都是单独创建一条TCP连接进行传输数据。传输完数据后,交换机主动发送FIN关闭TCP连接。

配置单连接模式的情况:

主要在执行Tacacs+服务器时配置:single-connection 参数。

tacacs-server host 192.168.147.135 key tacacs@123 port 49 single-connection

通过抓包分析:

  • Cisco交换机Tacacs+ 配置单连接模式后,不论多少用户在线,认证,授权,计费报文都会在同一条TCP连接中传输。

  • Cisco的认证报文是两个,用户账号和密码会在同一个报文中传输。

Arista设备Tacacs+配置单连接模式测试与总结:

Arista设备支持单连接模式。

不配置单连接模式:

tacacs-server host 192.168.147.135  port 49 key key tacacs@123

通过在设备上查看Tacacs+认证信息与抓包分析总结:

  • 每次进行一次认证交互就会新建一个TCP连接,并且认证的4个认证报文使用1个TCP连接。
  • 每次授权的授权请求报文和授权回应报文使用一个新TCP连接,且完成后交换机主动关闭TCP连接。
  • 每次计费的计费请求报文和计费回应报文使用一个新TCP连接,且完成后交换机主动关闭TCP连接。
  • Arista 不开启单连接模式,不论多少用户在线,只要执行一条命令,会创建2条TCP连接。
  • 每个TCP连接使用的端口号不同。
  • 多个用户同时登陆,和上述情况一致。

配置单连接模式情况:

tacacs-server host 192.168.147.135  port 49 key single-connection key tacacs@123

通过抓包分析:

Arista设备的Tacacs+认证交换报文和H3C的略有区别:

  • H3C的认证报文只有2个,在第一个认证请求报文中,会同时携带用户名和密码。
  • Arista的认证报文有4个,在第一个认证请求报文中,只会携带用户名,第一个认证回应报文中携带server消息(\nPassword: ),请求密码:用户输入密码后,会发起第二个认证请求报文,第二个认证回复报文会是认证结果
  • Arista的单连接模式,真正做到了将认证,授权,计费,已经多用户的多个session在同一个TCP连接中传输。
  • 但是Arista不支持将认证,授权,计费分离配置。

Tacacs+配置单连接模式总结

  • 华为,思科,Arista,支持配置单连接模式,且不论多少用户同时登陆,认证,授权,计费报文都会在同一个TCP连接中传输。

    且支持单连接模式的Tacacs+报文中的Single Conection 字段置1,表示使用Tacacs+单连接模式。

  • 锐捷不支持配置单连接模式。

  • H3C的单链接模式是个假单链接模式,Tacacs+报文中的Single Connection字段不置位,配置单连接模式后,每次用户登陆会新建5条TCP连接,并保持一直连接。但是通过配置单链接也能减少H3C交换机和Tacacs+的TCP连接数。已和厂商提需求。

  • 华为,锐捷,arista的认证报文分为4个报文交换,H3C,思科的认证报文只有2个。

  • 配置single-connection模式后,如果交换机数量很大,且同时与Tacacs+服务器建立TCP连接的话,能减少大量Tacacs+服务器端的TCP连接。

  • 配置single-connection,大量认证,授权,计费数据包在同一个TCP连接中传输,提高了传输效率,不必一直重复建立和销毁TCP连接。


其他Tacacs+学习资料:


其他文章:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK