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
Note: If the server is hosting WSUS, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 server name. Click the "Logging" icon. Under Log Event Destination, verify the "Both log file and ETW event" radio button is selected. If the "Both log file and ETW event" radio button is not selected, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 server name. Click the "Logging" icon. Under Log Event Destination, select the "Both log file and ETW event" radio button. Under the "Actions" pane, click "Apply".
Interview the System Administrator to review the configuration of the IIS 10.0 architecture and determine if inbound web traffic is passed through a proxy. If the IIS 10.0 web server is receiving inbound web traffic through a proxy, the audit logs must be reviewed to determine if correct source information is being passed through by the proxy server. Follow this procedure for web server and each website: Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Click the "Logging" icon. Click on "View log files" under the "Actions" pane. When the log file is displayed, review source IP information in log entries and verify the entries do not reflect the IP address of the proxy server. If the website is not behind a load balancer or proxy server, this is Not Applicable. If the log entries in the log file(s) reflect the IP address of the proxy server as the source, this is a finding. If provisions have been made to log the client IP via another field (i.e., utilizing X-Forwarded-For), this is not a finding.
Access the proxy server through which inbound web traffic is passed and configure settings to pass web traffic to the IIS 10.0 web server transparently.
Access the IIS 10.0 web server IIS Manager. Click the IIS 10.0 web server name. Under "IIS", double-click the "Logging" icon. Verify the "Format:" under "Log File" is configured to "W3C". Select the "Fields" button. Under "Custom Fields", verify the following fields have been configured: Request Header >> Connection Request Header >> Warning If any of the above fields are not selected, this is a finding.
Access the IIS 10.0 web server IIS Manager. Click the IIS 10.0 web server name. Under "IIS", double-click the "Logging" icon. Verify the "Format:" under "Log File" is configured to "W3C". Select the "Fields" button. Under "Custom Fields", click the "Add Field..." button. For each field being added, give a name unique to what the field is capturing. Click on the "Source Type" drop-down list and select "Request Header". Click on the "Source" drop-down list and select "Connection". Click "OK" to add. Click on the "Source Type" drop-down list and select "Request Header". Click on the "Source" drop-down list and select "Warning". Click "OK" to add. Click "Apply" under the "Actions" pane.
Access the IIS 10.0 web server IIS Manager. Click the IIS 10.0 web server name. Under "IIS", double-click the "Logging" icon. Verify the "Format:" under "Log File" is configured to "W3C". Select the "Fields" button. Under "Standard Fields", verify "User Agent", "User Name", and "Referrer" are selected. Under "Custom Fields", verify the following field has been configured: Request Header >> Authorization Response Header >> Content-Type If any of the above fields are not selected, this is a finding.
Access the IIS 10.0 web server IIS Manager. Click the IIS 10.0 web server name. Under "IIS", double-click the "Logging" icon. Verify the "Format:" under "Log File" is configured to "W3C". Select the "Fields" button. Under "Standard Fields", select "User Agent", "User Name", and "Referrer". Under "Custom Fields", select the following fields: Click on the "Source Type" drop-down list and select "Request Header". Click on the "Source" drop-down list and select "Authorization". Click "OK" to add. Click on the "Source" drop-down list and select "Content-Type". Click on the "Source Type" drop-down list and select "Response Header". Click "OK" to add. Click "OK". Click "Apply" under the "Actions" pane.
This check does not apply to service account IDs utilized by automated services necessary to process, manage, and store log files. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Click the "Logging" icon. Click "Browse" and navigate to the directory where the log files are stored. Right-click the log file directory to review. Click "Properties". Click the "Security" tab. Verify log file access is restricted as follows. Otherwise, this is a finding. SYSTEM - Full Control Administrators - Full Control Note: A "Web Administrators", etc. type group that is an approved group of administrators is also allowed, and should be given "Full Control" permissions.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Click the "Logging" icon. Click "Browse" and navigate to the directory where the log files are stored. Right-click the log file directory to review and click "Properties". Click the "Security" tab. Set the log file permissions for the appropriate group(s). Click "OK". Select "Apply" in the "Actions" pane.
The IIS 10.0 web server and website log files should be backed up by the system backup. To determine if log files are backed up by the system backup, determine the location of the web server log files and each website's log files. Open the IIS 10.0 Manager. Click the IIS 10.0 server name. Click the "Logging" icon. Under "Log File" >> "Directory" obtain the path of the log file. Once all locations are known, consult with the System Administrator to review the server's backup procedure and policy. Verify the paths of all log files are part of the system backup. Verify log files are backed up to an unrelated system or onto separate media on which the system the web server is running. If the paths of all log files are not part of the system backup and/or not backed up to a separate media, this is a finding.
Configure system backups to include the directory paths of all IIS 10.0 web server and website log files.
Interview the System Administrator about the role of the IIS 10.0 web server. If the IIS 10.0 web server is hosting an application, have the SA provide supporting documentation on how the application's user management is accomplished outside of the IIS 10.0 web server. If the IIS 10.0 web server is not hosting an application, this is Not Applicable. If the IIS web server is performing user management for hosted applications, this is a finding. If the IIS 10.0 web server is hosting an application and the SA cannot provide supporting documentation on how the application's user management is accomplished outside of the IIS 10.0 web server, this is a finding.
Reconfigure any hosted applications on the IIS 10.0 web server to perform user management outside the IIS 10.0 web server. Document how the hosted application user management is accomplished.
Click “Start”. Open Control Panel. Click “Programs”. Click “Programs and Features”. Review the installed programs. If any programs are installed other than those required for the IIS 10.0 web services, this is a finding. Note: If additional software is needed, supporting documentation must be signed by the ISSO.
Remove all unapproved programs and roles from the production IIS 10.0 web server.
Open the IIS 10.0 Manager. Under the "Connections" pane on the left side of the management console, select the IIS 10.0 web server. If, under the IIS installed features "Application Request Routing Cache" is not present, this is not a finding. If, under the IIS installed features "Application Request Routing Cache" is present, double-click the icon to open the feature. From the right "Actions" pane under "Proxy", select "Server Proxy Settings...". In the "Application Request Routing" settings window, verify whether "Enable proxy" is selected. If "Enable proxy" is selected under the "Application Request Routing" settings, this is a finding. If the server has been approved to be a Proxy server, this requirement is Not Applicable.
Open the IIS 10.0 Manager. Under the "Connections" pane on the left side of the management console, select the IIS 10.0 web server. Under the IIS installed features, if "Application Request Routing Cache" is present, double-click the icon to open the feature. From the right "Actions" pane, under "Proxy", select "Server Proxy Settings...". In the "Application Request Routing" settings window, remove the check from the "Enable proxy" check box. Click "Apply" in the "Actions" pane.
Navigate to the following folders: inetpub\ Program Files\Common Files\System\msadc Program Files (x86)\Common Files\System\msadc If the folder or sub-folders contain any executable sample code, example applications, or tutorials which are not explicitly used by a production website, this is a finding.
Remove any executable sample code, example applications, or tutorials which are not explicitly used by a production website.
Access the IIS 10.0 web server. Access “Apps” menu. Under “Administrative Tools”, select “Computer Management”. In the left pane, expand "Local Users and Groups" and click "Users". Review the local users listed in the middle pane. If any local accounts are present and were created by features which have been uninstalled or are not used, this is a finding.
Access the IIS 10.0 web server. Access “Apps” menu. Under “Administrative Tools”, select “Computer Management”. In the left pane, expand "Local Users and Groups" and click "Users". Delete any local accounts which were created by features which have been uninstalled or are not used.
Consult with the System Administrator and review all of the IIS 10.0 and Operating System features installed. Determine if any features installed are no longer necessary for operation. If any utility programs, features, or modules are installed which are not necessary for operation, this is a finding. If any unnecessary Operating System features are installed, this is a finding.
Remove all utility programs, Operating System features, or modules installed that are not necessary for web server operation.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under IIS, double-click the "MIME Types" icon. From the "Group by:" drop-down list, select "Content Type". From the list of extensions under "Application", verify MIME types for OS shell program extensions have been removed, to include at a minimum, the following extensions: .exe .dll .com .bat .csh If any OS shell MIME types are configured, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under IIS, double-click the "MIME Types" icon. From the "Group by:" drop-down list, select "Content Type". From the list of extensions under "Application", remove MIME types for OS shell program extensions, to include at a minimum, the following extensions: .exe .dll .com .bat .csh Under the "Actions" pane, click "Apply".
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Review the features listed under the “IIS" section. If the "WebDAV Authoring Rules" icon exists, this is a finding.
Access Server Manager on the IIS 10.0 web server. Click the IIS 10.0 web server name. Click on "Manage". Select "Add Roles and Features". Click "Next" in the "Before you begin" dialog box. Select "Role-based or feature-based installation" on the "Installation Type" dialog box and click "Next". Select the IIS 10.0 web server in the "Server Selection" dialog box. From the "Windows Features" dialog box, navigate to "World Wide Web Services" >> "Common HTTP Features". De-select "WebDAV Publishing", and click "Next" to complete removing the WebDAV Publishing feature from the IIS 10.0 web server.
Search the system for files with either .java or .jpp extensions. If files with .java or .jpp extensions are found, this is a finding.
Remove all files from the web server with both .java and .jpp extensions.
Obtain a list of the user accounts with access to the system, including all local and domain accounts. Review the privileges to the web server for each account. Verify with the system administrator or the ISSO that all privileged accounts are mission essential and documented. Verify with the system administrator or the ISSO that all non-administrator access to shell scripts and operating system functions are mission essential and documented. If undocumented privileged accounts are found, this is a finding. If undocumented non-administrator access to shell scripts and operating system functions are found, this is a finding. If this IIS 10 installation is supporting Microsoft Exchange, and not otherwise hosting any content, this requirement is Not Applicable.
Ensure non-administrators are not allowed access to the directory tree, the shell, or other operating system functions and utilities. All non-administrator access to shell scripts and operating system functions must be mission essential and documented.
Review the IIS 10.0 web server configuration with the System Administrator. Determine if the IIS 10.0 web server hosts any applications. If the IIS 10.0 web server does not host any applications, this is Not Applicable. If the IIS 10.0 web server is hosting Exchange, this is Not Applicable. If the IIS 10.0 web server hosts applications, review the application's management functionality and authentication methods with the System Administrator to determine if the management of the application is accomplished with the same functions and authentication methods as the web server management. If the IIS 10.0 web server management and the application's management functionality is not separated, this is a finding.
Develop a method to manage the hosted applications, either by moving its management functions off of the IIS 10.0 web server or by accessing the application's management via a uniquely assigned IP address.
Note: If ASP.NET is not installed, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "ASP.Net", double-click the "Session State" icon. Under "Cookie Settings", verify the "Mode" has "Use Cookies" selected from the drop-down list. If the "Cookie Settings" "Mode" is not set to "Use Cookies", this is a finding. Alternative method: Click the site name. Select "Configuration Editor" under the "Management" section. From the "Section:" drop-down list at the top of the configuration editor, locate "system.web/sessionState". Verify the "cookieless" is set to "UseCookies". If the "cookieless" is not set to "UseCookies", this is a finding. Note: If IIS 10.0 server/site is used only for system-to-system maintenance, does not allow users to connect to interface, and is restricted to specific system IPs, this is Not Applicable.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "ASP.Net", double-click the "Session State" icon. Under "Cookie Settings", select "Use Cookies” from the "Mode" drop-down list. Click "Apply" in the "Actions" pane.
Note: If ASP.NET is not installed, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under the "ASP.NET" section, select "Session State". Under "Cookie Settings", verify the "Use Cookies" mode is selected from the "Mode:" drop-down list. Under "Time-out (in minutes)", verify a maximum of 20 minutes is entered. If the "Use Cookies" mode is selected and Time-out (in minutes) is configured for "20 minutes" (or less), this is not a finding. Alternative method: Click the site name. Select "Configuration Editor" under the "Management" section. From the "Section:" drop-down list at the top of the configuration editor, locate "system.web/sessionState". Verify the "cookieless" is set to "UseCookies". If the "cookieless" is not set to "UseCookies", this is a finding. Note: If IIS 10.0 server/site is used only for system-to-system maintenance, does not allow users to connect to interface, and is restricted to specific system IPs, this is Not Applicable.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under the "ASP.NET" section, select "Session State". Under "Cookie Settings", select the "Use Cookies" mode from the "Mode:" drop-down list. Under "Time-out (in minutes)", enter a value of "20 or less".
Interview the System Administrator for the IIS 10.0 web server. Ask for documentation on the disaster recovery methods tested and planned for the IIS 10.0 web server in the event of the necessity for rollback. If documentation for a disaster recovery has not been established, this is a finding.
Prepare documentation for disaster recovery methods for the IIS 10.0 web server in the event of the necessity for rollback. Document and test the disaster recovery methods designed.
Note: If ASP.NET is not installed, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Machine Key" icon in the website Home Pane. Verify "HMACSHA256" or stronger encryption is selected for the Validation method and "Auto" is selected for the Encryption method. If "HMACSHA256" or stronger encryption is not selected for the Validation method and/or "Auto" is not selected for the Encryption method, this is a finding. If .NET is not installed, this is Not Applicable.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Machine Key" icon in the web server Home Pane. Set the Validation method to "HMACSHA256" or stronger. Set the Encryption method to "Auto". Click "Apply" in the "Actions" pane.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Directory Browsing" icon. Under the “Actions” pane verify "Directory Browsing" is disabled. If “Directory Browsing” is not disabled, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Directory Browsing" icon. Under the "Actions" pane click "Disabled". Under the "Actions" pane, click "Apply".
Access the IIS 10.0 Web Server. Access an administrator command prompt and type "regedit <enter>" to access the server's registry. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\. If this key exists, then indexing is enabled. If the key does not exist, this check is Not Applicable. Review the Catalog keys to determine if directories other than web document directories are being indexed. If so, this is a finding.
Run MMC. Add the Indexing Service snap-in. Edit the indexed directories to only include web document directories.
Note: If the server is hosting WSUS, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Error Pages" icon. Click any error message, and then click "Edit Feature Setting" from the "Actions" Pane. This will apply to all error messages. If the feature setting is not set to "Detailed errors for local requests and custom error pages for remote requests", or "Custom error pages" this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "Error Pages" icon. Click any error message, and then click "Edit Feature Setting" from the "Actions" Pane. This will apply to all error messages. Set Feature Setting to "Detailed errors for local requests and custom error pages for remote requests" or "Custom error pages".
Note: This requirement applies to the Web Management Service. If the Web Management Service is not installed, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "Management", double-click "Management Service". If "Enable remote connections" is not selected, this is Not Applicable. If "Enable remote connections" is selected, review the entries under "IP Address Restrictions". Verify only known, secure IP ranges are configured as "Allow". If "IP Address Restrictions" are not configured or IP ranges configured to "Allow" are not restrictive enough to prevent connections from nonsecure zones, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "Management", double-click "Management Service". Stop the Web Management Service under the "Actions" pane. Configure only known, secure IP ranges as "Allow". Select "Apply" in "Actions" pane. Restart the Web Management Service under the "Actions" pane.
Interview the System Administrator and Web Manager. Ask for documentation for the IIS 10.0 web server administration. Verify there are documented procedures for shutting down an IIS 10.0 website in the event of an attack. The procedure should, at a minimum, provide the following steps: Determine the respective website for the application at risk of an attack. Access the IIS 10.0 web server IIS Manager. Select the respective website. In the "Actions" pane, under "Manage Website", click "Stop". If necessary, stop all websites. If necessary, stop the IIS 10.0 web server by selecting the web server in the IIS Manager. In the "Actions" pane, under "Manage Server", click "Stop". If the web server is not capable or cannot be configured to disconnect or disable remote access to the hosted applications when necessary, this is a finding.
Prepare documented procedures for shutting down an IIS 10.0 website in the event of an attack. The procedure should, at a minimum, provide the following steps: Determine the respective website for the application at risk of an attack. Access the IIS 10.0 web server IIS Manager. Select the respective website. In the "Actions" pane, under "Manage Website", click "Stop". If necessary, stop all websites. If necessary, stop the IIS 10.0 web server by selecting the web server in the IIS Manager. In the "Actions" pane, under "Manage Server", click "Stop".
Open Explorer and navigate to the inetpub directory. Right-click "inetpub" and select "Properties". Click the "Security" tab. Verify the permissions for the following users; if the permissions are less restrictive, this is a finding. System: Full control Administrators: Full control TrustedInstaller: Full control ALL APPLICATION PACKAGES (built-in security group): Read and execute ALL RESTRICTED APPLICATION PACKAGES (built-in security group): Read and execute Users: Read and execute, list folder contents CREATOR OWNER: Full Control, Subfolders and files only
Open Explorer and navigate to the inetpub directory. Right-click "inetpub" and select "Properties". Click the "Security" tab. Set the following permissions: System: Full control Administrators: Full control TrustedInstaller: Full control ALL APPLICATION PACKAGES (built-in security group): Read and execute ALL RESTRICTED APPLICATION PACKAGES (built-in security group): Read and execute Users: Read and execute, list folder contents CREATOR OWNER: Full Control, Subfolders and files only
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "IIS" double-click the "Logging" icon. In the "Logging" configuration box, determine the "Directory:" to which the "W3C" logging is being written. Confirm with the System Administrator that the designated log path is of sufficient size to maintain the logging. Under "Log File Rollover", verify "Do not create new log files" is not selected. Verify a schedule is configured to rollover log files on a regular basis. Consult with the System Administrator to determine if there is a documented process for moving the log files off of the IIS 10.0 web server to another logging device. If the designated logging path device is not of sufficient space to maintain all log files, and there is not a schedule to rollover files on a regular basis, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "IIS" double-click on the "Logging" icon. If necessary, in the "Logging" configuration box, re-designate a log path to a location able to house the logs. Under "Log File Rollover", de-select the "Do not create new log files" setting. Configure a schedule to rollover log files on a regular basis.
Right-click "InetMgr.exe", then click "Properties" from the "Context" menu. Select the "Security" tab. Review the groups and user names. The following accounts may have Full control privileges: TrustedInstaller Web Managers Web Manager designees CREATOR OWNER: Full Control, Subfolders and files only The following accounts may have read and execute, or read permissions: Non Web Manager Administrators ALL APPLICATION PACKAGES (built-in security group) ALL RESTRICTED APPLICATION PACKAGES (built-in security group) SYSTEM Users Specific users may be granted read and execute and read permissions. Compare the local documentation authorizing specific users, against the users observed when reviewing the groups and users. If any other access is observed, this is a finding.
Restrict access to the web administration tool to only the web manager and the web manager’s designees.
Review programs installed on the OS. Open Control Panel. Open Programs and Features. The following programs may be installed without any additional documentation: Administration Pack for IIS IIS Search Engine Optimization Toolkit Microsoft .NET Framework version 3.5 SP1 or greater Microsoft Web Platform Installer version 3.x or greater Virtual Machine Additions Review the installed programs, if any programs are installed other than those listed above, this is a finding. Note: If additional software is needed and has supporting documentation signed by the ISSO, this is not a finding.
Remove all unapproved programs and roles from the production web server.
If the Print Services role and the Internet Printing role are not installed, this check is Not Applicable. Navigate to the following directory: %windir%\web\printers If this folder exists, this is a finding. Determine whether Internet Printing is enabled: Click “Start”, click “Administrative Tools”, and then click “Server Manager”. Expand the roles node, right-click “Print Services”, and then select “Remove Roles Services”. If the Internet Printing option is enabled, this is a finding.
Click “Start”, click “Administrative Tools”, and then click “Server Manager”. Expand the roles node, right-click “Print Services”, and then select “Remove Roles Services”. If the Internet Printing option is checked, clear the check box, click “Next”, and then click “Remove” to complete the wizard.
If the IIS 10.0 web server is not hosting any applications, this is Not Applicable. If the IIS 10.0 web server is hosting applications, consult with the system administrator to determine risk analysis performed when the application was written and deployed to the IIS 10.0 web server. Obtain documentation on the configuration. Verify, at a minimum, the following tuning settings in the registry. Access the IIS 10.0 web server registry. Verify the following keys are present and configured. The required setting depends upon the requirements of the application. Recommended settings are not provided as these settings must be explicitly configured to show a conscientious tuning has been made. Navigate to HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ REG_DWORD "URIEnableCache" REG_DWORD "UriMaxUriBytes" REG_DWORD "UriScavengerPeriod" If explicit settings are not configured for "URIEnableCache", "UriMaxUriBytes" and "UriScavengerPeriod", this is a finding.
Access the IIS 10.0 web server registry. Verify the following keys are present and configured. The required setting depends upon the requirements of the application. These settings must be explicitly configured to show a conscientious tuning has been made. Navigate to HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\ Configure the following registry keys to levels to accommodate the hosted applications. Create REG_DWORD "URIEnableCache" Create REG_DWORD "UriMaxUriBytes" Create REG_DWORD "UriScavengerPeriod"
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under the "Management" section, double-click the "Configuration Editor" icon. From the "Section:" drop-down list, select "system.webServer/asp". Expand the "session" section. Verify the "keepSessionIdSecure" is set to "True". If the "keepSessionIdSecure" is not set to "True", this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Under "Management" section, double-click the "Configuration Editor" icon. From the "Section:" drop-down list, select "system.webServer/asp". Expand the "session" section. Select "True" for the "keepSessionIdSecure" setting. Select "Apply" from the "Actions" pane.
Access the IIS 10.0 Web Server. Navigate to: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server Verify a REG_DWORD value of "0" for "DisabledByDefault". Verify a REG_DWORD value of "1" for "Enabled". Navigate to: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server Verify a REG_DWORD value of "1" for "DisabledByDefault". Verify a REG_DWORD value of "0" for "Enabled". If any of the respective registry paths do not exist or are configured with the wrong value, this is a finding.
Access the IIS 10.0 Web Server. Navigate to: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server Create a REG_DWORD named "DisabledByDefault" with a value of "0". Create a REG_DWORD named "Enabled" with a value of "1". Navigate to: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server For each protocol: Create a REG_DWORD named "DisabledByDefault" with a value of "1". Create a REG_DWORD named "Enabled" with a value of "0".
Review the web server documentation and deployed configuration to determine which version of TLS is being used. If the TLS version is not TLS 1.2 or higher, according to NIST SP 800-52, or if non-FIPS-approved algorithms are enabled, this is a finding.
Configure the web server to use an approved TLS version according to NIST SP 800-52 and to disable all non-approved versions.
Access the IIS 10.0 web server. Access the "Apps" menu. Under "Administrative Tools", select "Computer Management". In left pane, expand "Local Users and Groups" and click "Users". Review the local users listed in the middle pane. If any local accounts are present and used by IIS 10.0, verify with System Administrator that default passwords have been changed. If passwords have not been changed from the default, this is a finding.
Access the IIS 10.0 web server. Access the "Apps" menu. Under Administrative Tools, select Computer Management. In left pane, expand "Local Users and Groups" and click on "Users". Change passwords for any local accounts present that are used by IIS 10.0, then verify with System Administrator default passwords have been changed. Develop an internal process for changing passwords on a regular basis.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "ISAPI and CGI restrictions" icon. Click “Edit Feature Settings". Verify the "Allow unspecified CGI modules" and the "Allow unspecified ISAPI modules" check boxes are NOT checked. If either or both of the "Allow unspecified CGI modules" and the "Allow unspecified ISAPI modules" check boxes are checked, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the "ISAPI and CGI restrictions" icon. Click "Edit Feature Settings". Remove the check from the "Allow unspecified CGI modules" and the "Allow unspecified ISAPI modules" check boxes. Click "OK".
Note: If ASP.NET is not installed, this is Not Applicable. Note: If the Server is hosting Microsoft SharePoint, this is Not Applicable. Note: If the server is hosting WSUS, this is Not Applicable. Note: If the server is hosting Exchange, this is Not Applicable. Note: If the server is public facing, this is Not Applicable. Note: If the website is not behind a load balancer or proxy server, this is Not Applicable. Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the ".NET Authorization Rules" icon. Ensure "All Users" is set to "Allow", and "Anonymous Users" is set to "Deny", otherwise this is a finding. If any other rules are present, this is a finding.
Open the IIS 10.0 Manager. Click the IIS 10.0 web server name. Double-click the ".NET Authorization Rules" icon. Alter the list as necessary to ensure "All Users" is set to "Allow" and "Anonymous Users" is set to "Deny". Remove any other line items.
Access the IIS 10.0 IIS Manager. Click the IIS 10.0 server. Select "Configuration Editor" under the "Management" section. From the "Section:" drop-down list at the top of the configuration editor, locate "system.applicationHost/sites". Expand "siteDefaults". Expand "limits". Review the results and verify the value is greater than zero for the "maxconnections" parameter. If the maxconnections parameter is set to zero, this is a finding.
Access the IIS 10.0 IIS Manager. Click the IIS 10.0 server. Select "Configuration Editor" under the "Management" section. From the "Section:" drop-down list at the top of the configuration editor, locate "system.applicationHost/sites". Expand "siteDefaults". Expand "limits". Set the "maxconnections" parameter to a value greater than zero.
Access the IIS 10.0 Web Server. Open IIS Manager. Click the IIS 10.0 web server name. Open on Configuration Editor under Management. For the Section, navigate to system.applicationHost/sites. Expand siteDefaults and HSTS. If enabled is not set to True, this is a finding. If includeSubDomains is not set to True, this is a finding. If max-age is not set to a value greater than 0, this is a finding. If redirectHttpToHttps is not True, this is a finding. If the website is behind a load balancer or proxy server, and HSTS enablement is handled there, this is Not Applicable. If the version of Windows Server does not natively support HSTS, this is not a finding.
Using the Configuration Editor in the IIS Manager or Powershell: Enable HSTS. Set includeSubDomains to True. Set max-age to a value greater than 0. Set redirectHttpToHttps to True.
Interview the System Administrator about the role of the IIS 10.0 web server. If the IIS 10.0 web server is running SMTP relay services, have the SA provide supporting documentation on how the server is hardened. A DoD-issued certificate, and specific allowed IP address should be configured. If the IIS web server is not running SMTP relay services, this is Not Applicable. If the IIS web server running SMTP relay services without TLS enabled, this is a finding. If the IIS web server running SMTP relay services is not configured to only allow a specific IP address, from the same network as the relay, this is a finding.
Configure the relay server with a specific allowed IP address, from the same network as the relay, and implement TLS.
Note: If the server is hosting WSUS, this is Not Applicable. Open Registry Editor. Navigate to "HKLM\System\CurrentControlSet\Services\HTTP\Parameters" Verify "DisableServerHeader” is set to "2". If REG_DWORD DisableServerHeader is not set to 2, this is a finding. If the System Administrator can show that Server Version information has been removed via other means, such as using a rewrite outbound rule, this is not a finding.
Navigate to "HKLM\System\CurrentControlSet\Services\HTTP\Parameters". Create REG_DWORD "DisableServerHeader” and set it to "2". Note: This can be performed multiple ways; this is an example.
Note: If ASP.NET is not installed, this is Not Applicable. Open the IIS 10.0 Manager. Under the "Connections" pane on the left side of the management console, select the IIS 10.0 web server. Click the HTTP Response Headers button. Click to select the “X-Powered-By” HTTP Header. If “X-Powered-By” has not been removed, this is a finding.
Open the IIS 10.0 Manager. Under the "Connections" pane on the left side of the management console, select the IIS 10.0 web server. Click the HTTP Response Headers button. Click to select the “X-Powered-By” HTTP Header. Click “Remove” in the Actions Panel. Note: This can be performed multiple ways, this is an example.
Open Registry Editor. Navigate to "HKLM\System\CurrentControlSet\Services\HTTP\Parameters" Verify "DisableRequestSmuggling” is set to "1". If REG_DWORD DisableRequestSmuggling is not set to 1, this is a finding.
Navigate to "HKLM\System\CurrentControlSet\Services\HTTP\Parameters". Create REG_DWORD "DisableRequestSmuggling” and set it to "1". Note: This can be performed multiple ways; this is an example.