This article outlines the functionality of Versa's Terminal Server Agent (TSA), its use case, and walks users through its configuration, monitoring, and troubleshooting procedures.
A large financial institution with multiple branches uses Windows-based terminal servers to allow employees to access core banking applications. These terminal servers host multiple concurrent users, each accessing different financial tools and client data.
The institution enforces strict user-based access control policies to protect sensitive customer data. However, their Next-Generation Firewall (NGFW) relies on the source IP address to identify users. In a terminal server environment where multiple users share the same IP address, the NGFW cannot differentiate between individual users. This creates a security gap, making it impossible to enforce role-based access policies effectively.
To address this, the institution deploys the Versa Terminal Server Agent (TSA) on its Windows-based terminal servers. The TSA dynamically assigns a distinct port range to each user, ensuring that each user's network traffic is uniquely identifiable — even when multiple users share the same IP address.
The VOS appliance identifies users using the IP address mapped against the username. In Versa, the IP2User module in the VOS appliance is responsible for this functionality. NGFWs — including Versa's — rely on the IP address to identify users. When multiple users share the same IP address in a multi-user virtual or physical desktop environment, it becomes impossible for the NGFW to enforce user-based policies.
Versa's Terminal Server Agent resolves this by assigning a distinct port range to each user on virtual desktop instances such as Windows-based terminal servers. The TSA notifies the connected VOS appliance about these port assignments, enabling the appliance to create an IP-address-to-port user mapping table and enforce actions based on user and group identities.
The underlying principle is to enhance user identification by managing port allocations for each user through the Versa TS Agent installed on the server. By sharing this data with the VOS appliance, user identification is achieved through a combination of source IP address and source port information.
The diagram below illustrates a typical Versa TSA deployment, showing the relationship between the Windows Terminal Server (with TSA installed), the VOS appliance, the intranet, and remote users connecting through the network.
Versa TSA is a passive authentication tool, similar to VMS (Versa Management System). However, there are important architectural differences between the two:
|
|
VMS |
Versa TSA |
|
Placement |
Alongside the AD server |
On the terminal server (multi-user host) |
|
Data shared |
User-to-IP mapping with branch locations |
IP address + per-user port block to VOS appliance |
Complete the following steps in order to deploy and configure the Versa Terminal Server Agent in your environment.
Step 1: Generate a self-signed End Entity certificate from the VOS.
Step 2: Configure captive portal service in the VOS device.
Step 3: Configure TSA profile.
Step 4: Map the TSA profile to the "General" TSA configuration.
Step 5: Create security policies with the Windows server users.
Step 6: Install the Versa TS Agent in the Windows server.
Link to download TSA software:
https://versanetworks.app.box.com/s/83g84wklcgq7k2uy292qfdyjusym12p7
Step 7: Ensure name resolution to the FQDN using a name server or local host entry.
Step 8: Export the certificate from the appliance and install it in the server's trust store.
Copy to Windows server and open the certificate. Press "Install certificate"
Step 9: Register the TS Agent to the captive portal.
The Versa TS Agent UI on the Windows server provides visibility into the current state of the agent and its configuration. Key areas to verify:
On the VOS appliance, the IP-address-to-port user mapping table can be verified to confirm that the TSA is correctly reporting user sessions. Each entry in the table should reflect an active user on the terminal server, along with their assigned source IP address and port block. This mapping is what enables the VOS to apply user-specific security policies to traffic originating from the shared terminal server IP address.
Command — View TSA Message History:
admin@B1-cli> show orgs org-services T1 secure-access history tsa messages brief
Output:
MESSAGE
ID ID TYPE USERNAME IP ADDRESS BLOCKSIZE BLOCKS STATUS
--------------------------------------------------------------------------------------------------
1 76 login system@nt authority 172.50.0.10 500 [ 10000 ] success
2 76 login system@nt authority 10.192.119.134 500 [ 10000 ] success
3 77 login administrator@versatac.com 172.50.0.10 500 [ 10500 ] success
4 77 login administrator@versatac.com 10.192.119.134 500 [ 10500 ] success
5 78 login sarath@versatac.com 172.50.0.10 500 [ 11500 ] success
6 78 login sarath@versatac.com 10.192.119.134 500 [ 11500 ] success
7 79 login administrator@versatac.com 172.50.0.10 500 [ 12000 ] success
8 79 login administrator@versatac.com 10.192.119.134 500 [ 12000 ] success
The output above shows each login event reported by the TSA. Each user is assigned a unique block of 500 ports. Multiple entries per user reflect assignments across different IP interfaces on the terminal server.
Command — View Live User Mappings:
admin@B1-cli> show orgs org-services T1 user-identification live-users tsa detail
Output:
user-identification live-users tsa detail 172.50.0.10
hit-count 0
blocksize 500
ports 10000-10499
hit-count 0
user-name "system@nt authority"
user-id 0
login-timestamp "2026-09-08 22:34:23"
ports 10500-10999
hit-count 0
user-name administrator@versatac.com
user-id 0
login-timestamp "2026-09-08 22:34:23"
ports 11000-11499
hit-count 0
user-name sarath@versatac.com
user-id 0
login-timestamp "2026-09-08 22:34:23"
ports 11500-11999
hit-count 0
user-name sarath@versatac.com
user-id 0
login-timestamp "2026-09-08 22:34:23"
ports 12000-12499
hit-count 0
user-name administrator@versatac.com
user-id 0
login-timestamp "2026-09-08 22:34:23"
ports 12500-12999
hit-count 0
user-name "system@nt authority"
user-id 0
login-timestamp "2026-09-08 22:34:23"
The live-users output confirms the current port-to-user mapping on the VOS. Each port block of 500 is bound to a specific user, with a login timestamp indicating when the session was registered. This table is the source of truth used by the VOS to enforce user-based security policies.
Command — View Live User Session List:
admin@B1-cli> show orgs org-services T1 user-identification live-users list brief
Output:
TIME
SESSION TO EXPIRATION
IP ADDRESS NAME STATUS HITS EXPIRY MODE
--------------------------------------------------------------------
172.50.0.10 tsa-multiuser Live 0 60 inactivity
10.192.119.134 tsa-multiuser Live 0 60 inactivity
This confirms that both IP interfaces on the terminal server have active TSA multi-user sessions registered on the VOS, with an inactivity expiry of 60 seconds.
Command — View All TSA User Mappings by IP:
vsm-vcsn0> show identity tsa mapping all-users T1-2 172.50.0.10
Output:
Blocksize : 500
----------------------------------------------------------
Username Ranges
----------------------------------------------------------
administrator@versatac.com 12000-12499, 10500-10999
local service@nt authority 13500-13999
network service@nt authority 13000-13499
sarath@versatac.com 11000-11499, 11500-11999
system@nt authority 12500-12999, 10000-10499
----------------------------------------------------------
Total users : 5
This command provides a consolidated view of all users and their assigned port ranges for the given IP address. Each user may hold multiple port blocks if they have logged in across multiple sessions.
Command — Look Up User by Source Port:
vsm-vcsn0> show identity tsa mapping by-source-port T1-2 172.50.0.10 11500
Output:
Node blocksize : 500
User details,
name : sarath@versatac.com
range : 11500-11999
id : 0
grp_cnt : 0
login_timestamp : 2026-09-08 22:34:23
timestamp : 0
hit_count : 0
This command is particularly useful during troubleshooting — given a specific source port observed in traffic logs, it immediately identifies the user associated with that port. In this example, source port 11500 maps to sarath@versatac.com with a port range of 11500–11999.
The following section covers common issues encountered during TSA deployment and registration, along with recommended resolution steps.
Symptoms: The Versa TS Agent cannot connect or register to the captive portal service on the VOS.
Possible Causes & Resolution:
Symptoms: The VOS appliance does not show user-to-port mappings even after the TS Agent is registered.
Possible Causes & Resolution:
Symptoms: All users on the terminal server are subject to the same policy regardless of their identity or role.
Possible Causes & Resolution:
Symptoms: SSL/TLS handshake failures or certificate validation errors appear in the TS Agent logs.
Possible Causes & Resolution: