STIGQter STIGQter: STIG Summary: F5 NGINX Security Technical Implementation Guide Version: 1 Release: 1 Benchmark Date: 25 Nov 2025:

NGINX must display the Standard Mandatory DOD Notice and Consent Banner before granting access to the application.

DISA Rule

SV-278384r1171904_rule

Vulnerability Number

V-278384

Group Title

SRG-APP-000068

Rule Version

NGNX-APP-000180

Severity

CAT II

CCI(s)

Weight

10

Fix Recommendation

Note: The default NGINX configuration is "/etc/nginx/nginx.conf", though various files may also be included.

Configure nginx.conf for a section that verifies that user consent has been given. Setting a cookie upon user acceptance after reading the banner and checking for the presence of that cookie is one way to accomplish this.

Add this block in nginx.conf under the http block:

# Define whether consent has been given based on the cookie
map $http_cookie $consent_given {
"~*user_consent=1" 1;
default 0;
}

Configure nginx.conf for a section that handles user consent and setting the cookie under the server block:

# Serve the consent banner page if consent is not given
location /consent {
default_type text/html;
return 200 "<html><body>
<h1>Consent Required</h1>
<p>You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.

By using this IS (which includes any device attached to this IS), you consent to the following conditions:

-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.

-At any time, the USG may inspect and seize data stored on this IS.

-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.

-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.

-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.</p>
<a href='/set-consent'>I Accept</a>
</body></html>";
}

# Handle consent acceptance and set the cookie
location /set-consent {
add_header Set-Cookie "user_consent=1; Path=/; Max-Age=31536000; HttpOnly";
return 302 /;
}

location / {
# Redirect users to the consent page if they haven't given consent
if ($consent_given = 0) {
return 302 /consent;
}

Save nginx.conf, test the config, and reload NGINX:

nginx -t && nginx -s reload

Check Contents

Note: The default NGINX configuration is "/etc/nginx/nginx.conf", though various files may also be included.

Check nginx.conf for a section that verifies that user consent has been given. Setting a cookie upon user acceptance after reading the banner and checking for the presence of that cookie is one way to accomplish this.

Check for this block in nginx.conf under the http block:

# Define whether consent has been given based on the cookie
map $http_cookie $consent_given {
"~*user_consent=1" 1;
default 0;
}

Check nginx.conf for a section that handles user consent and setting the cookie under the server block:

# Serve the consent banner page if consent is not given
location /consent {
default_type text/html;
return 200 "<html><body>
<h1>Consent Required</h1>
<p>You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.

By using this IS (which includes any device attached to this IS), you consent to the following conditions:

-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.

-At any time, the USG may inspect and seize data stored on this IS.

-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.

-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.

-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.</p>
<a href='/set-consent'>I Accept</a>
</body></html>";
}

# Handle consent acceptance and set the cookie
location /set-consent {
add_header Set-Cookie "user_consent=1; Path=/; Max-Age=31536000; HttpOnly";
return 302 /;
}

location / {
# Redirect users to the consent page if they haven't given consent
if ($consent_given = 0) {
return 302 /consent;
}

If NGINX is not configured to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the application, this is a finding.

Vulnerability Number

V-278384

Documentable

False

Rule Version

NGNX-APP-000180

Severity Override Guidance

Note: The default NGINX configuration is "/etc/nginx/nginx.conf", though various files may also be included.

Check nginx.conf for a section that verifies that user consent has been given. Setting a cookie upon user acceptance after reading the banner and checking for the presence of that cookie is one way to accomplish this.

Check for this block in nginx.conf under the http block:

# Define whether consent has been given based on the cookie
map $http_cookie $consent_given {
"~*user_consent=1" 1;
default 0;
}

Check nginx.conf for a section that handles user consent and setting the cookie under the server block:

# Serve the consent banner page if consent is not given
location /consent {
default_type text/html;
return 200 "<html><body>
<h1>Consent Required</h1>
<p>You are accessing a U.S. Government (USG) Information System (IS) that is provided for USG-authorized use only.

By using this IS (which includes any device attached to this IS), you consent to the following conditions:

-The USG routinely intercepts and monitors communications on this IS for purposes including, but not limited to, penetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM), law enforcement (LE), and counterintelligence (CI) investigations.

-At any time, the USG may inspect and seize data stored on this IS.

-Communications using, or data stored on, this IS are not private, are subject to routine monitoring, interception, and search, and may be disclosed or used for any USG-authorized purpose.

-This IS includes security measures (e.g., authentication and access controls) to protect USG interests--not for your personal benefit or privacy.

-Notwithstanding the above, using this IS does not constitute consent to PM, LE or CI investigative searching or monitoring of the content of privileged communications, or work product, related to personal representation or services by attorneys, psychotherapists, or clergy, and their assistants. Such communications and work product are private and confidential. See User Agreement for details.</p>
<a href='/set-consent'>I Accept</a>
</body></html>";
}

# Handle consent acceptance and set the cookie
location /set-consent {
add_header Set-Cookie "user_consent=1; Path=/; Max-Age=31536000; HttpOnly";
return 302 /;
}

location / {
# Redirect users to the consent page if they haven't given consent
if ($consent_given = 0) {
return 302 /consent;
}

If NGINX is not configured to display the Standard Mandatory DOD Notice and Consent Banner before granting access to the application, this is a finding.

Check Content Reference

M

Target Key

5720