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
With an editor, open the configuration file: <installed path>\Apache24\conf\extra\httpd-default Search for the following directive: MaxKeepAliveRequests Verify the value is "100" or greater. If the "MaxKeepAliveRequests" directive is not "100" or greater, this is a finding.
With an editor, open the configuration file: <installed path>\conf\extra\httpd-default Search for the following directive: MaxKeepAliveRequests Set the "MaxKeepAliveRequests" directive to a value of "100" or greater. Add the "MaxKeepAliveRequests" directive if it does not exist. It is recommended that the "MaxKeepAliveRequests" directive be explicitly set to prevent unexpected results if the defaults change with updated software.
In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If "mod_session" module and "mod_usertrack" are not enabled, this is a finding. session_module (shared) usertrack_module (shared)
Uncomment the "usertrack_module" module line and the "session_module" module in the <'INSTALL PATH'>\conf\httpd.conf file. Restart the Apache service. Additional documentation can be found at: https://httpd.apache.org/docs/2.4/mod/mod_usertrack.html https://httpd.apache.org/docs/2.4/mod/mod_session.html
In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If the "ssl_module" is not enabled, this is a finding. Review the <'INSTALL PATH'>\conf\httpd.conf file to determine if the "SSLProtocol" directive exists and looks like the following: SSLProtocol -ALL +TLSv1.2 -SSLv2 -SSLv3 If the directive does not exist or exists but does not contain "ALL +TLSv1.2 -SSLv2 -SSLv3", this is a finding.
Ensure the "ssl_module" is loaded in the httpd.conf file (not commented out). Ensure the "SSLProtocol" is added and looks like the following in the <'INSTALL PATH'>\conf\httpd.conf file: SSLProtocol -ALL +TLSv1.2 Restart the Apache service.
In a command line, navigate to "<'INSTALLED PATH'>\bin\conf". Edit the "httpd.conf" file and search for the directive "CustomLog". If the "CustomLog" directive is missing or does not look like the following, this is a finding: CustomLog "Logs/access_log" common
Edit the httpd.conf file and enter the name, path, and level for the CustomLog.
In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If the "log_config_module" is not enabled, this is a finding.
Uncomment the "log_config_module" module line in the <'INSTALL PATH'>\conf\httpd.conf file. Restart the Apache service.
Items to be logged are as shown in this sample line in the <'INSTALL PATH'>\conf\httpd.conf file: LogFormat "%a %A %h %H %l %m %s %t %u %U \"%{Referer}i\" " combined If the web server is not configured to capture the required audit events for all sites and virtual directories, this is a finding.
Configure the "LogFormat" in the "httpd.conf" file to look like the following: LogFormat "%a %A %h %H %l %m %s %t %u %U \"%{Referer}i\" " combined Restart the Apache service. NOTE: Your log format may be using different variables based on your environment, however, it should be verified to be producing the same end result of logged elements.
Interview the System Administrator to review the configuration of the Apache web server architecture and determine if inbound web traffic is passed through a proxy. If the Apache 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. View Apache log files as configured in "httpd.conf" files. 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 log entries in the log file(s) reflect the IP address of the proxy server as the source, this is a finding.
Access the proxy server through which inbound web traffic is passed and configure settings to pass web traffic to the Apache web server transparently.
Work with the SIEM administrator to determine if an alert is configured when audit data is no longer received as expected. If there is no alert configured, this is a finding.
Work with the SIEM administrator to configure an alert when no audit data is received from Apache based on the defined schedule of connections.
Review the <'INSTALL PATH'>\conf\httpd.conf file to determine the location of the logs. Determine permissions for log files. From the command line, navigate to the directory where the log files are located and enter the following command: icacls <'Apache Directory'>\logs\* ex: icacls c:\Apache24\logs\* Only the Auditors, Web Managers, Administrators, and the account that runs the web server should have permissions to the files. If any users other than those authorized have read access to the log files, this is a finding.
To maintain the integrity of the data that is being captured in the log files, ensure that only the members of the Auditors group, Administrators, and the user assigned to run the web server software are granted permissions to read the log files.
Query the System Administrator (SA) to determine who has update access to the web server log files. The role of auditor and the role of SA should be distinctly separate. An individual functioning as an auditor should not also serve as an SA due to a conflict of interest. Only management-authorized individuals with a privileged ID or group ID associated with an auditor role will have access permission to log files that are greater than read on web servers he or she has been authorized to audit. Only management-authorized individuals with a privileged ID or group ID associated with either an SA or Web Administrator role may have read authority to log files for the web servers he or she has been authorized to administer. If an account with roles other than auditor has greater than read authority to the log files, this is a finding. Obtain the log location by reviewing the <'INSTALL PATH'>\conf\httpd.conf file. Click the "Browse" button and navigate to the directory where the log files are stored. Right-click the log file name to review and click "Properties". Click the "Security" tab. If an account associated with roles other than auditors, SAs, or Web Administrators has any access to log files, this is a finding. If an account with roles other than auditor has greater than read authority to the log files, this is a finding. This check does not apply to service account IDs used by automated services necessary to process, manage, and store log files.
Obtain the log location by reviewing the <'INSTALL PATH'>\conf\httpd.conf file. Click the "Browse" button and navigate to the directory where the log files are stored. Right-click the log file name 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.
Interview the Information System Security Officer (ISSO), System Administrator (SA), Web Manager, Webmaster, or developers as necessary to determine whether 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 web server backup procedures.
Interview the System Administrator (SA) about the role of the Apache web server. If the web server is hosting an application, have the SA provide supporting documentation on how the application's user management is accomplished outside of the web server. If the web server is not hosting an application, this is Not Applicable. If the web server is performing user management for hosted applications, this is a finding. If the 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 Apache web server, this is a finding.
Reconfigure any hosted applications on the Apache web server to perform user management outside the web server. Document how the hosted application user management is accomplished.
Verify the document root directory and the configuration files do not provide for default index.html or welcome page. Verify the Apache User Manual content is not installed by checking the configuration files for manual location directives. Verify the Apache configuration files do not have the Server Status handler configured. Verify that the Server Information handler is not configured. Verify that any other handler configurations such as perl-status is not enabled. If any of these are present, this is a finding.
Review all pre-installed content and remove content that is not required. In particular, look for the unnecessary content that may be found in the document root directory, a configuration directory such as conf/extra directory, or as a UNIX/Linux package Remove the default index.html or welcome page if it is a separate package. If the default welcome page is part of the main Apache httpd package as it is on Red Hat Linux, comment out the configuration as shown below. Removing a file such as the "welcome.conf" is not recommended as it may be replaced if the package is updated. # # This configuration file enables the default "Welcome" # page if there is no default index page present for # the root URL. To disable the Welcome page, comment # out all the lines below. # ##<LocationMatch "^/+$"> ## Options -Indexes ## ErrorDocument 403 /error/noindex.html ##</LocationMatch> Remove the Apache User Manual content or comment out configurations referencing the manual: # yum erase httpd-manual Remove or comment out any Server Status handler configuration: # # Allow server status reports generated by mod_status, # with the URL of http://servername/server-status # Change the ".example.com" to match your domain to enable. # ##<Location /server-status> ## SetHandler server-status ## Order deny,allow ## Deny from all ## Allow from .example.com ##</Location> Remove or comment out any Server Information handler configuration: # # Allow remote server configuration reports, with the URL of # http://servername/server-info (requires that mod_info.c be loaded). # Change the ".example.com" to match your domain to enable. # ##<Location /server-info> ## SetHandler server-info ## Order deny,allow ## Deny from all ## Allow from .example.com ##</Location> Remove or comment out any other handler configuration such as perl-status: # This will allow remote server configuration reports, with the URL of # http://servername/perl-status # Change the ".example.com" to match your domain to enable. # ##<Location /perl-status> ## SetHandler perl-script ## PerlResponseHandler Apache2::Status ## Order deny,allow ## Deny from all ## Allow from .example.com ##</Location> The default source build provides extra content available in the /usr/local/apache2/conf/extra/ directory, but the configuration of most of the extra content is commented out by default. In particular, the inclusion of conf/extra/proxyhtml.conf is not commented out in "httpd.conf": # Server-pool management (MPM specific) #Include conf/extra/httpd-mpm.conf # Multi-language error messages #Include conf/extra/httpd-multilang-errordoc.conf # Fancy directory listings #Include conf/extra/httpd-autoindex.conf # Language settings #Include conf/extra/httpd-languages.conf # User home directories #Include conf/extra/httpd-userdir.conf # Real-time info on requests and configuration #Include conf/extra/httpd-info.conf # Virtual hosts #Include conf/extra/httpd-vhosts.conf # Local access to the Apache HTTP Server Manual #Include conf/extra/httpd-manual.conf # Distributed authoring and versioning (WebDAV) #Include conf/extra/httpd-dav.conf # Various default settings #Include conf/extra/httpd-default.conf # Configure mod_proxy_html to understand HTML4/XHTML1 <IfModule proxy_html_module> Include conf/extra/proxy-html.conf </IfModule> # Secure (SSL/TLS) connections #Include conf/extra/httpd-ssl.conf For applications developed in-house, ensure that development artifacts (sample data and scripts; unused libraries, components, debug code; or tools) are not included in the deployed software or accessible in the production environment.
In a command line, CD to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If any of the following modules are present, this is a finding: proxy_module proxy_ajp_module proxy_balancer_module proxy_ftp_module proxy_http_module proxy_connect_module
Edit the <'INSTALL PATH'>\conf\httpd.conf file and remove the following modules: proxy_module proxy_ajp_module proxy_balancer_module proxy_ftp_module proxy_http_module proxy_connect_module
If the site requires the use of a particular piece of software, the Information System Security Officer (ISSO) will need to maintain documentation identifying this software as necessary for operations. The software must be operated at the vendor's current patch level and must be a supported vendor release. If programs or utilities that meet the above criteria are installed on the web server, and appropriate documentation and signatures are in evidence, this is not a finding. Determine whether the web server is configured with unnecessary software. Determine whether 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. Check the directory structure of the server and verify that additional, unintended, or unneeded applications are not loaded on the system. If, after review of the application on the system, there is no justification for the identified software, this is a finding.
Remove any unnecessary applications.
Obtain a list of the user accounts for the system, noting the privileges for each account. Verify with the System Administrator (SA) or the Information System Security Officer (ISSO) that all privileged accounts are mission essential and documented. Verify with the SA 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 present, this is a finding. If undocumented access to shell scripts or operating system functions is present, this is a finding.
Ensure non-administrators are not allowed access to the directory tree, the shell, or other operating system functions and utilities.
Review the <'INSTALL PATH'>\conf\httpd.conf file. If "Action" or "AddHandler" exist and they configure .exe, .dll, .com, .bat, or .csh, or any other shell as a viewer for documents, this is a finding.
Disable MIME types for .exe, .dll, .com, .bat, and .csh programs. If "Action" or "AddHandler" exist and they configure .exe, .dll, .com, .bat, or .csh, remove those references. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Locate cgi-bin files and directories enabled in the "Script", "ScriptAlias" or "ScriptAliasMatch", or "ScriptInterpreterSource" directives. If any script is not needed for application operation, this is a finding.
Remove any scripts in cgi-bin directory if they are not needed for application operation.
In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If any of the following modules are present, this is a finding: dav_module dav_fs_module dav_lock_module
Edit the <'INSTALL PATH'>\conf\httpd.conf file and remove the following modules: dav_module dav_fs_module dav_lock_module Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file and search for the following directive: Listen For any enabled "Listen" directives, verify 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.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and set the "Listen" directive to listen on a specific IP address and port. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Ensure SSL is enabled by looking at the "SSLVerifyClient" directive. If the value of "SSLVerifyClient" is not set to "require", this is a finding.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and set the value of "SSLVerifyClient" to "require". Restart the Apache service.
Review the <'INSTALL PATH'>/conf/extra/httpd-ssl.conf file. Look for the "SSLCACertificateFile" directive. Review the path of the "SSLCACertificateFile" directive. Review the contents of <'path of cert'>\ca-bundle.crt. Examine the contents of this file to determine if the trusted CAs are DoD approved. If the trusted CA that is used to authenticate users to the website does not lead to an approved DoD CA, this is a finding. NOTE: There are non-DoD roots that must be on the server for it to function. Some applications, such as antivirus programs, require root CAs to function. DoD-approved certificate can include the External Certificate Authorities (ECA), if approved by the AO. The PKE InstallRoot 3.06 System Administrator Guide (SAG), dated 08 Jul 2008, contains a complete list of DoD, ECA, and IECA CAs.
Configure the web server's trust store to trust only DoD-approved PKIs (e.g., DoD PKI, DoD ECA, and DoD-approved external partners). Restart the Apache service.
Review the web server documentation and configuration to determine what web server accounts are available on the hosting server. Review permissions in the web and Apache directories. If the files are owned by anyone other than the Apache user set up to run Apache, this is a finding. If non-privileged web server accounts are available with access to functions, directories, or files not needed for the role of the account, this is a finding.
Limit the functions, directories, and files that are accessible by each account and role to administrative accounts and remove or modify non-privileged account access.
Review the web server documentation and deployed configuration to determine whether hosted application functionality is separated from web server management functions. If the functions are not separated, this is a finding.
Configure Apache to separate the hosted applications from web server management functionality.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Search for the following directive: SessionMaxAge Verify the value of "SessionMaxAge" is set to "600" or less. If "SessionMaxAge" does not exist or is set to more than "600", this is a finding.
Open the <'INSTALL PATH'>\conf\httpd.conf file. Set the "SessionMaxAge" directive to a value of no more than "600". Add the directive if it does not exist. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. If "HttpOnly;secure" is not configured, this is a finding. Review the code. If when creating cookies, the following is not occurring, this is a finding: function setCookie() { document.cookie = "ALEPH_SESSION_ID = $SESS; path = /; secure"; }
Add this line to "httpd.conf" file: Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;secure Add the secure attribute to the JavaScript set cookie: function setCookie() { document.cookie = "ALEPH_SESSION_ID = $SESS; path = /; secure"; } HttpOnly cannot be used since by definition this is a cookie set by JavaScript. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Verify the "mod_unique_id" is loaded. If it does not exist, this is a finding.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and load the "mod_unique_id" module. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Check to see if the "mod_unique_id" is loaded. If it does not exist, this is a finding.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and load the "mod_unique_id" module. Restart the Apache service.
Review the <'INSTALLED PATH'>\conf\httpd.conf file. Verify the "ssl_module" is loaded. If it does not exist, this is a finding. If the "SSLRandomSeed" directive is missing or does not look like the following, this is a finding: SSLRandomSeed startup builtin SSLRandomSeed connect builtin
Edit the <'INSTALLED PATH'>\conf\httpd.conf file and load the "ssl_module" module. Set the "SSLRandomSeed" directives to the following: SSLRandomSeed startup builtin SSLRandomSeed connect builtin Restart the Apache service.
Interview the System Administrator for the Apache 2.4 web server. Ask for documentation on the disaster recovery methods tested and planned for the Apache 2.4 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 Apache 2.4 web server in the event of the necessity for rollback. Document and test the disaster recovery methods designed.
Determine whether the public web server has a two-way trusted relationship with any private asset located within the network. Private web server resources (e.g., drives, folders, printers, etc.) will not be directly mapped to or shared with public web servers. If sharing is selected for any web folder, this is a finding. 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 also not accessible to the public. Web content is not to be shared via Microsoft shares or NFS mounts.
Review the <'INSTALLED PATH'>\conf\httpd.conf file. Verify the "Timeout" directive is specified in the "httpd.conf" file to have a value of "10" seconds or less. If the "Timeout" directive is not configured or set for more than "10" seconds, this is a finding.
Review the <'INSTALLED PATH'>\conf\httpd.conf file. Add or modify the "Timeout" directive in the Apache configuration to have a value of "10" seconds or less. "Timeout 10" Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. If the "ErrorDocument" directive is not being used, this is a finding.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and use the "ErrorDocument" directive to enable custom error pages. ErrorDocument 500 "Sorry, our script crashed. Oh dear" ErrorDocument 500 /cgi-bin/crash-recover ErrorDocument 500 http://error.example.com/server_error.html ErrorDocument 404 /errors/not_found.html ErrorDocument 401 /subscription/how_to_subscribe.html The syntax of the ErrorDocument directive is: ErrorDocument <3-digit-code> <action> Restart the Apache service. Additional Information: https://httpd.apache.org/docs/2.4/custom-error.html
Review the <'INSTALL PATH'>\conf\httpd.conf file. For any enabled "TraceEnable" directives, verify they are part of the server=level configuration (i.e., not nested in a "Directory" or "Location" directive). Also verify 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 because the default value is "On".
Edit the <'INSTALL PATH'>\conf\httpd.conf file and add or set the value of "TraceEnable" to "Off". Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Search for the following directive: SessionMaxAge Verify the value of "SessionMaxAge" is set to "600" or less. If the "SessionMaxAge" does not exist or is set to more than "600", this is a finding.
Open the <'INSTALL PATH'>\conf\httpd.conf file. Set the "SessionMaxAge" directive to a value of "600" or less; add the directive if it does not exist. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Verify the "mod_reqtimeout" is loaded. If it does not exist, this is a finding. If the "mod_reqtimeout" module is loaded and the "RequestReadTimeout" directive is not configured, this is a finding. Note: The "RequestReadTimeout" directive must be explicitly configured (i.e., not left to a default value) to a value compatible with the organization's operations.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and load the "mod_reqtimeout" module. Set the "RequestReadTimeout" directive to a value compatible with the organization's operations. Restart the Apache service.
Review the <'INSTALL PATH'>\conf\httpd.conf file. If "IP Address Restrictions" are not configured or IP ranges configured to be "Allow" are not restrictive enough to prevent connections from nonsecure zones, this is a finding.
Configure the "http.conf" file to include restrictions. Example: <RequireAll> Require not host phishers.example.com moreidiots.example </RequireAll> Restart the Apache service.
Interview the System Administrator and Web Manager. Ask for documentation for the Apache web server administration. Verify there are documented procedures for shutting down an Apache 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. Stop the Apache service. If the web server is not capable of 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 Apache website in the event of an attack. The procedure should, at a minimum, provide the following step: Stop the Apache service.
Determine which tool or control file is used to control the configuration of the web server. If the control of the web server is done via control files, verify who has update access to them. If tools are being used to configure the web server, determine who has access to execute the tools. If accounts other than the System Administrator (SA), the Web Manager, or the Web Manager designees have access to the web administration tool or control files, this is a finding.
Restrict access to the web administration tool to only the System Administrator, Web Manager, or the Web Manager designees.
Review the <'INSTALL PATH'>\conf\httpd.conf file. Verify the "mod_proxy" is loaded. If it does not exist, this is a finding. If the "mod_proxy" module is loaded and the "ProxyPass" directive is not configured, this is a finding.
Edit the <'INSTALL PATH'>\conf\httpd.conf file and load the "mod_proxy" module. Set the "ProxyPass" directive. Restart the Apache service.
Work with SIEM administrator to determine log storage capacity. If there is no setting within a SIEM to accommodate enough a large logging capacity, this is a finding.
Work with the SIEM administrator to determine if the SIEM is configured to allocate log record storage capacity large enough to accommodate the logging requirements of the Apache web server.
Work with the SIEM administrator to determine current security integrations. If the SIEM is not integrated with security, this is a finding.
Work with the SIEM administrator to integrate with an organizations security infrastructure.
Work with the SIEM administrator to determine current security integrations. If the SIEM is not integrated with security, this is a finding.
Work with the SIEM administrator to integrate with an organizations security infrastructure.
Work with the SIEM administrator to determine if an alert is configured when audit data is no longer received as expected. If there is no alert configured, this is a finding.
Work with the SIEM administrator to configure an alert when no audit data is received from Apache based on the defined schedule of connections.
Review the web server documentation and configuration to determine the time stamp format for log data. In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If "log_config_module" is not listed, this is a finding. In a command line, navigate to "<'INSTALLED PATH'>\bin". Determine the location of the "httpd.conf" file by running the following command: httpd -V Review the "HTTPD_ROOT" path. Navigate to the "HTTPD_ROOT"/conf directory. Edit the "httpd.conf" file. Verify the "LogFormat" directive exists. If it does not exist, this is a finding. Verify the "LogFormat" line contains the "%t" flag. If "%t" flag is not present, time is not mapped to UTC or GMT time, and this is a finding.
In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -M" to view a list of installed modules. If "log_config_module" is not listed, enable this module. In a command line, navigate to "<'INSTALLED PATH'>\bin". Determine the location of the "httpd.conf" file by running the following command: httpd -V Review the "HTTPD_ROOT" path. Navigate to the "HTTPD_ROOT"/conf directory. Edit the "httpd.conf" file. Determine if the "LogFormat" directive exists. If it does not exist, ensure the "LogFormat" line contains the "%t" flag.
Review the "ssl.conf" file. Look for the "SSLCACertificateFile" directive. Review the path of the "SSLCACertificateFile" directive. Review the contents of <'path of cert'>\ca-bundle.crt. Examine the contents of this file to determine if the trusted CAs are DoD approved. If the trusted CA that is used to authenticate users to the website does not lead to an approved DoD CA, this is a finding. NOTE: There are non-DoD roots that must be on the server for it to function. Some applications, such as antivirus programs, require root CAs to function. DoD-approved certificate can include the External Certificate Authorities (ECA), if approved by the AO. The PKE InstallRoot 3.06 System Administrator Guide (SAG), dated 08 Jul 2008, contains a complete list of DoD, ECA, and IECA CAs.
Configure the web server's trust store to trust only DoD-approved PKIs (e.g., DoD PKI, DoD ECA, and DoD-approved external partners).
Right-click <'Install Path'>\bin\httpd.exe. Click "Properties" from the "Context" menu. Select the "Security" tab. Review the groups and user names. The following account may have Full control privileges: TrustedInstaller Web Managers Web Manager designees The following accounts may have read and execute, or read permissions: Non Web Manager Administrators ALL 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.
Verify the "Timeout" directive is specified in the Apache configuration files to have a value of "10" seconds or less. If the "Timeout" directive is not configured or set for more than "10" seconds, this is a finding.
Add or modify the "Timeout" directive in the Apache configuration to have a value of "10" seconds or less. "Timeout 10" Restart the Apache service.
Search the Apache configuration files for the "SSLCompression" directive. If the "SSLCompression" directive does not exist, this is a not a finding. If the "SSLCompression" directive exists and is not set to "Off", this is a finding.
Perform the following to implement the recommended state: Search the Apache configuration files for the "SSLCompression" directive. If the directive is present, set it to "Off". Restart the Apache service.
Determine the most recent patch level of the Apache web server 2.4 software, as posted on the Apache HTTP Server Project website. In a command line, type "httpd -v". If the version is more than one version behind the most recent patch level, this is a finding.
Install the current version of the web server software and maintain appropriate service packs and patches.
Access "Apps" menu. Under "Administrative Tools", select "Computer Management". In left pane, expand "Local Users and Groups" and click on "Users". Review the local users listed in the middle pane. If any local accounts are present and are used by Apache Web Server, verify with System Administrator that default passwords have been changed. If passwords have not been changed from the default, this is a finding.
Access "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 that are present and are used by Apache Web Server. Develop an internal process for changing passwords on a regular basis.
Review the website to determine if "HTTP" and "HTTPS" are used in accordance with well-known ports (e.g., 80 and 443) or those ports and services as registered and approved for use by the DoD Ports, Protocols, and Services Management (PPSM). Verify that any variation in PPS is documented, registered, and approved by the PPSM. If it is not, this is a finding.
Ensure the website enforces the use of IANA well-known ports for "HTTP" and "HTTPS".
Determine the version of the Apache software that is running on the system. In a command line, navigate to "<'INSTALLED PATH'>\bin". Run "httpd -v" to view the Apache version. If the version of Apache is not at the following version or higher, this is a finding: Apache 2.4 (February 2012)
Install the current version of the web server software and maintain appropriate service packs and patches.
Work with the SIEM administrator to determine if an alert is configured when audit data is no longer received as expected. If there is no alert configured, this is a finding.
Work with the SIEM administrator to configure an alert when no audit data is received from Apache based on the defined schedule of connections.