V3R3 changes
Apache Server 2.4 UNIX Server STIG V3R3 (2026-07-01) replaced V3R2 (2025-01-30): 2 checks removed, 4 updated. It has 45 checks, against 47 in V3R2.
V3R3 checklistV3R2 checklist Compare V3R2 and V3R3 in STIG Compare
- 0 added
- 2 removed
- 4 updated
Updated fields: Check text 4Fix text 3Discussion 3Title 1
Removed since V3R2 (2)
- V-214266CAT IIThe Apache web server must prohibit or restrict the use of nonsecure or unnecessary ports, protocols, modules, and/or services.
- V-214272CAT IIIThe Apache web server must be configured in accordance with the security configuration settings based on DoD security configuration or implementation guidance, including STIGs, NSA configuration guides, CTOs, and DTMs.
Updated in V3R3 (4)
V-214230CAT IIThe Apache web server must use cryptography to protect the integrity of remote sessions.Check text, Fix text, Discussion
Check text
Verify the "ssl module" module is loaded:
# httpd -M | grep -i ssl_module
Output: ssl_module (shared)
If the "ssl_module" is not found, this is a finding.
Determine the location of the "HTTPD_ROOT" directory and the "httpd.conf" file:
# apachectl -V | egrep -i 'httpd_root|server_config_file'
-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Note: The apachectl front end is the preferred method for locating the Apache httpd file. For some Linux distributions, "apache2ctl -V" or "httpd -V" can also be used.
Search for the directive "SSLProtocol" in the "httpd.conf" file:
# cat /<path_to_file>/httpd.conf | grep -i "SSLProtocol"
If the "SSLProtocol" directive is missing or does not look like the following, this is a finding:
SSLProtocol -ALLSSLv2 -SSLv3 -TLSv1 +TLSv1.2 +TLSv1.3
If the TLSdirective versiondoes is not TLSexist, 1.2 or higher,exists accordingbut todoes NISTnot SPcontain 800"-52SSLv2 Rev-SSLv3 2, or if non-FIPS-approvedTLSv1 algorithms+TLSv1.2 are enabled+TLSv1.3", this is a finding.
Fix text
# cat /etc/httpd/conf.d/ssl.conf | grep "SSLProtocol - ALL +TLSv1.2"
Ensure the "SSLProtocol" is added to the ssl.conf file and looks like the following:
SSLProtocol -ALLSSLv2 -SSLv3 -TLSv1 +TLSv1.2 +TLSv1.3
Restart Apache: apachectl restart
Discussion
Data exchanged between the user and the Apache web server can range from static display data to credentials used to log on to the hosted application. Even when data appears to be static, the non-displayednondisplayed logic in a web page may expose business logic or trusted system relationships. The integrity of all the data being exchanged between the user and the Apache web server must always be trusted. To protect the integrity and trust, encryption methods should be used to protect the complete communication session.
Satisfies: SRG-APP-000014-WSR-000006, SRG-APP-000015-WSR-000014, SRG-APP-000033-WSR-000169, SRG-APP-000172-WSR-000104, SRG-APP-000179-WSR-000110, SRG-APP-000179-WSR-000111, SRG-APP-000224-WSR-000139, SRG-APP-000427-WSR-000186, SRG-APP-000439-WSR-000151, SRG-APP-000439-WSR-000152, SRG-APP-000439-WSR-000153, SRG-APP-000442-WSR-000182
V-214238CAT IIExpansion modules must be fully reviewed, tested, and signed before they can exist on a production Apache web server.Check text, Fix text
Check text
Enter the following command:
"httpd -M"
This will provide a list of the loaded modules. Validate that all displayed modules are required for operationsoperation.
If any module is not required for operation, this is a finding.
Note: The following modules are needed for basic web function and do not need to be reviewed:
core_module
http_module
so_module
mpm_prefork_module
For a complete list of signed Apache Modulesmodules, review https://httpd.apache.org/docs/2.4/mod/.
Fix text
Remove any unsigned modules.Remove any unsigned modules and any modules that are not required for operation.
V-214267CAT IIThe Apache web server must be protected from being stopped by a nonprivileged user.Title, Check text, Discussion
Title
The Apache web server must be protected from being stopped by a non-privileged user.
Check text
Review the web server documentation and deployed configuration to determine where the process ID is stored and which utilities are used to start/stop the web server.
Locate the httpd.pid file and list its permission set and owner/group
# find / -name "httpd.pid
Output should be similar to: /run/httpd/httpd.pid
# ls -laH /run/httpd/httpd.pid
Output should be similar -rw-r--r--. 1 root root 5 Jun 13 03:18 /run/httpd/httpd.pid
If the file owner/group is not an administrative service account, this is a finding.
If permission set is not 644 or more restrictive, this is a finding.
Verify the Apache service utilities (binaries) have the correct permission set and are user/group owned by an administrator account
# ls -laH /usr/sbin/service
Output should be similar: -rwxr-xr-x. 1 root root 3.2K Aug 19, 2019 /usr/sbin/service
# ls -laH /usr/sbin/apachectl
Output should be similar: -rwxr-xr-x. 1 root root 4.2K Oct 8, 2019 /usr/sbin/apachectl
If the service utilities owner/group is not an administrative service account, this is a finding.
If permission set is not 755 or more restrictive, this is a finding.
Discussion
An attacker has at least two reasons to stop a web server. The first is to cause a denial of service (DoS), and the second is to put in place changes the attacker made to the web server configuration.
To prohibit an attacker from stopping the Apache web server, the process ID (pid) of the web server and the utilities used to start/stop it must be protected from access by non-privilegednonprivileged users. By knowing the "pid" and having access to the Apache web server utilities, a non-privilegednonprivileged user has a greater capability of stopping the server, whether intentionally or unintentionally.
V-214274CAT IIThe Apache web server htpasswd files (if present) must reflect proper ownership and permissions.Check text, Fix text, Discussion
Check text
Locate the htpasswd file using the AuthUserFile directive by entering the following command:
findcat /<path_to_file>/httpd.conf | grep -namei htpasswd"AuthUserFile" | awk '{print $2}'
NavigateIf tothe thatabove directory.command produces any output, run the "ls -l" command on it; for example:
Run: ls -l /etc/httpd/.htpasswd
Permissions should be: r-x r - x - - - (550)
If permissions on "htpasswd"the password file are greater than "550", this is a finding.
Verify the owner is the SA or Webweb Managermanager account.
If another account has access to this file, this is a finding.
Fix text
Find the htpasswd file using the AuthUserFile directive:
cat /<path_to_file>/httpd.conf | grep -i "AuthUserFile" | awk '{print $2}'
Ensure the SA or Webweb Managermanager account owns the "htpasswd" file.
Ensure permissions are set to "550".
Discussion
In addition to OS restrictions, access rights to files and directories can be set on a website using the web server software. That is, in addition to allowing or denying all access rights, a rule can be specified that allows or denies partial access rights. For example, users can be given read-only access rights to files to view the information but not change the files.
This check verifies that the htpasswd file is only accessible by Systemsystem Administratorsadministrators (SAs) or Webweb Managersmanagers, with the account running the web service having group permissions of read and execute. "htpasswd" is a utility used by Netscape and Apache to provide for password access to designated websites.
How these changes are found
Checks are matched across the two releases by V-number. A check counts as updated when DISA gave it a new rule revision (the r number in its SV-…_rule id) and its title, severity, check text, fix text, discussion, CCIs or other fields changed — the same comparison STIG Compare makes. Added checks are new V-numbers; removed checks are V-numbers V3R3 no longer has.
Comparing other releases, or this one against an older release? Pick any two in STIG Compare.