Select any two versions of this STIG to compare the individual requirements
Select any old version/release of this STIG to view the previous requirements
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@connectionTimeout' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: connectionTimeout="300000" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Configure the http <Connector> node with the value: connectionTimeout="300000" Example: <Connector .. connectionTimeout="300000" ..> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@maxThreads' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: maxThreads="800" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Configure each <Connector> node with the value: maxThreads="800" Example: <Connector .. maxThreads="800" ..> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@maxPostSize' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: XPath set is empty If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to each of the <Connector> nodes. Remove any configuration for "maxPostSize". Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/context.xml | xmllint --xpath '/Context/@useHttpOnly' - Expected result: useHttpOnly="true" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/context.xml Add the following configuration to the <Context> node: useHttpOnly="true" Example: <Context useHttpOnly="true" sessionCookieName="VSPHERE-UI-JSESSIONID" sessionCookiePath="/ui"> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/server.xml | xmllint --xpath '/Server/Service/Engine/Host/Valve[@className="org.apache.catalina.valves.AccessLogValve"]/@pattern' - Expected result: pattern="%h %{x-forwarded-for}i %l %u %t &quot;%r&quot; %s %b %{#hashedClientId#}s %{#hashedRequestId#}r %I %D" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Ensure the log pattern in the "org.apache.catalina.valves.AccessLogValve" node is set to the following: pattern="%h %{x-forwarded-for}i %l %u %t "%r" %s %b %{#hashedClientId#}s %{#hashedRequestId#}r %I %D" Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep StreamRedirectFile /etc/vmware/vmware-vmon/svcCfgfiles/vsphere-ui.json Expected result: "StreamRedirectFile": "%VMWARE_LOG_DIR%/vmware/vsphere-ui/logs/vsphere-ui-runtime.log", If no log file is specified for the "StreamRedirectFile" setting, this is a finding.
Navigate to and open: /etc/vmware/vmware-vmon/svcCfgfiles/vsphere-ui.json Below the last line of the "PreStartCommandArg" block, add or reconfigure the following line: "StreamRedirectFile": "%VMWARE_LOG_DIR%/vmware/vsphere-ui/logs/vsphere-ui-runtime.log", Restart the appliance for changes to take effect.
At the command prompt, run the following command: # find /var/log/vmware/vsphere-ui/ -xdev -type f -a '(' -perm -o+w -o -not -user vsphere-ui -o -not -group users -a -not -group root ')' -exec ls -ld {} \; If any files are returned, this is a finding.
At the command prompt, run the following commands: # chmod 644 /storage/log/vmware/vsphere-ui/logs/<file> # chown vsphere-ui:users /storage/log/vmware/vsphere-ui/logs/<file> Note: Substitute <file> with the listed file.
At the command prompt, run the following command: # rpm -V vsphere-ui|grep "^..5......"|grep -v -E "\.prop|\.pass|\.xml|\.json" If there is any output, this is a finding.
Reinstall the vCenter Server Appliance (VCSA) or roll back to a snapshot. VMware does not support modifying the vSphere UI installation files manually.
At the command prompt, run the following command: # diff <(find /usr/lib/vmware-vsphere-ui/plugin-packages/vsphere-client/plugins -type f|sort) <(rpm -ql vsphere-ui|grep "/usr/lib/vmware-vsphere-ui/plugin-packages/vsphere-client/plugins/"|sort) If there is any output, this indicates a vSphere UI plugin is present that does not ship with the vCenter Server Appliance (VCSA). If this plugin is not known and approved, this is a finding.
For every unauthorized plugin returned by the check, run the following command: # rm <file>
At the command prompt, run the following command: # grep UserDatabaseRealm /usr/lib/vmware-vsphere-ui/server/conf/server.xml If the command produces any output, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Remove all <Realm> nodes. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep "package.access" /usr/lib/vmware-vsphere-ui/server/conf/catalina.properties Expected result: package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties Ensure the "package.access" line is configured as follows: package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep -En '(x-csh<)|(x-sh<)|(x-shar<)|(x-ksh<)' /usr/lib/vmware-vsphere-ui/server/conf/web.xml If the command produces any output, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Remove all of the following nodes lines: <mime-type>application/x-csh</mime-type> <mime-type>application/x-shar</mime-type> <mime-type>application/x-sh</mime-type> <mime-type>application/x-ksh</mime-type> Restart the service with the following command: # vmon-cli --restart vsphere-ui Note: Delete the entire mime-mapping node for the target mime-type. Example: <mime-mapping> <extension>sh</extension> <mime-type>application/x-sh</mime-type> </mime-mapping>
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '/web-app/servlet-mapping/servlet-name[text()="jsp"]/parent::servlet-mapping' - Expected result: <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping> If the .jsp and .jspx file url-patterns are not configured as in the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Navigate to and locate the mapping for the JSP servlet. It is the <servlet-mapping> node that contains <servlet-name>jsp</servlet-name>. Configure the <servlet-mapping> node to look like the code snippet below: <!-- The mappings for the JSP servlet --> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep -n 'webdav' /usr/lib/vmware-vsphere-ui/server/conf/web.xml If the command produces any output, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml. Find the <servlet-name>webdav</servlet-name> node and remove the entire parent <servlet> block. Find the <servlet-name>webdav</servlet-name> node and remove the entire parent <servlet-mapping> block. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep JreMemoryLeakPreventionListener /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to the <Server> node. Add '<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>' to the <Server> node. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # find /usr/lib/vmware-vsphere-ui/server/static/ -type l -ls If the command produces any output, this is a finding.
At the command prompt, run the following command: Note: Replace <file_name> for the name of any files that were returned. unlink <file_name> Repeat the command for each file that was returned.
At the command prompt, run the following command: # find /usr/lib/vmware-vsphere-ui/server/lib /usr/lib/vmware-vsphere-ui/server/conf -xdev -type f -a '(' -perm -o+w -o -not -user root -o -not -group root ')' -exec ls -ld {} \; If the command produces any output, this is a finding.
At the command prompt, run the following commands: # chmod o-w <file> # chown root:root <file> Repeat the commands for each file that was returned.
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/context.xml | xmllint --xpath '/Context/@sessionCookiePath' - Expected result: sessionCookiePath="/ui" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/context.xml Add the following configuration to the <Context> node: sessionCookiePath="/ui" Example: <Context useHttpOnly="true" sessionCookieName="VSPHERE-UI-JSESSIONID" sessionCookiePath="/ui"> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command line, run the following command: # grep EXIT_ON_INIT_FAILURE /usr/lib/vmware-vsphere-ui/server/conf/catalina.properties Expected result: org.apache.catalina.startup.EXIT_ON_INIT_FAILURE=true If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/catalina.properties Add or change the following line: org.apache.catalina.startup.EXIT_ON_INIT_FAILURE=true Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@acceptCount' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: acceptCount="300" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to the <Connector> configured with port="${http.port}". Add or change the following value: acceptCount="300" Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@URIEncoding' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: URIEncoding="UTF-8" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to each of the <Connector> nodes. Configure each <Connector> node with the value 'URIEncoding="UTF-8"'. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '/web-app/welcome-file-list' - Expected result: <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Add the following section under the <web-apps> node: <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '//param-name[text()="listings"]/parent::init-param' - Expected result: <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Set the <param-value> to "false" in all <param-name>listing</param-name> nodes. Note: The setting should look like the following: <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --xpath '/Server/Service/Connector[@port="${http.port}"]/@server' /usr/lib/vmware-vsphere-ui/server/conf/server.xml Expected result: server="Anonymous" If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to each of the <Connector> nodes. Configure each <Connector> node with 'server="Anonymous"'. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/server.xml | xmllint --xpath '/Server/Service/Engine/Host/Valve[@className="org.apache.catalina.valves.ErrorReportValve"]' - Expected result: <Valve className="org.apache.catalina.valves.ErrorReportValve" showServerInfo="false" showReport="false"/> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Locate the following Host block: <Host ...> ... </Host> Inside this block, remove any existing Valve with className="org.apache.catalina.valves.ErrorReportValve" and add the following: <Valve className="org.apache.catalina.valves.ErrorReportValve" showServerInfo="false" showReport="false"/> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # grep allowTrace /usr/lib/vmware-vsphere-ui/server/conf/server.xml If "allowTrace" is set to "true", this is a finding. If no line is returned, this is not a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Navigate to and locate 'allowTrace="true"'. Remove the 'allowTrace="true"' setting. Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '//param-name[text()="debug"]/parent::init-param' - Expected result: <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Navigate to all <debug> nodes that are not set to "0". Set the <param-value> to "0" in all <param-name>debug</param-name> nodes. Note: The debug setting should look like the following: <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # rpm -V vsphere-ui|grep serviceability.xml|grep "^..5......" If the command returns any output, this is a finding.
Reinstall the VCSA or roll back to a snapshot. VMware does not support modifying the vSphere UI installation files manually.
At the command prompt, run the following command: # rpm -V VMware-visl-integration|grep vmware-services-vsphere-ui.conf|grep "^..5......" If the command returns any output, this is a finding.
Navigate to and open: /etc/vmware-syslog/vmware-services-vsphere-ui.conf Create the file if it does not exist. Set the contents of the file as follows: input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/vsphere_client_virgo.log" Tag="ui-main" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/changelog.log" Tag="ui-changelog" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/dataservice.log" Tag="ui-dataservice" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/apigw.log" Tag="ui-apigw" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/equinox.log" Tag="ui-equinox" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/eventlog.log" Tag="ui-eventlog" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/httpRequest.log" Tag="ui-httpRequest" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/opid.log" Tag="ui-opid" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/osgi.log" Tag="ui-osgi" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/performanceAudit.log" Tag="ui-performanceAudit" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/plugin-medic.log" Tag="ui-plugin-medic" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/threadmonitor.log" Tag="ui-threadmonitor" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/threadpools.log" Tag="ui-threadpools" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/vspheremessaging.log" Tag="ui-vspheremessaging" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/vsphere-ui-rpm.log" Tag="ui-rpm" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/vsphere-ui-runtime*" Tag="ui-runtime" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/logs/access/localhost_access*" Tag="ui-access" Severity="info" Facility="local0") input(type="imfile" File="/var/log/vmware/vsphere-ui/vsphere-ui-gc*" Tag="ui-gc" Severity="info" Facility="local0") input(type="imfile" File="/var/log/firstboot/vsphere_ui_firstboot*" Tag="ui-firstboot" Severity="info" Facility="local0")
At the command prompt, run the following command: # grep '\.port' /usr/lib/vmware-vsphere-ui/server/conf/catalina.properties Expected result: http.port=5090 proxy.port=443 If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/catalina.properties Navigate to the ports specification section. Set the vSphere UI port specifications according to the shipping configuration as follows: http.port=5090 proxy.port=443 Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following commands: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/server.xml | sed '2 s/xmlns=".*"//g' | xmllint --xpath '/Server/@port' - Expected result: port="${shutdown.port}" If the output does not match the expected result, this is a finding. # grep shutdown /etc/vmware/vmware-vmon/svcCfgfiles/vsphere-ui.json|sed -e 's/^[ ]*//' Expected result: "-Dshutdown.port=-1", If the output does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/server.xml Ensure the server port is disabled: <Server port="${shutdown.port}"> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '/web-app/session-config/cookie-config/secure' - Expected result: <secure>true</secure> If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Navigate to the /<web-apps>/<session-config>/<cookie-config> node and configure it as follows. <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config> Restart the service with the following command: # vmon-cli --restart vsphere-ui
At the command prompt, run the following command: # xmllint --format /usr/lib/vmware-vsphere-ui/server/conf/web.xml | sed 's/xmlns=".*"//g' | xmllint --xpath '/web-app/servlet/servlet-name[text()="default"]/../init-param/param-name[text()="readonly"]/../param-value[text()="false"]' - Expected result: XPath set is empty If the output of the command does not match the expected result, this is a finding.
Navigate to and open: /usr/lib/vmware-vsphere-ui/server/conf/web.xml Navigate to the /<web-apps>/<servlet>/<servlet-name>default</servlet-name>/ node and remove the following node: <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> Restart the service with the following command: # vmon-cli --restart vsphere-ui