Red Hat Ansible Automation Controller Application Server Security Technical Implementation Guide
Pick two releases to diff their requirements.
Open a previous version of this STIG.
Digest of Updates No substantive changes
Comparison against the immediately-prior release (V1R2). Rule matching uses the Group Vuln ID. Content-change detection compares the rule’s description, check, and fix text after stripping inline markup — cosmetic-only edits aren’t flagged.
No substantive changes detected against the previous release. 16 rules matched cleanly.
- RMF Control
- AC-10
- Severity
- M
- CCI
- CCI-000054
- Version
- APAS-AT-000010
- Vuln IDs
-
- V-256896
- Rule IDs
-
- SV-256896r960735_rule
Checks: C-60571r903542_chk
As a System Administrator for each Automation Controller host, navigate to the Automation Controller web administrator console: Settings >> System >> Miscellaneous Authentication settings. Verify the "Maximum Number of simultaneous logged in sessions" field is set according to policy. If this configuration setting does not match the organizationally defined maximum, or is set to -1 (negative one), this is a finding.
Fix: F-60513r903543_fix
As a System Administrator for each Automation Controller host, navigate to the Automation Controller web administrator console: Settings >> System >> Miscellaneous Authentication settings. Click "Edit". Change "Maximum Number of simultaneous logged in sessions" to match the organizationally defined maximum or greater than 0. Click "Save".
- RMF Control
- AC-17
- Severity
- M
- CCI
- CCI-000068
- Version
- APAS-AT-000011
- Vuln IDs
-
- V-256897
- Rule IDs
-
- SV-256897r960759_rule
Checks: C-60572r903510_chk
As an unauthenticated user, open a new web browser and go to http://<Automation Controller HOST> If not redirected to https://<Automation Controller HOST>, this is a finding.
Fix: F-60514r902260_fix
Enable HTTPS by running the following command: ./setup.sh -e nginx_disable_https=false The "nginx_disable_https" variable disables HTTPS traffic through NGINX, this is useful if offloading HTTPS to a load balancer. By default, this variable is set to false in the installers "roles/nginx/defaults/main.yml" file. If a load balancer is not needed, ensure this value has not been set to true.
- RMF Control
- IA-7
- Severity
- H
- CCI
- CCI-000803
- Version
- APAS-AT-000012
- Vuln IDs
-
- V-256898
- Rule IDs
-
- SV-256898r960762_rule
Checks: C-60573r903538_chk
As a System administrator for each Automation Controller host, check if the Operating System is FIPS enabled: sysctl crypto.fips_enabled If fips_enabled is not 1, this is a finding. Verify the installed volume for Automation Controller is on a LUKS encrypted volume command: AAPROOT='/var/lib/awx' && cryptsetup status `df -T ${AAPROOT} | cut -d ' ' -f 1 | tail -n 1 ` | grep type | grep -i luks || echo "FAILED" If "FAILED" is displayed, this is a finding. Verify this LUKS encrypted volume is using FIPS-compliant cryptographic functions command: allowed_FIPS_ciphers=('aes.*\(256\|384\|512\)') ; echo "${allowed_FIPS_ciphers[*]}" | tr ' ' '\n' >tempfile && cryptsetup status `df -T ${AAPROOT} | cut -d ' ' -f 1 | tail -n 1 ` | grep -e '\(cipher\|keysize\)' | awk '{print $2}' | paste -s -d '-' | grep -f tempfile 1>/dev/null || echo "FAILED" && rm -f tempfile If the output is not 1, this is a finding.
Fix: F-60515r903515_fix
As an administrator for each Automation Controller host, configure the Operating System to be FIPS enabled command: sudo fips-mode-setup --enable Reboot each system. Configure Ansible Automation Platform installation location to reside on a LUKS encrypted volume: Add a LUKS volume using default or other encrypted volume in accordance with organizationally defined policy. The '/var/lib/awx' filesystem must reside on this volume. Reinstall the Ansible Automation Platform. Note: The phrasing "Reinstall the Ansible Automation Platform." is applicable here; the installer cannot just be rerun on the same system. Reinstall the operating system on the Automation Controller server with FIPS mode enabled at install time by following the guidance located here: https://access.redhat.com/solutions/5416081 OR Enable FIPS mode without reinstalling the operating system by following the guidance located here: https://access.redhat.com/solutions/137833 If the operating system was reinstalled, reinstall Automation Controller by following the guidance located here: https://docs.ansible.com/ansible-tower/latest/html/installandreference/index.html
- RMF Control
- AC-8
- Severity
- M
- CCI
- CCI-000048
- Version
- APAS-AT-000015
- Vuln IDs
-
- V-256899
- Rule IDs
-
- SV-256899r960843_rule
Checks: C-60574r902265_chk
Navigate to the Automation Controller login page. Verify that the Standard Mandatory DOD Notice and Consent Banner is displayed with the following text: "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." If the required DOD banner is not displayed on the login page or the CUSTOM_LOGIN_INFO does not contain the correct text, this is a finding. Alternatively, verify the setting CUSTOM_LOGIN_INFO setting in the REST API at /api/v2/settings/ui by running the following command: curl https://<Automation Controller HOST>/api/v2/settings/ui
Fix: F-60516r903511_fix
Navigate to the Automation Controller web administrator console: Settings >> System >> User Interface settings. Click "Edit". In the Custom Login Info field, set the following text: "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." Click "Save".
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000139
- Version
- APAS-AT-000017
- Vuln IDs
-
- V-256900
- Rule IDs
-
- SV-256900r960864_rule
Checks: C-60575r902268_chk
Log in to Automation Controller as an administrator. Navigate to Settings >> System >> Logging setting. The following parameters must be set: Enable External Logging = On Logging Aggregator Level Threshold = DEBUG TCP Connection Timeout = 5 (default) or the organizational timeout Enable/disable HTTPS certificate verification = On Logging Aggregator <> (Default) "Not configured" If any of these settings are incorrect, this is a finding.
Fix: F-60517r903512_fix
Log in to Automation Controller as an administrator. Navigate to Settings >> System >> Logging setting. Click "Edit" and set the following fields: Enable External Logging = On Logging Aggregator Level Threshold = DEBUG TCP Connection Timeout = 5 (default) or the organizational timeout Enable/disable HTTPS certificate verification = On Logging Aggregator <> (Default) "Not configured" Click "Save".
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APAS-AT-000031
- Vuln IDs
-
- V-256901
- Rule IDs
-
- SV-256901r960915_rule
Checks: C-60576r927140_chk
Administrator must check, for each Automation Controller host, the rsyslog configuration to verify the log rollover against an organizationally defined log capture size. Check LOG_AGGREGATOR_MAX_DISK_USAGE_GB field in the Automation Controller configuration. On the host, execute: awx-manage print_settings LOG_AGGREGATOR_MAX_DISK_USAGE_GB If this field is not set to the organizationally defined log capture size, this is a finding. Check LOG_AGGREGATOR_MAX_DISK_USAGE_PATH field in the Automation Controller configuration for the log file location to "/var/lib/awx". On the host, execute: awx-manage print_settings LOG_AGGREGATOR_MAX_DISK_USAGE_PATH If this field is not set to "/var/lib/awx", this is a finding.
Fix: F-60518r927141_fix
Open a web browser and navigate to: https://<Automation Controller server>/api/v2/settings/logging/ (If the "Log In" button is displayed, click it, enter an Automation Controller administrator's credentials, and continue.) In the Content section, modify the following values: LOG_AGGREGATOR_MAX_DISK_USAGE_GB = organization-defined requirement for log buffering. LOG_AGGREGATOR_MAX_DISK_USAGE_PATH = "/var/lib/awx" Click "PUT".
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- APAS-AT-000032
- Vuln IDs
-
- V-256902
- Rule IDs
-
- SV-256902r960915_rule
Checks: C-60577r902274_chk
The Administrator must check the Automation Controller is deployed in an HA configuration. Administrator must check Automation Controller host via the REST API at api/v2/ping/ HA field for HA configuration. If this field is not true, indicating Automation Controller is in an HA configuration, this is a finding.
Fix: F-60519r902275_fix
If Automation Controller is not in an HA configuration, the administrator must reinstall Automation Controller.
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- APAS-AT-000034
- Vuln IDs
-
- V-256903
- Rule IDs
-
- SV-256903r960930_rule
Checks: C-60578r903539_chk
As an administrator, log into each Automation Controller host. Inspect the current permissions and owner of Automation Controller's NGINX log directory: stat -c "%a %U %G" /var/log/nginx/ | grep "770 nginx root" || echo "FAILED" If "FAILED" is displayed, this is a finding. Inspect the current permissions and owner of Automation Controller's log directory: $ stat -c "%a %U %G" /var/log/tower/ | grep "750 awx awx" || echo "FAILED" If "FAILED" is displayed, this is a finding. Inspect the current permissions and owner of Automation Controller's supervisor log directory: stat -c "%a %U %G" /var/log/supervisor/ | grep "770 root root" || echo "FAILED" If "FAILED" is displayed, this is a finding.
Fix: F-60520r902278_fix
As a system administrator for each Automation Controller host, set the permissions and owner of Automation Controller's NGINX log directory: chmod 770 /var/log/nginx chown nginx:root /var/log/nginx Set the permissions and owner of Automation Controller's log directory: chmod 770 /var/log/tower chown awx:awx /var/log/tower Set the permissions and owner of Automation Controller's supervisor log directory: chmod 770 /var/log/supervisor/ chown root:root /var/log/supervisor/
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- APAS-AT-000044
- Vuln IDs
-
- V-256904
- Rule IDs
-
- SV-256904r960960_rule
Checks: C-60579r902280_chk
The administrator must make a backup of the last known good configuration of the Automation Controller on each host. Locate the installer bundle directory that contains the inventory file used to install Ansible Automation Platform. Verify a backup of the last known good configuration has been made and stored in accordance with the Automation Controller Documentation and organizationally defined policy: https://docs.ansible.com/automation-controller/latest/html/administration/backup_restore.html If no such backup has been made, this is a finding.
Fix: F-60521r902281_fix
As System Administrator login to the Controller. Locate the installer bundle directory that contains the inventory file used to install Ansible Automation Platform. From there, run the setup.sh command with the "-b" option to perform a backup. Example: "[[installation directory]]/setup.sh -b" Note: To revert from a backup, refer to: https://docs.ansible.com/automation-controller/latest/html/administration/backup_restore.html
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000187
- Version
- APAS-AT-000047
- Vuln IDs
-
- V-256905
- Rule IDs
-
- SV-256905r986179_rule
Checks: C-60580r902283_chk
The Administrator must check the Automation Controller web administrator console and verify the appropriate authentication provider is configured and the associated fields are complete and accurate. Log in to Automation Controller as an administrator and navigate to Settings >> Authentication. If the organization-defined identity provider is not configured, or any associated fields are incomplete or inaccurate, this is a finding.
Fix: F-60522r986178_fix
Log in to Automation Controller as an administrator and navigate to Settings >> Authentication. Configure the appropriate authentication provider and associated fields for the organization-defined identity provider: Click on LDAP settings. Click "Edit". Configure/complete the fields. Click "Save".
- RMF Control
- Severity
- M
- CCI
- CCI-004045
- Version
- APAS-AT-000050
- Vuln IDs
-
- V-256906
- Rule IDs
-
- SV-256906r986176_rule
Checks: C-60581r902286_chk
Log in to the Automation Controller web console as an administrator and navigate to Access >> Users. The only local user allowed is the default/breakglass "admin". All other users need to come from an external authentication source. If any other local users exist, this is a finding.
Fix: F-60523r902287_fix
Log in to the Automation Controller web console as an administrator and navigate to Access >> Users. Click the Username to be removed. Select "Delete" and confirm.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000197
- Version
- APAS-AT-000055
- Vuln IDs
-
- V-256907
- Rule IDs
-
- SV-256907r961029_rule
Checks: C-60582r902289_chk
Log in to Automation Controller as an administrator and navigate to Settings >> Authentication >> LDAP settings. If an LDAP server is configured but the "LDAP SERVER URI" field does not start with "ldaps://", this is a finding.
Fix: F-60524r903514_fix
Log in to Automation Controller as an administrator and navigate to Settings >> Authentication >> LDAP settings. Click "Edit". Modify the "LDAP SERVER URI" field so that it begins with "ldaps://". Click "Save".
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-001496
- Version
- APAS-AT-000078
- Vuln IDs
-
- V-256908
- Rule IDs
-
- SV-256908r961206_rule
Checks: C-60583r902292_chk
As an administrator, log in to each Automation Controller host. Verify the correct Red Hat RPM signing key is available on each host by listing the keys using the following command: rpm -qa gpg-pubkey* Manually inspect against publicly listed keys on https://www.redhat.com. If the keys do not match, this is a finding. Import the key using the following command: rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release Verify the signatures of installed RPMs necessary for Automation Controller: For RPM in $(rpm -qa); do rpm -K --nosignature ${RPM} | grep "NOT OK" && return 1; done ; echo "FAILED" If this outputs "FAILED", this is a finding.
Fix: F-60525r902293_fix
The administrator must reinstall all Automation Controller hosts and Automation Controller.
- RMF Control
- Severity
- M
- CCI
- CCI-004923
- Version
- APAS-AT-000093
- Vuln IDs
-
- V-256909
- Rule IDs
-
- SV-256909r986177_rule
Checks: C-60584r902295_chk
As a system administrator for each Automation Controller host, ensure the NTP client is configured to synchronize to an organizationally defined NTP server: chronyc sources If the Automation Controller host is not configured to use an organizationally defined NTP server, this is a finding. Ensure the NTP time synchronization is operational: chronyc activity | head -n 1 | grep "200 OK" >/dev/null || echo "FAILED" sudo systemctl is-active chrony > /dev/null|| echo "FAILED" If "FAILED" is displayed, this is a finding.
Fix: F-60526r902296_fix
As a system administrator, for each Automation Controller host, configure the NTP client to synchronize to an organizationally defined NTP server: vi /etc/chrony.conf Restart the Automation Controller host: $ shutdown -r
- RMF Control
- SC-13
- Severity
- M
- CCI
- CCI-002450
- Version
- APAS-AT-000110
- Vuln IDs
-
- V-256910
- Rule IDs
-
- SV-256910r961596_rule
Checks: C-60585r902298_chk
The Administrator must check the Automation Controller configuration. Download the latest DOD PKI CA certificate bundle: curl https://dl.dod.cyber.mil/wp-content/uploads/pki-pke/zip/certificates_pkcs7_DOD.zip > /root/certificates_pkcs7_DOD.zip && gunzip /root/certificates_pkcs7_DOD.zip Check the certificate at /etc/tower/tower.cert: openssl verify -verbose -x509_strict -CAfile /root/certificates_pkcs7_DOD.pem -CApath nosuchdir <(cat /etc/tower/tower.cert >><organizationally defined intermediate certificate file in PEM format>>>) If the >><organizationally defined intermediate certificate file in PEM format>>> does not exist, this is a finding. Check the certificate at /etc/tower/tower.key: openssl verify -CAfile /root/certificates_pkcs7_DOD.pem /etc/tower/tower.cert If the >><organizationally defined intermediate certificate file in PEM format>>> does not exist, this is a finding. Check the trusted ca certificate: openssl x509 -in /etc/pki/ca-trust/tls-ca-bundle.pam custom_ca_cert If the >><organizationally defined intermediate certificate file in PEM format>>> does not exist, this is a finding. If the >><organizationally defined intermediate certificate file in PEM format>>> does not exist, this is a finding.
Fix: F-60527r902299_fix
For each Automation Controller host, the administrator must: Download the >><organizationally defined intermediate certificate file in PEM format>>>; Generate the appropriate /etc/tower/tower.key files, certificates, and CSRs and have the organizationally defined PKI authority issue a certificate signed by the >><organizationally defined intermediate certificate file in PEM format>>>; Place the signed certificate in /etc/tower/tower.cert. Place the >><organizationally defined intermediate certificate file in PEM format>>> in /etc/pki/ca-trust/source/anchors. Execute: update-ca-trust extract && update-ca-trust; Download the latest DOD PKI CA certificate bundle: curl https://dl.dod.cyber.mil/wp-content/uploads/pki-pke/zip/certificates_pkcs7_DOD.zip > /root/certificates_pkcs7_DOD.z && gunzip /root/certificates_pkcs7_DOD.z > /etc/pki/ca-trust/source/anchors Install trusted root and intermediate CA certificates: update-ca-trust extract && update-ca-trust;
- RMF Control
- SI-2
- Severity
- M
- CCI
- CCI-002605
- Version
- APAS-AT-000122
- Vuln IDs
-
- V-256911
- Rule IDs
-
- SV-256911r961683_rule
Checks: C-60586r902301_chk
As a system administrator for each Automation Controller host inspect the status of the DNF Automatic timer: systemctl status dnf-automatic.timer If "Active: active" is not included in the output, this is a finding. Inspect the configuration of DNF Automatic: grep apply_updates /etc/dnf/automatic.conf If "apply_updates = yes" is not displayed, this is a finding.
Fix: F-60528r902302_fix
Install and enable DNF Automatic: dnf install dnf-automatic (run the install) systemctl enable --now dnf-automatic.timer Modify /etc/dnf/automatic.conf and set "apply_updates = yes".