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
Verify Nutanix AOS limits the number of concurrent sessions to "10" or less for all accounts and/or account types by issuing the following command: $ sudo grep "maxlogins" /etc/security/limits.conf If the line * hard maxlogins 10, is missing or set to a number more than 10, this is a finding.
Modify the file /etc/security/limits.conf and add the line * hard maxlogins 10 or set the number to less than or equal to 10.
Confirm Nutanix AOS is configured for autologout after 15 minutes of idle time. $ sudo grep -i tmout /etc/profile.d/* /etc/profile.d/os-security.sh:readonly TMOUT=900 If "TMOUT" is not set to "900" or less in a script located in the /etc/profile.d/ directory to enforce session termination after inactivity, this is a finding.
Configure Nutanix AOS for autologout of idle sessions by running the following commands. $ sudo salt-call state.sls security/CVM/shellCVM
Confirm Nutanix AOS is configured to auto disconnect remote session to prevent session hijacking. $ sudo grep -i clientalive /etc/ssh/sshd_config ClientAliveInterval 600 ClientAliveCountMax 0 If ClientAliveInterval is not "600" and ClientAliveCountMax is not "0", this is a finding.
Configure SSH to terminate remote sessions to prevent session hijacking by running the following command. $ sudo salt-call state.sls security/CVM/sshdCVM The SSH service will need to be restarted for the changes to take effect: $ sudo systemctl restart sshd
Confirm Nutanix AOS monitors remote access methods. $ sudo grep -i loglevel /etc/ssh/sshd_config If the LogLevel is not set to "VERBOSE", this is a finding.
Configure SSH to verbosely log connection attempts and failed logon attempts to the operating system by running the following command. $ sudo salt-call state.sls security/CVM/sshdCVM The SSH service will need to be restarted for the changes to take effect: $ sudo systemctl restart sshd
Confirm Nutanix AOS prohibits or restricts the use of remote access methods, using the iptables firewall service. $ sudo service iptables status iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled) Active: active (exited) since Mon 2021-08-02 15:02:12 CDT; 2 weeks 6 days ago Main PID: 1250 (code=exited, status=0/SUCCESS) CGroup: /system.slice/iptables.service If IPv6 is in use: $ sudo service ip6tables status ip6tables.service - IPv6 firewall with ip6tables Loaded: loaded (/usr/lib/systemd/system/ip6tables.service; enabled; vendor preset: disabled) Active: active (exited) since Mon 2021-08-02 15:02:12 CDT; 2 weeks 6 days ago Main PID: 1313 (code=exited, status=0/SUCCESS) CGroup: /system.slice/ip6tables.service If no iptables services are "Loaded" and "Active", this is a finding.
Configure the system to restrict the use of remote access methods by running the following command. $ sudo salt-call state.sls security/CVM/iptables/init
Inspect the "Ciphers" configuration with the following command: $ sudo grep -i ciphers /etc/ssh/sshd_config Ciphers aes256-ctr If any ciphers other than "aes256-ctr" are listed, the "Ciphers" keyword is missing, or the returned line is commented out, this is a finding.
Configure SSH to use only DoD approved ciphers by running the following command. $ sudo salt-call state.sls security/CVM/sshdCVM The SSH service will need to be restarted for the changes to take effect: $ sudo systemctl restart sshd
Nutanix AOS does not natively support temporary user accounts, named or otherwise. However, if temporary accounts are created, they must be configured to automatically terminate these types of accounts after a DoD-defined time period of 72 hours. Verify that temporary accounts have been provisioned with an expiration date of 72 hours. For every existing temporary account, run the following command to obtain its account expiration information. $ sudo chage -l system_account_name Verify each of these accounts has an expiration date set within 72 hours. If any temporary accounts have no expiration date set or do not expire within 72 hours, this is a finding.
Configure any temporary account(s) that have been created with an expiration date exceeding the DoD-defined time period of 72 hours by running the following command: sudo chage -E `date -d "+3 days" +%Y-%m-%d` system_account_name
Verify Nutanix AOS is configured to audit all account creations. Run the following command to verify account creation and modification is audited. $ sudo auditctl -l | grep "audit_account_changes" If the command does not return the following output, this is a finding. -w /etc/group -p wa -k audit_account_changes -w /etc/passwd -p wa -k audit_account_changes -w /etc/gshadow -p wa -k audit_account_changes -w /etc/shadow -p wa -k audit_account_changes -w /etc/security/opasswd -p wa -k audit_account_changes
Run the salt stack call to set the audit configuration to audit all account creation and modification. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS is configured to enforce approved authorizations for logical access to information and system resources. $ sudo grep -i password /boot/grub/grub.conf password [superusers-account] [password-hash] If the root password entry does not begin with "password", this is a finding. $ sudo grep -i execstart /usr/lib/systemd/system/rescue.service | grep -i sulogin ExecStart=-/bin/sh -c "/usr/sbin/sulogin; /usr/bin/systemctl --fail --no-block default" If "ExecStart" does not have "/usr/sbin/sulogin" as an option, this is a finding.
Configure the system to encrypt the boot password for root. 1. Use the following command as root to generate a grub sha512 password hash: python -c 'import crypt; print crypt.crypt("password", crypt.mksalt(crypt.METHOD_SHA512))' Replacing "password" with the password string desired for grub. 2. Edit the /boot/grub/grub.conf file as root and add the following line above the title line: 'password --encrypted [password-hash]', replacing [password-hash] with the hash result of the python command output.
Confirm Nutanix AOS enforces discretionary access control on symlinks and hardlinks. $ sudo sysctl fs.protected_symlinks fs.protected_symlinks = 1 If "fs.protected_symlinks" is not set to "1" or is missing, this is a finding. Check the status of the fs.protected_hardlinks kernel parameter. $ sudo sysctl fs.protected_hardlinks fs.protected_hardlinks = 1 If "fs.protected_hardlinks" is not set to "1" or is missing, this is a finding.
Configure Nutanix AOS to allow operating system admins to pass information to other operating system admins or users adding or modifying the following line(s) in the system configuration file /etc/syscrl.d/ fs.protected_symlinks = 1 fs.protected_hardlinks = 1 Load settings from all system configuration files with the following command: $ sudo sysctl --system
Confirm Nutanix AOS is configured to audit the misuse of privileged commands. $ sudo grep -iw execve /etc/audit/audit.rules -a always,exit -F arch=b32 -S execve -C uid!=euid -F euid=0 -k setuid -a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k setuid -a always,exit -F arch=b32 -S execve -C gid!=egid -F egid=0 -k setgid -a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k setgid If both the "b32" and "b64" audit rules for "SUID" files are not defined, this is a finding. If both the "b32" and "b64" audit rules for "SGID" files are not defined, this is a finding.
Configure Nutanix AOS to audit the misuse of privileged commands by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm that Nutanix AOS locks an account for a minimum of 15 minutes after three unsuccessful logon attempts within a period of 15 minutes with the following command: $ sudo grep pam_faillock.so /etc/pam.d/password-auth auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=900 root_unlock_time=900 fail_interval=900 auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=900 root_unlock_time=900 fail_interval=900 If the "deny" parameter is set to "0" or a value greater than "3" on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "even_deny_root" parameter is not set on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "fail_interval" parameter is set to "0" or is set to a value less than "900" on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "unlock_time" parameter is not set to "0", "never", or is set to a value less than "900" on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. Note: The maximum configurable value for "unlock_time" is "604800". If any line referencing the "pam_faillock.so" module is commented out, this is a finding. $ sudo grep pam_faillock.so /etc/pam.d/system-auth auth required pam_faillock.so preauth silent audit deny=3 even_deny_root fail_interval=900 unlock_time=900 auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root fail_interval=900 unlock_time=900 account required pam_faillock.so If the "deny" parameter is set to "0" or a value greater than "3" on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "even_deny_root" parameter is not set on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "fail_interval" parameter is set to "0" or is set to a value less than "900" on both "auth" lines with the "pam_faillock.so" module, or is missing from these lines, this is a finding. If the "unlock_time" parameter is not set to "0", "never", or is set to a value less than "900" on both "auth" lines with the "pam_faillock.so" module or is missing from these lines, this is a finding. Note: The maximum configurable value for "unlock_time" is "604800". If any line referencing the "pam_faillock.so" module is commented out, this is a finding.
Configure the pam.d modules to comply with the locking an account for a minimum of 15 minutes after three unsuccessful logon attempts within a period of 15 minutes with the following command: 1. Enable high-strength passwords: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true 2. After enabling the high-strength passwords, the system will process the salt stack to enable the DoD versions of the pam.d files. Recheck the Check Text for compliance. To run the salt command manually to enable the pam.d auth files, run the following command (high-strength passwords must be set to true): $ sudo salt-call state.sls security/CVM/pamCVM
Verify that the Standard Mandatory DoD Notice and Consent Banner is configured. Verify that SSH is configured to display the Standard Mandatory DoD Notice Consent Banner: $ sudo grep -i banner /etc/ssh/sshd_config banner /etc/issue If "banner" is not set or is commented out, this is a finding.
Configure the Standard Mandatory DoD Notice and Consent Banner. $ ncli cluster edit-cvm-security-params enable-banner=true'
Confirm Nutanix AOS is configured to use the Standard Mandatory DoD Notice and Consent Banner. $ sudo more /etc/issue The command should return 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 operating system does not display a graphical logon banner or the banner does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding. If the text in the "/etc/issue" file does not match the Standard Mandatory DoD Notice and Consent Banner, this is a finding.
Configure the Standard Mandatory DoD Notice and Consent Banner by running the following command. $ ncli cluster edit-cvm-security-params enable-banner=true
Confirm Nutanix AOS is configured to generate audit records on all successful and unsuccessful attempts to access, modify, or delete privileges, security objects, security levels, or categories of information (e.g., classification levels). $ sudo grep -w "postdrop" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w "postqueue" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w "semanage" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -w "setfiles" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-priv_change $ sudo grep -w "userhelper" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-passwd $ sudo grep -w "setsebool" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -w "unix_chkpwd" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w faillock /etc/audit/audit.rules -w /var/run/faillock/ -p wa -k logins $ sudo grep -w lastlog /etc/audit/audit.rules -w /var/log/lastlog -p wa -k logins If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS auditing is configured to generate audit records for all access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system. $ sudo yum list installed audit Installed Packages audit.x86_64 $ sudo grep -w chcon /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep ssh-agent /etc/audit/audit.rules -a always,exit -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w /usr/bin/mount /etc/audit/audit.rules -a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w /usr/bin/umount /etc/audit/audit.rules -a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep ssh-keysign /etc/audit/audit.rules -a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w pam_timestamp_check /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w crontab /etc/audit/audit.rules -a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w chsh /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVMI18:J21N18I18:J22I18:J22N18I18:J22I18:J23N18I18:J22I18:J24N18I18:J22I18:J25N18II18:J22
Confirm Nutanix AOS auditing is configured to generate audit records for all access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system. $ sudo grep -w lremovexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S lremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S lremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w removexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S removexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S removexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S removexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S removexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w lsetxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S lsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S lsetxattr-F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lsetxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fsetxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S fsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fsetxattr-F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fsetxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fremovexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S fremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w setxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S setxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S setxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S setxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S setxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS auditing is configured to generate audit records for all access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system. $ sudo grep -w "init_module" /etc/audit/audit.rules -a always,exit -F arch=b64 -S init_module -k audit_network_modifications_modules -a always,exit -F arch=b32 -S init_module -k audit_network_modifications_modules -a always,exit -F arch=b64 -S init_module -S delete_module -k modules -a always,exit -F arch=b32 -S init_module -S delete_module -k modules $ sudo grep -w "finit_module" /etc/audit/audit.rules -a always,exit -F arch=b32 -S finit_module -k module-change -a always,exit -F arch=b64 -S finit_module -k module-change $ sudo grep -w "delete_module" /etc/audit/audit.rules -a always,exit -F arch=b64 -S delete_module -k audit_network_modifications_modules -a always,exit -F arch=b32 -S delete_module -k audit_network_modifications_modules -a always,exit -F arch=b64 -S delete_module -k modules -a always,exit -F arch=b32 -S delete_module -k modules If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS auditing is configured to generate audit records for all access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system. $ sudo grep -w "\-S mount" /etc/audit/audit.rules -a always,exit -F arch=b64 -S mount -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S mount -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w "rename" /etc/audit/audit.rules -a always,exit -F arch=b64 -S rename -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S rename -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rename -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rename -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w "renameat" /etc/audit/audit.rules -a always,exit -F arch=b64 -S renameat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S renameat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S renameat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S renameat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w "rmdir" /etc/audit/audit.rules -a always,exit -F arch=b64 -S rmdir -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S rmdir -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rmdir -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rmdir -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w "unlink" /etc/audit/audit.rules -a always,exit -F arch=b64 -S unlink -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S unlink -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlink -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlink -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w "unlinkat" /etc/audit/audit.rules -a always,exit -F arch=b64 -S unlinkat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S unlinkat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlinkat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlinkat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w chown /etc/audit/audit.rules -a always,exit -F arch=b64 -S chown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w chmod /etc/audit/audit.rules -a always,exit -F arch=b64 -S chmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w lchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchownat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchmodat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchmodat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchmodat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmodat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmodat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchmod /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS auditing is configured to generate audit records for all access actions, such as successful and unsuccessful logon attempts, privileged activities or other system-level access, starting and ending time for user access to the system, concurrent logons from different workstations, successful and unsuccessful accesses to objects, all program initiations, and all direct access to the information system. $ sudo grep -iw truncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S truncate -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S truncate -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access $ sudo grep -iw openat /etc/audit/audit.rules -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S openat-F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S openat -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S openat -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access $ sudo grep -iw open /etc/audit/audit.rules -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S open-F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S open -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S open -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access $ sudo grep -iw open_by_handle_at /etc/audit/audit.rules -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S open_by_handle_at-F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S open_by_handle_at -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S open_by_handle_at -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access $ sudo grep -iw ftruncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S ftruncate -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S ftruncate -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access $ sudo grep -iw creat /etc/audit/audit.rules -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b64 -S creat -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid=0 -k access -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid=0 -k access -a always,exit -F arch=b32 -S creat -F auid>=1000 -F auid!=4294967295 -k access -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS auditing is configured to generate audit records for all account creations, modifications, disabling, and terminations. $ sudo grep /etc/shadow /etc/audit/audit.rules -w /etc/shadow -p wa -k audit_account_changes $ sudo grep /etc/security/opasswd /etc/audit/audit.rules -w /etc/security/opasswd -p wa -k audit_account_changes $ sudo grep /etc/passwd /etc/audit/audit.rules -w /etc/passwd -p wa -k audit_account_changes $ sudo grep /etc/gshadow /etc/audit/audit.rules -w /etc/gshadow -p wa -k audit_account_changes $ sudo grep /etc/group /etc/audit/audit.rules -w /etc/group -p wa -k audit_account_changes $ sudo grep /etc/sudoers /etc/audit/audit.rules -w /etc/sudoers -p wa -k actions $ sudo grep /etc/sudoers.d/ /etc/audit/audit.rules -w /etc/sudoers.d/ -p wa -k actions $ sudo grep -w /usr/bin/su /etc/audit/audit.rules -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w sudo /etc/audit/audit.rules -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w gpasswd /etc/audit/audit.rules -a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w passwd /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-passwd $ sudo grep -w chage /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w newgrp /etc/audit/audit.rules -a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS must allow only the Information System Security Manager (ISSM) (or individuals or roles appointed by the ISSM) to select which auditable events are to be audited. Note: Nutanix AOS audit facility is locked down so that only root has access to browse below the /etc/audit/ directory. $ sudo su - # ls -al /etc/audit/rules.d/*.rules -rw-r----- 1 root root 1280 Feb 16 17:09 audit.rules $ sudo su - sudo stat -c "%a %n" /etc/audit/auditd.conf 640 /etc/audit/auditd.conf If the files in the "/etc/audit/rules.d/" directory or the "/etc/audit/auditd.conf" file have a mode more permissive than "0640", this is a finding.
Configure the files in directory "/etc/audit/rules.d/" and the "/etc/audit/auditd.conf" file to have a mode of "0640" with the following commands: $ sudo su - # chmod 0640 /etc/audit/rules.d/audit.rules # chmod 0640 /etc/audit/rules.d/[customrulesfile].rules # chmod 0640 /etc/audit/auditd.conf
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access privileges occur. $ sudo grep -iw chown /etc/audit/audit.rules -a always,exit -F arch=b64 -S chown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw fchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a exit,never -F arch=b64 -S openat -S open -S fchown -F success=0 -F uid=1000 -F exit=-13. -a exit,never -F arch=b64 -S fchown -F success=0 -F uid=0 -F exit=-13. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw lchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw fchownat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access privileges occur. $ sudo grep -iw creat /etc/audit/audit.rules -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access privileges occur. $ sudo grep -iw open /etc/audit/audit.rules -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw openat /etc/audit/audit.rules -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw open_by_handle_at /etc/audit/audit.rules -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access privileges occur. $ sudo grep -iw truncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw ftruncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access categories of information occur. $ sudo grep -iw creat /etc/audit/audit.rules -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. $ sudo grep -iw open /etc/audit/audit.rules -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw openat /etc/audit/audit.rules -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw open_by_handle_at /etc/audit/audit.rules -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. $ sudo grep -iw truncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw ftruncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access categories of information occur. $ sudo grep -iw chown /etc/audit/audit.rules -a always,exit -F arch=b64 -S chown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. $ sudo grep -iw fchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a exit,never -F arch=b64 -S openat -S open -S fchown -F success=0 -F uid=1000 -F exit=-13. -a exit,never -F arch=b64 -S fchown -F success=0 -F uid=0 -F exit=-13. $ sudo grep -iw lchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. $ sudo grep -iw fchownat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access categories of information occur. $ sudo grep -w chmod /etc/audit/audit.rules -a always,exit -F arch=b64 -S chmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S chmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchmod /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmod -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmod -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fchmodat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchmodat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fchmodat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmodat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fchmodat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access categories of information occur. $ sudo grep -w setxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S setxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S setxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S setxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S setxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fsetxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S fsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fsetxattr-F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fsetxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w lsetxattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S lsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S lsetxattr-F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lsetxattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lsetxattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w removexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S removexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S removexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S removexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S removexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w fremovexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S fremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -w lremovexattr /etc/audit/audit.rules -a always,exit -F arch=b64 -S lremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S lremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lremovexattr -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S lremovexattr -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access categories of information occur. $ sudo grep -iw creat /etc/audit/audit.rules -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. $ sudo grep -iw open /etc/audit/audit.rules -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw openat /etc/audit/audit.rules -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S openat -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw open_by_handle_at /etc/audit/audit.rules -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. $ sudo grep -iw truncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S truncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw ftruncate /etc/audit/audit.rules -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b64 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid=0 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access. -a always,exit -F arch=b32 -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records when successful/unsuccessful attempts to modify privileged objects occur. $ sudo grep /etc/sudoers /etc/audit/audit.rules -w /etc/sudoers -p wa -k actions $ sudo grep /etc/sudoers.d/ /etc/audit/audit.rules -w /etc/sudoers.d/ -p wa -k actions $ sudo grep -w /usr/bin/su /etc/audit/audit.rules -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w sudo /etc/audit/audit.rules -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w newgrp /etc/audit/audit.rules -a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -i /usr/bin/chsh /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged If the privileged activities access listed do not return any output, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records for successful/unsuccessful attempts to modify security objects occur. $ sudo grep -i /usr/sbin/semanage /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/sbin/setsebool /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/bin/chcon /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -iw /usr/sbin/setfiles /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-priv_change If the commands does not return any output, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records for successful/unsuccessful attempts to modify categories of information. $ sudo grep -i /usr/sbin/semanage /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/sbin/setsebool /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/bin/chcon /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -iw /usr/sbin/setfiles /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-priv_change If the commands does not return any output, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records when successful/unsuccessful attempts to delete security objects occur. $ sudo grep -iw rename /etc/audit/audit.rules -a exit,never -F arch=b64 -S rename -F success=1 -F uid=1000 -F exit=0 -a exit,never -F arch=b64 -S rename -F success=0 -F uid=1000 -F exit=-2 -a always,exit -F arch=b64 -S rename -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S rename -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rename -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rename -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -iw renameat /etc/audit/audit.rules -a always,exit -F arch=b64 -S renameat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S renameat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S renameat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S renameat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete $ sudo grep -iw rmdir /etc/audit/audit.rules -a always,exit -F arch=b64 -S rmdir -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S rmdir -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rmdir -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S rmdir -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete grep -iw unlink /etc/audit/audit.rules -a exit,never -F arch=b64 -S unlink -F success=1 -F uid=1000 -F exit=0 -a exit,never -F arch=b64 -S unlink -F success=0 -F uid=1000 -F exit=-2 -a always,exit -F arch=b64 -S unlink -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S unlink -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlink -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlink -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete grep -iw unlinkat /etc/audit/audit.rules -a always,exit -F arch=b64 -S unlinkat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S unlinkat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlinkat -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b32 -S unlinkat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete If both the "b32" and "b64" audit rules are not defined for the syscalls listed, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records when concurrent logons to the same account occur. $ sudo grep -i /var/run/faillock /etc/audit/audit.rules -w /var/run/faillock -p wa -k logins $ sudo grep -i /var/log/lastlog /etc/audit/audit.rules -w /var/log/lastlog -p wa -k logins If the commands listed do not return any output, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records for privileged activities or other system-level access. $ sudo grep /etc/shadow /etc/audit/audit.rules -w /etc/shadow -p wa -k audit_account_changes $ sudo grep /etc/security/opasswd /etc/audit/audit.rules -w /etc/security/opasswd -p wa -k audit_account_changes $ sudo grep /etc/passwd /etc/audit/audit.rules -w /etc/passwd -p wa -k audit_account_changes $ sudo grep /etc/gshadow /etc/audit/audit.rules -w /etc/gshadow -p wa -k audit_account_changes $ sudo grep /etc/group /etc/audit/audit.rules -w /etc/group -p wa -k audit_account_changes $ sudo grep /etc/sudoers /etc/audit/audit.rules -w /etc/sudoers -p wa -k actions $ sudo grep /etc/sudoers.d/ /etc/audit/audit.rules -w /etc/sudoers.d/ -p wa -k actions $ sudo grep -w /usr/bin/su /etc/audit/audit.rules -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w sudo /etc/audit/audit.rules -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w gpasswd /etc/audit/audit.rules -a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w passwd /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-passwd If the privileged activities access listed do not return any output, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records for privileged activities or other system-level access. $ sudo grep -w chage /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w newgrp /etc/audit/audit.rules -a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -i /usr/bin/chsh /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w "userhelper" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/userhelper -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-passwd $ sudo grep -w "unix_chkpwd" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged $ sudo grep -w faillock /etc/audit/audit.rules -w /var/run/faillock/ -p wa -k logins $ sudo grep -w lastlog /etc/audit/audit.rules -w /var/log/lastlog -p wa -k logins $ sudo grep -iw "/usr/sbin/pam_timestamp_check" /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged If the privileged activities access listed do not return any output, this is a finding.
Configure the audit rules by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records for all kernel module load, unload, restart actions, and initiations. $ sudo grep -iw create_module /etc/audit/audit.rules -a always,exit -F arch=b32 -S create_module -k module-change -a always,exit -F arch=b64 -S create_module -k module-change $ sudo grep -iw init_module /etc/audit/audit.rules -a always,exit -F arch=b64 -S init_module -S delete_module -k modules -a always,exit -F arch=b32 -S init_module -S delete_module -k modules $ sudo grep -iw finit_module /etc/audit/audit.rules -a always,exit -F arch=b32 -S finit_module -k module-change -a always,exit -F arch=b64 -S finit_module -k module-change $ sudo grep -iw delete_module /etc/audit/audit.rules -a always,exit -F arch=b64 -S init_module -S delete_module -k modules -a always,exit -F arch=b32 -S init_module -S delete_module -k modules If both the "b32" and "b64" audit rules are not defined for the module(s) listed syscall, this is a finding. $ sudo grep -iw kmod /etc/audit/audit.rules -w /usr/bin/kmod -p x -F auid!=unset -k module-change If the command does not return any output, this is a finding. $ sudo cat /boot/grub/grub.conf | grep audit kernel /boot/vmlinuz-3.10.0-1160.24.1.el7.nutanix.20210425.cvm.x86_64 ro root=UUID=71a1fe8c-812f-4403-80ed-894f554b061c rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us audit=1 audit_backlog_limit=8192 nousb fips=1 nomodeset biosdevname=0 net.ifnames=0 scsi_mod.use_blk_mq=y panic=30 console=ttyS0,115200n8 console=tty0 clocksource=tsc kvm_nopvspin=1 xen_nopvspin=1 hv_netvsc.ring_size=512 mds=off mitigations=off If the command(s) does not return the appropriate response line, as indicated above, or if the line(s) is commented out, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records when concurrent logons to the same account occur. $ sudo grep -i /var/run/faillock /etc/audit/audit.rules -w /var/run/faillock -p wa -k logins $ sudo grep -i /var/log/lastlog /etc/audit/audit.rules -w /var/log/lastlog -p wa -k logins If the commands listed do not return any output, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS generates audit records on all successful/unsuccessful attempts to access privileges occur. $ sudo grep -iw chown /etc/audit/audit.rules -a always,exit -F arch=b64 -S chown -F auid=0 -k audit_time_perm_mod_export_delete -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S chown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw fchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a exit,never -F arch=b64 -S openat -S open -S fchown -F success=0 -F uid=1000 -F exit=-13. -a exit,never -F arch=b64 -S fchown -F success=0 -F uid=0 -F exit=-13. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw lchown /etc/audit/audit.rules -a always,exit -F arch=b64 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S lchown -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding. $ sudo grep -iw fchownat /etc/audit/audit.rules -a always,exit -F arch=b64 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b64 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid=0 -k audit_time_perm_mod_export_delete. -a always,exit -F arch=b32 -S fchownat -F auid>=1000 -F auid!=4294967295 -k audit_time_perm_mod_export_delete. If the output does not contain all of the above rules, this is a finding. If both the "b32" and "b64" audit rules are not defined for the listed syscall(s), this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS is configured with the ausearch tool. The ausearch tool is a feature of the audit rpm. $ sudo yum list installed audit Installed Packages audit.x86_64 If Installed Packages does not list the audit.x86_64 or No matching Packages to list is returned, this is a finding.
Configure the system to generate audit records for all direct access to the information system by installing the audit package. $ sudo yum install audit
Confirm Nutanix AOS generates audit records for all account creation, modification, disabling, and termination. $ sudo grep /etc/passwd /etc/audit/audit.rules -w /etc/passwd -p wa -k audit_account_changes If the command does not return a line, or the line is commented out, this is a finding.
Configure Nutanix AOS to generate audit records for all account creations, modifications, disabling, and terminations by running the following command. $ sudo salt-call state.sls security/CVM/auditCVM
Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Configure the audit service to be active and start automatically with the system at startup. The Audit service is protected and restricted to allow access or modifications only from the root account. $ sudo su - # systemctl start auditd.service
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo auditctl -l | grep -iw /usr/bin/su /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo auditctl -l | grep -iw /usr/bin/sudo /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -i "/etc/sudoers" /etc/audit/audit.rules If the output is not -w /etc/sudoers -p wa -k actions, this is a finding. $ sudo grep -i "/etc/sudoers.d/" /etc/audit/audit.rules If the output is not -w /etc/sudoers.d/ -p wa -k actions, this is a finding. $ sudo grep -i /usr/bin/newgrp /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -i /usr/bin/chsh /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify the operating system produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Enable the auditd service to run automatically. $ sudo systemctl enable auditd
Verify the operating system produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Enable the auditd service to run automatically. $ sudo systemctl enable auditd
Verify the operating system produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Enable the auditd service to run automatically. $ sudo systemctl enable auditd
Verify the operating system produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Enable the auditd service to run automatically. $ sudo systemctl enable auditd
Confirm Nutanix AOS produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Configure the audit service to be active and start automatically with the system at startup. The Audit service is protected and restricted to allow access or modifications only from the root account. $ sudo su - # systemctl start auditd.service
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -i /usr/bin/passwd /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/passwd -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -iw /usr/sbin/unix_chkpwd /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/sbin/unix_chkpwd -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -i /usr/bin/gpasswd /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/gpasswd -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -i /usr/bin/chage /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/chage -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -i /usr/sbin/userhelper /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/sbin/userhelper -F auid>=1000 -F auid!=4294967295 -k privileged-passwd, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -iw "mount" /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -iw "/usr/bin/umount" /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -iw /usr/sbin/postdrop /etc/audit/audit.rules If the output is not clear-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding. $ sudo grep -iw /usr/sbin/postqueue /etc/audit/audit.rules If the output in not, -a always,exit -F path=/usr/sbin/postqueue -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -iw /usr/libexec/openssh/ssh-keysign /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS generates audit records when successful/unsuccessful attempts to use the following commands occur. Check that the following system call is being audited by performing the following command to check the file system rules in "/etc/audit/audit.rules": $ sudo grep -iw /usr/bin/crontab /etc/audit/audit.rules If the output is not -a always,exit -F path=/usr/bin/crontab -F auid>=1000 -F auid!=4294967295 -k privileged, this is a finding.
Configure the audit rules by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Verify Nutanix AOS produces audit records containing information to establish when (date and time) the events occurred. Determine if auditing is active by issuing the following command: $ sudo systemctl is-active auditd.service active If the "auditd" status is not active, this is a finding.
Enable the auditd service to run automatically. $ sudo systemctl enable auditd
Confirm Nutanix AOS preconfigures storage for one week's worth of audit records, when audit records are not immediately sent to a central audit record facility. $ sudo cat /boot/grub/grub.conf | grep audit_backlog_limit audit_backlog_limit=8192 If the "audit_backlog_limit" entry does not equal "8192", is missing, or the line is commented out, this is a finding.
As root, modify the /boot/grub/grub.conf file to include the following line: audit_backlog_limit=8192
Confirm Nutanix AOS is configured to offload the audit records to a site-specific syslog server. $ sudo grep @ /etc/rsyslog.d/rsyslog-nutanix.conf local0.*; @remote-log-host:514 If there are no lines in the "/etc/rsyslog.d/rsyslog-nutanix.conf" files that contain the "@" or "@@" symbol(s), and the lines with the correct symbol(s) to send output to another system do not cover all "rsyslog" output, ask the System Administrator to indicate how the audit logs are offloaded to a different system or media. If the lines are commented out or there is no evidence that the audit logs are being sent to another system, this is a finding.
Configure AOS to offload audit records to site specific syslog server by running the following command. ncli rsyslog-config add-server name=[alias_of_central_host] ip-address=[IP_of_central_host] port=[port_of_central_host] network-protocol=tcp|udp|relp relp-enabled=yes|no; ncli rsyslog-config add-module module-name=syslog_module level=info server-name=[alias_of_central_host]
Confirm the audit configuration regarding how auditing processing failures are handled in Nutanix AOS. $ sudo auditctl -s | grep -i "fail" If the output is not failure 1, this is a finding.
Configure the audit alert setting by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS is configured with the ausearch tool. The ausearch tool is a feature of the audit rpm. $ sudo yum list installed audit Installed Packages audit.x86_64 If Installed Packages does not list the audit.x86_64 or No matching Packages to list is returned, this is a finding.
Configure the system to provide on-demand (i.e., ad hoc ) audit report generation by installing the correct audit.x86_64 rpm. $ sudo yum install audit
Confirm Nutanix AOS is running the NTP service. # sudo ps -ef | grep ntp ntp 7447 1 0 Aug17 ? 00:00:05 /usr/sbin/ntpd -u ntp:ntp -g If the NTP service is not running, this is a finding. Next Check the ntp.conf file for the "maxpoll" option setting. $ sudo grep maxpoll /etc/ntp.conf server #.#.#.# maxpoll 10 If the option is set to "17" or is not set, this is a finding.
Log in to the Nutanix CVM. Run the following command to add a list of DoD Approved NTP servers: $ ncli cluster add-to-ntp-servers servers=IP_1,IP_2,IP_3
Verify Nutanix AOS audit log permissions are "0600" or less permissive. $ sudo stat -c "%a %n" /home/log/audit/audit.log 600 /home/log/audit/audit.log If the audit.log file(s) are more permissive than "0600", this is a finding.
Run the salt stack call to set the audit log file permissions to "600". $ sudo salt-call state.sls security/CVM/auditCVM
Verify the audit tools are protected from unauthorized access, deletion, or modification by checking the permissive mode. Check the octal permission of each audit tool by running the following command: $ sudo stat -c "%a %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules 750 /sbin/auditctl 750 /sbin/aureport 750 /sbin/ausearch 750 /sbin/autrace 750 /sbin/auditd 755 /sbin/rsyslogd 755 /sbin/augenrules If any of the audit tools has a mode more permissive than "0755", this is a finding.
Configure the audit tools to be protected from unauthorized access by setting the correct permissive mode using the following command: $ sudo chmod 0755 [audit_tool] Replace "[audit_tool]" with the audit tool that does not have the correct permissive mode.
Verify the audit tools are owned by "root" to prevent any unauthorized access, deletion, or modification. Check the owner of each audit tool by running the following commands: $ sudo stat -c "%U %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules [sudo] password for admin: root /sbin/auditctl root /sbin/aureport root /sbin/ausearch root /sbin/autrace root /sbin/auditd root /sbin/rsyslogd root /sbin/augenrules If any of the audit tools are not owned by "root", this is a finding.
Configure the audit tools to be owned by "root", by running the following command: $ sudo chown root [audit_tool] Replace "[audit_tool]" with each audit tool not owned by "root".
Verify the audit tools are group-owned by "root" to prevent any unauthorized access, deletion, or modification. Check the owner of each audit tool by running the following commands: $ sudo stat -c "%G %n" /sbin/auditctl /sbin/aureport /sbin/ausearch /sbin/autrace /sbin/auditd /sbin/rsyslogd /sbin/augenrules [sudo] password for admin: root /sbin/auditctl root /sbin/aureport root /sbin/ausearch root /sbin/autrace root /sbin/auditd root /sbin/rsyslogd root /sbin/augenrules If any of the audit tools are not group-owned by "root", this is a finding.
Configure the audit tools to be group-owned by "root", by running the following command: $ sudo chgrp root [audit_tool] Replace "[audit_tool]" with each audit tool not group-owned by "root".
Verify that Advanced Intrusion Detection Environment (AIDE) is properly configured to use cryptographic mechanisms to protect the integrity of audit tools. If AIDE is not installed, ask the System Administrator how file integrity checks are performed on the system. Verify the location of the seven auditing tools that require cryptographic protection with the following command: (auditctl, auditd, ausearch, aureport, autrace, augenrules, rsyslogd) $ sudo ls -al /usr/sbin/ | egrep '(audit|au|rsys)' If the seven identified audit tools are not listed, this is a finding. Check the aide.conf file for the configured rule set. $ sudo grep -i "FIPSR =" /etc/aide.conf FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha512 If the FIPSR rule set is commented out or does not display, this is a finding. Check to ensure that the root directory of the seven audit tools is configured to be monitored and that the proper rule set is applied to that directory (/usr/). $ sudo grep -i /usr /etc/aide.conf /usr FIPSR if the /usr directory is not listed or has a preceding '=' or '!' sign or the Rule Set is not set to FIPSR, this is a finding.
Configure AIDE on Nutanix AOS by running the following command: $ ncli cluster edit-cvm-security-params enable-aide=true
Confirm that Nutanix AOS has been set to have the Advanced Intrusion Detection Environment (AIDE) installed and enabled. $ sudo yum list installed aide Installed Packages aide.x86_64 If the aide_x86_64 package is not installed, this is a finding. Check for the presence of a cron job running daily or weekly on the system that executes AIDE daily to scan for changes to the system baseline. Check the cron directories for a script file controlling the execution of the file integrity application. For example, if AIDE is installed on the system, use the following command: $ sudo ls -al /etc/cron.* | grep aide If the file integrity application does not exist, or a script file controlling the execution of the file integrity application does not exist, this is a finding.
Configure AIDE on Nutanix AOS by running the following command: $ ncli cluster edit-cvm-security-params enable-aide=true
Confirm Nutanix AOS enforces access restrictions. Check that the SSH daemon does not permit GSSAPI authentication with the following command: $ sudo grep -i gssapiauth /etc/ssh/sshd_config GSSAPIAuthentication no If the "GSSAPIAuthentication" keyword is missing, is set to "yes" and is not documented with the Information System Security Officer (ISSO), or the returned line is commented out, this is a finding.
Configure Nutanix AOS to enforce access restrictions by running the following command: $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm Nutanix AOS enforces access restrictions. Check that the SSH daemon does not permit Kerberos to authenticate passwords with the following command: $ sudo grep -i kerberosauth /etc/ssh/sshd_config KerberosAuthentication no If the "KerberosAuthentication" keyword is missing, or is set to "yes" and is not documented with the Information System Security Officer (ISSO), or the returned line is commented out, this is a finding.
Configure Nutanix AOS to enforce access restrictions by running the following command. $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm that Nutanix AOS is configured to require gpgcheck and localpkg_gpgcheck for all installation packages provided by the vendor. $ sudo grep gpgcheck /etc/yum.conf gpgcheck=1 $ sudo grep localpkg_gpgcheck /etc/yum.conf localpkg_gpgcheck=1 $ sudo grep repo_gpgcheck /etc/yum.conf repo_gpgcheck=1 If any of the three gpg checks output is not set to "1", this is a finding.
Configure Nutanix AOS to require gpgcheck validation checks on all required yum repo configurations by running the following command: $ sudo salt-call state.sls security/CVM/yumCVM
Confirm Nutanix AOS prevents the use of dictionary words for passwords. Check the /etc/pam.d/password-auth file for pam_pwquality.so $ sudo grep pwquality.so /etc/pam.d/password-auth password requisite pam_pwquality.so try_first_pass local_users_only enforce_for_root retry=3 authtok_type= If the output does not contain "pam_pwquality.so" with the option of "required" or "requisite", this is a finding.
Configure Nutanix AOS to enforce the use of pam_pwquality.so by running the following command. $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS enforces a delay of at least four seconds between console logon prompts following a failed logon attempt. $ sudo grep -i fail_delay /etc/login.defs FAIL_DELAY 4 If the value of "FAIL_DELAY" is not set to "4" or greater, or the line is commented out, this is a finding.
Configure Nutanix AOS to enforce a delay between logon prompts following a failed logon attempt by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Verify that the SCMA framework is set to run daily: $ ncli cluster get-cvm-security-config | egrep 'Schedule' Schedule : DAILY If "Schedule" is not set to "DAILY", this is a finding.
Set the SCMA framework to check the baseline daily: $ sudo ncli cluster edit-cvm-security-params schedule=daily
Confirm Nutanix AOS defines default permissions for all authenticated users in such a way that the user can only read and modify their own files. $ sudo grep -i umask /etc/login.defs UMASK 077 If the value for the "UMASK" parameter is not "077", or the "UMASK" parameter is missing or is commented out, this is a finding.
Configure Nutanix AOS default permissions UMASK to 077 by running the following command. salt-call state.sls security/CVM/shellCVM
Confirm Nutanix AOS does not allow users to override environment variables to the SSH daemon. Check for the value of the "PermitUserEnvironment" keyword with the following command: $ sudo grep -i permituserenvironment /etc/ssh/sshd_config PermitUserEnvironment no If the "PermitUserEnvironment" keyword is not set to "no", is missing, or is commented out, this is a finding. $ sudo grep -i hostbasedauthentication /etc/ssh/sshd_config HostbasedAuthentication no If the "HostbasedAuthentication" keyword is not set to "no", is missing, or is commented out, this is a finding.
Configure Nutanix AOS to not allow users to override environment variables to the SSH daemon by running the following command. $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm Nutanix AOS has assigned home directory of all local interactive users has a mode of "0750" or less permissive. Step 1. Determine interactive users $ sudo cat $(awk -F: '($3>=1000)&&($7 !~ /nologin/){print $6}' /etc/passwd) cat: /home/nutanix: Is a directory cat: /home/admin: Is a directory Step 2. Determine permissions on interactive users home directories. $ sudo stat -c "%a %n" /home/admin 750 /home/admin $ sudo stat -c "%a %n" /home/nutanix 750 /home/nutanix If home directories referenced in "/etc/passwd" do not have a mode of "0750" or less permissive, this is a finding.
Configure any interactive users home directory to have a mode of "0750" or less by running the command: $ sudo chmod 0750 [path to interactive users home directory]
Confirm Nutanix AOS prohibits or restricts the use of remote access methods, using the iptables firewall service. $ sudo service iptables status iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled) Active: active (exited) since Mon 2021-08-02 15:02:12 CDT; 2 weeks 6 days ago Main PID: 1250 (code=exited, status=0/SUCCESS) CGroup: /system.slice/iptables.service If IPv6 is in use: $ sudo service ip6tables status ip6tables.service - IPv6 firewall with ip6tables Loaded: loaded (/usr/lib/systemd/system/ip6tables.service; enabled; vendor preset: disabled) Active: active (exited) since Mon 2021-08-02 15:02:12 CDT; 2 weeks 6 days ago Main PID: 1313 (code=exited, status=0/SUCCESS) CGroup: /system.slice/ip6tables.service If no iptables services are "Loaded" and "Active", this is a finding.
Configure the system to restrict the use of remote access methods by running the following command. $ sudo salt-call state.sls security/CVM/iptables/init
Confirm Nutanix AOS that "nodev","nosuid", and "noexec" options are configured for /dev/shm: $ cat /etc/fstab | grep /dev/shm tmpfs /dev/shm tmpfs defaults,size=512m,noexec,rw,seclabel,nosuid,nodev 0 0 If /dev/shm is mounted without secure options "nodev", "nosuid", and "noexec", this is a finding.
Configure Nutanix AOS so that /dev/shm is mounted with the "nodev", "nosuid", and "noexec" options by adding /modifying the /etc/fstab with the following line: tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
Confirm Nutanix AOS is configured to disable nonessential capabilities. $ sudo yum list installed rsh-server If the rsh-server package is installed, this is a finding.
Remove any finding identified by running the correlating command: $ sudo yum remove rsh-server
Confirm Nutanix AOS is configured to disable nonessential capabilities. $ sudo yum list installed ypserv If the "ypserv" package is installed, this is a finding.
Remove any finding identified by running the correlating command: $ sudo yum remove ypserv
Confirm Nutanix AOS is configured to disable nonessential capabilities. $ sudo yum list installed telnet-server If the telnet-server package is installed, this is a finding.
Remove any finding identified by running the correlating command: $ sudo yum remove telnet-server
Confirm Nutanix AOS prohibits or restricts the use of functions, ports, protocols, and/or services, as defined in the PPSM CAL and vulnerability assessments. $ sudo iptables -S If IPv6 is in use: $ sudo ip6tables -S Review the site or program PPSM CAL; verify the services allowed by the firewall match the PPSM CLSA. If there are additional ports, protocols, or services that are not in the PPSM CLSA, or there are ports, protocols, or services that are prohibited by the PPSM Category Assurance List (CAL), this is a finding.
Configure the system to restrict the use of functions, ports, protocols, and/or services as defined in the PPSM CAL and vulnerability assessments by running the following command: $ sudo salt-call state.sls security/CVM/iptables/init
Confirm Nutanix AOS is configured as shown for reauthentication in the sudoers file. $ grep -i nopasswd /etc/sudoers /etc/sudoers.d/* If any occurrences of "NOPASSWD" are returned from the command and have not been documented with the Information System Security Officer (ISSO) as an organizationally defined administrative group utilizing MFA, this is a finding.
If any occurrences of "NOPASSWD" found are not documented with the ISSO need to be removed. Configure Nutanix AOS to meet this requirement run the following command: salt-call state.sls security/CVM/manualCVM
Confirm Nutanix AOS has SSH loaded and active. $ sudo systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Tue 2015-11-17 15:17:22 EST; 4 weeks 0 days ago Main PID: 1348 (sshd) CGroup: /system.slice/sshd.service 1053 /usr/sbin/sshd -D If "sshd" does not show a status of "active" and "running", this is a finding. If the "SSH server" package is not installed, this is a finding.
Configure SSH on Nutanix AOS by running the following command: $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm Nutanix AOS is configured to disable USB mass storage devices. $ sudo grep -r usb-storage /etc/modprobe.d/* | grep -i "/bin/true" | grep -v "^#" install usb-storage /bin/true If the command does not return any output, or the line is commented out, and use of USB Storage is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding. Verify the operating system disables the ability to use USB mass storage devices. Determine if USB mass storage is disabled with the following command: $ sudo grep usb-storage /etc/modprobe.d/* | grep -i "blacklist" | grep -v "^#" blacklist usb-storage If the command does not return any output or the output is not "blacklist usb-storage", and use of USB storage devices is not documented with the Information System Security Officer (ISSO) as an operational requirement, this is a finding.
Configure the system to disable USB mass storage and blacklist from executing by running the following command: $ sudo salt-call state.sls security/CVM/modprobeCVM
Confirm Nutanix AOS is configured to disable user accounts after the password expires. $ sudo grep -i inactive /etc/default/useradd INACTIVE=0 If the value is not set to "0", is commented out, or is not defined, this is a finding.
Configure the system to disable inactive user accounts after the password expires by running the following command. $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to require complex passwords. Note: The value to require a number of uppercase characters to be set is expressed as a negative number in "/etc/security/pwquality.conf". Check the value for "ucredit" in "/etc/security/pwquality.conf" with the following command. $ sudo grep ucredit /etc/security/pwquality.conf ucredit = -1 If the value of "ucredit" is not set to a negative value, this is a finding.
Configure the complex password requirements by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to require complex passwords. Note: The value to require a number of lowercase characters to be set is expressed as a negative number in "/etc/security/pwquality.conf". Check the value for "lcredit" in "/etc/security/pwquality.conf" with the following command: $ sudo grep lcredit /etc/security/pwquality.conf lcredit = -1 If the value of "lcredit" is not set to a negative value, this is a finding.
Configure the complex password requirements by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to require complex passwords. Note: The value to require a number of numeric characters to be set is expressed as a negative number in "/etc/security/pwquality.conf". Check the value for "dcredit" in "/etc/security/pwquality.conf" with the following command: $ sudo grep dcredit /etc/security/pwquality.conf dcredit = -1 If the value of "dcredit" is not set to a negative value, this is a finding.
Configure the complex password requirements by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to enforce a minimum 15 character password length. $ sudo grep minlen /etc/security/pwquality.conf minlen = 15 If the command does not return a "minlen" value of "15" or greater, this is a finding.
Configure the password minimum length requirement of 15 characters by running the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Confirm Nutanix AOS enforces password complexity by requiring that at least one special character be used. Note: The value to require a number of special characters to be set is expressed as a negative number in "/etc/security/pwquality.conf". Check the value for "ocredit" in "/etc/security/pwquality.conf" with the following command: $ sudo grep ocredit /etc/security/pwquality.conf ocredit=-1 If the value of "ocredit" is not set to a negative value, this is a finding.
Configure the operating system to enforce password complexity by requiring that at least one special character be used by setting the "ocredit" option. Log in to a Nutanix CVM and run the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Verify Nutanix AOS is configured to require complex passwords. $ sudo grep difok /etc/security/pwquality.conf difok = 8 If the value of "difok" is set to less than "8", this is a finding.
Configure the complex password requirements by running the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Verify Nutanix AOS is configured to require complex passwords. $ sudo grep minclass /etc/security/pwquality.conf minclass = 4 If the value of "minclass" is set to less than "4", this is a finding.
Configure the complex password requirements by running the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Verify Nutanix AOS is configured to require complex passwords. $ sudo grep maxrepeat /etc/security/pwquality.conf maxrepeat = 2 If the value of "maxrepeat" is set to more than "2", this is a finding.
Configure the complex password requirements by running the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Verify Nutanix AOS is configured to require complex passwords. $ sudo grep maxclassrepeat /etc/security/pwquality.conf maxclassrepeat = 4 If the value of "maxclassrepeat" is set to more than "4", this is a finding.
Configure the complex password requirements by running the following command: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true
Confirm Nutanix AOS is configured to store encrypted representation of passwords and that the encryption meets required standards. $ sudo grep -i encrypt /etc/login.defs ENCRYPT_METHOD SHA512 If the /etc/login.defs file does not contain the required output, this is a finding. $ sudo grep -i sha512 /etc/libuser.conf crypt_style = sha512 If the /etc/libuser.conf file does not contain the required output, this is a finding.
Configure the required password encryption requirements by running the following command. $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to enforce 24 hour/1 day minimum password lifetime. $ sudo grep -i pass_min_days /etc/login.defs PASS_MIN_DAYS 1 If the "PASS_MIN_DAYS" parameter value is not "1" or greater, or is commented out, this is a finding. $ sudo awk -F: '$4 < 1 {print $1 " " $4}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.
Configure the password minimum age by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to enforce a 60-day maximum password lifetime. $ sudo grep -i pass_max_days /etc/login.defs PASS_MAX_DAYS 60 If the "PASS_MAX_DAYS" parameter value is not "60" or less, or is commented out, this is a finding. $ sudo awk -F: '$5 > 60 {print $1 " " $5}' /etc/shadow If any results are returned that are not associated with a system account, this is a finding.
Configure the password maximum age by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is configured to prohibit password reuse for a minimum of five generations. $ sudo grep -i remember /etc/pam.d/system-auth /etc/pam.d/password-auth password requisite pam_pwhistory.so use_authtok remember=5 retry=3 If the line containing the "pam_pwhistory.so" line does not have the "remember" module argument set, is commented out, or the value of the "remember" module argument is set to less than "5", this is a finding.
Configure the password maximum age by running the following command: $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS is not configured to allow cached credentials via the System Security Session Daemon (SSSD). $ service sssd status If the sssd service is installed or active, this is a finding.
If the SSSD service is installed, the Controller VM must be reinstalled.
Verify that the pam_unix.so module is configured to use SHA512. $ sudo grep password /etc/pam.d/password-auth | grep pam_unix password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok $ sudo grep password /etc/pam.d/system-auth | grep pam_unix password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok If "sha512" is not an option in both outputs, or is commented out, this is a finding.
Configure the pam.d modules to comply with FIPS 140-2: 1. Enable high-strength passwords: $ ncli cluster edit-cvm-security-params enable-high-strength-password=true 2. After enabling the high-strength passwords, the system will process the salt stack to enable the DoD versions of the pam.d files. Recheck the Check Text for compliance. To run the salt command manually to enable the pam.d auth files, run the following command (high-strength passwords must be set to true): $ sudo salt-call state.sls security/CVM/pamCVM
Confirm Nutanix AOS audits all required activities performed during nonlocal maintenance and diagnostic sessions. $ sudo grep -i /usr/sbin/semanage /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/semanage -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/sbin/setsebool /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setsebool -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -i /usr/bin/chcon /etc/audit/audit.rules -a always,exit -F path=/usr/bin/chcon -F perm=x -F auid>=1000 -F auid!=4294967295 -k secobjects $ sudo grep -iw /usr/sbin/setfiles /etc/audit/audit.rules -a always,exit -F path=/usr/sbin/setfiles -F perm=x -F auid>=1000 -F auid!=4294967295 -k privileged-priv_change $ sudo grep -i /var/run/faillock /etc/audit/audit.rules -w /var/run/faillock/ -p wa -k logins $ sudo grep -i /var/log/lastlog /etc/audit/audit.rules -w /var/log/lastlog -p wa -k logins If any of the commands listed do not return any output, this is a finding.
Configure Nutanix AOS to audit all required activities performed during nonlocal maintenance and diagnostic sessions by running the following command. salt-call state.sls security/CVM/auditCVM
Confirm Nutanix AOS implements DoD-approved encryption to protect the confidentiality of remote access sessions. Determine if the "dracut-fips" package is installed with the following command: $ sudo yum list installed dracut-fips dracut-fips.x86_64-033-572.el7 If dracut-fips package is not installed, this is a finding. Determine if FIPS mode is enabled with the following command: $ fipscheck usage: fipscheck [-s <hmac-suffix>] <paths-to-files> fips mode is on If FIPS mode is "on", Determine if the kernel boot parameter is configured for FIPS mode with the following command: $ sudo cat /boot/grub/grub.conf | grep fips It the kernel output does not list "fips=1", this is a finding. If the kernel boot parameter is configured to use FIPS mode, Determine if the system is in FIPS mode with the following command: $ sudo cat /proc/sys/crypto/fips_enabled 1 If FIPS mode is not "on", the kernel boot parameter is not configured for FIPS mode, or the system does not have a value of "1" for "fips_enabled" in "/proc/sys/crypto", this is a finding.
Configure the system to run in FIPS mode by running the following command: $ sudo salt-call state.sls security/CVM/fipsCVM
Nutanix AOS is configured by default to run SELinux Policies. Confirm Nutanix AOS has the policycoreutils package installed with the following command: $ sudo yum list installed policycoreutils Installed Packages policycoreutils.x86_64 2.5-34.el7 @base If the policycoreutils package is not installed, this is a finding.
Configure the operating system to have the policycoreutils package installed with the following command: $ sudo yum install policycoreutils
Confirm Nutanix AOS provides that all public directories are owned by root or a system account with the following command: $ sudo find / -type d -perm -0002 -exec ls -lLd {} \; drwxrwxrwt. 2 root root 40 Jun 4 15:21 /dev/mqueue drwxrwxrwt. 2 root root 40 Jun 4 15:21 /dev/shm drwxrwxrwt. 7 root root 4096 Jul 28 15:37 /tmp If any of the returned directories are not owned by root or a system account, this is a finding. Determine that all world-writable directories have the sticky bit set by running the following command: $ sudo find / -type d \( -perm -0002 -a ! -perm -1000 \) -print 2>/dev/null drwxrwxrwxt 7 root root 4096 Jul 26 11:19 /tmp If any of the returned directories are world-writable and do not have the sticky bit set, this is a finding.
Configure all public directories to be owned by root or a system account to prevent unauthorized and unintended information transferred via shared system resources. Set the owner of all public directories as root or a system account using the command, replace "[Public Directory]" with any directory path not owned by root or a system account: $ sudo chown root [Public Directory] Set the sticky bit on all world-writable directories using the command, replace "[World-Writable Directory]" with any directory path missing the sticky bit: $ sudo chmod 1777 [World-Writable Directory]
Confirm Nutanix AOS protects against or limits the effects of DoS attacks by ensuring that a rate-limiting measures are enabled. $ /sbin/sysctl -a | grep 'net.ipv4.tcp_invalid_ratelimit' net.ipv4.tcp_invalid_ratelimit = 500 If "net.ipv4.tcp_invalid_ratelimit" has a value of "0", this is a finding. If "net.ipv4.tcp_invalid_ratelimit" has a value greater than "1000" and is not documented with the Information System Security Officer (ISSO), this is a finding.
Configure Nutanix AOS firewall services by running the following command: $ sudo salt-call state.sls security/CVM/iptables/init
Confirm Nutanix AOS is configured to use syncookies. $ sysctl net.ipv4.tcp_syncookies net.ipv4.tcp_syncookies = 1 If the value is not "1", this is a finding. Check the saved value of TCP syncookies with the following command: $ sudo grep -i net.ipv4.tcp_syncookies /etc/sysctl.conf /etc/sysctl.d/* | grep -v '#' If no output is returned, this is a finding.
Configure Nutanix AOS to use TCP syncookies by running the following command: $ sudo sysctl -w net.ipv4.tcp_syncookies=1 If "1" is not the system's default value, add or update the following line in "/etc/sysctl.conf": net.ipv4.tcp_syncookies = 1
Confirm Nutanix AOS has SSH loaded and active. $ sudo systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Tue 2015-11-17 15:17:22 EST; 4 weeks 0 days ago Main PID: 1348 (sshd) CGroup: /system.slice/sshd.service 1053 /usr/sbin/sshd -D If "sshd" does not show a status of "active" and "running", this is a finding. If the "SSH server" package is not installed, this is a finding.
Configure SSH on Nutanix AOS by running the following command: $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm Nutanix AOS has SSH loaded and active. $ sudo systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Tue 2015-11-17 15:17:22 EST; 4 weeks 0 days ago Main PID: 1348 (sshd) CGroup: /system.slice/sshd.service 1053 /usr/sbin/sshd -D If "sshd" does not show a status of "active" and "running", this is a finding. If the "SSH server" package is not installed, this is a finding.
Configure SSH on Nutanix AOS by running the following command: $ sudo salt-call state.sls security/CVM/sshdCVM
Confirm Nutanix AOS has SSH loaded and active. $ sudo systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Tue 2015-11-17 15:17:22 EST; 4 weeks 0 days ago Main PID: 1348 (sshd) CGroup: /system.slice/sshd.service 1053 /usr/sbin/sshd -D If "sshd" does not show a status of "active" and "running", this is a finding. If the "SSH server" package is not installed, this is a finding.
Configure SSH on Nutanix AOS by running the following command: $ sudo salt-call state.sls security/CVM/sshdCVM
Verify Nutanix AOS has all system log files under the /home/log directory with a permission set to "640", by using the following command: $ sudo find /home/log -perm /137 -type f -exec stat -c "%n %a" {} \; If command displays any output, this is a finding.
Configure the Nutanix AOS to set permissions of all log files under /home/log directory to "640" or more restricted, by using the following command: $ sudo find /var/log -perm /137 -type f -exec chmod 640 '{}' \;
Nutanix AOS audit logs must be owned by root to prevent unauthorized read access. Determine where the audit log file is located: $sudo grep -iw log_file /etc/audit/auditd.conf log_file = /home/log/audit/audit.log Using the location of the audit log file, determine if the audit log is owned by "root" using the following command: ls -al /home/log/audit/audit.log -rw-------. 1 root root 3427758 Apr 8 18:43 /home/log/audit/audit.log If the audit log is not owned by "root", this is a finding.
Configure the audit rules ownership by running the following command: $ sudo salt-call state.sls security/CVM/auditCVM
Nutanix AOS is configured to implement nonexecutable data to protect its memory from unauthorized code execution. $ sudo grep flags /proc/cpuinfo | grep -w nx flags. : fpu vme de …. nx pdpe1gb rdtscp... If "flags" does not contain the "nx" flag, this is a finding.
If Nutanix AOS does not list 'nx' flag in the /proc/cpuinfo and the system's BIOS setup configuration permits toggling the No Execution bit, then set it to "enable".
Confirm Nutanix AOS is configured to implement address space layout randomization. $ sudo sysctl kernel.randomize_va_space kernel.randomize_va_space = 2 If the value of kernel.randomize_va_space is anything other than "2", this is a finding.
Configure Nutanix AOS to implement address space layout randomization by running the following command: $ sudo sysctl kernel.randomize_va_space=2
Confirm Nutanix AOS removes all software components after updated versions have been installed. $ sudo grep -i clean_requirements_on_remove /etc/yum.conf clean_requirements_on_remove=1 If "clean_requirements_on_remove" is not set to "1", "True", or "yes", or is not set in "/etc/yum.conf", this is a finding.
Configure Yum settings to remove all software components after an updated version is installed by running the following command: $ sudo salt-call state.sls security/CVM/yumCVM
Confirm Nutanix AOS verifies correct operation of all security functions. $ sudo sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 If the "Loaded policy name" is not set to "targeted", this is a finding. Verify that the /etc/selinux/config file is configured to the "SELINUXTYPE" to "targeted": $ sudo grep -i "selinuxtype" /etc/selinux/config | grep -v '^#' SELINUXTYPE = targeted If no results are returned or "SELINUXTYPE" is not set to "targeted", this is a finding.
Configure Nutanix AOS to verify correct operation of all security functions. Set the "SELinux" status and the "Enforcing" mode by modifying the "/etc/selinux/config" file to have the following line: SELINUX=enforcing A reboot is required for the changes to take effect.
Product version is end of life and no longer supported. If the system is running AOS version 5.20.x, this is a finding.
Upgrade to a supported version.