Remote Desktop Services With Vijeo Citect 2015
Remote Desktop Services With Vijeo Citect 2015
Jacky Lang
Martin Lalanne
Warwick Black
Summary
1. Remote Desktop Services (RDS) 3
1.1. Benefits at a glance 3
1.2. Supported Operating Systems 3
1.3. SCADA Licensing 3
1.4. Windows Remote Desktop Client License 4
1.5. Architectures 4
2. SCADA Installation 6
2.1. Project Setup – Computer Setup Editor 6
In a Vijeo Citect 2015 system, the RDSH is configured to host SCADA Clients, by publishing a RemoteApp.
When an RD Client runs the RemoteApp, they view and interact with the program as if it were locally installed,
whilst leveraging the processing power and connectivity of the RDSH. In addition, RDP uses 128 bit encryption,
and RD Clients are not limited to Windows-based devices.
These attributes make it a good candidate to allow Remote Access to a SCADA System, and can be used with
other standard security products, such as two-factor authentication and VPNs.
The client licence entitlement can be also specified with switch /l (l for licence), with /l:1 for a view-only client,
while /l:2 is for a control client. This assumes that the default Citect.ini file will be used and switch /l simply
overrides the [Client]ComputerRole setting. In this case, there is no need to create a separate Citect.ini for each
type of clients. It should be noted that switch /l can only be used with switch /x.
1.4. Windows Remote Desktop Client License
Remote Connection Sessions using Remote Desktop Services require a standard Microsoft Client Access
License (CAL) for each connection to the server.
1.5. Architectures
1.5.1. SCADA and RDS on the same Server
It is possible to host the SCADA Servers on the same PC as the hosted Client Sessions.
This requires the smallest infrastructure, however, as all Servers and Clients now rely on the same hardware, this
becomes a single point of failure for the entire system.
Note: Softkey licensing is not supported in this architecture. Only hardware licenses (USB keys) are supported
through the floating license mechanism to connected server components. For more details see section 1.3.
In this architecture, you may consider installing the SCADA Server as a Windows Service.
This allows the SCADA Server to run on the RDS Server without the need for a logged in interactive user. Other
benefits and instructions can be found in the ‘Vijeo Citect 2015 Run as a Windows Service’ whitepaper.
RDP
Client
RemoteApp
SCADA Server
Client PC
RDS Server
SCADA Server
Client
RemoteApp
SCADA Server
Client PC
SCADA Server RDS Server
1.5.3. RDS for Secure Remote Access
The use of RDS allows advanced architectures that allow for Secure Remote access.
Following the principles of the IEC-52443 (ISA 99) standard, functional ‘Zones’ can be created and the
interactions (‘Conduits’) between these zones controlled via heavily restricted firewall rules.
In the configuration below, all the traffic leaving the premises is encrypted via the Remote Desktop Protocol.
Additional VPN technology could be used to further protect the data on the wire.
Since RDS is a standard Windows technology, additional authentication methods such as Two-Factor
Authentication could easily be applied.
SCADA Server
RDS Server
Client PC
2. SCADA Installation
At a minimum, the Vijeo Citect SCADA ‘Runtime Only Client’ installation is required on the RDSH (Remote
Desktop Session Host):
This can be installed following the ‘Installation Guide’ provided on the installation Media.
Note: If you install Vijeo Citect SCADA after installing Remote Desktop Services, the installer may not complete.
This is a known issue and Appendix A outlines a workaround.
Run ‘Computer Setup Wizard’, and add any required Citect.INI customizations
Note: Other methods of distributing project files are documented in the product help, under:
‘Distributing the Project’
3. RDSH Installation (Windows Server 2012 R2)
Note: You must be logged in as a Domain user
The following steps must be followed to install Remote Desktop Services on Windows 2012 R2:
Open Server Manager >> Click Manage and ‘Add Roles and Features’:
Proceed through the wizard, confirming your selection then click ‘Install’
3.1. Deploy RDS
Note: You must be logged in as a Domain user
The next step is to deploy the RDS Service on the Host machine:
Open Server Manager >> Click Manage and Add Roles and Features
Select the server used for RDS, confirm the selection and install
The RD Licensing is ready and is displayed in the Overview view:
3.2.1. Add CALs to License Server
RDS Sessions require a standard Microsoft Client Access License (CAL) for each connection to the server, these
need to be added into the RD Licensing Manager. You may need to purchase additional licenses from Microsoft.
Open RD Licensing Manager on Start >> All Programs >> Administrative Tools >> Remote Desktop
Services > Remote Desktop Licensing Manager
The Wizard will connect you to the ‘Microsoft Clearinghouse’ where you can activate your previously
purchased CAL licenses
If you need to purchase additional CALs, you will need to do that via:
http://go.microsoft.com/fwlink/?LinkId=81077
After completing the Wizard, the CAL Licenses will be displayed on the RD Licensing Manager:
3.2.2. ‘No License Server’ – Known Issue
If the RDSH server complains about no licensing server being set, please follow the instructions in Appendix B.
Server Manager >> Remote Desktop Services >> Overview >> Deployment Overview >> Tasks >> Edit
Deployment Properties:
Open RD Licensing Diagnoser: Start >> Programs >> Administrative Tools >> RD Licensing Diagnoser
3.3. Configure RDS Session Timeouts
Once the RD Client session starts and runs the Citect application, the license it obtains from the SCADA system
will not be released until the session is closed.
By default, the RDS session will not terminate just because the RDS Client closes its window to the server. The
server will continue to process this session indefinitely.
To keep operators from creating unused sessions, the Remote Desktop Services Host can be setup to
automatically end sessions that have been disconnected. In this way the Citect licenses will release properly
back to the Citect Server components where they will be available for future sessions.
Below are the required steps to configure an automatic expiry of any disconnected session. This means that a
Citect license will not be tied up in a disconnected session for more than 1 minute:
Open Server Manager >> Remote Desktop Services >> QuickSessionCollection >> Properties >> Tasks
>> Edit Properties
In the Session section, set ‘End a disconnected session’ to the desired level, i.e 1 minute
Open: Server Manager >> Remote Desktop Services >> QuickSessionCollection >> RemoteApp
Programs >> Tasks >> Publish RemoteApp Programs
By default, Calculator, Paint and WordPad are already published, these can be removed
Highlight the new ‘Vijeo Citect Runtime’ entry, right click and select ‘Edit Properties’
Under ‘Parameters’
Set the ‘/x’ flag so that Clients do not load ‘Runtime Manager’
Under ‘User Assignment’, select ‘Only Specified Users and Groups’, then click ‘Add’ in order to add
which windows Users / Groups should have access to the RemoteApp
3.4.1. Custom INI Paths
Custom INI paths can be set for the RemoteApp, this is especially important if you are also running your SCADA
Servers on the same machine, or if you have a mix of ‘View-Only’ and ‘Control’ Clients. It is also possible to
specify the license type and override the default citect.ini settings using the switch /l (l for license). For more
details see section 1.3.
Ensure any custom INI files are accessable by the intended users.
Alternatively, if you don’t want to specify a custom citect.ini file, you can override the local citect.ini role
setting to force a view-only client, by using the /l switch in conjunction with /x:
/x /l:1
3.4.1.3 Control Client
Copy, rename and edit the INI file to contain:
[Client] ComputerRole = 1
[Client] FullLicence=0
Publish a second instance of the RemoteApp
Under ‘General’, rename it to indicate it is a ‘Control’ Client
Modify the ‘Parameters’ to point to this new INI file:
‘/x’ to prevent Runtime Manager from loading
‘/i’ followed by a custom INI path (encased in double quotes)
Alternatively, if you don’t want to specify a custom citect.ini file, you can override the local citect.ini role
setting to force a control client, by using the /l switch in conjunction with /x:
/x /l:2
4. RDSH Installation (Windows Server 2008 R2)
To install RDS service on your host machine:
Under ‘Server Roles’, select ‘Remote Desktop Services’ then click ‘Next’
Select the following ‘Role Services’:
o Remote Desktop Connection Broker
o Remote Desktop Licensing
o Remote Desktop Session Host
o Remote Desktop Web Access
Take note of the ‘Uninstall and Reinstall Applications for Compatibility’ warning, then click ‘Next’ if you
wish to proceed
Depending on your needs, choose whether ‘Network Level Authentication’ is required
Choose the correct licensing model for your Client Access Licenses (CALs)
Add the Users or Domain Groups that require RDS Access
On ‘Configure Client Experience’, you could leave everything as default and then click on Next
Check ‘Configure a discovery scope for RD licensing’, select ‘This Domain’, then click ‘Next’
In the Right Pane - Right click ‘Remote Desktop license servers’ and select ‘Properties’
Start > Administrative Tools > Remote Desktop Services, then click ‘RemoteApp Manager’.
In addition you will need to add the user/group to the list of allowed ‘Remote Desktop Users’, otherwise
you will get the error below when trying to launch the RemoteApp
Open ‘System Properties’ - from the ‘Run’ dialog, type ‘SystemPropertiesRemote’
Ensure any custom INI files are accessable by the intended users.
[Client] ComputerRole
0 = Server and Control Client
1 = Control Client (enables [Client]FullLicense)
2 = View-Only Client
[Client] FullLicense
0 = Do not use a full license
1 = Use a Full licenese
Alternatively, if you don’t want to specify a custom citect.ini file, you can override the local citect.ini role
setting to force a view-only client, by using the /l switch in conjunction with /x:
/x /l:1
4.2.1.3 Control Client
Copy, rename and edit the INI file to contain:
[Client] ComputerRole = 1
[Client] FullLicence=0
Publish a second instance of the RemoteApp
Under ‘General’, rename it to indicate it is a ‘Control’ Client
Modify the ‘Parameters’ to point to this new INI file:
‘/x’ to prevent Runtime Manager from loading
‘/i’ followed by a custom INI path (encased in double quotes)
Alternatively, if you don’t want to specify a custom citect.ini file, you can override the local citect.ini role
setting to force a control client, by using the /l switch in conjunction with /x:
/x /l:2
Two newly created instances can now be seen on the http://your_server/rdweb page:
4.2.2. Alternative Distribution Method
Instead of navigating via the RDWeb webpage, you could also create an .rdp file, or even an installation
package, which can be distributed to the Client machines, and run directly.
5. Run the RemoteApp
From another PC, navigate Internet Explorer to: http://your_server/rdweb
Launch the App, you may be prompted to enter your credentials again:
You may be prompted with a dialog asking which local resources you wish to share
Typically none are required, but this may be project-dependent
The modified logo and the System Tray messages show that it is running as a RemoteApp
On the RDSH machine, Task Manager will reveal the RemoteApp connections, showing additional
Citect32.exe instances being spawned under different accounts:
6. Appendix A – Installer Known Issue
Note: Group Policies only apply to Domain Accounts.
You must use a Domain Account for this workaround.
If the RDS service is already installed when you try to Install VJC, the ‘Windows Installer Coordinator’, will
appear to ‘hang’ and the installer will never complete.
This problem is caused by an incompatibility with the Embedded MSI technology and the Windows Installer
Coordinator. The Coordinator is responsible for keeping multiple MSI installations from running concurrently.
The work around for this issue is to disable the ‘Remote Desktop Session Host Windows Installer’ for the
duration of the installation:
Computer Configuration >> Administrative Templates >> Windows Components >> Remote Desktop Services >>
Remote Desktop Session Host >> Application Compatibility
Set “Turn off Windows Installer RDS Compatibility” to ENABLED
Once this property is turned off, Windows Installer Coordinator should immediately continue to the
next task, however, you may need to restart the installation
This setting can be reverted once the installer has completed
Use the following query to see what is currently set on the server (use Windows PowerShell running as
Administrator):
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()
If there is no licensing server specified in the SpecifiedLSList, we can set this manually using the following
command lines:
$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("LicenseServerName.DomainName.com")