VMware vSphere 6.7 RhttpProxy STIG
VMware vSphere 6.7 RhttpProxy Security Technical Implementation Guide. Version v1 r2, released Feb. 8, 2022.
VCRP-67-000007: The rhttpproxy private key file must be protected from unauthorized access.
At the command prompt, execute the following command: # stat -c "%n permissions are %a, is owned by %U and group owned by %G" /etc/vmware-rhttpproxy/ssl/rui.key Expected result: /etc/vmware-rhttpproxy/ssl/rui.key permissions are 600, is owned by root and group owned by root If the output does not match the expected result, this is a finding.
Discussion
The rhttpproxy's private key is used to prove the identity of the server to clients and securely exchange the shared secret key used to encrypt communications between the web server and clients. By gaining access to the private key, an attacker can pretend to be an authorized server and decrypt the TLS traffic between a client and the web server.
Fix
At the command prompt, execute the following commands: # chmod 600 /etc/vmware-rhttpproxy/ssl/rui.key # chown root:root /etc/vmware-rhttpproxy/ssl/rui.key
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000006: The rhttpproxy must have logging enabled.
At the command prompt, execute the following command: # xmllint --xpath '/config/log/outputToFiles' /etc/vmware-rhttpproxy/config.xml Expected result: <outputToFiles>true</outputToFiles> If the output does not match the expected result, this is a finding.
Discussion
After a security incident has occurred, investigators will often review log files to determine what happened. The rhttpproxy must create logs upon service startup to capture information relevant to investigations.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<log> block and configure <outputToFiles> as follows: <outputToFiles>true</outputToFiles> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000002: The rhttpproxy must set a limit on established connections.
At the command prompt, execute the following command: # xmllint --xpath '/config/vmacore/http/maxConnections' /etc/vmware-rhttpproxy/config.xml Expected result: <maxConnections> 2048 </maxConnections> If the output does not match the expected result, this is a finding.
Discussion
The rhttpproxy client connections must be limited to preserve system resources and continue servicing connections without interruption. Without a limit set, the system would be vulnerable to a trivial denial-of-service attack where connections are created en masse and vCenter resources are entirely consumed. The rhttproxy comes configured with a tested and supported value that must be maintained.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<vmacore>/<http> block and configure <maxConnections> as follows: <maxConnections> 2048 </maxConnections> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000009: The rhttpproxy log files must be moved to a permanent repository in accordance with site policy.
At the command prompt, execute the following command: # grep -v "^#" /etc/vmware-syslog/stig-services-rhttpproxy.conf Expected result: input(type="imfile" File="/var/log/vmware/rhttpproxy/rhttpproxy.log" Tag="rhttpproxy-main" Severity="info" Facility="local0") If the file does not exist, this is a finding. If the output of the command does not match the expected result, this is a finding.
Discussion
The rhttpproxy produces a handful of logs that must be offloaded from the originating system. This information can then be used for diagnostic, forensic, or other purposes relevant to ensuring the availability and integrity of the hosted application.
Fix
Navigate to and open /etc/vmware-syslog/stig-services-rhttpproxy.conf. Create the file if it does not exist. Set the contents of the file as follows: input(type="imfile" File="/var/log/vmware/rhttpproxy/rhttpproxy.log" Tag="rhttpproxy-main" Severity="info" Facility="local0")
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000003: The rhttpproxy must be configured to operate solely with FIPS ciphers.
At the command prompt, execute the following command: # xmllint --xpath '/config/vmacore/ssl/fips' /etc/vmware-rhttpproxy/config.xml Expected result: <fips>true</fips> If the output does not match the expected result, this is a finding.
Discussion
The rhttpproxy ships with FIPS 140-2 validated OpenSSL cryptographic libraries and is configured by default to run in FIPS mode. This module is used for all crypto operations performed by rhttproxy, including protection of data-in-transit over the client TLS connection.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<vmacore>/<ssl> block and configure <fips> as follows: <fips>true</fips> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000004: The rhttpproxy must use cryptography to protect the integrity of remote sessions.
At the command prompt, execute the following command: # xmllint --xpath '/config/vmacore/ssl/protocols' /etc/vmware-rhttpproxy/config.xml Expected result: <protocols>tls1.2</protocols> OR XPath set is empty If the output does not match the expected result, this is a finding.
Discussion
The rhttpproxy can be configured to support TLS 1.0, 1.1 and 1.2. Due to intrinsic problems in TLS 1.0 and TLS 1.1, they are disabled by default. The <protocol> block in the rhttproxy configuration is commented out by default, and this configuration forces TLS 1.2. The block may also be set to "tls1.2" in certain upgrade scenarios, but the effect is the same.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<vmacore>/<ssl> block and configure <protocols> as follows: <protocols>tls1.2</protocols> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000008: The rhttproxy must exclusively use the HTTPS protocol for client connections.
At the command prompt, execute the following command: # xmllint --xpath '/config/ssl' /etc/vmware-rhttpproxy/config.xml Expected result: <ssl> <!-- The server private key file --> <privateKey>/etc/vmware-rhttpproxy/ssl/rui.key</privateKey> <!-- The server side certificate file --> <certificate>/etc/vmware-rhttpproxy/ssl/rui.crt</certificate> <!-- vecs server name. Currently vecs runs on all node types. --> <vecsServerName>localhost</vecsServerName> </ssl> If the output does not match the expected result, this is a finding.
Discussion
Remotely accessing vCenter via the rhttpproxy involves sensitive information going over the wire. To protect the confidentiality and integrity of these communications, the rhttpproxy must be configured to use an encrypted session of HTTPS rather than plain-text HTTP. The SSL configuration block inside the rhttproxy configuration must be present and configured correctly to safely enable TLS.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the first <ssl> block and set its content to the following: <ssl> <!-- The server private key file --> <privateKey>/etc/vmware-rhttpproxy/ssl/rui.key</privateKey> <!-- The server side certificate file --> <certificate>/etc/vmware-rhttpproxy/ssl/rui.crt</certificate> <!-- vecs server name. Currently vecs runs on all node types. --> <vecsServerName>localhost</vecsServerName> </ssl> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000005: The rhttpproxy must produce log records containing sufficient information to establish the source of events.
At the command prompt, execute the following command: # xmllint --xpath '/config/log/level' /etc/vmware-rhttpproxy/config.xml Expected result: <level>verbose</level> If the output does not match the expected result, this is a finding.
Discussion
After a security incident has occurred, investigators will often review log files to determine what happened, and determining the source of an event is crucial for forensics. The rhttpproxy must be configured for verbose logging to capture client IP addresses and the associated actions.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<log> block and configure <level> as follows: <level>verbose</level> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None
VCRP-67-000001: The rhttpproxy must drop connections to disconnected clients.
At the command prompt, execute the following command: # xmllint --xpath '/config/vmacore/tcpKeepAlive/clientSocket/idleTimeSec' /etc/vmware-rhttpproxy/config.xml Expected result: <idleTimeSec>900</idleTimeSec> If the output does not match the expected result, this is a finding.
Discussion
The rhttpproxy client connections that are established but no longer connected can consume resources that might otherwise be required by active connections. It is a best practice to terminate connections that are no longer connected to an active client.
Fix
Navigate to and open /etc/vmware-rhttpproxy/config.xml. Locate the <config>/<vmacore>/<tcpKeepAlive>/<clientSocket> block and configure <idleTimeSec> as follows: <idleTimeSec>900</idleTimeSec> Restart the service for changes to take effect. # vmon-cli --restart rhttpproxy
Rating Info
DISA Cat II. NIST impact 3.
Expert Comment
None