Free DISA STIG and SRG Library | Vaulted

Citrix XenDesktop 7.x Windows Virtual Delivery Agent Security Technical Implementation Guide

Version 1 Release 21
2019-04-262018-08-23
U_Citrix_XenDesktop_7-x_Windows_VDA_STIG_V1R21_Manual-xccdf.xml
This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DoD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via email to the following address: disa.stig_spt@mail.mil.

Compare Summary

Compare V1R2 to V1R1
  • All
  • Updated 1
  • Added 2
  • Removed 0

Vulnerabilities (4)

Added

V-81437

Citrix Windows Virtual Delivery Agent must only allow the use of DoD PKI established certificate authorities for verification of the establishment of protected sessions.

Finding ID
CXEN-VD-000970
Rule ID
SV-96151r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-APP-000427
CCI
CCI-002470
Target Key
(None)
Documentable
No
Discussion

Untrusted Certificate Authorities (CA) can issue certificates, but they may be issued by organizations or individuals that seek to compromise DoD systems or by organizations with insufficient security controls. If the CA used for verifying the certificate is not a DoD-approved CA, trust of this CA has not been established. The DoD will only accept PKI certificates obtained from a DoD-approved internal or external certificate authority. Reliance on CAs for the establishment of secure sessions includes, for example, the use of SSL/TLS certificates. This requirement focuses on communications protection for the application session rather than for the network packet. This requirement applies to applications that utilize communications sessions. This includes, but is not limited to, web-based applications and Service-Oriented Architectures (SOA).

Fix Text

Configure TLS on a VDA using the PowerShell script: 1. Install the TLS Certificate in the Local Computer >> Personal >> Certificates area of the certificate store. 2. If more than one certificate resides in that location, supply the thumbprint of the certificate to the PowerShell script. The Enable-VdaSSL.ps1 script enables or disables the TLS listener on a VDA. This script is available in the Support >> Tools >> SslSupport folder on the installation media. When you enable TLS, the script disables all existing Windows Firewall rules for the specified TCP port. It then adds a new rule that allows the ICA Service to accept incoming connections only on the TLS TCP and UDP ports. It also disables the Windows Firewall rules for: - Citrix ICA (default: 1494) - Citrix CGP (default: 2598) - Citrix WebSocket (default: 8008) The effect is that users can only connect using TLS or DTLS. They cannot use ICA/HDX, ICA/HDX with Session Reliability, or HDX over WebSocket, without TLS or DTLS. The PowerShell script configures TLS on static VDAs; it does not configure TLS on pooled VDAs that are provisioned by Machine Creation Services or Provisioning Services, where the machine image resets on each restart. Manually configure TLS on a VDA: When configuring TLS on a VDA manually, you grant generic read access to the TLS certificate's private key for the appropriate service on each VDA: NT SERVICE\PorticaService for a VDA for Windows Desktop OS, or NT SERVICE\TermService for a VDA for Windows Server OS. On the machine where the VDA is installed: 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: a) Select File >> Add/Remove Snap-in. b) Select "Certificates" and then click "Add". c) When prompted with "This snap-in will always manage certificates for:", choose "Computer account" and then click "Next". d) When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 3. Under Certificates (Local Computer) >> Personal >> Certificates, right-click the certificate and then select All Tasks >> Manage Private Keys. 4. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of your TLS certificate. Add one of the following services and give it Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" 5. Double-click the installed TLS certificate. In the certificate dialog, select the Details tab and then scroll to the bottom. Click "Thumbprint". 6. Run regedit and go to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd. a) Edit the SSL Thumbprint key and copy the value of the TLS certificate's thumbprint into this binary value. You can safely ignore unknown items in the Edit Binary Value dialog box (such as "0000" and special characters). b) Edit the SSLEnabled key and change the DWORD value to "1". (To disable SSL later, change the DWORD value to "0".) c) To change the default settings (optional), use the following in the same registry path: SSLPort DWORD – SSL port number. Default: 443. SSLMinVersion DWORD – 1 = SSL 3.0, 2 = TLS 1.0, 3 = TLS 1.1, 4 = TLS 1.2. Default: 2 (TLS 1.0). SSLCipherSuite DWORD – 1 = GOV, 2 = COM, 3 = ALL. Default: 3 (ALL). 7. Ensure the TLS TCP port is open in the Windows Firewall if it is not the default "443". (When you create the inbound rule in Windows Firewall, make sure its properties have the "Allow the connection" and "Enabled" entries selected.) 8. Ensure that no other applications or services (such as IIS) are using the TLS TCP port. 9. For VDAs for Windows Server OS, restart the machine for the changes to take effect. (You do not need to restart machines containing VDAs for Windows Desktop OS.) Configure TLS on Delivery Groups: Complete this procedure for each Delivery Group that contains VDAs that have been configured for TLS connections. 1. From Studio, open the PowerShell console. 2. Run asnp Citrix.* to load the Citrix product cmdlets. 3. Run Get-BrokerAccessPolicyRule -DesktopGroupName '<delivery-group-name>' | Set-BrokerAccessPolicyRule -HdxSslEnabled $true. 4. Run Set-BrokerSite -DnsResolutionEnabled $true.

Check Content

Verify TLS Certificate is installed in the Local Computer >> Personal >> Certificates area of the certificate store. 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: - Select File >> Add/Remove Snap-in. - Select "Certificates" and then click "Add". 3. When prompted with "This snap-in will always manage certificates for:", choose "Computer account" and then click "Next". 4. When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 5. Under Certificates (Local Computer) >> Personal >> Certificates, right–click the certificate and then select All Tasks >> Manage Private Keys. 6. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of the SSL certificate. Verify one of the following services is listed with Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" 7. Ensure the SSL TCP port is open in the Windows Firewall if it is not the default "443". If one of the associated services is not listed with Read access, this is a finding. If the SSL TCP port is not open in the Windows Firewall if it is not the default "443", this is a finding.

Added

V-81439

Citrix Windows Virtual Delivery Agent must implement cryptographic mechanisms to prevent unauthorized modification of organization-defined information at rest on organization-defined information system components.

Finding ID
CXEN-VD-000975
Rule ID
SV-96153r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-APP-000428
CCI
CCI-002475
Target Key
(None)
Documentable
No
Discussion

Applications handling data requiring "data at rest" protections must employ cryptographic mechanisms to prevent unauthorized disclosure and modification of the information at rest. Selection of a cryptographic mechanism is based on the need to protect the integrity of organizational information. The strength of the mechanism is commensurate with the security category and/or classification of the information. Organizations have the flexibility to either encrypt all information on storage devices (i.e., full disk encryption) or encrypt specific data structures (e.g., files, records, or fields).

Fix Text

Configure TLS on a VDA using the PowerShell script: 1. Install the TLS Certificate in the Local Computer >> Personal >> Certificates area of the certificate store. 2. If more than one certificate resides in that location, supply the thumbprint of the certificate to the PowerShell script. The Enable-VdaSSL.ps1 script enables or disables the TLS listener on a VDA. This script is available in the Support >> Tools >> SslSupport folder on the installation media. When you enable TLS, the script disables all existing Windows Firewall rules for the specified TCP port. It then adds a new rule that allows the ICA Service to accept incoming connections only on the TLS TCP and UDP ports. It also disables the Windows Firewall rules for: - Citrix ICA (default: 1494) - Citrix CGP (default: 2598) - Citrix WebSocket (default: 8008) The effect is that users can only connect using TLS or DTLS. They cannot use ICA/HDX, ICA/HDX with Session Reliability, or HDX over WebSocket, without TLS or DTLS. The PowerShell script configures TLS on static VDAs; it does not configure TLS on pooled VDAs that are provisioned by Machine Creation Services or Provisioning Services, where the machine image resets on each restart. Manually configure TLS on a VDA: When configuring TLS on a VDA manually, you grant generic read access to the TLS certificate's private key for the appropriate service on each VDA: NT SERVICE\PorticaService for a VDA for Windows Desktop OS, or NT SERVICE\TermService for a VDA for Windows Server OS. On the machine where the VDA is installed: 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: a) Select File >> Add/Remove Snap-in. b) Select "Certificates" and then click "Add". c) When prompted with "This snap-in will always manage certificates for:", choose "Computer account" and then click "Next". d) When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 3. Under Certificates (Local Computer) >> Personal >> Certificates, right-click the certificate and then select All Tasks >> Manage Private Keys. 4. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of the TLS certificate. Add one of the following services and give it Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" 5. Double-click the installed TLS certificate. In the certificate dialog, select the Details tab and then scroll to the bottom. Click "Thumbprint". 6. Run regedit and go to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd. a) Edit the SSL Thumbprint key and copy the value of the TLS certificate's thumbprint into this binary value. You can safely ignore unknown items in the Edit Binary Value dialog box (such as "0000" and special characters). b) Edit the SSLEnabled key and change the DWORD value to "1". (To disable SSL later, change the DWORD value to "0".) c) If you want to change the default settings (optional), use the following in the same registry path: SSLPort DWORD – SSL port number. Default: 443. SSLMinVersion DWORD – 1 = SSL 3.0, 2 = TLS 1.0, 3 = TLS 1.1, 4 = TLS 1.2. Default: 2 (TLS 1.0). SSLCipherSuite DWORD – 1 = GOV, 2 = COM, 3 = ALL. Default: 3 (ALL). 7. Ensure the TLS TCP port is open in the Windows Firewall if it is not the default "443". (When you create the inbound rule in Windows Firewall, make sure its properties have the "Allow the connection" and "Enabled" entries selected.) 8. Ensure that no other applications or services (such as IIS) are using the TLS TCP port. 9. For VDAs for Windows Server OS, restart the machine for the changes to take effect. (You do not need to restart machines containing VDAs for Windows Desktop OS.) Configure TLS on Delivery Groups: Complete this procedure for each Delivery Group that contains VDAs that have been configured for TLS connections. 1. From Studio, open the PowerShell console. 2. Run asnp Citrix.* to load the Citrix product cmdlets. 3. Run Get-BrokerAccessPolicyRule -DesktopGroupName '<delivery-group-name>' | Set-BrokerAccessPolicyRule -HdxSslEnabled $true. 4. Run Set-BrokerSite -DnsResolutionEnabled $true.

Check Content

Verify TLS Certificate is installed in the Local Computer >> Personal >> Certificates area of the certificate store. 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: - Select File >> Add/Remove Snap-in. - Select "Certificates" and then click "Add". 3. When prompted with "This snap-in will always manage certificates for:", choose "Computer account" and then click "Next". 4. When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 5. Under Certificates (Local Computer) >> Personal >> Certificates, right–click the certificate and then select All Tasks >> Manage Private Keys. 6. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of your SSL certificate. Verify one of the following services is listed with Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" 7. Ensure the SSL TCP port is open in the Windows Firewall if it is not the default "443". If one of the associated services is not listed with Read access, this is a finding. If the SSL TCP port is not open in the Windows Firewall if it is not the default "443", this is a finding.

Citrix Windows Virtual Delivery Agent must implement DoD-approved encryption.

Finding ID
CXEN-VD-000030
Rule ID
SV-96147r2_rule96147r1_rule
Severity
Cat I
CCE
(None)
Group Title
SRG-APP-000014
CCI
CCI-002422
Target Key
(None)
Documentable
No
Discussion

Without confidentiality protection mechanisms, unauthorized individuals may gain access to sensitive information via a remote access session. Remote access is access to DoD nonpublic information systems by an authorized user (or an information system) communicating through an external, non-organization-controlled network. Remote access methods include, for example, dial-up, broadband, and wireless. Encryption provides a means to secure the remote connection to prevent unauthorized access to the data traversing the remote access connection thereby providing a degree of confidentiality. The encryption strength of mechanism is selected based on the security categorization of the information. Satisfies: SRG-APP-000014, SRG-APP-000015, SRG-APP-000039, SRG-APP-000219, SRG-APP-000439, SRG-APP-000440, SRG-APP-000441, SRG-APP-000442

Fix Text

Configure TLS on a VDA using the PowerShell script: 1. Install the TLS Certificate in the Local Computer >> Personal >> Certificates area of the certificate store. 2. If more than one certificate resides in that location, supply the thumbprint of the certificate to the PowerShell script. The "Enable-VdaSSL.ps1" script enables or disables the TLS listener on a VDA. This script is available in the Support >> Tools >> SslSupport folder on the installation media. When you enable TLS, the script disables all existing Windows Firewall rules for the specified TCP port. It then adds a new rule that allows the ICA Service to accept incoming connections only on the TLS, TCP, and UDP ports. It also disables the Windows Firewall rules for: - Citrix ICA (default: 1494) - Citrix CGP (default: 2598) - Citrix WebSocket (default: 8008) The effect is that users can only connect using TLS or DTLS. They cannot use ICA/HDX, ICA/HDX with Session Reliability, or HDX over WebSocket without TLS or DTLS. The PowerShell script configures TLS on static VDAs; it does not configure TLS on pooled VDAs that are provisioned by Machine Creation Services or Provisioning Services, where the machine image resets on each restart. Manually configure TLS on a VDA: When configuring TLS on a VDA manually, you grant generic read access to the TLS certificate's private key for the appropriate service on each VDA: NT SERVICE\PorticaService for a VDA for Windows Desktop OS, or NT SERVICE\TermService for a VDA for Windows Server OS. On the machine where the VDA is installed: 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: a) Select File >> Add/Remove Snap-in. b) Select "Certificates" and then click "Add". c) When prompted with "This snap-in will always manage certificates for:" choose "Computer account" and then click "Next". d) When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 3. Under Certificates (Local Computer) >> Personal >> Certificates, right-click the certificate and then select All Tasks >> Manage Private Keys. 4. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of the TLS certificate. Add one of the following services and give it Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" 5. Double-click the installed TLS certificate. In the certificate dialog, select the "Details" tab and then scroll to the bottom. Click "Thumbprint". 6. Run "regedit" and go to "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd". a) Edit the SSL Thumbprint key and copy the value of the TLS certificate's thumbprint into this binary value. You can safely ignore unknown items in the Edit Binary Value dialog box (such as "0000" and special characters). b) Edit the SSLEnabled key and change the DWORD value to "1". (To disable SSL later, change the DWORD value to "0".) c) To change the default settings (optional), use the following in the same registry path: SSLPort DWORD – SSL port number. Default: 443. SSLMinVersion DWORD – 1 = SSL 3.0, 2 = TLS 1.0, 3 = TLS 1.1, 4 = TLS 1.2. Default: 2 (TLS 1.0). SSLCipherSuite DWORD – 1 = GOV, 2 = COM, 3 = ALL. Default: 3 (ALL). 7. Ensure the TLS TCP port is open in the Windows Firewall if it is not the default "443". (When creating the inbound rule in Windows Firewall, make sure its properties have the "Allow the connection" and "Enabled" entries selected.) 8. Ensure that no other applications or services (such as IIS) are using the TLS TCP port. 9. For VDAs for Windows Server OS, restart the machine for the changes to take effect. (You do not need to restart machines containing VDAs for Windows Desktop OS.) Configure TLS on Delivery Groups: Complete this procedure for each Delivery Group that contains VDAs that have been configured for TLS connections. 1. From "Studio", open the PowerShell console. 2. Run "asnp Citrix.*" to load the Citrix product cmdlets. 3. Run the following command Get-BrokerAccessPolicyRule -DesktopGroupName '&lt;delivery-group-name>' | Set-BrokerAccessPolicyRule -HdxSslEnabled $true. 4. Run the following command Set-BrokerSite -DnsResolutionEnabled $true.

Check Content

NOTE: If an approved DoD VPN or proxy device is used for external connections, this requirement is Not Applicable. Verify TLS Certificate is installed in the Local Computer >> Personal >> Certificates area of the certificate store. 1. Launch the Microsoft Management Console (MMC): Start >> Run >> mmc.exe. 2. Add the Certificates snap-in to the MMC: - Select File >> Add/Remove Snap-in. - Select "Certificates" and then click "Add". 3. When prompted with "This snap-in will always manage certificates for:" choose "Computer account" and then click "Next". 4. When prompted with "Select the computer you want this snap-in to manage", choose "Local computer" and then click "Finish". 5. Under Certificates (Local Computer) >> Personal >> Certificates, right-click the certificate and then select All Tasks >> Manage Private Keys. 6. The Access Control List Editor displays "Permissions for (FriendlyName) private keys" where (FriendlyName) is the name of the SSL certificate. Verify one of the following services is listed with Read access: - For a VDA for Windows Desktop OS, "PORTICASERVICE" - For a VDA for Windows Server OS, "TERMSERVICE" If one of the associated services is not listed with "Read" access, this is a finding.

Citrix Windows Virtual Delivery Agent must be configured to prohibit or restrict the use of ports, as defined in the PPSM CAL and vulnerability assessments.

Finding ID
CXEN-VD-000275
Rule ID
SV-96149r1_rule
Severity
Cat II
CCE
(None)
Group Title
SRG-APP-000142
CCI
CCI-000382
Target Key
(None)
Documentable
No
Discussion

In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types), organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems. Applications are capable of providing a wide variety of functions and services. Some of the functions and services provided by default may not be necessary to support essential organizational operations. Additionally, it is sometimes convenient to provide multiple services from a single component (e.g., email and web services; however, doing so increases risk over limiting the services provided by any one component. To support the requirements and principles of least functionality, the application must support the organizational requirements providing only essential capabilities and limiting the use of ports, protocols, and/or services to only those required, authorized, and approved to conduct official business or to address authorized quality of life issues.

Fix Text

To change the VDA registration port from the default "80", create the Citrix Machine Policy and update the DDCs, as explained below: 1. Create a new Citrix Machine policy or edit an existing one. 2. Navigate to the Settings tab and select "Control Registration Port". 3. Update the Value to reflect the new port. 4. Select "OK". 5. Restart all desktops and wait until all the desktops report as Unregistered. 6. Update the DDCs' VDA registration Port. 7. Restart all desktops and verify that all VDAs register successfully.

Check Content

On Delivery Controllers, verify that only approved ports are used. 1. Open a command prompt. 2. Navigate to the XenDesktop install directory Program Files\Citrix\Broker\Service 3. Enter BrokerService.exe /Show to display the currently used ports. If an unapproved port is used, this is a finding.