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
This check is limited to CGI/interactive content and not static HTML. Find on all hard drives files containing the following extensions: *.bak, *.old, *.temp, *.tmp, or *.backup. If files with these extensions are found in either the document directory or the home directory of the web server, this is a finding. If files with these extensions are stored in a repository (not in the document root) as backups for the web server, this is a finding. If files with these extensions have no relationship with web activity, such as a backup batch file for operating system utility, and they are not accessible by the web application, this is not a finding.
Ensure that CGI backup scripts are not left on the production web server.
The reviewer should make a note of the name of the account being used for the web service. There may also be other server services running related to the web server in support of a particular web application, these passwords must be entrusted to the SA or Web Manager as well. Query the SA or Web Manager to determine if they have the web service password(s). If the web services password(s) are not entrusted to the SA or Web Manager, this is a finding. NOTE: For installations that use the LocalService or NetworkService accounts, the password is OS generated, so the SA or Web Manager having an Admin account on the system would meet the intent of this check.
Ensure the SA or Web Manager is entrusted with the web service(s) password.
The reviewer should query the ISSO, the SA, or the web administrator as necessary to determine if the public web server has a two-way trusted relationship with any private asset. Private web server resources (e.g., drives, folders, printers, etc.) will not be directly mapped to or shared with public web servers. The following check indicates an inappropriate sharing of public web server resources: Navigate to the web server content folders/directories. These directories must not be shared. On the web server content folder, right-click on Properties, then select sharing. All entries must be disabled. If sharing is selected for any web folder, this is a finding. The following checks indicate inappropriate sharing of private resources with the public web server: 1. From a command prompt, type net share and Enter. This will provide a list of available shares. 2. Check to see if file and printer or file-sharing is enabled under the Network icon in the Control Panel. If private resources (e.g., drives, partitions, folders/directories, printers, etc.) are shared with the public web server, this is a finding.
Configure the public web server to not have a trusted relationship with any system resource that is not accessible to the public. Web content is not to be shared via Microsoft shares or NFS mounts.
Interview the ISSO and confirm with the SA, the Web Manager, or the individual in an equivalent role. Ask for the web server’s documented procedures and processes. Verify the documented procedures and processes identify web server related service accounts, which services are related to web server operations and include a policy requiring service account passwords to be change at least annually. If the documented procedures and processes do not identify web server related service accounts, which services are related to web server operations and include a policy requiring service account passwords to be change at least annually, this is a finding.
Ensure that the service account IDs used to run the web server and sites are documented and have their passwords changed at least annually.
Using Windows Explorer, search the system for the existence of known compilers such as msc.exe, msvc.exe, Python.exe, javac.exe, Lcc-win32.exe, or equivalent. Look in all hard drives. Also, query the SA and the Web Manager to determine if a compiler is present on the server. Query the SA and the Web Manager to determine if a compiler is present on the server. If a compiler is present, this is a finding. NOTE: When Apache is part of a suite install, e.g. application server, and a compiler is needed for installation and patching of the product, document the installation of the compiler with the ISSO/ISSM and verify that the compiler is restricted to administrative users only. If documented and restricted to administrative users, this is not a finding.
Remove any compiler found on the production web server. If the compiler is needed to patch the product in a production environment, document the compiler installation with the ISSO/ISSM and ensure that the compiler is restricted to only administrative users.
Interview the SA or web administrator to see where the public web server is logically located in the data center. Review the site’s network diagram to see how the web server is connected to the LAN. Visually check the web server hardware connections to see if it conforms to the site’s network diagram. An improperly located public web server is a potential threat to the entire network. If the web server is not isolated in an accredited DoD DMZ Extension, this is a finding.
Logically relocate the public web server to be isolated from internal systems. In addition, ensure the public web server does not have trusted connections with assets outside the confines of the demilitarized zone (DMZ) other than application and/or database servers that are a part of the same system as the web server.
This check verifies that the private web server is located on a separate controlled access subnet and is not a part of the public DMZ that houses the public web servers. In addition, the private web server needs to be isolated via a controlled access mechanism from the local general population LAN. Interview the ISSO and confirm with the SA, the Web Manager, or the individual in an equivalent role. Ask for the web server’s documented procedures and processes. Verify the documented procedures and processes include verbiage and a diagram clearly showing what devices (router, switch, firewall) lie between the private web server and the Internet, showing the private web server’s location on a separate subnet dedicated to functions not intended for public access. If the documented procedures and processes do include verbiage and/or do not include a diagram clearly showing what devices (router, switch, firewall) lie between the private web server and the Internet, showing the private web server’s location on a separate subnet dedicated to functions not intended for public access, this is a finding.
Isolate the private web server from the public DMZ and separate it from the internal general population LAN. This separation must have access control in place to protect the web server from internal threats.
Determine the version of the Apache software that is running on the system. Use the command line interface and navigate to the directory where Apache httpd Server is installed. From the command line type the following command: httpd.exe –v. Press Enter. This will display the version of apache installed on the system. Note: There are other ways, too, of determining the version of Apache (in the service itself and Add/Remove programs). If the version of Apache is not at the following version or higher, this is a finding. Apache httpd server version 2.2 - Release 2.2.31 (July 2015)
Upgrade software to a supported version.
Windows 2008 servers may be impacted by this check. If the SA or the web administrator can demonstrate that this requirement will adversely affect the web server by providing vendor documentation, this check is not applicable. Search all of the system’s hard drives for the command.com and cmd.exe files. The allowed permissions on these files are: System Full Control Administrators Full Control Examine account access and any group membership access to these files. If any non-administrator account, group membership, or service ID has any access to any command.com or cmd.exe files and the access is documented as mission critical, this is not a finding. Examine access to operating system configuration files, scripts, utilities, privileges, and functions. If any non-administrator account, group membership, or service ID has any access to any of these operating system components and the access is documented as mission critical, this is not a finding. If any non-administrator account, group membership, or service ID has undocumented access to any listed file or operating system component, this is a finding.
Ensure non-administrators are not allowed access to the directory tree, the shell, or other operating system functions and utilities.
Configuration of the Apache web server is accomplished by editing flat .conf files. Interview the ISSO and ask for the web server’s documented procedures and processes. Verify the documented procedures and processes explicitly document the roles and responsibilities for the web server and web site(s) management. These documented roles will be used to validate access controls for this check. For the purpose of this check, the SA is responsible for the OS platform of the webserver. The web server manager manages the Apache installation and configuration and the web master manages the web site or sites. In some environments, the SA is also the web manager/web master. In such case, the roles should still be documented. Locate the folder in which the Apache installation’s httpd.conf and supporting .conf files are located. Right-click on the folder name and select “Properties”. Select the “Security” tab and review the accounts and assigned permissions. The System Administrator(s), web manager(s) and web master(s), as identified in the organization’s documentation, may have Full Control to the installation folder and sub-folders. Non-documented administrators, non-elevated administrators and users may have Read only permissions to the installation folder and sub-folders. If any accounts other than the documented SA, web manager, or web manager designees have greater than Read permissions to the web administration tool or control files, this is a finding.
Restrict access to the httpd.conf and supporting .conf files to only the documented SA, web manager, or web manager designees.
Query the ISSO, the SA, the web administrator, or developers as necessary to determine if the web server is configured with unnecessary software. Query the SA to determine if processes other than those that support the web server are loaded and/or run on the web server. Examples of software that should not be on the web server are all web development tools, office suites (unless the web server is a private web development server), compilers, and other utilities that are not part of the web server suite or the basic operating system. 1) Check the directory structure of the server and ensure that additional, unintended, or unneeded applications are not loaded on the system. 2) Start >> All Programs >> check for programs services such as: Front Page MS Access MS Excel MS Money MS Word Third-party text editors Graphics editors If, after review of the application on the system, the SA cannot provide justification for the requirement of the identified software, this is a finding.
Install only web support software on the web server. When other processes are supported by the web server, ensure that a risk assessment has been performed and documented. If a database server is installed on the same platform as the web server, it must be on a separate drive or partition. Remove all unnecessary applications and programs.
Search for the htpasswd.exe file. Right click the htpasswd file, if present. Select the Properties window, select the Security tab. Examine the access rights for the file. The SA or Web Manager account should have Full Control, the account running the web service should have read and execute permissions. If entries other than Administrators, Web Manager account, or System are present, this is a finding.
The SA or Web Manager account should have Full Control, the account running the web service should have read and execute permissions to the htpasswd file.
If .htaccess or the .htaccess.html files are in use, the SA or Web Manager account may have Full Control, the non-privileged web server account running the web service should have read and execute permissions. Right click the .htaccess.html file, if present. Select the Properties window, select the Security tab. Examine the access rights for the file. The SA or Web Manager account should have Full Control, the account running the web service should have read and execute permissions. If entries other than Administrators, the Web Manager accounts, or System for any degree of access are present, this is a finding.
The site needs to ensure that the owner should be the non-privileged web server account or equivalent which runs the web service; however, the group permissions represent those of the user accessing the web site that must execute the directives in .htacces.
Proposed Questions: How many user accounts are associated with the web site operation and maintenance? Where are these accounts documented? Working with the SA or the web administrator, determine if the documentation matches an examination of the privileged IDs on the server. Using User Manager, User Manager for Domains, or Local Users and Groups, examine user accounts to verify the above information. Query the SA or the Web Manager regarding the use of each account and each group found on the server. If the documentation does not match the users and groups found on the server, this is a finding.
Document the administrative users and groups which have access rights to the web server in the site SOP or equivalent document.
Locate and examine the httpd.conf file. Look for the section: <ServerRoot>. This section will contain the path to the configuration and binary files. Note: This check also applies to any other directory where CGI scripts are located. Permissions on this directory files should be: Administrators: Full control System: Full Control WebAdmin: Full Control WebUser: Read, Execute Apache Service Account: Read, Execute Permissions for the /config directory should be as follows: (This is a sub directory to the main apache directory identified above) Administrators: Full control System: Read WebAdmin: Modify Apache Service Account: Read Permissions for the /bin directory should be as follows: (This is a sub directory to the main apache directory identified above) Administrators: Full control System: Read, Execute WebAdmin: Modify Apache Service Account: Read, Execute Permissions for the /logs directory should be as follows: (This is a sub directory to the main apache directory identified above) Administrators: Read System: Full Control WebAdmin: Read Apache Service Account: Modify Auditors: Full Control Permissions for the /htdocs directory (DocumentRoot) should be as follows: (This is a sub directory to the main apache directory identified above) Administrators: Full control System: Read WebAdmin: Modify Apache Service Account: Read If any of the above permissions are less restrictive, this is a finding. Note: There may be additional directories based the local implementation, and permissions should apply to directories of similar content. Ex. all web content directories should follow the permissions for /htdocs.
Set file permissions on the web server systems files to meet minimum file permissions requirements.
This check verifies, by checking the OS, that incoming e-mail is not supported. Select START >> Programs >> Administrative Tools >> Services Scroll down and review all the entries. If there is a mail program (SMTP service), then the reviewer must run that program to see if it will accept incoming e-mail (There are too many different programs for detailed instructions). The reviewer should also check the Programs menu and sub-menus under start to see if there are any installed mail programs. The reviewer can also check the Add/Delete programs icon in the Control Panel to see if there are any e-mail programs installed. If there is an e-mail program installed and that program has been configured to accept inbound email, this is a finding.
Isolate e-mail, if running on a public web server, to outbound e-mail only. This would allow the web-based application to send timely notices to users and administrators. On the SMTP or other e-mail server, the mail relay option must be disabled.
Search for instances of Wscript.exe and Cscript.exe. Move to these files, if found, and right-click on them to view their Properties. Permissions should only exist for System, the SA, and the web administrator, who may have Full Control. User accounts with access to these files that are unknown, or unintended, should be removed. If these files have permission for other than the SA, the web administrator, or the system, this is a finding.
Remove Wscript.exe and Cscript.exe files from the server, or restrict access to these files to the SA, the web administrator, and the system account.
CGI or equivalent files must be monitored by a security tool that reports unauthorized changes. It is the purpose of such software to monitor key files for unauthorized changes to them. The reviewer should query the ISSO, the SA, and the web administrator and verify the information provided by asking to see the template file or configuration file of the software being used to accomplish this security task. Example file extensions for files considered to provide active content are, but not limited to: .cgi, .asp, .aspx, .class, .vb, .php, .pl, and .c. If the site does not have a process in place to monitor changes to CGI program files, this is a finding.
Use a monitoring tool to monitor changes to the CGI or equivalent directory. This can be done with something as simple as a script or batch file that would identify a change in the file.
The reviewer should query the Information Systems Security Officer (ISSO), SA, Web Manager, Webmaster or developers as necessary to determine whether or not a tested and verifiable backup strategy has been implemented for web server software as well as all web server data files. Proposed Questions: Who maintains the backup and recovery procedures? Do you have a copy of the backup and recovery procedures? Where is the off-site backup location? Is the contingency plan documented? When was the last time the contingency plan was tested? Are the test dates and results documented? If there is not a backup and recovery process for the web server, this is a finding.
Document the backup procedures.
Request a copy of and review the web server’s installation and configuration plan. Ensure that the server is in compliance with this plan. If the server is not in compliance with the plan, this is a finding. Query the SA to ascertain if and where the additional services are installed. Confirm that the additional service or application is not installed on the same partition as the operating systems root, web server root, or web document root. If it is, this is a finding.
Move or install additional services and applications to partitions that are not the operating system root, web server root, or web document root.
Locate the httpd.conf file. Open the httpd.conf file with an editor such as Notepad, and search for the following uncommented directive: ServerTokens The directive ServerTokens must be set to “Prod” (ex. ServerTokens Prod). This directive controls whether Server response header field that is sent back to clients that includes a description of the OS-type of the server as well as information about compiled-in modules. If the web server or operating system information is sent to the client via the server response header, this is a finding. If the directive does not exist, this would be a finding as it defaults to Full.
Ensure the web server is configured to not advertise the web server and operating system information to the client.
The reviewer should query the ISSO, the SA, the web administrator, or developers as necessary to determine if a classified web server is afforded physical security commensurate with the classification of its content (i.e., is located in a vault or a room approved for classified storage at the highest classification processed on that system). Ask what the classification of the web server is, and based on the classification, evaluate the location of the web server to determine if it is approved for storage of that classification level. If the web server is not appropriately physically protected based on its classification, this is a finding.
Relocate the web server to a location appropriate to classified devices.
Query the web administrator to determine if the site has a detailed process as part of its configuration management plan to stay compliant with all security-related patches. Proposed Questions: How does the SA stay current with web server vendor patches? How is the SA notified when a new security patch is issued by the vendor? (Exclude the IAVM.) What is the process followed for applying patches to the web server? If the site is not in compliance with all applicable security patches, this is a finding.
Establish a detailed process as part of the configuration management plan to stay compliant with all web server security-related patches.
Work with the web administrator to determine the account assigned to the web server service. Once this is determined, right click on My Computer and select Manage. Then select Configuration, followed by Local Users and Groups. Examine the account that is used to run the web server service and determine the group affiliations. The Apache server account may be a member of the users group and in some cases the site may have created a separate group for the apache web server. Both of these are not findings. If the user account assigned to the web server service is a member of any other group than users or the created web server group, the SA will need to provide justification showing that these permissions are necessary for the function and operation of the web server. NOTE: The Apache account needs to have the following rights, which would not be a finding: Act as part of the Operating System & Log on as a Service.
Configure the web server to run using a non-privileged account.
The reviewer will need to have the SA or Web Manager show the list of CA’s the server is trusting to authenticate users. NOTE: There are non DoD roots that must be on the server in order for it to function. Some applications, such as anti-virus programs, require root CAs to function. The location for the conf file that controls the SSL parameters may vary from installation, so the following is just an example of a default httpd-ssl.conf file. Open httpd-ssl.conf and search for the following directive: SSLCACertificateFile This directive will point to the file that contains the certificates that are used to identify the CAs that are used for client authentication. Such a file is simply the concatenation of the various PEM-encoded Certificate files, in order of preference. Examine the contents of this file to determine if the trusted CAs are DoD approved. DoD approved can include the External Certificate Authorities (ECA), if approved by the DAA. The PKE InstallRoot 3.06 System Administrator Guide (SAG), dated 8 Jul 2008, contains a complete list of DoD, ECA, and IECA CAs. If the trusted CAs that are used to authenticate users to the web site does not lead to an approved DoD CA, this is a finding.
Configure the web server’s trust store to trust only DoD-approved PKIs (e.g., DoD PKI, DoD ECA, and DoD-approved external partners).
Query the SA to determine if all directories that contain samples and any scripts used to execute the samples have been removed from the server. Each web server has its own list of sample files. This may change with the software versions, but the following are some examples of what to look for (This is not a definitive list of sample files, but only an example of the common samples that are provided with the associated web server. This list will be updated as additional information is discovered.): [Drive Letter]:/[directory path]/apache2/manual/*.* [Drive Letter]:/[directory path]/apache2/conf/extra/*.* [Drive Letter]:/[directory path]/apache2/cgi-bin/printenv [Drive Letter]:/[directory path]/apache2/cgi-bin/test-cgi If there is a requirement to maintain these directories at the site for training or other such purposes, have permissions or set the permissions to only allow access to authorized users. If any sample files are found on the web server, this is a finding.
Ensure sample code and documentation have been removed from the web server.
The reviewer should query the ISSO, the SA, the web administrator, or developers as necessary to determine if the web server is configured to utilize an approved DoD certificate validation process. The web administrator should be questioned to determine if a validation process is being utilized on the web server. To validate this, the reviewer can ask the web administrator to describe the validation process being used. They should be able to identify either the use of certificate revocation lists (CRLs) or Online Certificate Status Protocol (OCSP). If the production web server is accessible, the SA or the web administrator should be able to demonstrate the validation of good certificates and the rejection of bad certificates. If CRLs are being used, the SA should be able to identify how often the CRL is updated and the location from which the CRL is downloaded. If the web administrator cannot identify the type of validation process being used, this is a finding.
Configure DoD Private Web Servers to conduct certificate revocation checking utilizing certificate revocation lists (CRLs) or Online Certificate Status Protocol (OCSP).
Remote web authors should not be able to upload files to the Document Root directory structure without virus checking and checking for malicious or mobile code. Query the SA to determine if there is anti-virus software active on the server with auto-protect enabled, or if there is another process in place for the scanning of files being posted by remote authors. If there is no virus software on the system with auto-protect enabled, or if there is not a process in place to ensure all files being posted are being virus scanned before being saved to the document root, this is a finding.
Install anti-virus software on the system and set it to automatically scan new files that are introduced to the web server.
NOTE: This setting must be explicitly set. Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Timeout Every enabled Timeout directive value needs to be 300 or less. If any directive is set improperly, this is a finding. NOTE: This vulnerability can be documented locally with the ISSM/ISSO if the site has an operational reason for the use of an increased value. If the site has this documented, this should be marked as Not a Finding.
Modify the Timeout directive in the applicable Apache configuration files to have a value of 300 seconds or less.
NOTE: This setting must be explicitly set. Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: KeepAlive Every enabled KeepAlive value needs to be set to “On”. If any directive is set improperly, this is a finding. If any directive is set to “Off”, this is a finding. NOTE: This vulnerability can be documented locally with the ISSM/ISSO if the site has an operational reason for not using persistent connections. If the site has this documented, this should be marked as Not a Finding.
Modify the KeepAlive directive in the applicable Apache configuration files to have a value of On.
NOTE: This setting must be explicitly set. Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: KeepAliveTimeout If any directive is not set to 15 or less, this is a finding. NOTE: This vulnerability can be documented locally with the ISSM/ISSO if the site has an operational reason for not using persistent connections. If the site has this documented, this should be marked as Not a Finding.
Modify the KeepAliveTimeout directive in the applicable Apache configuration files to have a value of 15 or less.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directives: SetHandler, AddHandler, and Options. For all occurrences of the SetHandler and AddHandler directives query the Web Administrator to determine if the directives are allowing CGI scripts to be used. If CGI Scripts are used via the SetHandler or AddHandler directives, this is a finding. For all occurrences of the Options directive that are using +ExecCGI or ExecCGI, this is a finding. If the Options directive is found with -ExecCGI, this is not a finding. If the value does not exist, this would be a finding unless the Options statement is set to “None”.
Locate the scripts in a ScriptAlias directory, and/or add the appropriate symbol to explicitly disable ExecCGI, or set the options directive to None.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Options Review all uncommented Options statements for the following value: -FollowSymLinks If the value is found with an Options statement, and it does not have a preceding “-”, this is a finding. Notes: - If the value does NOT exist, this is a finding. - If all enabled Options statement are set to None this is not a finding.
Add a "-" to the FollowSymLinks setting, or set the options directive to None.
Locate the Apache httpd.conf file. If unable to locate the file, perform a search of the system to find the location of the file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Options Review all uncommented Options statements for the following values: +IncludesNoExec, -IncludesNoExec, or -Includes If these values are found on an enabled Options statement, this is not a finding. If these values do not exist at all, this would be a finding unless the enabled Options statement is set to “None”. If any enabled Options statement has "Includes” or "+Includes” as part of its statement, this is a finding.
Add one of the following to the enabled Options directive +IncludesNoExec, -IncludesNoExec, or -Includes. Remove the "Includes" or "+Includes" setting from the options statement.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as Notepad, and search for all occurrences of the following directive: Options. This check validates occurrences of the Options directive which are uncommented. Review all uncommented Options statements for "-MultiViews"and validate a preceding "-" to the MultiViews option exists. If the value is found on the Options statement, and it does not have a preceding "-", this is a finding. If the value does not exist at all, this would be a finding unless the enabled Options statement is set to "none".
Add a "-" to the MultiViews setting, or set the options directive to None.
Open the httpd.conf file with an editor such as Notepad, and search for all occurrences of the following directive: Options. This check validates occurrences of the Options directive which are uncommented. Review all uncommented Options statements for "-Indexes" and validate a preceding "-" to the Indexes option exists. If the value is found on the Options statement, and it does not have a preceding "-", this is a finding. If the value does not exist at all, this would be a finding unless the enabled Options statement is set to "none".
Add a "-" to the Indexes setting, or set the options directive to None.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: LimitRequestBody If the value of LimitRequestBody is not greater than 0 or does not exist, this is a finding.
Specify a size for the LimitRequestBody directive.
Locate the Apache httpd.conf file. If unable to locate the file, perform a search of the system to find the location of the file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: LimitRequestFields Every enabled LimitRequestFields value needs to be greater than 0. If any directive is set improperly, this is a finding. Note: This can be set to a really high number (Current max is 32767), it just cannot be unspecified.
Set LimitRequestFields Directive to a value greater than 0.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: LimitRequestFieldSize If no LimitRequestFieldSize directives exist, this is a Finding. Although the default value is 8190, this directive must be explicitly set. For every LimitRequestFieldSize directive found, the value needs to be 8190. If any directive is set improperly, this is a finding. NOTE: This value may vary in size based on the application that is being supported by the web server. This vulnerability can be documented locally by the ISSM/ISSO if the site has operational reasons for an increased or decreased value. If the ISSM/ISSO has approved this change in writing, this should be marked as Not a Finding.
Ensure the LimitRequestFieldSize is explicitly configured and set to 8190 or ISSO/ISSM-approved value.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: LimitRequestLine Every enabled LimitRequestLine value needs to be 8190. If any directive is set improperly, this is a Finding. If no LimitRequestLine directives exist, this is a Finding. Although the default value is 8190, this directive must be explicitly set. NOTE: This value may vary in size based on the application that is being supported by the web server. This vulnerability can be documented locally by the ISSM/ISSO if the site has operational reasons for an increased or decreased value. If the ISSM/ISSO has approved this change in writing, this should be marked as Not a Finding.
Set LimitRequestLine to 8190 or approved value. If no LimitRequestLine directives exist, explicitly add the directive and set to 8190.
Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command and press Enter: httpd –M This will provide a list of the loaded modules. Discuss with the web administrator why all displayed modules are required for operation. If any module is not required for operation, this is a finding. Note: The following modules do not need to be discussed: core_module, win32_module, mpm_winnt_module, http_module, so_module.
Disable any modules that are not needed by adding a "#" in front of them within the httpd.conf file, and restarting the Apache httpd service.
Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command: httpd –M <enter> NOTE: Some installations may be running under apache.exe. In such case, validate by running the following command: apache -M <enter> This will provide a list of all loaded modules. If any of the following modules are found this is a finding: dav_module, dav_fs_module, or dav_lock_module.
Disable all WebDAV modules by adding a "#" in front of them within the httpd.conf file, and restarting the Apache service.
Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command: httpd –M <enter> NOTE: Some installations may be running under apache.exe. In such case, validate by running the following command: apache -M <enter> This will provide a list of all loaded modules. If any of the following modules are found this is a finding: info_module & status_module.
Disable info and status modules by adding a "#" in front of them within the httpd.conf file, and restarting the Apache service.
Note: If the Apache web server is only performing in a proxy server role and does not host any websites nor support any applications, this check is Not Applicable. Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command: httpd –M <enter> Note: Some installations may be running under apache.exe. In such case, validate by running the following command: apache -M <enter> This will provide a list of all loaded modules. If any of the following modules are found this is a finding: proxy_module, proxy_ajp_module, proxy_balancer_module, proxy_ftp_module, proxy_http_module, or proxy_connect_module.
Disable all proxy modules by adding a "#" in front of them within the httpd.conf file, and restarting the Apache service.
Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command: httpd –M <enter> NOTE: Some installations may be running under apache.exe. In such case, validate by running the following command: apache -M <enter> This will provide a list of all loaded modules. If the following module is found this is a finding: userdir_module.
Disable the userdir_module by adding a "#" in front of it within the httpd.conf file, and restarting the Apache service.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as Notepad, and search for the following directive: PidFile Note the location and name of the PID file If the PID file location is not specified in the conf file, use the \logs directory as the PID file location. Verify the permissions on the folder containing the PID file. If any user accounts other than administrator, auditor, or the account used to run the web server has permission to this file, this is a finding. If the PID file is located in the web server DocumentRoot this is a finding.
Modify the location and/or permissions for the PID file and/or folder.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: ScoreBoardFile If the ScoreBoardFile directive is found uncommented note the directory specified in the directive statement that holds the Scoreboard file. If the ScoreBoardFile directive is not found enabled in the conf file use \logs as the directory containing the Scoreboard file. If any users other than administrator or the account used to run the web server has permission to the scoreboard file directory, this is a finding. If the ScoreBoard file is located in the web server document root this is finding.
Modify the location and/or permissions for the ScoreBoard file and/or folder.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Directory For every root directory entry (i.e. <Directory />) ensure the following exists after it: Order deny,allow Deny from all If the statement above is not found in the root directory statement, this is a finding. If Allow directives are included in the root directory statement, this is a finding. If the root directory statement isn't found at all, this is a finding.
Add the following after the root directory directive: Order deny,allow Deny from all
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Directory For every root directory entry (i.e. <Directory />) ensure the following entry exists after it: Options None If the statement above is not found in the root directory statement, this is a finding. If Allow directives are included in the root directory statement, this is a finding. If the root directory statement is not found at all, this is a finding.
Ensure the Directory directive has the following after it: Options None
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as Notepad, and search for the following uncommented directive: TraceEnable For any enabled TraceEnable directives ensure they are part of the server level configuration (i.e. not nested in a <Directory> or <Location> directive). Also ensure that the TraceEnable directive is set to “Off”. If the TraceEnable directive is not part of the server level configuration and/or is not set to “off” this is a finding. If the directive does not exist in the conf file this is a finding as the default value is "On".
Disable the TraceEnable directive by setting it to "off".
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Listen For any enabled Listen directives ensure they specify both an IP address and port number. If the Listen directive is found with only an IP address, or only a port number specified, this is finding. If the IP address is all zeros (i.e. 0.0.0.0:80 or [::ffff:0.0.0.0]:80, this is a finding. If the Listen directive does not exist, this is a finding.
Configure the Listen directive to listen on a specific IP address and port.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as Notepad, and search for the following uncommented directive: ScriptAlias If any enabled ScriptAlias directive does not have matching URL-path and file-path/directory-path entries, this is a finding. Example: Not a finding: ScriptAlias /cgi-bin/ “[Drive Letter]:/[directory path]/cgi-bin/ A finding: ScriptAlias /script-cgi-bin/ “[Drive Letter]:/[directory path]/cgi-bin/
Modify the ScriptAlias directive so the URL-path and file-path/directory-path entries match.
Open a command prompt window. Navigate to the “bin” directory (in many cases this may be [Drive Letter]:\[directory path]\Apache Software Foundation\Apache2.2\bin>). Enter the following command and press Enter: httpd –M This will provide a list of all loaded modules. If the following module is found this is a finding: autoindex_module.
Disable the autoindex_module by adding a "#" in front of it within the httpd.conf file, and restarting the Apache httpd service.
Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Directory For every root directory entry (i.e. <Directory />) ensure the following entry exists after it: AllowOverride None If the statement above is not found in the root directory statement, this is a finding. If Allow directives are included in the root directory statement, this is a finding. If the root directory statement is not found at all, this is a finding.
Add the following after the Directory directive: AllowOverride None
Note: If HTTP commands (GET, PUT, POST, DELETE) are not being used and the server is solely configured as a proxy server, this is Not Applicable. Locate the Apache httpd.conf file. Open the httpd.conf file with an editor such as notepad, and search for the following uncommented directive: Directory For every enabled Directory directive (except root), ensure the following entry exists: Order allow,deny <LimitExcept GET POST OPTIONS> Deny from all </LimitExcept> If the statement above is found in the root directory statement (i.e. <Directory />), this is a finding. If the statement above is found enabled but without the appropriate LimitExcept or Order statement, this is a finding. If the statement is not found at all inside an enabled Directory directive, this is a finding. Note: If the LimitExcept statement above is operationally limiting. This should be explicitly documented with the Web Manager, at which point this can be considered not a finding.
Add the following to all enabled Directory directives except root: Order allow,deny <LimitExcept GET POST OPTIONS> Deny from all </LimitExcept>
Locate the Apache httpd.conf and ssl.conf file if available. Open the httpd.conf and ssl.conf file with an editor and search for the following uncommented directive: SSLCipherSuite For all enabled SSLCipherSuite directives, ensure the cipher specification string contains the kill cipher from list option for all export cipher suites, i.e., !EXPORT, which may be abbreviated !EXP. If the SSLCipherSuite directive does not contain !EXPORT or there are no enabled SSLCipherSuite directives, this is a finding.
Update the cipher specification string for all enabled SSLCipherSuite directives to include !EXPORT.